Redux Framework - Version 3.0.0

Version Description

  • Initial Wordpress.org plugin release.

=

Download this release

Release Info

Developer dovyp
Plugin Icon 128x128 Redux Framework
Version 3.0.0
Comparing to
See all releases

Version 3.0.0

Files changed (187) hide show
  1. README.txt +151 -0
  2. ReduxCore/assets/css/style.css +159 -0
  3. ReduxCore/assets/css/style.less +982 -0
  4. ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont-ie7.css +845 -0
  5. ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.css +294 -0
  6. ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.less +943 -0
  7. ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.eot +0 -0
  8. ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.svg +298 -0
  9. ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.ttf +0 -0
  10. ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.woff +0 -0
  11. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  12. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  13. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  14. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  15. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  16. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png +0 -0
  17. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  18. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  19. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png +0 -0
  20. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png +0 -0
  21. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png +0 -0
  22. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png +0 -0
  23. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png +0 -0
  24. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png +0 -0
  25. ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css +1614 -0
  26. ReduxCore/assets/img/1c.png +0 -0
  27. ReduxCore/assets/img/1col.png +0 -0
  28. ReduxCore/assets/img/2-col-portfolio.png +0 -0
  29. ReduxCore/assets/img/2cl.png +0 -0
  30. ReduxCore/assets/img/2cr.png +0 -0
  31. ReduxCore/assets/img/3-col-portfolio.png +0 -0
  32. ReduxCore/assets/img/3cl.png +0 -0
  33. ReduxCore/assets/img/3cm.png +0 -0
  34. ReduxCore/assets/img/3cr.png +0 -0
  35. ReduxCore/assets/img/4-col-portfolio.png +0 -0
  36. ReduxCore/assets/img/ajax.gif +0 -0
  37. ReduxCore/assets/img/fs-sprite.png +0 -0
  38. ReduxCore/assets/img/menu_icon.png +0 -0
  39. ReduxCore/assets/img/social/Apple.png +0 -0
  40. ReduxCore/assets/img/social/Blogger.png +0 -0
  41. ReduxCore/assets/img/social/DailyBooth.png +0 -0
  42. ReduxCore/assets/img/social/Digg.png +0 -0
  43. ReduxCore/assets/img/social/Dribbble.png +0 -0
  44. ReduxCore/assets/img/social/Drupal.png +0 -0
  45. ReduxCore/assets/img/social/Facebook.png +0 -0
  46. ReduxCore/assets/img/social/FeedBurner.png +0 -0
  47. ReduxCore/assets/img/social/Flickr.png +0 -0
  48. ReduxCore/assets/img/social/Forrst.png +0 -0
  49. ReduxCore/assets/img/social/GitHub.png +0 -0
  50. ReduxCore/assets/img/social/Google.png +0 -0
  51. ReduxCore/assets/img/social/GrooveShark.png +0 -0
  52. ReduxCore/assets/img/social/LastFM.png +0 -0
  53. ReduxCore/assets/img/social/LinkedIn.png +0 -0
  54. ReduxCore/assets/img/social/Map.png +0 -0
  55. ReduxCore/assets/img/social/Newsvine.png +0 -0
  56. ReduxCore/assets/img/social/RSS.png +0 -0
  57. ReduxCore/assets/img/social/ShareThis.png +0 -0
  58. ReduxCore/assets/img/social/Skype.png +0 -0
  59. ReduxCore/assets/img/social/SoundCloud.png +0 -0
  60. ReduxCore/assets/img/social/Squidoo.png +0 -0
  61. ReduxCore/assets/img/social/StumbleUpon.png +0 -0
  62. ReduxCore/assets/img/social/Tumblr.png +0 -0
  63. ReduxCore/assets/img/social/Twitter.png +0 -0
  64. ReduxCore/assets/img/social/Vimeo.png +0 -0
  65. ReduxCore/assets/img/social/Windows.png +0 -0
  66. ReduxCore/assets/img/social/WordPress.png +0 -0
  67. ReduxCore/assets/img/social/YouTube.png +0 -0
  68. ReduxCore/assets/img/social/deviantART.png +0 -0
  69. ReduxCore/assets/img/toggle_tabs.png +0 -0
  70. ReduxCore/assets/js/admin.js +636 -0
  71. ReduxCore/assets/js/admin.min.js +1 -0
  72. ReduxCore/assets/js/vendor/cookie.js +95 -0
  73. ReduxCore/assets/js/vendor/jquery.numeric.js +291 -0
  74. ReduxCore/assets/js/vendor/jquery.numeric.min.js +10 -0
  75. ReduxCore/assets/js/vendor/jquery.tipsy.js +241 -0
  76. ReduxCore/assets/js/vendor/jquery.typewatch.js +92 -0
  77. ReduxCore/assets/js/vendor/jquery.typewatch.min.js +13 -0
  78. ReduxCore/assets/js/vendor/jsonview.js +265 -0
  79. ReduxCore/assets/js/vendor/jsonview.min.js +16 -0
  80. ReduxCore/assets/js/vendor/lte-ie7.js +311 -0
  81. ReduxCore/assets/js/vendor/select2/LICENSE +18 -0
  82. ReduxCore/assets/js/vendor/select2/README.md +83 -0
  83. ReduxCore/assets/js/vendor/select2/bower.json +8 -0
  84. ReduxCore/assets/js/vendor/select2/release.sh +69 -0
  85. ReduxCore/assets/js/vendor/select2/select2-spinner.gif +0 -0
  86. ReduxCore/assets/js/vendor/select2/select2.css +615 -0
  87. ReduxCore/assets/js/vendor/select2/select2.jquery.json +36 -0
  88. ReduxCore/assets/js/vendor/select2/select2.js +3217 -0
  89. ReduxCore/assets/js/vendor/select2/select2.min.js +21 -0
  90. ReduxCore/assets/js/vendor/select2/select2.png +0 -0
  91. ReduxCore/assets/js/vendor/select2/select2_locale_ar.js +17 -0
  92. ReduxCore/assets/js/vendor/select2/select2_locale_bg.js +17 -0
  93. ReduxCore/assets/js/vendor/select2/select2_locale_ca.js +17 -0
  94. ReduxCore/assets/js/vendor/select2/select2_locale_cs.js +49 -0
  95. ReduxCore/assets/js/vendor/select2/select2_locale_da.js +17 -0
  96. ReduxCore/assets/js/vendor/select2/select2_locale_de.js +15 -0
  97. ReduxCore/assets/js/vendor/select2/select2_locale_el.js +17 -0
  98. ReduxCore/assets/js/vendor/select2/select2_locale_en.js.template +17 -0
  99. ReduxCore/assets/js/vendor/select2/select2_locale_es.js +15 -0
  100. ReduxCore/assets/js/vendor/select2/select2_locale_et.js +17 -0
  101. ReduxCore/assets/js/vendor/select2/select2_locale_eu.js +43 -0
  102. ReduxCore/assets/js/vendor/select2/select2_locale_fa.js +17 -0
  103. ReduxCore/assets/js/vendor/select2/select2_locale_fi.js +28 -0
  104. ReduxCore/assets/js/vendor/select2/select2_locale_fr.js +15 -0
  105. ReduxCore/assets/js/vendor/select2/select2_locale_gl.js +43 -0
  106. ReduxCore/assets/js/vendor/select2/select2_locale_he.js +17 -0
  107. ReduxCore/assets/js/vendor/select2/select2_locale_hr.js +42 -0
  108. ReduxCore/assets/js/vendor/select2/select2_locale_hu.js +15 -0
  109. ReduxCore/assets/js/vendor/select2/select2_locale_id.js +17 -0
  110. ReduxCore/assets/js/vendor/select2/select2_locale_is.js +16 -0
  111. ReduxCore/assets/js/vendor/select2/select2_locale_it.js +15 -0
  112. ReduxCore/assets/js/vendor/select2/select2_locale_ja.js +15 -0
  113. ReduxCore/assets/js/vendor/select2/select2_locale_ko.js +17 -0
  114. ReduxCore/assets/js/vendor/select2/select2_locale_lt.js +29 -0
  115. ReduxCore/assets/js/vendor/select2/select2_locale_lv.js +16 -0
  116. ReduxCore/assets/js/vendor/select2/select2_locale_mk.js +17 -0
  117. ReduxCore/assets/js/vendor/select2/select2_locale_ms.js +17 -0
  118. ReduxCore/assets/js/vendor/select2/select2_locale_nl.js +15 -0
  119. ReduxCore/assets/js/vendor/select2/select2_locale_no.js +18 -0
  120. ReduxCore/assets/js/vendor/select2/select2_locale_pl.js +37 -0
  121. ReduxCore/assets/js/vendor/select2/select2_locale_pt-BR.js +15 -0
  122. ReduxCore/assets/js/vendor/select2/select2_locale_pt-PT.js +15 -0
  123. ReduxCore/assets/js/vendor/select2/select2_locale_ro.js +15 -0
  124. ReduxCore/assets/js/vendor/select2/select2_locale_ru.js +15 -0
  125. ReduxCore/assets/js/vendor/select2/select2_locale_sk.js +48 -0
  126. ReduxCore/assets/js/vendor/select2/select2_locale_sv.js +17 -0
  127. ReduxCore/assets/js/vendor/select2/select2_locale_th.js +17 -0
  128. ReduxCore/assets/js/vendor/select2/select2_locale_tr.js +17 -0
  129. ReduxCore/assets/js/vendor/select2/select2_locale_ua.js +17 -0
  130. ReduxCore/assets/js/vendor/select2/select2_locale_vi.js +18 -0
  131. ReduxCore/assets/js/vendor/select2/select2_locale_zh-CN.js +14 -0
  132. ReduxCore/assets/js/vendor/select2/select2_locale_zh-TW.js +14 -0
  133. ReduxCore/assets/js/vendor/select2/select2x2.png +0 -0
  134. ReduxCore/extensions/README.txt +1 -0
  135. ReduxCore/extensions/customizer/assets/css/customizer.css +0 -0
  136. ReduxCore/extensions/customizer/extension_customizer.php +434 -0
  137. ReduxCore/framework.php +1918 -0
  138. ReduxCore/inc/browser.php +1110 -0
  139. ReduxCore/inc/fields/border/field_border.css +2 -0
  140. ReduxCore/inc/fields/border/field_border.less +8 -0
  141. ReduxCore/inc/fields/border/field_border.php +182 -0
  142. ReduxCore/inc/fields/button_set/field_button_set.js +7 -0
  143. ReduxCore/inc/fields/button_set/field_button_set.min.js +1 -0
  144. ReduxCore/inc/fields/button_set/field_button_set.php +104 -0
  145. ReduxCore/inc/fields/checkbox/field_checkbox.php +108 -0
  146. ReduxCore/inc/fields/color/field_color.css +64 -0
  147. ReduxCore/inc/fields/color/field_color.js +239 -0
  148. ReduxCore/inc/fields/color/field_color.less +71 -0
  149. ReduxCore/inc/fields/color/field_color.min.js +1 -0
  150. ReduxCore/inc/fields/color/field_color.php +108 -0
  151. ReduxCore/inc/fields/color_gradient/field_color_gradient.php +131 -0
  152. ReduxCore/inc/fields/date/field_date.js +5 -0
  153. ReduxCore/inc/fields/date/field_date.min.js +1 -0
  154. ReduxCore/inc/fields/date/field_date.php +88 -0
  155. ReduxCore/inc/fields/dimensions/field_dimensions.css +2 -0
  156. ReduxCore/inc/fields/dimensions/field_dimensions.js +21 -0
  157. ReduxCore/inc/fields/dimensions/field_dimensions.less +16 -0
  158. ReduxCore/inc/fields/dimensions/field_dimensions.min.js +1 -0
  159. ReduxCore/inc/fields/dimensions/field_dimensions.php +149 -0
  160. ReduxCore/inc/fields/divide/field_divide.php +71 -0
  161. ReduxCore/inc/fields/editor/field_editor.css +1 -0
  162. ReduxCore/inc/fields/editor/field_editor.js +52 -0
  163. ReduxCore/inc/fields/editor/field_editor.less +3 -0
  164. ReduxCore/inc/fields/editor/field_editor.min.js +1 -0
  165. ReduxCore/inc/fields/editor/field_editor.php +96 -0
  166. ReduxCore/inc/fields/gallery/field_gallery.js +73 -0
  167. ReduxCore/inc/fields/gallery/field_gallery.min.js +1 -0
  168. ReduxCore/inc/fields/gallery/field_gallery.php +109 -0
  169. ReduxCore/inc/fields/group/field_group.css +71 -0
  170. ReduxCore/inc/fields/group/field_group.js +107 -0
  171. ReduxCore/inc/fields/group/field_group.less +73 -0
  172. ReduxCore/inc/fields/group/field_group.min.js +1 -0
  173. ReduxCore/inc/fields/group/field_group.php +185 -0
  174. ReduxCore/inc/fields/image_select/field_image_select.css +9 -0
  175. ReduxCore/inc/fields/image_select/field_image_select.js +54 -0
  176. ReduxCore/inc/fields/image_select/field_image_select.less +52 -0
  177. ReduxCore/inc/fields/image_select/field_image_select.min.js +1 -0
  178. ReduxCore/inc/fields/image_select/field_image_select.php +177 -0
  179. ReduxCore/inc/fields/info/field_info.css +9 -0
  180. ReduxCore/inc/fields/info/field_info.less +76 -0
  181. ReduxCore/inc/fields/info/field_info.php +138 -0
  182. ReduxCore/inc/fields/link_color/field_link_color.php +138 -0
  183. ReduxCore/inc/fields/media/field_media.css +6 -0
  184. ReduxCore/inc/fields/media/field_media.js +122 -0
  185. ReduxCore/inc/fields/media/field_media.less +47 -0
  186. ReduxCore/inc/fields/media/field_media.min.js +1 -0
  187. ReduxCore/inc/fields/media/field_media.php +112 -0
README.txt ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Redux Framework ===
2
+ Contributors: ghost1227, dovyp
3
+ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U
4
+ Tags: admin, admin interface, options, theme options, plugin options, options framework, settings
5
+ Requires at least: 3.5.1
6
+ Tested up to: 3.7
7
+ Stable tag: 3.0.0
8
+ License: GPLv3 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
+
11
+ Redux is a simple, truly extensible and fully responsive options framework for WordPress themes and plugins. It ships with an integrated demo.
12
+
13
+ == Description ==
14
+
15
+ Redux is a simple, truly extensible and fully responsive options framework for WordPress themes and plugins. Built on the WordPress Settings API, Redux supports a multitude of field types as well as custom error handling, custom field & validation types, and import/export functionality.
16
+
17
+ But what does Redux actually DO? We don't believe that theme and plugin
18
+ developers should have to reinvent the wheel every time they start work on a
19
+ project. Redux is designed to simplify the development cycle by providing a
20
+ streamlined, extensible framework for developers to build on. Through a
21
+ simple, well-documented config file, third-party developers can build out an
22
+ options panel limited only by their own imagination in a fraction of the time
23
+ it would take to build from the ground up!
24
+
25
+ = Online Demo =
26
+ Don't take our word for it, check out our online demo and try Redux without installing a thing!
27
+ [**http://demo.reduxframework.com/wp-admin/**](http://demo.reduxframework.com/wp-admin/)
28
+
29
+
30
+ = Docs & Support =
31
+ You can find [docs](http://reduxframework.com/docs/), [FAQs](http://reduxframework.com/docs/) and more detailed information about ReduxFramework on [reduxframework.com](http://reduxframework.com). If you were unable to find the answer to your question on the [FAQs](http://reduxframework.com/docs/) or in any of the [documentation](http://reduxframework.com/docs/), you should search [the issue tracker on Github](https://github.com/ReduxFramework/ReduxFramework/issues). If you can't locate any topics that pertain to your particular issue, [post a new issue](https://github.com/ReduxFramework/ReduxFramework/issues/new) for it.
32
+
33
+
34
+ = Redux Framework Needs Your Support =
35
+ It is hard to continue development and support for this free plugin without contributions from users like you. If you enjoy using Redux Framework, and find it useful, please consider [making a donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U). Your donation will help encourage and support the plugin's continued development and better user support.
36
+
37
+ = Fields =
38
+ Hold on to your hats. Here are the fields Redux supports.
39
+ * Border
40
+ * Button Set
41
+ * Checkbox / Multi-Check
42
+ * Color (Wordpress Native)
43
+ * Gradient
44
+ * Date
45
+ * Dimensions (Height/Width)
46
+ * Editor (Wordpress Native)
47
+ * Gallery (Wordpress Native)
48
+ * Group (Repeatable/Non-Repeatable)
49
+ * Image Select (Patterns/Presets)
50
+ * Info (Header)
51
+ * Link Color
52
+ * Media (Wordpress Native)
53
+ * Multi-Text
54
+ * Password
55
+ * Radio (w/ Wordpress Data)
56
+ * Select (Select/Multi-Select w/ Select2 & Wordpress Data)
57
+ * Slider
58
+ * Sortable (Drag/Drop Checkbox/Input Fields)
59
+ * Sorter (Drag/Drop Manager - Works great for content blocks)
60
+ * Spacing (Margin/Padding/Absolute)
61
+ * Spinner
62
+ * Switch
63
+ * Text
64
+ * Textarea
65
+ * Typography
66
+ * The most advanced typography module complete with preview, Google fonts, and auto-css output!
67
+
68
+ = Additional Features =
69
+ As if that's not enough, there's more.
70
+ * Field Validation
71
+ * Language Packs
72
+ * Full value escaping
73
+ * Required - Link visibility from parent fields
74
+ * Set this to affect the visibility of the field on the parent's value.
75
+ * Output CSS Automatically
76
+ * Redux generates CSS and the appropriate Google Fonts stylesheets for you on select fields. You need only specify the CSS selector to apply the CSS to (limited to certain fields).
77
+ * Oh, and did we mention a fully integrated Google Webfonts setup that will make you so happy you'll want to cry?
78
+
79
+
80
+ = Redux Framework is the solution for theme and plugin developers alike. =
81
+ At least we think so, we hope you feel the same.
82
+
83
+
84
+ = Translators & Non-English Speakers =
85
+ We need your help to translate Redux into your language. If you have created your own language pack, or have an update of an existing one, you can post [gettext PO and MO files](http://codex.wordpress.org/Translating_WordPress) to the [Github Repo](https://github.com/ReduxFramework/ReduxFramework) via a pull request or you can post an issue with the attached files. You can download the latest [POT file](http://plugins.svn.wordpress.org/redux-framework/trunk/ReduxCore/languages/redux.pot), and see the latest [PO files in each language](http://plugins.svn.wordpress.org/redux-framework/trunk/ReduxCore/languages/).
86
+
87
+ = Get Involved =
88
+ Redux is an ever-changing, living system. Want to stay up to date or
89
+ contribute? Subscribe to one of our mailing lists or join us on [Twitter](https://twitter.com/reduxframework) or [Github](https://github.com/ReduxFramework/ReduxFramework)!
90
+
91
+ NOTE: Redux is not intended to be used on its own. It requires a config file
92
+ provided by a third-party theme or plugin developer to actual do anything
93
+ cool!
94
+
95
+
96
+ == Installation ==
97
+
98
+ = Install the Plugin =
99
+ 1. Upload the "redux-framework" directory to "~/wp-content/plugins/".
100
+ 2. Activate the plugin through the "Plugins" area in WordPress admin panel.
101
+
102
+ = Activate "Demo Mode" =
103
+ On the Plugins page, beneith the description and an activated Redux Framework, you will find a Demo Mode link. Click that link to activate or deactivate the sample-config file Redux ships with.
104
+
105
+ = Start Building Your Own Panel =
106
+
107
+ 1. Copy the "~/redux-framework/sample/" directory from within the plugin to a directory within your own theme or plugin.
108
+ 2. Click on "Deactivate Demo Mode" in the "Plugins" area of the WordPress admin panel to turn off the Redux integrated demo.
109
+ 3. Edit the "~/sample/sample-config.php" file (now copied to your plugin or theme directory) and change the $args['opt_name'] value to anything custom you would like. Make sure this is truly unque so other plugins/themes can use Redux.
110
+ 4. Include the sample-config.php file: `require_once(dirname(__FILE__).'/sample/sample-config.php');` in your theme functions.php file or within your plugin's init file.
111
+ 5. Modify the sample file to your heart's content.
112
+
113
+ = For Complete Documentation and Examples =
114
+ Visit: [http://reduxframework.com/docs/](http://reduxframework.com/docs/)
115
+
116
+
117
+ == Frequently Asked Questions ==
118
+
119
+ = Why doesn't this plugin do anything? =
120
+
121
+ Redux is an options framework... in other words, it's not designed to do anything on its own! You can however activate a demo mode to see how it works.
122
+
123
+ = How can I learn more about Redux? =
124
+
125
+ Visit our website at [http://reduxframework.com/](http://reduxframework.com/)
126
+
127
+ = You don't have much content in this FAQ section =
128
+ That's because the real FAQ section is one our site! Please visit [http://reduxframework.com/docs/faqs/](http://reduxframework.com/docs/faqs/
129
+
130
+ == Screenshots ==
131
+
132
+ 1. This is the demo mode of Redux Framework. Activate it and you will find a fully-function admin panel that you can play with. On the Plugins page, beneith the description and an activated Redux Framework, you will find a Demo Mode link. Click that link to activate or deactivate the sample-config file Redux ships with. Don't take our word for it, check out our online demo and try Redux without installing a thing! [**http://demo.reduxframework.com/wp-admin/**](http://demo.reduxframework.com/wp-admin/)
133
+
134
+ == Changelog ==
135
+
136
+ = 3.0.0 =
137
+ * Initial Wordpress.org plugin release.
138
+
139
+ == Upgrade Notice ==
140
+
141
+ = 3.0 =
142
+ Redux is now hosted on Wordpress.org! Update in order to get proper, stable updates.
143
+
144
+ == Attribution ==
145
+
146
+ Redux is was originally based off the following frameworks:
147
+
148
+ * [NHP](https://github.com/leemason/NHP-Theme-Options-Framework)
149
+ * [SMOF](https://github.com/syamilmj/Options-Framework "Slightly Modified Options Framework")
150
+
151
+ It has now branched and been improved in many ways. If you like what you see, realize this is a labor of love. Please [donate to the Redux Framework](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U) if you are able.
ReduxCore/assets/css/style.css ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #redux-heading{margin-bottom:20px}
2
+ #redux-main .description{margin-top:7px}
3
+ a{outline:0 !important}
4
+ .ui-datepicker table{background:#fff}
5
+ #redux-container{font-family:"Lucida Grande",Sans-serif;background-color:#eee;background-repeat:repeat-x;background-image:-moz-linear-gradient(top, #f5f5f5 0, #eee 100%);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0, #f5f5f5), color-stop(100%, #eee));background-image:-webkit-linear-gradient(top, #f5f5f5 0, #eee 100%);background-image:-ms-linear-gradient(top, #f5f5f5 0, #eee 100%);background-image:-o-linear-gradient(top, #f5f5f5 0, #eee 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0);background-image:linear-gradient(top, #f5f5f5 0, #eee 100%);border:1px solid #e5e5e5;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;-moz-box-shadow:0 1px 0 #fff inset,0 1px 5px rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 0 #fff inset,0 1px 5px rgba(0,0,0,0.1);box-shadow:0 1px 0 #fff inset,0 1px 5px rgba(0,0,0,0.1);margin-top:20px;overflow:hidden}
6
+ #redux-container .hr{height:20px;line-height:20px;float:none;border-color:#e7e7e7;display:block;width:100%;height:35px !important;line-height:35px !important;position:relative;margin:15px 0 10px 0;float:left}
7
+ #redux-container .inner{width:42% !important;left:40% !important;margin-left:-6%;background-color:#fcfcfc;border-color:#e7e7e7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}
8
+ #redux-container .hr .inner span{background-color:#fcfcfc;border-color:#e7e7e7;border-radius:20px;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}
9
+ .shadow1{position:relative}
10
+ .shadow1:before,.shadow1:after{z-index:-1;position:absolute;content:"";bottom:15px;left:10px;width:50%;top:80%;max-width:300px;background:#777;-webkit-box-shadow:0 15px 10px rgba(0,0,0,0.4);-moz-box-shadow:0 15px 10px rgba(0,0,0,0.4);box-shadow:0 15px 10px rgba(0,0,0,0.4);-webkit-transform:rotate(-3deg);-moz-transform:rotate(-3deg);-o-transform:rotate(-3deg);-ms-transform:rotate(-3deg);transform:rotate(-3deg)}
11
+ .shadow1:after{-webkit-transform:rotate(3deg);-moz-transform:rotate(3deg);-o-transform:rotate(3deg);-ms-transform:rotate(3deg);transform:rotate(3deg);right:10px;left:auto}
12
+ #redux-header,#redux-footer{text-align:right;padding:9px 10px 6px 10px}
13
+ #redux-header{border-bottom:1px solid #e7e7e7}
14
+ #redux-footer{border-top:1px solid #e7e7e7;z-index:2}
15
+ #redux-footer #redux-share{float:left}
16
+ #redux-footer #redux-share a{margin-right:10px}
17
+ #redux-footer #redux-share a img{margin-bottom:-3px}
18
+ #redux-save{margin:0;border-bottom:1px solid #e7e7e7;background-color:#dff0d8;color:#468847;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
19
+ #redux-imported{margin:0;border-bottom:1px solid #bce8f1;background-color:#d9edf7;color:#3a87ad;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
20
+ #redux-save-warn{margin:0;display:none;border-bottom:1px solid #e7e7e7;background-color:#fcf8e3;color:#c09853;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
21
+ #redux-field-warnings{margin:0;display:none;border-bottom:1px solid #e7e7e7;background-color:#fcf8e3;color:#c09853;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
22
+ #redux-field-errors,.no-js{margin:0;border-bottom:1px solid #e7e7e7;background-color:#f2dede;color:#b94a48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}
23
+ #redux-field-errors{display:none}
24
+ .no-js{border:1px solid #ffbaba}
25
+ #redux-sidebar,#redux-main{min-height:300px}
26
+ #redux-sidebar{width:200px;float:left}
27
+ .redux-menu-warning{background-color:#c09853;color:#fcf8e3;display:inline-block;float:right;padding:6px 7px 4px 7px;margin-left:4px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;font-family:sans-serif;font-size:9px;font-weight:bold;line-height:9px}
28
+ .redux-menu-error{background-color:#b94a48;color:#f2dede;display:inline-block;float:right;padding:6px 7px 4px 7px;margin-left:4px;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;font-family:sans-serif;font-size:9px;font-weight:bold;line-height:9px}
29
+ #redux-main{background:#fcfcfc;margin-left:201px;border-left:1px solid #d8d8d8;padding:10px 20px;moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}
30
+ #redux-sidebar #redux-group-menu{margin-top:0}
31
+ #redux-sidebar #redux-group-menu li{margin:0}
32
+ #redux-sidebar #redux-group-menu li.divide{padding:0;border-width:1px 0 1px 0;border-style:solid;border-bottom-color:#e7e7e7;border-top-color:#f9f9f9}
33
+ #redux-sidebar #redux-group-menu li a{display:block;padding:12px 8px;background:#eee;border-width:1px 0 1px 0;border-style:solid;border-bottom-color:#e7e7e7;border-top-color:#f9f9f9;opacity:.7;color:#555;font-weight:bold;text-decoration:none;-webkit-transition:none;transition:none}
34
+ #redux-sidebar #redux-group-menu li a.custom-tab{background:#f6f6f6}
35
+ #redux-sidebar #redux-group-menu li a img{width:16px;height:16px;position:absolute;left:15px}
36
+ #redux-sidebar #redux-group-menu li.active a:hover{color:#269ad6}
37
+ #redux-sidebar #redux-group-menu li a:hover{background:#eee;width:184px;color:#269ad6;margin-right:-2px;opacity:1}
38
+ #redux-sidebar #redux-group-menu li.active a{background:#fcfcfc;color:#797979;width:184px;opacity:1;margin-right:-2px}
39
+ .redux-group-tab{display:none;margin-bottom:30px}
40
+ .redux-group-tab h3{margin-top:0;line-height:2em;border-bottom:1px solid #e7e7e7}
41
+ .redux-group-tab .redux-section-desc{font-size:1.1em;margin-bottom:10px;color:#666}
42
+ .redux-group-tab .form-table{clear:none;margin-top:20px}
43
+ .redux-group-tab .form-table.no-border{border-top:none}
44
+ .redux-group-tab .form-table tr{border-bottom:1px solid #e7e7e7}
45
+ .redux-group-tab .form-table tr:last-child{border-bottom:none}
46
+ .redux-group-tab .form-table tr th,.redux-group-tab .form-table tr td{p2adding:20px 20px 40px 20px;color:#333}
47
+ .redux-group-tab .form-table tr th{font-weight:bold;font-size:1.1em;width:30%}
48
+ .redux-group-tab .form-table tr th span:first-child{font-weight:normal;display:block;color:#666}
49
+ .redux-group-tab .form-table tr td .redux-th-warning{font-size:1em;color:#c09853;font-weight:normal;display:block}
50
+ .redux-group-tab .form-table tr td .redux-field-warning{border-color:#c09853}
51
+ .redux-group-tab .form-table tr td .redux-th-error{font-size:1em;color:#b94a48;font-weight:normal;display:block}
52
+ #redux-main .redux-group-tab .form-table tr td input.redux-field-error{border-color:#b94a48}
53
+ .redux-group-tab .form-table tr td table.mceLayout,.redux-group-tab .form-table tr td table.mceLayout tr,.redux-group-tab .form-table tr td table.mceLayout tr td{padding:0;border-width:0}
54
+ .redux-group-tab .redux-theme-data{padding:20px 0;border-top:1px solid #e7e7e7}
55
+ .redux-group-tab .redux-theme-data.theme-uri,.redux-group-tab .redux-theme-data.theme-author,.redux-group-tab .redux-theme-data.theme-version{padding:0;border-width:0}
56
+ .redux-group-tab .redux-theme-data.theme-description{padding:10px 0;border-width:0}
57
+ .farb-popup-wrapper{position:relative;display:block}
58
+ .farb-popup{position:absolute;left:40px;top:40px;background-color:#fff;border:1px solid #222;padding:5px;z-index:100}
59
+ #redux-import-link-wrapper,#redux-import-code-wrapper{display:none}
60
+ #redux-export-code,#redux-export-link-value{display:none}
61
+ #redux-import-action span{color:#b94a48}
62
+ .redux-screenshot{max-width:300px;display:block}
63
+ .redux-group-tab-link-a{position:relative}.redux-group-tab-link-a i{position:absolute}
64
+ .redux-group-tab-link-a span{display:block;z-index:0}.redux-group-tab-link-a span.group_title{padding-left:30px}
65
+ .redux-group-tab-link-li a.hasError span.group_title{padding-right:25px}
66
+ #ui-datepicker-div{display:none}
67
+ #redux-container .ajax-loading-img-top{margin:5px 4px 0;float:left}
68
+ #redux-container .ajax-loading{margin:3px 4px 0;float:right}
69
+ #redux-container .ajax-reset-loading-img{display:block;margin-left:100px}
70
+ #redux-container .redux-action_bar{float:right}
71
+ #redux-container .redux-ajax-loading{display:none;background:#f00 url(../img/ajax.gif) no-repeat;width:16px;height:16px;margin:3px 4px 0;float:right}
72
+ #redux-intro-text{background:#f3f3f3;border:solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-width:0 1px 1px 1px;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc;padding:3px;padding:10px 10px}
73
+ #redux-intro-text p{margin:0;font-family:"Lucida Grande",Sans-serif;color:#888}
74
+ .mp6 #redux-container #info_bar{padding:6px 10px 6px 6px}
75
+ .mp6 #redux-container #info_bar a{margin-top:2px}
76
+ #redux-container #info_bar{background:#f3f3f3;border:solid #d8d8d8;border-bottom:1px solid #d8d8d8;border-width:0 1px 1px 1px;padding:6px 10px 6px 6px;text-align:right;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}
77
+ #redux-container #expand_options{cursor:pointer;display:block;height:22px;width:21px;float:left;font-size:0;text-indent:-9999px;margin:0 0 0 5px;border:1px solid #bbb;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}
78
+ #redux-container #expand_options{background:url(../img/toggle_tabs.png) no-repeat -2px -26px}
79
+ #redux-container #expand_options.expanded{background:url(../img/toggle_tabs.png) no-repeat -2px -1px}
80
+ #redux-container #expand_options:hover{border-color:#888}
81
+ #redux-header{background:#f1f1f1;border:1px solid #ccc;-webkit-border-radius:10px 10px 0 0;-moz-border-radius:10px 10px 0 0;border-radius:10px 10px 0 0;background-image:-ms-linear-gradient(top, #f9f9f9, #ececec);background-image:-moz-linear-gradient(top, #f9f9f9, #ececec);background-image:-o-linear-gradient(top, #f9f9f9, #ececec);background-image:-webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));background-image:-webkit-linear-gradient(top, #f9f9f9, #ececec);background-image:linear-gradient(top, #f9f9f9, #ececec);-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}
82
+ #redux-header .logo{float:left;margin:20px 10px}
83
+ #redux-header .logo h2{display:inline-block;font-style:normal;padding-right:5px}
84
+ #redux-header .logo span{color:#888}
85
+ #redux-header .icon32{float:right;margin:16px 16px 0}
86
+ .redux-timer{text-align:center;font-size:10px;color:#888}
87
+ .sticky-footer-fixed{background:#f3f3f3;border-top:1px solid #d8d8d8 !important;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}
88
+ #redux-main textarea,#redux-main input,#redux-main select,#redux-main button{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;border-style:solid;border-width:1px}
89
+ #redux-main input,#redux-main select,#redux-main textarea{background-color:#f1f1f1;border:1px solid;border-color:#ccc #e6e6e6 #e6e6e6 #ccc;padding:4px;font-family:"Lucida Grande","Lucida Sans Unicode",Arial,Verdana,sans-serif;font-size:12px}
90
+ #redux-main input,#redux-main select,#redux-main .sortlist_homepage_blocks,#redux-main textarea,.wp-picker-container,.switch-options{margin-bottom:7px}
91
+ #redux-main textarea.wp-editor-area{margin-bottom:0}
92
+ #redux-main label input{margin-bottom:0}
93
+ #redux-main .select2-container input{margin-bottom:0;border:0}
94
+ #redux-main input:hover,#redux-main textarea:hover{background-color:#f9f9f9}
95
+ #redux-main input:focus,#redux-main textarea:focus{background-color:#fff;border-color:#ccc #e6e6e6 #e6e6e6 #ccc;outline:0}
96
+ #redux-main select{height:28px;padding:4px 5px}
97
+ #redux-main select,#redux-main .select_wrapper{width:340px}
98
+ #redux-main textarea{width:100%}
99
+ #redux-main input[type=text]{width:340px}
100
+ #redux-main input.checkbox,#redux-main input.radio{margin-right:10px}
101
+ label.radio,label.multicheck{position:relative}
102
+ #redux-main .input-text-small{width:60px;margin-right:10px}
103
+ #redux-main .meta-two{margin-right:10px}
104
+ #redux-main #content .section-typography{width:440px}
105
+ #redux-main #content .section-typography .explain{width:130px}
106
+ #redux-main .of-typography-size{width:70px;float:left}
107
+ #redux-main .of-typography-unit{width:60px;float:left}
108
+ #redux-main .of-typography-face{width:145px;float:left}
109
+ #redux-main .of-typography-style{width:95px;float:left}
110
+ #redux-main .of-radio-img-img{border:3px solid #fff;margin:0 5px 10px 0;display:none;cursor:pointer;float:left}
111
+ #redux-main .of-radio-img-selected{border:3px solid #ccc}
112
+ #redux-main .of-radio-img-img:hover{opacity:.8}
113
+ #redux-main .of-radio-tile-img{width:50px;height:50px;border:3px solid #f9f9f9;margin:0 5px 10px 0;display:none;cursor:pointer;float:left}
114
+ #redux-main .of-radio-tile-selected{border:3px solid #db423d}
115
+ #redux-main .of-radio-tile-img:hover{opacity:.8}
116
+ #redux-main .of-border-width{width:70px;float:left}
117
+ #redux-main .of-border-style{width:95px;float:left}
118
+ #redux-main .hide{display:none}
119
+ #redux-main input.button-primary{border-color:#21759b;border-bottom-color:#1e6a8d;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,0.5);box-shadow:inset 0 1px 0 rgba(120,200,230,0.5)}
120
+ #redux-main .button,#redux-main .button-secondary,#redux-main .button-primary{padding:0 10px 1px}
121
+ #redux-main input.large-text{width:100%}
122
+ .tipsy{font-size:10px;position:absolute;padding:5px;z-index:100000}
123
+ .tipsy-inner{background-color:#000;color:#fff;max-width:200px;padding:5px 5px 1px 5px;text-align:center}
124
+ .tipsy-inner{border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px}
125
+ .tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}
126
+ .tipsy-arrow-n{border-bottom-color:#000}
127
+ .tipsy-arrow-s{border-top-color:#000}
128
+ .tipsy-arrow-e{border-left-color:#000}
129
+ .tipsy-arrow-w{border-right-color:#000}
130
+ .tipsy-n .tipsy-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}
131
+ .tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}
132
+ .tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}
133
+ .tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}
134
+ .tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}
135
+ .tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}
136
+ .tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}
137
+ .tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}
138
+ .input-append{margin-right:10px}
139
+ #redux-main .input-append input{border-right:0;margin-bottom:0}
140
+ #redux-main .input-prepend input{border-left:0;margin-bottom:0}
141
+ .input-append .add-on,.input-prepend .add-on{width:auto;display:inline-block;min-width:16px;padding:3px 4px;font-size:12px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}
142
+ .input-prepend .add-on{b2order-right:1px}
143
+ .input-append,.input-prepend{font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:5px}
144
+ #redux-main .input-append input{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}
145
+ #redux-main .input-append .add-on{border-top-right-radius:3px;border-bottom-right-radius:3px}
146
+ #redux-main .input-prepend input{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}
147
+ #redux-main .input-prepend .add-on{border-top-left-radius:3px;border-bottom-left-radius:3px}
148
+ #redux-main td{padding:8px 0}
149
+ #redux-main .mini,#redux-main input[type=text].mini{width:50px;text-align:center}
150
+ #redux-main .upload{width:80%}
151
+ .wrap{margin-top:0}
152
+ img{max-width:100%;max-height:100%}
153
+ .showDefaults{display:block;font-weight:normal;font-size:.8em;color:#888}
154
+ .select2-default{width:auto !important}
155
+ @media screen and (max-width:1124px){#redux-sidebar{width:42px} #redux-main{margin-left:43px;width:auto;max-width:100%} .redux-group-tab-link-a{position:relative} .redux-group-tab-link-a i{position:inherit} .redux-group-tab-link-a span{display:none;position:absolute;top:0;left:44px;padding:12px;width:200px;background:#eee;border:1px solid #ccc;-webkit-box-shadow:2px 2px 8px rgba(0,0,0,0.2);-moz-box-shadow:2px 2px 8px rgba(0,0,0,0.2);box-shadow:2px 2px 8px rgba(0,0,0,0.2);border-width:1px 1px 1px 0;z-index:1} .redux-group-tab-link-a:hover>span{display:block} #redux-sidebar #redux-group-menu li a,#redux-sidebar #redux-group-menu li a:hover,#redux-sidebar #redux-group-menu li.active a,#redux-sidebar #redux-group-menu li.active a:hover{width:auto} table.form-table,.form-table>thead,.form-table>tbody,.form-table>tbody>tr>th,.form-table>tbody>tr>td,.form-table>tbody>tr{display:block !important;width:100% !important;padding:0 !important} .form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px !important} .form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px !important} .form-table>tbody>tr>th{min-width:35%}}@media screen and (max-width:783px){.mp6 #redux-container #info_bar{height:auto;padding-bottom:1px} .mp6 #redux-container #info_bar a{margin-top:5px}}.mp6 .icon-themes{display:none}
156
+ #redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}
157
+ #redux-main span.description{font-style:normal}
158
+ #redux-main #redux-system-info textarea{min-height:730px}
159
+ #redux-main .field-desc{clear:both}
ReduxCore/assets/css/style.less ADDED
@@ -0,0 +1,982 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ #redux-heading{
3
+ margin-bottom:20px;
4
+ }
5
+
6
+ #redux-main .description {
7
+ margin-top: 7px;
8
+ }
9
+
10
+ a {
11
+ outline: 0 !important;
12
+ }
13
+
14
+ .ui-datepicker table { background: #fff; }
15
+
16
+ #redux-container{
17
+ font-family: "Lucida Grande", Sans-serif;
18
+ background-color: #eeeeee; /* Old browsers */
19
+ background-repeat: repeat-x; /* Repeat the gradient */
20
+ background-image: -moz-linear-gradient(top, #f5f5f5 0%, #eeeeee 100%); /* FF3.6+ */
21
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(100%,#eeeeee)); /* Chrome,Safari4+ */
22
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Chrome 10+,Safari 5.1+ */
23
+ background-image: -ms-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* IE10+ */
24
+ background-image: -o-linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* Opera 11.10+ */
25
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#eeeeee',GradientType=0 ); /* IE6-9 */
26
+ background-image: linear-gradient(top, #f5f5f5 0%,#eeeeee 100%); /* W3C */
27
+ border: 1px solid #e5e5e5;
28
+
29
+ -moz-border-radius: 10px; /* Firefox */
30
+ -webkit-border-radius: 10px; /* Safari, Chrome */
31
+ border-radius: 10px;
32
+
33
+ -moz-box-shadow: 0 1px 0 #FFFFFF inset, 0 1px 5px rgba(0, 0, 0, 0.1);
34
+ -webkit-box-shadow: 0 1px 0 #FFFFFF inset, 0 1px 5px rgba(0, 0, 0, 0.1);
35
+ box-shadow: 0 1px 0 #FFFFFF inset, 0 1px 5px rgba(0, 0, 0, 0.1);
36
+ margin-top:20px;
37
+ overflow: hidden;
38
+ }
39
+
40
+ #redux-container .hr{
41
+ height: 20px;
42
+ line-height: 20px;
43
+ float: none;
44
+ border-color: #E7E7E7;
45
+ display: block;
46
+ width: 100%;
47
+ height: 35px !important;
48
+ line-height: 35px !important;
49
+ position: relative;
50
+ margin: 15px 0 10px 0;
51
+ float: left;
52
+ }
53
+
54
+ #redux-container .inner{
55
+ width: 42% !important;
56
+ left: 40% !important;
57
+ margin-left: -6%;
58
+ background-color: #FCFCFC;
59
+ border-color: #E7E7E7;
60
+ position: absolute;
61
+ height: 1px;
62
+ top: 50%;
63
+ width: 100%;
64
+ margin-top: -1px;
65
+ border-top-width: 1px;
66
+ border-top-style: solid;
67
+ }
68
+
69
+ #redux-container .hr .inner span {
70
+ background-color: #FCFCFC;
71
+ border-color: #E7E7E7;
72
+ border-radius: 20px;
73
+ height: 5px;
74
+ width: 5px;
75
+ border-width: 2px;
76
+ border-style: solid;
77
+ display: block;
78
+ position: absolute;
79
+ left: 50%;
80
+ margin-left: -5px;
81
+ margin-top: -5px;
82
+ }
83
+
84
+ .shadow1 {
85
+ position: relative;
86
+ }
87
+ .shadow1:before,
88
+ .shadow1:after {
89
+ z-index: -1;
90
+ position: absolute;
91
+ content: "";
92
+ bottom: 15px;
93
+ left: 10px;
94
+ width: 50%;
95
+ top: 80%;
96
+ max-width: 300px;
97
+ background: #777;
98
+ -webkit-box-shadow: 0 15px 10px rgba(0,0,0,0.4);
99
+ -moz-box-shadow: 0 15px 10px rgba(0,0,0,0.4);
100
+ box-shadow: 0 15px 10px rgba(0,0,0,0.4);
101
+ -webkit-transform: rotate(-3deg);
102
+ -moz-transform: rotate(-3deg);
103
+ -o-transform: rotate(-3deg);
104
+ -ms-transform: rotate(-3deg);
105
+ transform: rotate(-3deg);
106
+ }
107
+ .shadow1:after {
108
+ -webkit-transform: rotate(3deg);
109
+ -moz-transform: rotate(3deg);
110
+ -o-transform: rotate(3deg);
111
+ -ms-transform: rotate(3deg);
112
+ transform: rotate(3deg);
113
+ right: 10px;
114
+ left: auto;
115
+ }
116
+
117
+
118
+ #redux-header,
119
+ #redux-footer{
120
+ text-align:right;
121
+ padding: 9px 10px 6px 10px
122
+ }
123
+ #redux-header{
124
+ border-bottom:1px solid #E7E7E7;
125
+ }
126
+ #redux-footer{
127
+ border-top:1px solid #E7E7E7;
128
+ z-index: 2;
129
+ }
130
+ #redux-footer #redux-share{
131
+ float:left;
132
+ }
133
+ #redux-footer #redux-share a{
134
+ margin-right:10px;
135
+ }
136
+ #redux-footer #redux-share a img{
137
+ margin-bottom:-3px;
138
+ }
139
+
140
+
141
+ #redux-save{
142
+ margin:0px;
143
+ border-bottom:1px solid #E7E7E7;
144
+ background-color: #DFF0D8;
145
+ color: #468847;
146
+ padding: 8px 35px 8px 14px;
147
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
148
+ }
149
+ #redux-imported{
150
+ margin:0px;
151
+ border-bottom:1px solid #BCE8F1;
152
+ background-color: #D9EDF7;
153
+ color: #3A87AD;
154
+ padding: 8px 35px 8px 14px;
155
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
156
+ }
157
+ #redux-save-warn{
158
+ margin:0px;
159
+ display:none;
160
+ border-bottom:1px solid #E7E7E7;
161
+ background-color: #FCF8E3;
162
+ color: #C09853;
163
+ padding: 8px 35px 8px 14px;
164
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
165
+ }
166
+
167
+
168
+
169
+ #redux-field-warnings{
170
+ margin:0px;
171
+ display:none;
172
+ border-bottom:1px solid #E7E7E7;
173
+ background-color: #FCF8E3;
174
+ color: #C09853;
175
+ padding: 8px 35px 8px 14px;
176
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
177
+ }
178
+
179
+
180
+
181
+
182
+ #redux-field-errors, .no-js{
183
+ margin:0px;
184
+
185
+ border-bottom:1px solid #E7E7E7;
186
+ background-color: #F2DEDE;
187
+ color: #B94A48;
188
+ padding: 8px 35px 8px 14px;
189
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
190
+ }
191
+ #redux-field-errors {
192
+ display:none;
193
+ }
194
+ .no-js {
195
+ border: 1px solid #ffbaba;
196
+ }
197
+
198
+
199
+ #redux-sidebar,
200
+ #redux-main{
201
+ min-height:300px;
202
+ }
203
+ #redux-sidebar{
204
+ width:200px;
205
+ float: left;
206
+ }
207
+
208
+ .redux-menu-warning{
209
+ background-color: #C09853;
210
+ color: #FCF8E3;
211
+ display: inline-block;
212
+ float:right;
213
+ padding: 6px 7px 4px 7px;
214
+ margin-left:4px;
215
+ -moz-border-radius: 20px; /* Firefox */
216
+ -webkit-border-radius: 20px; /* Safari, Chrome */
217
+ border-radius: 20px;
218
+ font-family: sans-serif;
219
+ font-size: 9px;
220
+ font-weight: bold;
221
+ line-height: 9px;
222
+ }
223
+
224
+ .redux-menu-error{
225
+ background-color: #B94A48;
226
+ color: #F2DEDE;
227
+ display: inline-block;
228
+ float:right;
229
+ padding: 6px 7px 4px 7px;
230
+ margin-left:4px;
231
+ -moz-border-radius: 20px; /* Firefox */
232
+ -webkit-border-radius: 20px; /* Safari, Chrome */
233
+ border-radius: 20px;
234
+ font-family: sans-serif;
235
+ font-size: 9px;
236
+ font-weight: bold;
237
+ line-height: 9px;
238
+ }
239
+
240
+
241
+ #redux-main{
242
+ background:#FCFCFC;
243
+ margin-left:201px;
244
+ border-left:1px solid #D8D8D8;
245
+ padding:10px 20px;
246
+ moz-box-shadow: inset 0 1px 0 #fff;
247
+ -webkit-box-shadow: inset 0 1px 0 #FFF;
248
+ box-shadow: inset 0 1px 0 #FFF;
249
+ }
250
+
251
+
252
+ #redux-sidebar #redux-group-menu{
253
+ margin-top:0px;
254
+ }
255
+ #redux-sidebar #redux-group-menu li{
256
+ margin:0px;
257
+ }
258
+ #redux-sidebar #redux-group-menu li.divide{
259
+ padding:0px;
260
+ border-width: 1px 0px 1px 0px;
261
+ border-style: solid;
262
+ border-bottom-color: #E7E7E7;
263
+ border-top-color: #F9F9F9;
264
+ }
265
+ #redux-sidebar #redux-group-menu li a{
266
+ display:block;
267
+ padding: 12px 8px;
268
+ background: #eeeeee;
269
+ border-width: 1px 0px 1px 0px;
270
+ border-style: solid;
271
+ border-bottom-color: #E7E7E7;
272
+ border-top-color: #F9F9F9;
273
+ opacity: 0.7;
274
+ color: #555;
275
+ font-weight:bold;
276
+ text-decoration:none;
277
+ -webkit-transition: none;
278
+ transition: none;
279
+ }
280
+ #redux-sidebar #redux-group-menu li a.custom-tab{
281
+ background: #f6f6f6;
282
+ }
283
+ #redux-sidebar #redux-group-menu li a img{
284
+ width: 16px;
285
+ height: 16px;
286
+ /*vertical-align:middle;
287
+ margin-bottom:-3px;
288
+ margin-right: 3px;*/
289
+ position: absolute;
290
+ left: 15px;
291
+ }
292
+ #redux-sidebar #redux-group-menu li.active a:hover{
293
+ color: #269ad6;
294
+ }
295
+ #redux-sidebar #redux-group-menu li a:hover{
296
+ background:#eeeeee;
297
+ width:184px;
298
+ color: #269ad6;
299
+ margin-right:-2px;
300
+ opacity: 1;
301
+ }
302
+ #redux-sidebar #redux-group-menu li a:hover i{
303
+
304
+ }
305
+
306
+
307
+
308
+ #redux-sidebar #redux-group-menu li.active a{
309
+ background:#FCFCFC;
310
+ color: #797979;
311
+ width:184px;
312
+ opacity: 1;
313
+ margin-right:-2px;
314
+ }
315
+
316
+
317
+
318
+
319
+
320
+
321
+ .redux-group-tab{
322
+ display:none;
323
+ margin-bottom: 30px;
324
+ }
325
+ .redux-group-tab h3{
326
+ margin-top: 0px;
327
+
328
+ line-height: 2em;
329
+ border-bottom: 1px solid #E7E7E7;
330
+ }
331
+ .redux-group-tab .redux-section-desc{
332
+
333
+ font-size:1.1em;
334
+ margin-bottom: 10px;
335
+ color:#666666;
336
+ }
337
+ .redux-group-tab .form-table{
338
+ clear:none;
339
+ margin-top:20px;
340
+ }
341
+ .redux-group-tab .form-table.no-border{
342
+ border-top:none;
343
+ }
344
+ .redux-group-tab .form-table tr{
345
+ border-bottom: 1px solid #E7E7E7;
346
+ }
347
+ .redux-group-tab .form-table tr:last-child{
348
+ border-bottom: none;
349
+ }
350
+ .redux-group-tab .form-table tr th,
351
+ .redux-group-tab .form-table tr td{
352
+ p2adding:20px 20px 40px 20px;
353
+ color:#333333;
354
+ }
355
+ .redux-group-tab .form-table tr th{
356
+ font-weight:bold;
357
+ font-size:1.1em;
358
+ width:30%;
359
+ }
360
+ .redux-group-tab .form-table tr th span:first-child{
361
+ font-weight: normal;
362
+ display:block;
363
+ color:#666666;
364
+ }
365
+
366
+
367
+ .redux-group-tab .form-table tr td .redux-th-warning{
368
+ font-size:1em;
369
+ color: #C09853;
370
+ font-weight:normal;
371
+ display:block;
372
+ }
373
+ .redux-group-tab .form-table tr td .redux-field-warning{
374
+ border-color:#C09853;
375
+ }
376
+
377
+
378
+ .redux-group-tab .form-table tr td .redux-th-error{
379
+ font-size:1em;
380
+ color:#B94A48;
381
+ font-weight:normal;
382
+ display:block;
383
+ }
384
+ #redux-main .redux-group-tab .form-table tr td input.redux-field-error{
385
+ border-color:#B94A48;
386
+ }
387
+
388
+
389
+ /* reset nested tables for mce */
390
+ .redux-group-tab .form-table tr td table.mceLayout,
391
+ .redux-group-tab .form-table tr td table.mceLayout tr,
392
+ .redux-group-tab .form-table tr td table.mceLayout tr td{
393
+ padding:0px;
394
+ border-width:0px;
395
+ }
396
+ .redux-group-tab .redux-theme-data{
397
+ padding:20px 0px;
398
+ border-top: 1px solid #E7E7E7;
399
+ }
400
+ .redux-group-tab .redux-theme-data.theme-uri,
401
+ .redux-group-tab .redux-theme-data.theme-author,
402
+ .redux-group-tab .redux-theme-data.theme-version{
403
+ padding:0px;
404
+ border-width:0px;
405
+ }
406
+ .redux-group-tab .redux-theme-data.theme-description{
407
+ padding:10px 0px;
408
+ border-width:0px;
409
+ }
410
+
411
+ /*
412
+ *
413
+ * NHP_Options_color
414
+ *
415
+ */
416
+ .farb-popup-wrapper{
417
+ position: relative;
418
+ display: block;
419
+ }
420
+
421
+ .farb-popup{
422
+ position: absolute;
423
+ left: 40px;
424
+ top: 40px;
425
+ background-color: white;
426
+ border: 1px solid #222;
427
+ padding: 5px;
428
+ z-index:100;
429
+ }
430
+
431
+
432
+
433
+ #redux-import-link-wrapper,
434
+ #redux-import-code-wrapper{
435
+ display:none;
436
+ }
437
+
438
+ #redux-export-code,
439
+ #redux-export-link-value{
440
+ display:none;
441
+ }
442
+ #redux-import-action span{
443
+ color:#B94A48;
444
+ }
445
+
446
+
447
+
448
+
449
+ .redux-screenshot{
450
+ max-width: 300px;
451
+ display:block;
452
+ }
453
+
454
+ .redux-group-tab-link-a {
455
+ position: relative;
456
+ i{
457
+ position: absolute;
458
+ }
459
+ span {
460
+ display: block;
461
+ z-index: 0;
462
+ &.group_title {
463
+ padding-left: 30px;
464
+ }
465
+ }
466
+ }
467
+ .redux-group-tab-link-li a.hasError span.group_title {
468
+ padding-right: 25px;
469
+ }
470
+
471
+ #ui-datepicker-div {
472
+ display: none;
473
+ }
474
+
475
+ #redux-container .ajax-loading-img-top {
476
+ margin: 5px 4px 0;
477
+ float:left
478
+ }
479
+ #redux-container .ajax-loading {
480
+ margin: 3px 4px 0;
481
+ float: right;
482
+ }
483
+ #redux-container .ajax-reset-loading-img {
484
+ display: block;
485
+ margin-left: 100px;
486
+ }
487
+
488
+
489
+
490
+
491
+ #redux-container .redux-action_bar {
492
+ float: right;
493
+ }
494
+ #redux-container .redux-ajax-loading {
495
+ display: none;
496
+ background: red url(../img/ajax.gif) no-repeat;
497
+ width: 16px;
498
+ height: 16px;
499
+ margin: 3px 4px 0;
500
+ float: right;
501
+ }
502
+
503
+
504
+
505
+ #redux-intro-text {
506
+ background: #f3f3f3;
507
+ border: solid #d8d8d8;
508
+ border-bottom: 1px solid #d8d8d8;
509
+ border-width:0px 1px 1px 1px;
510
+ -moz-box-shadow: inset 0 1px 0 #fcfcfc;
511
+ -webkit-box-shadow: inset 0 1px 0 #fcfcfc;
512
+ box-shadow: inset 0 1px 0 #fcfcfc;
513
+ padding: 3px;
514
+ padding: 10px 10px;
515
+ }
516
+
517
+ #redux-intro-text p {
518
+ margin: 0px;
519
+ font-family: "Lucida Grande", Sans-serif;
520
+ color: #888888;
521
+ }
522
+ .mp6 #redux-container #info_bar {
523
+ padding: 6px 10px 6px 6px;
524
+ }
525
+ .mp6 #redux-container #info_bar a {
526
+ margin-top: 2px;
527
+ }
528
+ #redux-container #info_bar {
529
+ background: #f3f3f3;
530
+ border:solid #d8d8d8;
531
+ border-bottom:1px solid #D8D8D8;
532
+ border-width:0px 1px 1px 1px;
533
+ padding: 6px 10px 6px 6px;
534
+ text-align: right;
535
+ -moz-box-shadow: inset 0 1px 0 #fcfcfc;
536
+ -webkit-box-shadow: inset 0 1px 0 #fcfcfc;
537
+ box-shadow: inset 0 1px 0 #fcfcfc;
538
+ }
539
+
540
+
541
+ #redux-container #expand_options{
542
+ cursor: pointer;
543
+ display: block;
544
+ height: 22px;
545
+ width: 21px;
546
+ float: left;
547
+ font-size:0px;
548
+ text-indent: -9999px;
549
+ margin: 0 0 0 5px;
550
+ border: 1px solid #bbb;
551
+ -webkit-border-radius: 2px;
552
+ -moz-border-radius: 2px;
553
+ border-radius: 2px;
554
+ }
555
+ #redux-container #expand_options { background: url(../img/toggle_tabs.png) no-repeat -2px -26px; }
556
+ #redux-container #expand_options.expanded { background: url(../img/toggle_tabs.png) no-repeat -2px -1px; }
557
+ #redux-container #expand_options:hover {
558
+ border-color: #888;
559
+ }
560
+
561
+
562
+
563
+ #redux-header {
564
+
565
+ background:#f1f1f1;
566
+ border: 1px solid #ccc;
567
+ -webkit-border-radius: 10px 10px 0 0;
568
+ -moz-border-radius: 10px 10px 0 0;
569
+ border-radius: 10px 10px 0 0;
570
+ background-image: -ms-linear-gradient(top,#f9f9f9,#ececec);
571
+ background-image: -moz-linear-gradient(top,#f9f9f9,#ececec);
572
+ background-image: -o-linear-gradient(top,#f9f9f9,#ececec);
573
+ background-image: -webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));
574
+ background-image: -webkit-linear-gradient(top,#f9f9f9,#ececec);
575
+ background-image: linear-gradient(top,#f9f9f9,#ececec);
576
+ -moz-box-shadow: inset 0 1px 0 #fff;
577
+ -webkit-box-shadow: inset 0 1px 0 #fff;
578
+ box-shadow: inset 0 1px 0 #fff;
579
+ }
580
+ #redux-header .logo {
581
+ float: left;
582
+ margin:20px 10px;
583
+ }
584
+
585
+ #redux-header .logo h2 {
586
+ display:inline-block;
587
+ font-style:normal;
588
+ padding-right:5px;
589
+ }
590
+ #redux-header .logo span {
591
+ color:#888888;
592
+ }
593
+ #redux-header .icon32 {
594
+ float: right;
595
+ margin:16px 16px 0;
596
+ }
597
+ .redux-timer {
598
+ text-align: center;
599
+ font-size: 10px;
600
+ color: #888;
601
+ }
602
+
603
+ .sticky-footer-fixed {
604
+ background: #f3f3f3;
605
+ border-top: 1px solid #d8d8d8 !important;
606
+ -moz-box-shadow: inset 0 1px 0 #fcfcfc;
607
+ -webkit-box-shadow: inset 0 1px 0 #fcfcfc;
608
+ box-shadow: inset 0 1px 0 #fcfcfc;
609
+ }
610
+
611
+ #redux-main textarea, #redux-main input, #redux-main select, #redux-main button {
612
+ -webkit-border-radius: 3px;
613
+ -moz-border-radius: 3px;
614
+ border-radius: 3px;
615
+ border-style:solid;
616
+ border-width:1px;
617
+ }
618
+ #redux-main input, #redux-main select, #redux-main textarea {
619
+ background-color: #f1f1f1;
620
+ border: 1px solid;
621
+ border-color: #ccc #e6e6e6 #e6e6e6 #ccc;
622
+ padding: 4px;
623
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Arial, Verdana, sans-serif;
624
+ font-size: 12px;
625
+ }
626
+
627
+ #redux-main input, #redux-main select, #redux-main .sortlist_homepage_blocks, #redux-main textarea, .wp-picker-container, .switch-options {
628
+ margin-bottom: 7px;
629
+ }
630
+ #redux-main textarea.wp-editor-area {margin-bottom: 0;}
631
+ #redux-main label input {
632
+ margin-bottom: 0;
633
+ }
634
+
635
+ #redux-main .select2-container input {
636
+ margin-bottom: 0;
637
+ border: 0;
638
+ }
639
+
640
+ #redux-main input:hover, #redux-main textarea:hover {
641
+ background-color: #f9f9f9;
642
+ }
643
+
644
+ #redux-main input:focus, #redux-main textarea:focus {
645
+ background-color: #fff;
646
+ border-color: #ccc #e6e6e6 #e6e6e6 #ccc;
647
+ outline:0;
648
+ }
649
+
650
+
651
+ #redux-main select {
652
+ height: 28px;
653
+ padding: 4px 5px;
654
+ }
655
+ #redux-main select, #redux-main .select_wrapper {
656
+ width: 340px;
657
+ }
658
+ #redux-main textarea {
659
+ width: 100%;
660
+ }
661
+ #redux-main input[type=text] {
662
+ width: 340px;
663
+ }
664
+ #redux-main input.checkbox, #redux-main input.radio {
665
+ margin-right: 10px;
666
+
667
+ }
668
+ label.radio, label.multicheck {
669
+ position: relative;
670
+ }
671
+ #redux-main .input-text-small {
672
+ width: 60px;
673
+ margin-right:10px
674
+ }
675
+ #redux-main .meta-two {
676
+ margin-right:10px
677
+ }
678
+ #redux-main #content .section-typography {
679
+ width:440px
680
+ }
681
+ #redux-main #content .section-typography .explain {
682
+ width:130px
683
+ }
684
+ #redux-main .of-typography-size {
685
+ width:70px;
686
+ float:left
687
+ }
688
+ #redux-main .of-typography-unit {
689
+ width:60px;
690
+ float:left
691
+ }
692
+ #redux-main .of-typography-face {
693
+ width:145px;
694
+ float:left
695
+ }
696
+ #redux-main .of-typography-style {
697
+ width:95px;
698
+ float:left
699
+ }
700
+ #redux-main .of-radio-img-img {
701
+ border:3px solid #fff;
702
+ margin:0 5px 10px 0;
703
+ display:none;
704
+ cursor:pointer;
705
+ float:left;
706
+ }
707
+ #redux-main .of-radio-img-selected {
708
+ border:3px solid #ccc
709
+ }
710
+ #redux-main .of-radio-img-img:hover {
711
+ opacity:.8;
712
+ }
713
+
714
+ #redux-main .of-radio-tile-img {
715
+ width:50px;
716
+ height:50px;
717
+ border:3px solid #f9f9f9;
718
+ margin:0 5px 10px 0;
719
+ display:none;
720
+ cursor:pointer;
721
+ float:left;
722
+ }
723
+ #redux-main .of-radio-tile-selected {
724
+ border:3px solid #DB423D
725
+ }
726
+ #redux-main .of-radio-tile-img:hover {
727
+ opacity:.8;
728
+ }
729
+
730
+ #redux-main .of-border-width {
731
+ width:70px;
732
+ float:left
733
+ }
734
+ #redux-main .of-border-style {
735
+ width:95px;
736
+ float:left
737
+ }
738
+ /*#redux-main .group {
739
+ display:none;
740
+ padding-bottom:20px;
741
+ }
742
+ #redux-main .group h2 {
743
+ display:none;
744
+ border-bottom:3px solid #e7e7e7
745
+ }
746
+ #redux-main input:focus, #redux-main select:focus, #redux-main textarea:focus {
747
+ background:#fff;
748
+ }*/
749
+
750
+
751
+ #redux-main .hide {
752
+ display: none;
753
+ }
754
+
755
+ #redux-main input.button-primary {
756
+ border-color: #21759B;
757
+ border-bottom-color: #1E6A8D;
758
+ -webkit-box-shadow: inset 0 1px 0 rgba(120, 200, 230, 0.5);
759
+ box-shadow: inset 0 1px 0 rgba(120, 200, 230, 0.5);
760
+ }
761
+ #redux-main .button, #redux-main .button-secondary, #redux-main .button-primary {
762
+ padding: 0 10px 1px;
763
+ }
764
+
765
+ #redux-main input.large-text {
766
+ width: 100%;
767
+ }
768
+
769
+
770
+ /*-------------------------------------------------------------------------------------------*/
771
+ /* Tipsy
772
+ /*-------------------------------------------------------------------------------------------*/
773
+ .tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; }
774
+ .tipsy-inner { background-color: #000; color: #FFF; max-width: 200px; padding: 5px 5px 1px 5px; text-align: center; }
775
+
776
+ /* Rounded corners */
777
+ .tipsy-inner { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
778
+
779
+ /* Uncomment for shadow */
780
+ /*.tipsy-inner { box-shadow: 0 0 5px #000000; -webkit-box-shadow: 0 0 5px #000000; -moz-box-shadow: 0 0 5px #000000; }*/
781
+
782
+ .tipsy-arrow { position: absolute; width: 0; height: 0; line-height: 0; border: 5px dashed #000; }
783
+
784
+ /* Rules to colour arrows */
785
+ .tipsy-arrow-n { border-bottom-color: #000; }
786
+ .tipsy-arrow-s { border-top-color: #000; }
787
+ .tipsy-arrow-e { border-left-color: #000; }
788
+ .tipsy-arrow-w { border-right-color: #000; }
789
+
790
+ .tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent; }
791
+ .tipsy-nw .tipsy-arrow { top: 0; left: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;}
792
+ .tipsy-ne .tipsy-arrow { top: 0; right: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;}
793
+ .tipsy-s .tipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }
794
+ .tipsy-sw .tipsy-arrow { bottom: 0; left: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }
795
+ .tipsy-se .tipsy-arrow { bottom: 0; right: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }
796
+ .tipsy-e .tipsy-arrow { right: 0; top: 50%; margin-top: -5px; border-left-style: solid; border-right: none; border-top-color: transparent; border-bottom-color: transparent; }
797
+ .tipsy-w .tipsy-arrow { left: 0; top: 50%; margin-top: -5px; border-right-style: solid; border-left: none; border-top-color: transparent; border-bottom-color: transparent; }
798
+
799
+ .input-append {
800
+ margin-right: 10px;
801
+ }
802
+ #redux-main .input-append input {
803
+ border-right: 0;
804
+ margin-bottom: 0;
805
+ }
806
+
807
+ #redux-main .input-prepend input {
808
+ border-left: 0;
809
+ margin-bottom: 0;
810
+ }
811
+
812
+
813
+
814
+ .input-append .add-on, .input-prepend .add-on {
815
+ width: auto;
816
+ display: inline-block;
817
+ min-width: 16px;
818
+ padding: 3px 4px;
819
+ font-size: 12px;
820
+ font-weight: normal;
821
+ line-height: 20px;
822
+ text-align: center;
823
+ text-shadow: 0 1px 0 #FFF;
824
+ background-color: #EEE;
825
+ border: 1px solid #CCC;
826
+
827
+ }
828
+
829
+ .input-prepend .add-on {
830
+ b2order-right: 1px;
831
+ }
832
+
833
+ .input-append, .input-prepend {
834
+ font-size:0;
835
+ white-space:nowrap;
836
+ float:left;
837
+ display:inline-block;
838
+ margin-bottom:5px;
839
+ }
840
+
841
+ #redux-main .input-append {
842
+ input {
843
+ border-top-right-radius:0;
844
+ border-bottom-right-radius:0;
845
+ margin-right:0;
846
+ }
847
+ .add-on {
848
+ border-top-right-radius:3px;
849
+ border-bottom-right-radius:3px;
850
+ }
851
+ }
852
+ #redux-main .input-prepend {
853
+ input {
854
+ border-top-left-radius:0;
855
+ border-bottom-left-radius:0;
856
+ margin-left:0;
857
+ }
858
+ .add-on {
859
+ border-top-left-radius:3px;
860
+ border-bottom-left-radius:3px;
861
+ }
862
+ }
863
+
864
+ #redux-main td {
865
+ padding: 8px 0;
866
+ }
867
+
868
+ #redux-main .mini, #redux-main input[type=text].mini {
869
+ width: 50px;
870
+ text-align: center;
871
+ }
872
+
873
+ #redux-main .upload {
874
+ width: 80%;
875
+ }
876
+
877
+
878
+ .wrap {
879
+ margin-top: 0;
880
+ }
881
+
882
+ img {
883
+ max-width:100%;
884
+ max-height:100%;
885
+ }
886
+
887
+ .showDefaults {
888
+ display: block;
889
+ font-weight: normal;
890
+ font-size: .8em;
891
+ color: #888;
892
+ }
893
+ .select2-default {
894
+ width: auto !important;
895
+ }
896
+
897
+ @media screen and (max-width : 1124px) {
898
+ #redux-sidebar{
899
+ width:42px;
900
+ }
901
+
902
+ #redux-main{
903
+ margin-left:43px;
904
+ width: auto;
905
+ max-width: 100%;
906
+ }
907
+ .redux-group-tab-link-a{
908
+ position: relative;
909
+ }
910
+ .redux-group-tab-link-a i{
911
+ position: inherit;
912
+ }
913
+ .redux-group-tab-link-a span{
914
+ display:none;
915
+ position:absolute;
916
+ top: 0;
917
+ left:44px;
918
+ padding: 12px;
919
+ width: 200px;
920
+ background: #eeeeee;
921
+ border: 1px solid #ccc;
922
+ -webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2);
923
+ -moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2);
924
+ box-shadow: 2px 2px 8px rgba(0, 0, 0, .2);
925
+ border-width: 1px 1px 1px 0px;
926
+ z-index: 1;
927
+ }
928
+ .redux-group-tab-link-a:hover > span{
929
+ display: block;
930
+ }
931
+ #redux-sidebar #redux-group-menu li a,
932
+ #redux-sidebar #redux-group-menu li a:hover,
933
+ #redux-sidebar #redux-group-menu li.active a,
934
+ #redux-sidebar #redux-group-menu li.active a:hover{
935
+ width:auto;
936
+ }
937
+
938
+ table.form-table, .form-table > thead, .form-table > tbody, .form-table > tbody > tr > th, .form-table > tbody > tr > td, .form-table > tbody > tr {
939
+ display: block !important;
940
+ width: 100% !important;
941
+ padding: 0px !important;
942
+ }
943
+ .form-table > tbody > tr > th, .form-table > tbody > tr > td{
944
+ padding: 10px !important;
945
+ }
946
+ .form-table > tbody > tr > th, .form-table > tbody > tr > td{
947
+ padding: 10px !important;
948
+ }
949
+ .form-table > tbody > tr > th {
950
+ min-width: 35%
951
+ }
952
+ }
953
+
954
+ //mp6 fixes
955
+ @media screen and (max-width : 783px) {
956
+ .mp6 #redux-container #info_bar {
957
+ height: auto;
958
+ padding-bottom: 1px;
959
+ }
960
+ .mp6 #redux-container #info_bar a {
961
+ margin-top: 5px;
962
+ }
963
+ }
964
+ .mp6 .icon-themes {
965
+ display: none;
966
+ }
967
+ #redux-object-browser {
968
+ overflow:auto;
969
+ word-wrap: break-word;
970
+ max-height: 600px;
971
+ max-width: 100%;
972
+ }
973
+ #redux-main span.description {
974
+ font-style: normal;
975
+ }
976
+ #redux-main #redux-system-info textarea {
977
+ min-height: 730px;
978
+ }
979
+
980
+ #redux-main .field-desc {
981
+ clear: both;
982
+ }
ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont-ie7.css ADDED
@@ -0,0 +1,845 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [class^="icon-"],
2
+ [class*=" icon-"] {
3
+ padding-right: .3em
4
+ }
5
+ .icon-large {
6
+ font-size: 1.3333333333333333em;
7
+ margin-top: -4px;
8
+ padding-top: 3px;
9
+ margin-bottom: -4px;
10
+ padding-bottom: 3px;
11
+ vertical-align: -20%;
12
+ }
13
+ .btn [class^="icon-"],
14
+ .nav [class^="icon-"],
15
+ .btn [class*=" icon-"],
16
+ .nav [class*=" icon-"] {
17
+ vertical-align: inherit;
18
+ margin-top: -4px;
19
+ padding-top: 3px;
20
+ margin-bottom: -4px;
21
+ padding-bottom: 3px;
22
+ line-height: .9em;
23
+ }
24
+ a [class^="icon-"],
25
+ a [class*=" icon-"] {
26
+ cursor: pointer
27
+ }
28
+ ul.icons {
29
+ text-indent: -1.5em;
30
+ margin-left: 3em;
31
+ }
32
+
33
+ .icon-zoom-out:before {
34
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe000'): ;
35
+ }
36
+ .icon-zoom-in:before {
37
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe001'): ;
38
+ }
39
+ .icon-youtube:before {
40
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe002'): ;
41
+ }
42
+ .icon-wrench-alt:before {
43
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe003'): ;
44
+ }
45
+ .icon-wrench:before {
46
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe004'): ;
47
+ }
48
+ .icon-wordpress:before {
49
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe005'): ;
50
+ }
51
+ .icon-wheelchair:before {
52
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe006'): ;
53
+ }
54
+ .icon-website-alt:before {
55
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe007'): ;
56
+ }
57
+ .icon-website:before {
58
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe008'): ;
59
+ }
60
+ .icon-warning-sign:before {
61
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe009'): ;
62
+ }
63
+ .icon-w3c:before {
64
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe00a'): ;
65
+ }
66
+ .icon-volume-up:before {
67
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe00b'): ;
68
+ }
69
+ .icon-volume-off:before {
70
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe00c'): ;
71
+ }
72
+ .icon-volume-down:before {
73
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe00d'): ;
74
+ }
75
+ .icon-vimeo:before {
76
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe00e'): ;
77
+ }
78
+ .icon-view-mode:before {
79
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe00f'): ;
80
+ }
81
+ .icon-video-chat:before {
82
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe010'): ;
83
+ }
84
+ .icon-video-alt:before {
85
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe011'): ;
86
+ }
87
+ .icon-video:before {
88
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe012'): ;
89
+ }
90
+ .icon-user:before {
91
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe013'): ;
92
+ }
93
+ .icon-upload:before {
94
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe014'): ;
95
+ }
96
+ .icon-unlock-alt:before {
97
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe015'): ;
98
+ }
99
+ .icon-unlock:before {
100
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe016'): ;
101
+ }
102
+ .icon-universal-access:before {
103
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe017'): ;
104
+ }
105
+ .icon-twitter:before {
106
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe018'): ;
107
+ }
108
+ .icon-tumblr:before {
109
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe019'): ;
110
+ }
111
+ .icon-trash-alt:before {
112
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe01a'): ;
113
+ }
114
+ .icon-trash:before {
115
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe01b'): ;
116
+ }
117
+ .icon-torso:before {
118
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe01c'): ;
119
+ }
120
+ .icon-tint:before {
121
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe01d'): ;
122
+ }
123
+ .icon-time-alt:before {
124
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe01e'): ;
125
+ }
126
+ .icon-time:before {
127
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe01f'): ;
128
+ }
129
+ .icon-thumbs-up:before {
130
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe020'): ;
131
+ }
132
+ .icon-thumbs-down:before {
133
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe021'): ;
134
+ }
135
+ .icon-th-list:before {
136
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe022'): ;
137
+ }
138
+ .icon-th-large:before {
139
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe023'): ;
140
+ }
141
+ .icon-th:before {
142
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe024'): ;
143
+ }
144
+ .icon-text-width:before {
145
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe025'): ;
146
+ }
147
+ .icon-text-height:before {
148
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe026'): ;
149
+ }
150
+ .icon-tasks:before {
151
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe027'): ;
152
+ }
153
+ .icon-tags:before {
154
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe028'): ;
155
+ }
156
+ .icon-tag:before {
157
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe029'): ;
158
+ }
159
+ .icon-stumbleupon:before {
160
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe02a'): ;
161
+ }
162
+ .icon-stop-alt:before {
163
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe02b'): ;
164
+ }
165
+ .icon-stop:before {
166
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe02c'): ;
167
+ }
168
+ .icon-step-forward:before {
169
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe02d'): ;
170
+ }
171
+ .icon-step-backward:before {
172
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe02e'): ;
173
+ }
174
+ .icon-star-empty:before {
175
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe02f'): ;
176
+ }
177
+ .icon-star-alt:before {
178
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe030'): ;
179
+ }
180
+ .icon-star:before {
181
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe031'): ;
182
+ }
183
+ .icon-stackoverflow:before {
184
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe032'): ;
185
+ }
186
+ .icon-speaker:before {
187
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe033'): ;
188
+ }
189
+ .icon-smiley-alt:before {
190
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe034'): ;
191
+ }
192
+ .icon-smiley:before {
193
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe035'): ;
194
+ }
195
+ .icon-slideshare:before {
196
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe036'): ;
197
+ }
198
+ .icon-skype:before {
199
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe037'): ;
200
+ }
201
+ .icon-signal:before {
202
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe038'): ;
203
+ }
204
+ .icon-shopping-cart-sign:before {
205
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe039'): ;
206
+ }
207
+ .icon-shopping-cart:before {
208
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe03a'): ;
209
+ }
210
+ .icon-share-alt:before {
211
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe03b'): ;
212
+ }
213
+ .icon-share:before {
214
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe03c'): ;
215
+ }
216
+ .icon-search-alt:before {
217
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe03d'): ;
218
+ }
219
+ .icon-search:before {
220
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe03e'): ;
221
+ }
222
+ .icon-screenshot:before {
223
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe03f'): ;
224
+ }
225
+ .icon-screen-alt:before {
226
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe040'): ;
227
+ }
228
+ .icon-screen:before {
229
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe041'): ;
230
+ }
231
+ .icon-rss:before {
232
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe042'): ;
233
+ }
234
+ .icon-road:before {
235
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe043'): ;
236
+ }
237
+ .icon-reverse-alt:before {
238
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe044'): ;
239
+ }
240
+ .icon-retweet:before {
241
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe045'): ;
242
+ }
243
+ .icon-resize-vertical:before {
244
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe046'): ;
245
+ }
246
+ .icon-resize-small:before {
247
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe047'): ;
248
+ }
249
+ .icon-resize-horizontal:before {
250
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe048'): ;
251
+ }
252
+ .icon-resize-full:before {
253
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe049'): ;
254
+ }
255
+ .icon-repeat-alt:before {
256
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe04a'): ;
257
+ }
258
+ .icon-repeat:before {
259
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe04b'): ;
260
+ }
261
+ .icon-remove-sign:before {
262
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe04c'): ;
263
+ }
264
+ .icon-remove-circle:before {
265
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe04d'): ;
266
+ }
267
+ .icon-remove:before {
268
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe04e'): ;
269
+ }
270
+ .icon-refresh:before {
271
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe04f'): ;
272
+ }
273
+ .icon-reddit:before {
274
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe050'): ;
275
+ }
276
+ .icon-record:before {
277
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe051'): ;
278
+ }
279
+ .icon-random:before {
280
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe052'): ;
281
+ }
282
+ .icon-quotes-alt:before {
283
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe053'): ;
284
+ }
285
+ .icon-quotes:before {
286
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe054'): ;
287
+ }
288
+ .icon-question-sign:before {
289
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe055'): ;
290
+ }
291
+ .icon-question:before {
292
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe056'): ;
293
+ }
294
+ .icon-qrcode:before {
295
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe057'): ;
296
+ }
297
+ .icon-print:before {
298
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe058'): ;
299
+ }
300
+ .icon-plus-sign:before {
301
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe059'): ;
302
+ }
303
+ .icon-plus:before {
304
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe05a'): ;
305
+ }
306
+ .icon-play-circle:before {
307
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe05b'): ;
308
+ }
309
+ .icon-play-alt:before {
310
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe05c'): ;
311
+ }
312
+ .icon-play:before {
313
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe05d'): ;
314
+ }
315
+ .icon-plane:before {
316
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe05e'): ;
317
+ }
318
+ .icon-pinterest:before {
319
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe05f'): ;
320
+ }
321
+ .icon-picture:before {
322
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe060'): ;
323
+ }
324
+ .icon-picasa:before {
325
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe061'): ;
326
+ }
327
+ .icon-photo-alt:before {
328
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe062'): ;
329
+ }
330
+ .icon-photo:before {
331
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe063'): ;
332
+ }
333
+ .icon-phone-alt:before {
334
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe064'): ;
335
+ }
336
+ .icon-phone:before {
337
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe065'): ;
338
+ }
339
+ .icon-person:before {
340
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe066'): ;
341
+ }
342
+ .icon-pencil-alt:before {
343
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe067'): ;
344
+ }
345
+ .icon-pencil:before {
346
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe068'): ;
347
+ }
348
+ .icon-pause-alt:before {
349
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe069'): ;
350
+ }
351
+ .icon-pause:before {
352
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe06a'): ;
353
+ }
354
+ .icon-path:before {
355
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe06b'): ;
356
+ }
357
+ .icon-paper-clip-alt:before {
358
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe06c'): ;
359
+ }
360
+ .icon-paper-clip:before {
361
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe06d'): ;
362
+ }
363
+ .icon-ok-sign:before {
364
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe06e'): ;
365
+ }
366
+ .icon-ok-circle:before {
367
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe06f'): ;
368
+ }
369
+ .icon-ok:before {
370
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe070'): ;
371
+ }
372
+ .icon-off:before {
373
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe071'): ;
374
+ }
375
+ .icon-network:before {
376
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe072'): ;
377
+ }
378
+ .icon-music:before {
379
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe073'): ;
380
+ }
381
+ .icon-move:before {
382
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe074'): ;
383
+ }
384
+ .icon-minus-sign:before {
385
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe075'): ;
386
+ }
387
+ .icon-minus:before {
388
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe076'): ;
389
+ }
390
+ .icon-mic-alt:before {
391
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe077'): ;
392
+ }
393
+ .icon-mic:before {
394
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe078'): ;
395
+ }
396
+ .icon-map-marker-alt:before {
397
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe079'): ;
398
+ }
399
+ .icon-map-marker:before {
400
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe07a'): ;
401
+ }
402
+ .icon-male:before {
403
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe07b'): ;
404
+ }
405
+ .icon-magnet:before {
406
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe07c'): ;
407
+ }
408
+ .icon-lock-alt:before {
409
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe07d'): ;
410
+ }
411
+ .icon-lock:before {
412
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe07e'): ;
413
+ }
414
+ .icon-list-alt:before {
415
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe07f'): ;
416
+ }
417
+ .icon-list:before {
418
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe080'): ;
419
+ }
420
+ .icon-linkedin:before {
421
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe081'): ;
422
+ }
423
+ .icon-leaf:before {
424
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe082'): ;
425
+ }
426
+ .icon-laptop-alt:before {
427
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe083'): ;
428
+ }
429
+ .icon-laptop:before {
430
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe084'): ;
431
+ }
432
+ .icon-key:before {
433
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe085'): ;
434
+ }
435
+ .icon-italic:before {
436
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe086'): ;
437
+ }
438
+ .icon-iphone-home:before {
439
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe087'): ;
440
+ }
441
+ .icon-instagram:before {
442
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe088'): ;
443
+ }
444
+ .icon-info-sign:before {
445
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe089'): ;
446
+ }
447
+ .icon-indent-right:before {
448
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe08a'): ;
449
+ }
450
+ .icon-indent-left:before {
451
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe08b'): ;
452
+ }
453
+ .icon-hand-right:before {
454
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe08c'): ;
455
+ }
456
+ .icon-hand-left:before {
457
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe08d'): ;
458
+ }
459
+ .icon-hand-down:before {
460
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe08e'): ;
461
+ }
462
+ .icon-guidedog:before {
463
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe08f'): ;
464
+ }
465
+ .icon-group-alt:before {
466
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe090'): ;
467
+ }
468
+ .icon-group:before {
469
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe091'): ;
470
+ }
471
+ .icon-forward-alt:before {
472
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe092'): ;
473
+ }
474
+ .icon-forward:before {
475
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe093'): ;
476
+ }
477
+ .icon-fontsize:before {
478
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe094'): ;
479
+ }
480
+ .icon-font:before {
481
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe095'): ;
482
+ }
483
+ .icon-folder-sign:before {
484
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe096'): ;
485
+ }
486
+ .icon-folder-open:before {
487
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe097'): ;
488
+ }
489
+ .icon-female:before {
490
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe098'): ;
491
+ }
492
+ .icon-fast-forward:before {
493
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe099'): ;
494
+ }
495
+ .icon-fast-backward:before {
496
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe09a'): ;
497
+ }
498
+ .icon-facetime-video:before {
499
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe09b'): ;
500
+ }
501
+ .icon-facebook:before {
502
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe09c'): ;
503
+ }
504
+ .icon-eye-open:before {
505
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe09d'): ;
506
+ }
507
+ .icon-dashboard:before {
508
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe09e'): ;
509
+ }
510
+ .icon-css:before {
511
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe09f'): ;
512
+ }
513
+ .icon-credit-card:before {
514
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a0'): ;
515
+ }
516
+ .icon-compass-alt:before {
517
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a1'): ;
518
+ }
519
+ .icon-compass:before {
520
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a2'): ;
521
+ }
522
+ .icon-comment-alt:before {
523
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a3'): ;
524
+ }
525
+ .icon-chevron-down:before {
526
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a4'): ;
527
+ }
528
+ .icon-check-empty:before {
529
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a5'): ;
530
+ }
531
+ .icon-check:before {
532
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a6'): ;
533
+ }
534
+ .icon-certificate:before {
535
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a7'): ;
536
+ }
537
+ .icon-cc:before {
538
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a8'): ;
539
+ }
540
+ .icon-camera:before {
541
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0a9'): ;
542
+ }
543
+ .icon-ban-circle:before {
544
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0aa'): ;
545
+ }
546
+ .icon-backward:before {
547
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ab'): ;
548
+ }
549
+ .icon-asterisk:before {
550
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ac'): ;
551
+ }
552
+ .icon-asl:before {
553
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ad'): ;
554
+ }
555
+ .icon-arrow-up:before {
556
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ae'): ;
557
+ }
558
+ .icon-arrow-right:before {
559
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0af'): ;
560
+ }
561
+ .icon-heart-alt:before {
562
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b0'): ;
563
+ }
564
+ .icon-heart:before {
565
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b1'): ;
566
+ }
567
+ .icon-hearing-impaired:before {
568
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b2'): ;
569
+ }
570
+ .icon-headphones:before {
571
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b3'): ;
572
+ }
573
+ .icon-hdd:before {
574
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b4'): ;
575
+ }
576
+ .icon-hand-up:before {
577
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b5'): ;
578
+ }
579
+ .icon-github:before {
580
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b6'): ;
581
+ }
582
+ .icon-gift:before {
583
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b7'): ;
584
+ }
585
+ .icon-fullscreen:before {
586
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b8'): ;
587
+ }
588
+ .icon-friendfeed-rect:before {
589
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0b9'): ;
590
+ }
591
+ .icon-friendfeed:before {
592
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ba'): ;
593
+ }
594
+ .icon-foursquare:before {
595
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0bb'): ;
596
+ }
597
+ .icon-file-new-alt:before {
598
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0bc'): ;
599
+ }
600
+ .icon-file-new:before {
601
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0bd'): ;
602
+ }
603
+ .icon-file-edit-alt:before {
604
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0be'): ;
605
+ }
606
+ .icon-file-edit:before {
607
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0bf'): ;
608
+ }
609
+ .icon-file-alt:before {
610
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c0'): ;
611
+ }
612
+ .icon-file:before {
613
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c1'): ;
614
+ }
615
+ .icon-dribble:before {
616
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c2'): ;
617
+ }
618
+ .icon-download-alt:before {
619
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c3'): ;
620
+ }
621
+ .icon-download:before {
622
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c4'): ;
623
+ }
624
+ .icon-digg:before {
625
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c5'): ;
626
+ }
627
+ .icon-deviantart:before {
628
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c6'): ;
629
+ }
630
+ .icon-delicious:before {
631
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c7'): ;
632
+ }
633
+ .icon-circle-arrow-left:before {
634
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c8'): ;
635
+ }
636
+ .icon-circle-arrow-down:before {
637
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0c9'): ;
638
+ }
639
+ .icon-child:before {
640
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ca'): ;
641
+ }
642
+ .icon-chevron-up:before {
643
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0cb'): ;
644
+ }
645
+ .icon-chevron-right:before {
646
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0cc'): ;
647
+ }
648
+ .icon-chevron-left:before {
649
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0cd'): ;
650
+ }
651
+ .icon-bold:before {
652
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ce'): ;
653
+ }
654
+ .icon-blogger:before {
655
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0cf'): ;
656
+ }
657
+ .icon-blind:before {
658
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d0'): ;
659
+ }
660
+ .icon-bell:before {
661
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d1'): ;
662
+ }
663
+ .icon-behance:before {
664
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d2'): ;
665
+ }
666
+ .icon-barcode:before {
667
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d3'): ;
668
+ }
669
+ .icon-arrow-left:before {
670
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d4'): ;
671
+ }
672
+ .icon-arrow-down:before {
673
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d5'): ;
674
+ }
675
+ .icon-align-right:before {
676
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d6'): ;
677
+ }
678
+ .icon-align-left:before {
679
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d7'): ;
680
+ }
681
+ .icon-align-justify:before {
682
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d8'): ;
683
+ }
684
+ .icon-align-center:before {
685
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0d9'): ;
686
+ }
687
+ .icon-adult:before {
688
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0da'): ;
689
+ }
690
+ .icon-adjust:before {
691
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0db'): ;
692
+ }
693
+ .icon-address-book-alt:before {
694
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0dc'): ;
695
+ }
696
+ .icon-address-book:before {
697
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0dd'): ;
698
+ }
699
+ .icon-idea:before {
700
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0de'): ;
701
+ }
702
+ .icon-home-alt:before {
703
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0df'): ;
704
+ }
705
+ .icon-home:before {
706
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e0'): ;
707
+ }
708
+ .icon-heart-empty:before {
709
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e1'): ;
710
+ }
711
+ .icon-globe:before {
712
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e2'): ;
713
+ }
714
+ .icon-glasses:before {
715
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e3'): ;
716
+ }
717
+ .icon-glass:before {
718
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e4'): ;
719
+ }
720
+ .icon-github-text:before {
721
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e5'): ;
722
+ }
723
+ .icon-flag:before {
724
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e6'): ;
725
+ }
726
+ .icon-fire:before {
727
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e7'): ;
728
+ }
729
+ .icon-filter:before {
730
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e8'): ;
731
+ }
732
+ .icon-film:before {
733
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0e9'): ;
734
+ }
735
+ .icon-envelope-alt:before {
736
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ea'): ;
737
+ }
738
+ .icon-envelope:before {
739
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0eb'): ;
740
+ }
741
+ .icon-eject:before {
742
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ec'): ;
743
+ }
744
+ .icon-edit:before {
745
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ed'): ;
746
+ }
747
+ .icon-cloud-alt:before {
748
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ee'): ;
749
+ }
750
+ .icon-cloud:before {
751
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ef'): ;
752
+ }
753
+ .icon-circle-arrow-up:before {
754
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f0'): ;
755
+ }
756
+ .icon-circle-arrow-right:before {
757
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f1'): ;
758
+ }
759
+ .icon-braille:before {
760
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f2'): ;
761
+ }
762
+ .icon-bookmark-empty:before {
763
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f3'): ;
764
+ }
765
+ .icon-bookmark:before {
766
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f4'): ;
767
+ }
768
+ .icon-book:before {
769
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f5'): ;
770
+ }
771
+ .icon-inbox-box:before {
772
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f6'): ;
773
+ }
774
+ .icon-inbox-alt:before {
775
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f7'): ;
776
+ }
777
+ .icon-inbox:before {
778
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f8'): ;
779
+ }
780
+ .icon-idea-alt:before {
781
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0f9'): ;
782
+ }
783
+ .icon-graph-alt:before {
784
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0fa'): ;
785
+ }
786
+ .icon-graph:before {
787
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0fb'): ;
788
+ }
789
+ .icon-googleplus:before {
790
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0fc'): ;
791
+ }
792
+ .icon-globe-alt:before {
793
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0fd'): ;
794
+ }
795
+ .icon-folder-close:before {
796
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0fe'): ;
797
+ }
798
+ .icon-folder:before {
799
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe0ff'): ;
800
+ }
801
+ .icon-flickr:before {
802
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe100'): ;
803
+ }
804
+ .icon-flag-alt:before {
805
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe101'): ;
806
+ }
807
+ .icon-eye-close:before {
808
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe102'): ;
809
+ }
810
+ .icon-exclamation-sign:before {
811
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe103'): ;
812
+ }
813
+ .icon-error-alt:before {
814
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe104'): ;
815
+ }
816
+ .icon-error:before {
817
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe105'): ;
818
+ }
819
+ .icon-comment:before {
820
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe106'): ;
821
+ }
822
+ .icon-cogs:before {
823
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe107'): ;
824
+ }
825
+ .icon-cog-alt:before {
826
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe108'): ;
827
+ }
828
+ .icon-cog:before {
829
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe109'): ;
830
+ }
831
+ .icon-calendar-sign:before {
832
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe10a'): ;
833
+ }
834
+ .icon-calendar:before {
835
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe10b'): ;
836
+ }
837
+ .icon-bullhorn:before {
838
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe10c'): ;
839
+ }
840
+ .icon-briefcase:before {
841
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe10d'): ;
842
+ }
843
+ .icon-vkontakte:before {
844
+ *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = '&#xe10e'): ;
845
+ }
ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.css ADDED
@@ -0,0 +1,294 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face{font-family:'Elusive-Icons';src:url('font/Elusive-Icons.eot?v=1.5');src:url('font/Elusive-Icons.eot?#iefix&v=1.5') format('embedded-opentype'),url('font/Elusive-Icons.svg#Elusive-Icons?v=1.5') format('svg'),url('font/Elusive-Icons.woff?v=1.5') format('woff'),url('font/Elusive-Icons.ttf?v=1.5') format('truetype');font-weight:normal;font-style:normal}[data-icon]:before{font-family:'Elusive-Icons';content:attr(data-icon);speak:none;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased}
2
+ [class^="icon-"]:before,[class*=" icon-"]:before{font-family:'Elusive-Icons';font-weight:normal;font-style:normal;speak:none;line-height:1;display:inline-block;text-decoration:inherit;-webkit-font-smoothing:antialiased}
3
+ a [class^="icon-"],a [class*=" icon-"]{display:inline-block;text-decoration:inherit}
4
+ .icon-large:before{vertical-align:middle;font-size:1.33em}
5
+ .btn [class^="icon-"],.nav-tabs [class^="icon-"],.btn [class*=" icon-"],.nav-tabs [class*=" icon-"]{line-height:.9em}
6
+ li [class^="icon-"],li [class*=" icon-"]{display:inline-block;width:1.25em;text-align:center}
7
+ li .icon-large:before,li .icon-large:before{width:1.875em}
8
+ ul.icons{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.icons li [class^="icon-"],ul.icons li [class*=" icon-"]{width:.8em}
9
+ ul.icons li .icon-large:before,ul.icons li .icon-large:before{vertical-align:initial}
10
+ .btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:0}
11
+ .icon-move:before{content:"\e074"}
12
+ .icon-music:before{content:"\e073"}
13
+ .icon-network:before{content:"\e072"}
14
+ .icon-off:before{content:"\e071"}
15
+ .icon-ok:before{content:"\e070"}
16
+ .icon-ok-circle:before{content:"\e06f"}
17
+ .icon-ok-sign:before{content:"\e06e"}
18
+ .icon-paper-clip:before{content:"\e06d"}
19
+ .icon-paper-clip-alt:before{content:"\e06c"}
20
+ .icon-path:before{content:"\e06b"}
21
+ .icon-plus-sign:before{content:"\e059"}
22
+ .icon-print:before{content:"\e058"}
23
+ .icon-qrcode:before{content:"\e057"}
24
+ .icon-question:before{content:"\e056"}
25
+ .icon-question-sign:before{content:"\e055"}
26
+ .icon-quotes:before{content:"\e054"}
27
+ .icon-quotes-alt:before{content:"\e053"}
28
+ .icon-random:before{content:"\e052"}
29
+ .icon-record:before{content:"\e051"}
30
+ .icon-reddit:before{content:"\e050"}
31
+ .icon-refresh:before{content:"\e04f"}
32
+ .icon-screenshot:before{content:"\e03f"}
33
+ .icon-search:before{content:"\e03e"}
34
+ .icon-search-alt:before{content:"\e03d"}
35
+ .icon-share:before{content:"\e03c"}
36
+ .icon-share-alt:before{content:"\e03b"}
37
+ .icon-shopping-cart:before{content:"\e03a"}
38
+ .icon-shopping-cart-sign:before{content:"\e039"}
39
+ .icon-signal:before{content:"\e038"}
40
+ .icon-skype:before{content:"\e037"}
41
+ .icon-slideshare:before{content:"\e036"}
42
+ .icon-smiley:before{content:"\e035"}
43
+ .icon-th-large:before{content:"\e023"}
44
+ .icon-th-list:before{content:"\e022"}
45
+ .icon-thumbs-down:before{content:"\e021"}
46
+ .icon-thumbs-up:before{content:"\e020"}
47
+ .icon-time:before{content:"\e01f"}
48
+ .icon-time-alt:before{content:"\e01e"}
49
+ .icon-tint:before{content:"\e01d"}
50
+ .icon-torso:before{content:"\e01c"}
51
+ .icon-trash:before{content:"\e01b"}
52
+ .icon-trash-alt:before{content:"\e01a"}
53
+ .icon-tumblr:before{content:"\e019"}
54
+ .icon-w3c:before{content:"\e00a"}
55
+ .icon-warning-sign:before{content:"\e009"}
56
+ .icon-website:before{content:"\e008"}
57
+ .icon-website-alt:before{content:"\e007"}
58
+ .icon-wheelchair:before{content:"\e006"}
59
+ .icon-wordpress:before{content:"\e005"}
60
+ .icon-wrench:before{content:"\e004"}
61
+ .icon-wrench-alt:before{content:"\e003"}
62
+ .icon-youtube:before{content:"\e002"}
63
+ .icon-zoom-in:before{content:"\e001"}
64
+ .icon-zoom-out:before{content:"\e000"}
65
+ .icon-pause-alt:before{content:"\e069"}
66
+ .icon-pencil:before{content:"\e068"}
67
+ .icon-pencil-alt:before{content:"\e067"}
68
+ .icon-person:before{content:"\e066"}
69
+ .icon-phone:before{content:"\e065"}
70
+ .icon-phone-alt:before{content:"\e064"}
71
+ .icon-photo:before{content:"\e063"}
72
+ .icon-photo-alt:before{content:"\e062"}
73
+ .icon-picasa:before{content:"\e061"}
74
+ .icon-picture:before{content:"\e060"}
75
+ .icon-pinterest:before{content:"\e05f"}
76
+ .icon-plane:before{content:"\e05e"}
77
+ .icon-play-alt:before{content:"\e05c"}
78
+ .icon-play-circle:before{content:"\e05b"}
79
+ .icon-plus:before{content:"\e05a"}
80
+ .icon-remove:before{content:"\e04e"}
81
+ .icon-remove-circle:before{content:"\e04d"}
82
+ .icon-remove-sign:before{content:"\e04c"}
83
+ .icon-repeat:before{content:"\e04b"}
84
+ .icon-repeat-alt:before{content:"\e04a"}
85
+ .icon-resize-full:before{content:"\e049"}
86
+ .icon-resize-horizontal:before{content:"\e048"}
87
+ .icon-resize-small:before{content:"\e047"}
88
+ .icon-resize-vertical:before{content:"\e046"}
89
+ .icon-retweet:before{content:"\e045"}
90
+ .icon-reverse-alt:before{content:"\e044"}
91
+ .icon-road:before{content:"\e043"}
92
+ .icon-rss:before{content:"\e042"}
93
+ .icon-screen:before{content:"\e041"}
94
+ .icon-screen-alt:before{content:"\e040"}
95
+ .icon-smiley-alt:before{content:"\e034"}
96
+ .icon-speaker:before{content:"\e033"}
97
+ .icon-stackoverflow:before{content:"\e032"}
98
+ .icon-star:before{content:"\e031"}
99
+ .icon-star-alt:before{content:"\e030"}
100
+ .icon-star-empty:before{content:"\e02f"}
101
+ .icon-stop:before{content:"\e11b"}
102
+ .icon-stop-alt:before{content:"\e02b"}
103
+ .icon-stumbleupon:before{content:"\e02a"}
104
+ .icon-tag:before{content:"\e029"}
105
+ .icon-tags:before{content:"\e028"}
106
+ .icon-tasks:before{content:"\e027"}
107
+ .icon-text-height:before{content:"\e026"}
108
+ .icon-text-width:before{content:"\e025"}
109
+ .icon-th:before{content:"\e024"}
110
+ .icon-twitter:before{content:"\e018"}
111
+ .icon-universal-access:before{content:"\e017"}
112
+ .icon-unlock:before{content:"\e016"}
113
+ .icon-unlock-alt:before{content:"\e015"}
114
+ .icon-upload:before{content:"\e014"}
115
+ .icon-user:before{content:"\e013"}
116
+ .icon-video:before{content:"\e012"}
117
+ .icon-video-alt:before{content:"\e011"}
118
+ .icon-video-chat:before{content:"\e010"}
119
+ .icon-view-mode:before{content:"\e00f"}
120
+ .icon-vimeo:before{content:"\e00e"}
121
+ .icon-vkontakte:before{content:"\e10e"}
122
+ .icon-volume-down:before{content:"\e00d"}
123
+ .icon-volume-off:before{content:"\e00c"}
124
+ .icon-volume-up:before{content:"\e00b"}
125
+ .icon-backward:before{content:"\e0ab"}
126
+ .icon-fast-backward:before{content:"\e09a"}
127
+ .icon-fast-forward:before{content:"\e099"}
128
+ .icon-forward:before{content:"\e093"}
129
+ .icon-play:before{content:"\e05d"}
130
+ .icon-step-backward:before{content:"\e02e"}
131
+ .icon-step-forward:before{content:"\e02d"}
132
+ .icon-briefcase:before{content:"\e10d"}
133
+ .icon-bullhorn:before{content:"\e10c"}
134
+ .icon-calendar:before{content:"\e10b"}
135
+ .icon-calendar-sign:before{content:"\e10a"}
136
+ .icon-address-book:before{content:"\e0dd"}
137
+ .icon-address-book-alt:before{content:"\e0dc"}
138
+ .icon-adjust:before{content:"\e0db"}
139
+ .icon-adult:before{content:"\e0da"}
140
+ .icon-align-center:before{content:"\e0d9"}
141
+ .icon-align-justify:before{content:"\e0d8"}
142
+ .icon-align-left:before{content:"\e0d7"}
143
+ .icon-align-right:before{content:"\e0d6"}
144
+ .icon-arrow-down:before{content:"\e0d5"}
145
+ .icon-arrow-left:before{content:"\e0d4"}
146
+ .icon-arrow-right:before{content:"\e0af"}
147
+ .icon-arrow-up:before{content:"\e0ae"}
148
+ .icon-asl:before{content:"\e0ad"}
149
+ .icon-asterisk:before{content:"\e0ac"}
150
+ .icon-ban-circle:before{content:"\e0aa"}
151
+ .icon-barcode:before{content:"\e0d3"}
152
+ .icon-behance:before{content:"\e0d2"}
153
+ .icon-bell:before{content:"\e0d1"}
154
+ .icon-blind:before{content:"\e0d0"}
155
+ .icon-blogger:before{content:"\e0cf"}
156
+ .icon-bold:before{content:"\e0ce"}
157
+ .icon-book:before{content:"\e0f5"}
158
+ .icon-bookmark:before{content:"\e0f4"}
159
+ .icon-bookmark-empty:before{content:"\e0f3"}
160
+ .icon-braille:before{content:"\e0f2"}
161
+ .icon-camera:before{content:"\e0a9"}
162
+ .icon-cc:before{content:"\e0a8"}
163
+ .icon-certificate:before{content:"\e0a7"}
164
+ .icon-check:before{content:"\e0a6"}
165
+ .icon-check-empty:before{content:"\e0a5"}
166
+ .icon-chevron-down:before{content:"\e0a4"}
167
+ .icon-chevron-left:before{content:"\e0cd"}
168
+ .icon-chevron-right:before{content:"\e0cc"}
169
+ .icon-chevron-up:before{content:"\e0cb"}
170
+ .icon-child:before{content:"\e0ca"}
171
+ .icon-circle-arrow-down:before{content:"\e0c9"}
172
+ .icon-circle-arrow-left:before{content:"\e0c8"}
173
+ .icon-circle-arrow-right:before{content:"\e0f1"}
174
+ .icon-circle-arrow-up:before{content:"\e0f0"}
175
+ .icon-cloud:before{content:"\e0ef"}
176
+ .icon-cloud-alt:before{content:"\e0ee"}
177
+ .icon-cog:before{content:"\e109"}
178
+ .icon-cog-alt:before{content:"\e108"}
179
+ .icon-cogs:before{content:"\e107"}
180
+ .icon-comment:before{content:"\e106"}
181
+ .icon-comment-alt:before{content:"\e0a3"}
182
+ .icon-compass:before{content:"\e0a2"}
183
+ .icon-compass-alt:before{content:"\e0a1"}
184
+ .icon-credit-card:before{content:"\e0a0"}
185
+ .icon-css:before{content:"\e09f"}
186
+ .icon-dashboard:before{content:"\e09e"}
187
+ .icon-delicious:before{content:"\e0c7"}
188
+ .icon-deviantart:before{content:"\e0c6"}
189
+ .icon-digg:before{content:"\e0c5"}
190
+ .icon-download:before{content:"\e0c4"}
191
+ .icon-download-alt:before{content:"\e0c3"}
192
+ .icon-dribble:before{content:"\e0c2"}
193
+ .icon-edit:before{content:"\e0ed"}
194
+ .icon-eject:before{content:"\e0ec"}
195
+ .icon-envelope:before{content:"\e0eb"}
196
+ .icon-envelope-alt:before{content:"\e0ea"}
197
+ .icon-error:before{content:"\e105"}
198
+ .icon-error-alt:before{content:"\e104"}
199
+ .icon-exclamation-sign:before{content:"\e103"}
200
+ .icon-eye-close:before{content:"\e102"}
201
+ .icon-eye-open:before{content:"\e09d"}
202
+ .icon-facebook:before{content:"\e09c"}
203
+ .icon-facetime-video:before{content:"\e09b"}
204
+ .icon-female:before{content:"\e098"}
205
+ .icon-file:before{content:"\e0c1"}
206
+ .icon-file-alt:before{content:"\e0c0"}
207
+ .icon-file-edit:before{content:"\e0bf"}
208
+ .icon-file-edit-alt:before{content:"\e0be"}
209
+ .icon-file-new:before{content:"\e0bd"}
210
+ .icon-file-new-alt:before{content:"\e0bc"}
211
+ .icon-film:before{content:"\e0e9"}
212
+ .icon-filter:before{content:"\e0e8"}
213
+ .icon-fire:before{content:"\e0e7"}
214
+ .icon-flag:before{content:"\e0e6"}
215
+ .icon-flag-alt:before{content:"\e101"}
216
+ .icon-flickr:before{content:"\e100"}
217
+ .icon-folder:before{content:"\e0ff"}
218
+ .icon-folder-close:before{content:"\e0fe"}
219
+ .icon-folder-open:before{content:"\e097"}
220
+ .icon-folder-sign:before{content:"\e096"}
221
+ .icon-font:before{content:"\e095"}
222
+ .icon-fontsize:before{content:"\e094"}
223
+ .icon-forward-alt:before{content:"\e092"}
224
+ .icon-foursquare:before{content:"\e0bb"}
225
+ .icon-friendfeed:before{content:"\e0ba"}
226
+ .icon-friendfeed-rect:before{content:"\e0b9"}
227
+ .icon-fullscreen:before{content:"\e0b8"}
228
+ .icon-gift:before{content:"\e0b7"}
229
+ .icon-github:before{content:"\e0b6"}
230
+ .icon-github-text:before{content:"\e0e5"}
231
+ .icon-glass:before{content:"\e0e4"}
232
+ .icon-glasses:before{content:"\e0e3"}
233
+ .icon-globe:before{content:"\e0e2"}
234
+ .icon-globe-alt:before{content:"\e0fd"}
235
+ .icon-googleplus:before{content:"\e0fc"}
236
+ .icon-graph:before{content:"\e0fb"}
237
+ .icon-graph-alt:before{content:"\e0fa"}
238
+ .icon-group:before{content:"\e091"}
239
+ .icon-group-alt:before{content:"\e090"}
240
+ .icon-guidedog:before{content:"\e08f"}
241
+ .icon-hand-down:before{content:"\e08e"}
242
+ .icon-hand-left:before{content:"\e08d"}
243
+ .icon-hand-right:before{content:"\e08c"}
244
+ .icon-hand-up:before{content:"\e0b5"}
245
+ .icon-hdd:before{content:"\e0b4"}
246
+ .icon-headphones:before{content:"\e0b3"}
247
+ .icon-hearing-impaired:before{content:"\e0b2"}
248
+ .icon-heart:before{content:"\e0b1"}
249
+ .icon-heart-alt:before{content:"\e0b0"}
250
+ .icon-heart-empty:before{content:"\e0e1"}
251
+ .icon-home:before{content:"\e0e0"}
252
+ .icon-home-alt:before{content:"\e0df"}
253
+ .icon-idea:before{content:"\e0de"}
254
+ .icon-idea-alt:before{content:"\e0f9"}
255
+ .icon-inbox:before{content:"\e0f8"}
256
+ .icon-inbox-alt:before{content:"\e0f7"}
257
+ .icon-inbox-box:before{content:"\e0f6"}
258
+ .icon-indent-left:before{content:"\e08b"}
259
+ .icon-indent-right:before{content:"\e08a"}
260
+ .icon-info-sign:before{content:"\e089"}
261
+ .icon-instagram:before{content:"\e088"}
262
+ .icon-iphone-home:before{content:"\e087"}
263
+ .icon-italic:before{content:"\e086"}
264
+ .icon-key:before{content:"\e085"}
265
+ .icon-laptop:before{content:"\e084"}
266
+ .icon-laptop-alt:before{content:"\e083"}
267
+ .icon-leaf:before{content:"\e082"}
268
+ .icon-linkedin:before{content:"\e081"}
269
+ .icon-list:before{content:"\e080"}
270
+ .icon-list-alt:before{content:"\e07f"}
271
+ .icon-lock:before{content:"\e07e"}
272
+ .icon-lock-alt:before{content:"\e07d"}
273
+ .icon-magnet:before{content:"\e07c"}
274
+ .icon-male:before{content:"\e07b"}
275
+ .icon-map-marker:before{content:"\e07a"}
276
+ .icon-map-marker-alt:before{content:"\e079"}
277
+ .icon-mic:before{content:"\e078"}
278
+ .icon-mic-alt:before{content:"\e077"}
279
+ .icon-minus:before{content:"\e076"}
280
+ .icon-minus-sign:before{content:"\e075"}
281
+ .icon-pause:before{content:"\e06a"}
282
+ .icon-fork:before{content:"\e10f"}
283
+ .icon-broom:before{content:"\e110"}
284
+ .icon-return-key:before{content:"\e111"}
285
+ .icon-lastfm:before{content:"\e112"}
286
+ .icon-livejournal:before{content:"\e113"}
287
+ .icon-myspace:before{content:"\e114"}
288
+ .icon-soundcloud:before{content:"\e115"}
289
+ .icon-viadeo:before{content:"\e116"}
290
+ .icon-spotify:before{content:"\e117"}
291
+ .icon-caret-left:before{content:"\e119"}
292
+ .icon-caret-up:before{content:"\e02c"}
293
+ .icon-caret-right:before{content:"\e118"}
294
+ .icon-caret-down:before{content:"\e11a"}
ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.less ADDED
@@ -0,0 +1,943 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @elusiveWebfontPath: 'font/';
2
+ @Elusive-iconfontVersion: 1.5;
3
+ @font-face {
4
+ font-family: 'Elusive-Icons';
5
+ src:url('@{elusiveWebfontPath}Elusive-Icons.eot?v=@{Elusive-iconfontVersion}');
6
+ src:url('@{elusiveWebfontPath}Elusive-Icons.eot?#iefix&v=@{Elusive-iconfontVersion}') format('embedded-opentype'),
7
+ url('@{elusiveWebfontPath}Elusive-Icons.svg#Elusive-Icons?v=@{Elusive-iconfontVersion}') format('svg'),
8
+ url('@{elusiveWebfontPath}Elusive-Icons.woff?v=@{Elusive-iconfontVersion}') format('woff'),
9
+ url('@{elusiveWebfontPath}Elusive-Icons.ttf?v=@{Elusive-iconfontVersion}') format('truetype');
10
+ font-weight: normal;
11
+ font-style: normal;
12
+ }
13
+
14
+ [data-icon]:before {
15
+ font-family: 'Elusive-Icons';
16
+ content: attr(data-icon);
17
+ speak: none;
18
+ font-weight: normal;
19
+ line-height: 1;
20
+ -webkit-font-smoothing: antialiased;
21
+ }
22
+
23
+ [class^="icon-"]:before,
24
+ [class*=" icon-"]:before {
25
+ font-family: 'Elusive-Icons';
26
+ font-weight: normal;
27
+ font-style: normal;
28
+ speak: none;
29
+ line-height: 1;
30
+ display: inline-block;
31
+ text-decoration: inherit;
32
+ -webkit-font-smoothing: antialiased;
33
+ }
34
+
35
+ a [class^="icon-"],
36
+ a [class*=" icon-"] {
37
+ display: inline-block;
38
+ text-decoration: inherit;
39
+ }
40
+
41
+ /* makes the font 33% larger relative to the icon container */
42
+ .icon-large:before {
43
+ vertical-align: middle;
44
+ font-size: 1.33em;
45
+ }
46
+
47
+ .btn, .nav-tabs {
48
+ [class^="icon-"],
49
+ [class*=" icon-"] {
50
+ /* keeps button heights with and without icons the same */
51
+ line-height: .9em;
52
+ }
53
+ }
54
+
55
+ li {
56
+ [class^="icon-"],
57
+ [class*=" icon-"] {
58
+ display: inline-block;
59
+ width: 1.25em;
60
+ text-align: center;
61
+ }
62
+ .icon-large:before,
63
+ .icon-large:before {
64
+ /* 1.5 increased font size for icon-large * 1.25 width */
65
+ width: 1.5*1.25em;
66
+ }
67
+ }
68
+
69
+ ul.icons {
70
+ list-style-type: none;
71
+ margin-left: 2em;
72
+ text-indent: -.8em;
73
+
74
+ li {
75
+ [class^="icon-"],
76
+ [class*=" icon-"] {
77
+ width: .8em;
78
+ }
79
+ .icon-large:before,
80
+ .icon-large:before {
81
+ /* 1.5 increased font size for icon-large * 1.25 width */
82
+ vertical-align: initial;
83
+ // width: 1.5*1.25em;
84
+ }
85
+ }
86
+ }
87
+
88
+ .btn-large [class^="icon-"], .btn-large [class*=" icon-"]{
89
+ margin-top: 0;
90
+ }
91
+
92
+ .icon-move:before {
93
+ content: "\e074";
94
+ }
95
+ .icon-music:before {
96
+ content: "\e073";
97
+ }
98
+ .icon-network:before {
99
+ content: "\e072";
100
+ }
101
+ .icon-off:before {
102
+ content: "\e071";
103
+ }
104
+ .icon-ok:before {
105
+ content: "\e070";
106
+ }
107
+ .icon-ok-circle:before {
108
+ content: "\e06f";
109
+ }
110
+ .icon-ok-sign:before {
111
+ content: "\e06e";
112
+ }
113
+ .icon-paper-clip:before {
114
+ content: "\e06d";
115
+ }
116
+ .icon-paper-clip-alt:before {
117
+ content: "\e06c";
118
+ }
119
+ .icon-path:before {
120
+ content: "\e06b";
121
+ }
122
+ .icon-plus-sign:before {
123
+ content: "\e059";
124
+ }
125
+ .icon-print:before {
126
+ content: "\e058";
127
+ }
128
+ .icon-qrcode:before {
129
+ content: "\e057";
130
+ }
131
+ .icon-question:before {
132
+ content: "\e056";
133
+ }
134
+ .icon-question-sign:before {
135
+ content: "\e055";
136
+ }
137
+ .icon-quotes:before {
138
+ content: "\e054";
139
+ }
140
+ .icon-quotes-alt:before {
141
+ content: "\e053";
142
+ }
143
+ .icon-random:before {
144
+ content: "\e052";
145
+ }
146
+ .icon-record:before {
147
+ content: "\e051";
148
+ }
149
+ .icon-reddit:before {
150
+ content: "\e050";
151
+ }
152
+ .icon-refresh:before {
153
+ content: "\e04f";
154
+ }
155
+ .icon-screenshot:before {
156
+ content: "\e03f";
157
+ }
158
+ .icon-search:before {
159
+ content: "\e03e";
160
+ }
161
+ .icon-search-alt:before {
162
+ content: "\e03d";
163
+ }
164
+ .icon-share:before {
165
+ content: "\e03c";
166
+ }
167
+ .icon-share-alt:before {
168
+ content: "\e03b";
169
+ }
170
+ .icon-shopping-cart:before {
171
+ content: "\e03a";
172
+ }
173
+ .icon-shopping-cart-sign:before {
174
+ content: "\e039";
175
+ }
176
+ .icon-signal:before {
177
+ content: "\e038";
178
+ }
179
+ .icon-skype:before {
180
+ content: "\e037";
181
+ }
182
+ .icon-slideshare:before {
183
+ content: "\e036";
184
+ }
185
+ .icon-smiley:before {
186
+ content: "\e035";
187
+ }
188
+ .icon-th-large:before {
189
+ content: "\e023";
190
+ }
191
+ .icon-th-list:before {
192
+ content: "\e022";
193
+ }
194
+ .icon-thumbs-down:before {
195
+ content: "\e021";
196
+ }
197
+ .icon-thumbs-up:before {
198
+ content: "\e020";
199
+ }
200
+ .icon-time:before {
201
+ content: "\e01f";
202
+ }
203
+ .icon-time-alt:before {
204
+ content: "\e01e";
205
+ }
206
+ .icon-tint:before {
207
+ content: "\e01d";
208
+ }
209
+ .icon-torso:before {
210
+ content: "\e01c";
211
+ }
212
+ .icon-trash:before {
213
+ content: "\e01b";
214
+ }
215
+ .icon-trash-alt:before {
216
+ content: "\e01a";
217
+ }
218
+ .icon-tumblr:before {
219
+ content: "\e019";
220
+ }
221
+ .icon-w3c:before {
222
+ content: "\e00a";
223
+ }
224
+ .icon-warning-sign:before {
225
+ content: "\e009";
226
+ }
227
+ .icon-website:before {
228
+ content: "\e008";
229
+ }
230
+ .icon-website-alt:before {
231
+ content: "\e007";
232
+ }
233
+ .icon-wheelchair:before {
234
+ content: "\e006";
235
+ }
236
+ .icon-wordpress:before {
237
+ content: "\e005";
238
+ }
239
+ .icon-wrench:before {
240
+ content: "\e004";
241
+ }
242
+ .icon-wrench-alt:before {
243
+ content: "\e003";
244
+ }
245
+ .icon-youtube:before {
246
+ content: "\e002";
247
+ }
248
+ .icon-zoom-in:before {
249
+ content: "\e001";
250
+ }
251
+ .icon-zoom-out:before {
252
+ content: "\e000";
253
+ }
254
+ .icon-pause-alt:before {
255
+ content: "\e069";
256
+ }
257
+ .icon-pencil:before {
258
+ content: "\e068";
259
+ }
260
+ .icon-pencil-alt:before {
261
+ content: "\e067";
262
+ }
263
+ .icon-person:before {
264
+ content: "\e066";
265
+ }
266
+ .icon-phone:before {
267
+ content: "\e065";
268
+ }
269
+ .icon-phone-alt:before {
270
+ content: "\e064";
271
+ }
272
+ .icon-photo:before {
273
+ content: "\e063";
274
+ }
275
+ .icon-photo-alt:before {
276
+ content: "\e062";
277
+ }
278
+ .icon-picasa:before {
279
+ content: "\e061";
280
+ }
281
+ .icon-picture:before {
282
+ content: "\e060";
283
+ }
284
+ .icon-pinterest:before {
285
+ content: "\e05f";
286
+ }
287
+ .icon-plane:before {
288
+ content: "\e05e";
289
+ }
290
+ .icon-play-alt:before {
291
+ content: "\e05c";
292
+ }
293
+ .icon-play-circle:before {
294
+ content: "\e05b";
295
+ }
296
+ .icon-plus:before {
297
+ content: "\e05a";
298
+ }
299
+ .icon-remove:before {
300
+ content: "\e04e";
301
+ }
302
+ .icon-remove-circle:before {
303
+ content: "\e04d";
304
+ }
305
+ .icon-remove-sign:before {
306
+ content: "\e04c";
307
+ }
308
+ .icon-repeat:before {
309
+ content: "\e04b";
310
+ }
311
+ .icon-repeat-alt:before {
312
+ content: "\e04a";
313
+ }
314
+ .icon-resize-full:before {
315
+ content: "\e049";
316
+ }
317
+ .icon-resize-horizontal:before {
318
+ content: "\e048";
319
+ }
320
+ .icon-resize-small:before {
321
+ content: "\e047";
322
+ }
323
+ .icon-resize-vertical:before {
324
+ content: "\e046";
325
+ }
326
+ .icon-retweet:before {
327
+ content: "\e045";
328
+ }
329
+ .icon-reverse-alt:before {
330
+ content: "\e044";
331
+ }
332
+ .icon-road:before {
333
+ content: "\e043";
334
+ }
335
+ .icon-rss:before {
336
+ content: "\e042";
337
+ }
338
+ .icon-screen:before {
339
+ content: "\e041";
340
+ }
341
+ .icon-screen-alt:before {
342
+ content: "\e040";
343
+ }
344
+ .icon-smiley-alt:before {
345
+ content: "\e034";
346
+ }
347
+ .icon-speaker:before {
348
+ content: "\e033";
349
+ }
350
+ .icon-stackoverflow:before {
351
+ content: "\e032";
352
+ }
353
+ .icon-star:before {
354
+ content: "\e031";
355
+ }
356
+ .icon-star-alt:before {
357
+ content: "\e030";
358
+ }
359
+ .icon-star-empty:before {
360
+ content: "\e02f";
361
+ }
362
+ .icon-stop:before {
363
+ content: "\e11b";
364
+ }
365
+ .icon-stop-alt:before {
366
+ content: "\e02b";
367
+ }
368
+ .icon-stumbleupon:before {
369
+ content: "\e02a";
370
+ }
371
+ .icon-tag:before {
372
+ content: "\e029";
373
+ }
374
+ .icon-tags:before {
375
+ content: "\e028";
376
+ }
377
+ .icon-tasks:before {
378
+ content: "\e027";
379
+ }
380
+ .icon-text-height:before {
381
+ content: "\e026";
382
+ }
383
+ .icon-text-width:before {
384
+ content: "\e025";
385
+ }
386
+ .icon-th:before {
387
+ content: "\e024";
388
+ }
389
+ .icon-twitter:before {
390
+ content: "\e018";
391
+ }
392
+ .icon-universal-access:before {
393
+ content: "\e017";
394
+ }
395
+ .icon-unlock:before {
396
+ content: "\e016";
397
+ }
398
+ .icon-unlock-alt:before {
399
+ content: "\e015";
400
+ }
401
+ .icon-upload:before {
402
+ content: "\e014";
403
+ }
404
+ .icon-user:before {
405
+ content: "\e013";
406
+ }
407
+ .icon-video:before {
408
+ content: "\e012";
409
+ }
410
+ .icon-video-alt:before {
411
+ content: "\e011";
412
+ }
413
+ .icon-video-chat:before {
414
+ content: "\e010";
415
+ }
416
+ .icon-view-mode:before {
417
+ content: "\e00f";
418
+ }
419
+ .icon-vimeo:before {
420
+ content: "\e00e";
421
+ }
422
+ .icon-vkontakte:before {
423
+ content: "\e10e";
424
+ }
425
+ .icon-volume-down:before {
426
+ content: "\e00d";
427
+ }
428
+ .icon-volume-off:before {
429
+ content: "\e00c";
430
+ }
431
+ .icon-volume-up:before {
432
+ content: "\e00b";
433
+ }
434
+ .icon-backward:before {
435
+ content: "\e0ab";
436
+ }
437
+ .icon-fast-backward:before {
438
+ content: "\e09a";
439
+ }
440
+ .icon-fast-forward:before {
441
+ content: "\e099";
442
+ }
443
+ .icon-forward:before {
444
+ content: "\e093";
445
+ }
446
+ .icon-play:before {
447
+ content: "\e05d";
448
+ }
449
+ .icon-step-backward:before {
450
+ content: "\e02e";
451
+ }
452
+ .icon-step-forward:before {
453
+ content: "\e02d";
454
+ }
455
+ .icon-briefcase:before {
456
+ content: "\e10d";
457
+ }
458
+ .icon-bullhorn:before {
459
+ content: "\e10c";
460
+ }
461
+ .icon-calendar:before {
462
+ content: "\e10b";
463
+ }
464
+ .icon-calendar-sign:before {
465
+ content: "\e10a";
466
+ }
467
+ .icon-address-book:before {
468
+ content: "\e0dd";
469
+ }
470
+ .icon-address-book-alt:before {
471
+ content: "\e0dc";
472
+ }
473
+ .icon-adjust:before {
474
+ content: "\e0db";
475
+ }
476
+ .icon-adult:before {
477
+ content: "\e0da";
478
+ }
479
+ .icon-align-center:before {
480
+ content: "\e0d9";
481
+ }
482
+ .icon-align-justify:before {
483
+ content: "\e0d8";
484
+ }
485
+ .icon-align-left:before {
486
+ content: "\e0d7";
487
+ }
488
+ .icon-align-right:before {
489
+ content: "\e0d6";
490
+ }
491
+ .icon-arrow-down:before {
492
+ content: "\e0d5";
493
+ }
494
+ .icon-arrow-left:before {
495
+ content: "\e0d4";
496
+ }
497
+ .icon-arrow-right:before {
498
+ content: "\e0af";
499
+ }
500
+ .icon-arrow-up:before {
501
+ content: "\e0ae";
502
+ }
503
+ .icon-asl:before {
504
+ content: "\e0ad";
505
+ }
506
+ .icon-asterisk:before {
507
+ content: "\e0ac";
508
+ }
509
+ .icon-ban-circle:before {
510
+ content: "\e0aa";
511
+ }
512
+ .icon-barcode:before {
513
+ content: "\e0d3";
514
+ }
515
+ .icon-behance:before {
516
+ content: "\e0d2";
517
+ }
518
+ .icon-bell:before {
519
+ content: "\e0d1";
520
+ }
521
+ .icon-blind:before {
522
+ content: "\e0d0";
523
+ }
524
+ .icon-blogger:before {
525
+ content: "\e0cf";
526
+ }
527
+ .icon-bold:before {
528
+ content: "\e0ce";
529
+ }
530
+ .icon-book:before {
531
+ content: "\e0f5";
532
+ }
533
+ .icon-bookmark:before {
534
+ content: "\e0f4";
535
+ }
536
+ .icon-bookmark-empty:before {
537
+ content: "\e0f3";
538
+ }
539
+ .icon-braille:before {
540
+ content: "\e0f2";
541
+ }
542
+ .icon-camera:before {
543
+ content: "\e0a9";
544
+ }
545
+ .icon-cc:before {
546
+ content: "\e0a8";
547
+ }
548
+ .icon-certificate:before {
549
+ content: "\e0a7";
550
+ }
551
+ .icon-check:before {
552
+ content: "\e0a6";
553
+ }
554
+ .icon-check-empty:before {
555
+ content: "\e0a5";
556
+ }
557
+ .icon-chevron-down:before {
558
+ content: "\e0a4";
559
+ }
560
+ .icon-chevron-left:before {
561
+ content: "\e0cd";
562
+ }
563
+ .icon-chevron-right:before {
564
+ content: "\e0cc";
565
+ }
566
+ .icon-chevron-up:before {
567
+ content: "\e0cb";
568
+ }
569
+ .icon-child:before {
570
+ content: "\e0ca";
571
+ }
572
+ .icon-circle-arrow-down:before {
573
+ content: "\e0c9";
574
+ }
575
+ .icon-circle-arrow-left:before {
576
+ content: "\e0c8";
577
+ }
578
+ .icon-circle-arrow-right:before {
579
+ content: "\e0f1";
580
+ }
581
+ .icon-circle-arrow-up:before {
582
+ content: "\e0f0";
583
+ }
584
+ .icon-cloud:before {
585
+ content: "\e0ef";
586
+ }
587
+ .icon-cloud-alt:before {
588
+ content: "\e0ee";
589
+ }
590
+ .icon-cog:before {
591
+ content: "\e109";
592
+ }
593
+ .icon-cog-alt:before {
594
+ content: "\e108";
595
+ }
596
+ .icon-cogs:before {
597
+ content: "\e107";
598
+ }
599
+ .icon-comment:before {
600
+ content: "\e106";
601
+ }
602
+ .icon-comment-alt:before {
603
+ content: "\e0a3";
604
+ }
605
+ .icon-compass:before {
606
+ content: "\e0a2";
607
+ }
608
+ .icon-compass-alt:before {
609
+ content: "\e0a1";
610
+ }
611
+ .icon-credit-card:before {
612
+ content: "\e0a0";
613
+ }
614
+ .icon-css:before {
615
+ content: "\e09f";
616
+ }
617
+ .icon-dashboard:before {
618
+ content: "\e09e";
619
+ }
620
+ .icon-delicious:before {
621
+ content: "\e0c7";
622
+ }
623
+ .icon-deviantart:before {
624
+ content: "\e0c6";
625
+ }
626
+ .icon-digg:before {
627
+ content: "\e0c5";
628
+ }
629
+ .icon-download:before {
630
+ content: "\e0c4";
631
+ }
632
+ .icon-download-alt:before {
633
+ content: "\e0c3";
634
+ }
635
+ .icon-dribble:before {
636
+ content: "\e0c2";
637
+ }
638
+ .icon-edit:before {
639
+ content: "\e0ed";
640
+ }
641
+ .icon-eject:before {
642
+ content: "\e0ec";
643
+ }
644
+ .icon-envelope:before {
645
+ content: "\e0eb";
646
+ }
647
+ .icon-envelope-alt:before {
648
+ content: "\e0ea";
649
+ }
650
+ .icon-error:before {
651
+ content: "\e105";
652
+ }
653
+ .icon-error-alt:before {
654
+ content: "\e104";
655
+ }
656
+ .icon-exclamation-sign:before {
657
+ content: "\e103";
658
+ }
659
+ .icon-eye-close:before {
660
+ content: "\e102";
661
+ }
662
+ .icon-eye-open:before {
663
+ content: "\e09d";
664
+ }
665
+ .icon-facebook:before {
666
+ content: "\e09c";
667
+ }
668
+ .icon-facetime-video:before {
669
+ content: "\e09b";
670
+ }
671
+ .icon-female:before {
672
+ content: "\e098";
673
+ }
674
+ .icon-file:before {
675
+ content: "\e0c1";
676
+ }
677
+ .icon-file-alt:before {
678
+ content: "\e0c0";
679
+ }
680
+ .icon-file-edit:before {
681
+ content: "\e0bf";
682
+ }
683
+ .icon-file-edit-alt:before {
684
+ content: "\e0be";
685
+ }
686
+ .icon-file-new:before {
687
+ content: "\e0bd";
688
+ }
689
+ .icon-file-new-alt:before {
690
+ content: "\e0bc";
691
+ }
692
+ .icon-film:before {
693
+ content: "\e0e9";
694
+ }
695
+ .icon-filter:before {
696
+ content: "\e0e8";
697
+ }
698
+ .icon-fire:before {
699
+ content: "\e0e7";
700
+ }
701
+ .icon-flag:before {
702
+ content: "\e0e6";
703
+ }
704
+ .icon-flag-alt:before {
705
+ content: "\e101";
706
+ }
707
+ .icon-flickr:before {
708
+ content: "\e100";
709
+ }
710
+ .icon-folder:before {
711
+ content: "\e0ff";
712
+ }
713
+ .icon-folder-close:before {
714
+ content: "\e0fe";
715
+ }
716
+ .icon-folder-open:before {
717
+ content: "\e097";
718
+ }
719
+ .icon-folder-sign:before {
720
+ content: "\e096";
721
+ }
722
+ .icon-font:before {
723
+ content: "\e095";
724
+ }
725
+ .icon-fontsize:before {
726
+ content: "\e094";
727
+ }
728
+ .icon-forward-alt:before {
729
+ content: "\e092";
730
+ }
731
+ .icon-foursquare:before {
732
+ content: "\e0bb";
733
+ }
734
+ .icon-friendfeed:before {
735
+ content: "\e0ba";
736
+ }
737
+ .icon-friendfeed-rect:before {
738
+ content: "\e0b9";
739
+ }
740
+ .icon-fullscreen:before {
741
+ content: "\e0b8";
742
+ }
743
+ .icon-gift:before {
744
+ content: "\e0b7";
745
+ }
746
+ .icon-github:before {
747
+ content: "\e0b6";
748
+ }
749
+ .icon-github-text:before {
750
+ content: "\e0e5";
751
+ }
752
+ .icon-glass:before {
753
+ content: "\e0e4";
754
+ }
755
+ .icon-glasses:before {
756
+ content: "\e0e3";
757
+ }
758
+ .icon-globe:before {
759
+ content: "\e0e2";
760
+ }
761
+ .icon-globe-alt:before {
762
+ content: "\e0fd";
763
+ }
764
+ .icon-googleplus:before {
765
+ content: "\e0fc";
766
+ }
767
+ .icon-graph:before {
768
+ content: "\e0fb";
769
+ }
770
+ .icon-graph-alt:before {
771
+ content: "\e0fa";
772
+ }
773
+ .icon-group:before {
774
+ content: "\e091";
775
+ }
776
+ .icon-group-alt:before {
777
+ content: "\e090";
778
+ }
779
+ .icon-guidedog:before {
780
+ content: "\e08f";
781
+ }
782
+ .icon-hand-down:before {
783
+ content: "\e08e";
784
+ }
785
+ .icon-hand-left:before {
786
+ content: "\e08d";
787
+ }
788
+ .icon-hand-right:before {
789
+ content: "\e08c";
790
+ }
791
+ .icon-hand-up:before {
792
+ content: "\e0b5";
793
+ }
794
+ .icon-hdd:before {
795
+ content: "\e0b4";
796
+ }
797
+ .icon-headphones:before {
798
+ content: "\e0b3";
799
+ }
800
+ .icon-hearing-impaired:before {
801
+ content: "\e0b2";
802
+ }
803
+ .icon-heart:before {
804
+ content: "\e0b1";
805
+ }
806
+ .icon-heart-alt:before {
807
+ content: "\e0b0";
808
+ }
809
+ .icon-heart-empty:before {
810
+ content: "\e0e1";
811
+ }
812
+ .icon-home:before {
813
+ content: "\e0e0";
814
+ }
815
+ .icon-home-alt:before {
816
+ content: "\e0df";
817
+ }
818
+ .icon-idea:before {
819
+ content: "\e0de";
820
+ }
821
+ .icon-idea-alt:before {
822
+ content: "\e0f9";
823
+ }
824
+ .icon-inbox:before {
825
+ content: "\e0f8";
826
+ }
827
+ .icon-inbox-alt:before {
828
+ content: "\e0f7";
829
+ }
830
+ .icon-inbox-box:before {
831
+ content: "\e0f6";
832
+ }
833
+ .icon-indent-left:before {
834
+ content: "\e08b";
835
+ }
836
+ .icon-indent-right:before {
837
+ content: "\e08a";
838
+ }
839
+ .icon-info-sign:before {
840
+ content: "\e089";
841
+ }
842
+ .icon-instagram:before {
843
+ content: "\e088";
844
+ }
845
+ .icon-iphone-home:before {
846
+ content: "\e087";
847
+ }
848
+ .icon-italic:before {
849
+ content: "\e086";
850
+ }
851
+ .icon-key:before {
852
+ content: "\e085";
853
+ }
854
+ .icon-laptop:before {
855
+ content: "\e084";
856
+ }
857
+ .icon-laptop-alt:before {
858
+ content: "\e083";
859
+ }
860
+ .icon-leaf:before {
861
+ content: "\e082";
862
+ }
863
+ .icon-linkedin:before {
864
+ content: "\e081";
865
+ }
866
+ .icon-list:before {
867
+ content: "\e080";
868
+ }
869
+ .icon-list-alt:before {
870
+ content: "\e07f";
871
+ }
872
+ .icon-lock:before {
873
+ content: "\e07e";
874
+ }
875
+ .icon-lock-alt:before {
876
+ content: "\e07d";
877
+ }
878
+ .icon-magnet:before {
879
+ content: "\e07c";
880
+ }
881
+ .icon-male:before {
882
+ content: "\e07b";
883
+ }
884
+ .icon-map-marker:before {
885
+ content: "\e07a";
886
+ }
887
+ .icon-map-marker-alt:before {
888
+ content: "\e079";
889
+ }
890
+ .icon-mic:before {
891
+ content: "\e078";
892
+ }
893
+ .icon-mic-alt:before {
894
+ content: "\e077";
895
+ }
896
+ .icon-minus:before {
897
+ content: "\e076";
898
+ }
899
+ .icon-minus-sign:before {
900
+ content: "\e075";
901
+ }
902
+ .icon-pause:before {
903
+ content: "\e06a";
904
+ }
905
+ .icon-fork:before {
906
+ content: "\e10f";
907
+ }
908
+ .icon-broom:before {
909
+ content: "\e110";
910
+ }
911
+ .icon-return-key:before {
912
+ content: "\e111";
913
+ }
914
+ .icon-lastfm:before {
915
+ content: "\e112";
916
+ }
917
+ .icon-livejournal:before {
918
+ content: "\e113";
919
+ }
920
+ .icon-myspace:before {
921
+ content: "\e114";
922
+ }
923
+ .icon-soundcloud:before {
924
+ content: "\e115";
925
+ }
926
+ .icon-viadeo:before {
927
+ content: "\e116";
928
+ }
929
+ .icon-spotify:before {
930
+ content: "\e117";
931
+ }
932
+ .icon-caret-left:before {
933
+ content: "\e119";
934
+ }
935
+ .icon-caret-up:before {
936
+ content: "\e02c";
937
+ }
938
+ .icon-caret-right:before {
939
+ content: "\e118";
940
+ }
941
+ .icon-caret-down:before {
942
+ content: "\e11a";
943
+ }
ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.eot ADDED
Binary file
ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.svg ADDED
@@ -0,0 +1,298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>
5
+ This is a custom SVG font generated by IcoMoon.
6
+ <iconset grid="16"></iconset>
7
+ </metadata>
8
+ <defs>
9
+ <font id="Elusive-Icons" horiz-adv-x="512" >
10
+ <font-face units-per-em="512" ascent="480" descent="-32" />
11
+ <missing-glyph horiz-adv-x="512" />
12
+ <glyph unicode="&#xe074;" d="M 0.00,224.00 m0.00,0.00, 88.281-88.281 -0.266,61.766 141.469,0.00 0.00-141.719 -60.984-0.266 87.50-87.50 88.281,88.281 -61.766-0.266 0.00,141.469 141.719,0.00 0.266-60.984 87.50,87.50 -88.281,88.281 0.266-61.766 -141.469,0.00 0.00,141.719 60.984,0.266 -87.50,87.50 -88.281-88.281 61.766,0.266 0.00-141.469 -141.719,0.00 -0.266,60.984 -87.50-87.50z" />
13
+ <glyph unicode="&#xe073;" d="M 154.149,446.056 141.295,111.904c-17.297,8.876 -38.999,12.716 -61.77,9.486 -49.098-6.953 -84.452-43.992 -78.964-82.715 5.49-38.727 49.741-64.476 98.838-57.521 43.574,6.175 76.282,36.046 79.254,69.754l 0.01-0.019c 0.006,0.076 0.011,0.191 0.018,0.277 0.072,0.857 0.114,1.724 0.146,2.586 1.828,34.806 13.021,299.184 13.021,299.184l 275.684,28.404 -12.451-238.103c-17.691,9.846 -40.43,14.233 -64.341,10.845 -49.098-6.96 -84.449-43.991 -78.961-82.719 5.488-38.723 49.739-64.477 98.838-57.514 44.502,6.299 77.657,37.32 79.397,71.907l 0.021,0.021C 490.968,101.32 506.523,460.224 507.073,472.907z" />
14
+ <glyph unicode="&#xe072;" d="M 0.564,229.996 m0.00,0.00,c-0.722,3.961 -0.545,7.324 -0.545,11.445l0.00,1.09c 64.774,5.557 135.337,21.873 187.858,59.406 15.07-6.905 29.889-5.962 44.106,1.09 29.786-30.084 59.017-50.993 98.012-63.221 3.993-10.174 10.346-17.986 19.058-23.435C 338.525,190.21 323.824,167.138 304.947,147.155 277.047,167.253 240.208,152.70 227.626,123.72 140.368,124.665 52.422,162.841 0.564,229.996 z M 227.081,89.384C 182.538,66.379 135.523,53.977 87.686,56.684 50.684,87.732 24.021,128.317 10.365,170.591 70.459,118.941 150.331,89.466 227.081,89.384 z m 98.557,6.54c 50.689,10.573 97.265,30.955 135.039,62.13 -49.581-129.267 -198.888-188.362 -321.263-133.526 39.725,5.723 77.041,19.444 108.903,37.605 31.841-18.247 69.735,0.946 77.321,33.791 z m 93.656,132.981c 19.511,1.44 38.537,2.876 56.629,5.996 -0.035-4.872 -0.538-9.667 -0.545-14.17C 441.363,177.198 390.23,147.455 339.251,133.53c 19.023,23.096 33.134,48.751 43.016,74.666 15.537,2.016 28.227,9.152 37.027,20.71 z m 8.713,34.88c-2.148,16.155 -10.229,29.267 -22.869,37.605 3.994,36.991 4.653,73.084 1.633,107.911 38.136-39.369 61.229-89.618 67.52-139.522 -13.794-2.907 -29.223-4.905 -46.283-5.996 z M 162.829,326.462C 114.727,296.155 58.405,281.433 2.742,276.866 16.642,363.739 75.814,435.537 155.206,464.893 157.362,436.682 163.895,409.444 174.264,385.868 157.617,368.964 153.664,347.293 162.829,326.462 z m 93.656,40.331c 25.071,31.129 45.914,62.939 57.719,100.281 20.328-6.904 38.66-15.805 54.996-26.706 5.705-44.888 6.498-89.599 2.178-131.346 -19.722-3.367 -35.228-15.366 -41.928-32.70 -29.117,10.541 -52.952,30.169 -74.053,51.23 5.30,13.674 5.50,26.491 1.089,39.24 z m -50.639,32.155c-10.131,25.045 -16.744,49.314 -16.879,75.755 30.379,6.989 63.178,6.757 92.023,1.09 -11.02-30.85 -28.431-59.443 -46.828-82.841 -6.473,2.765 -22.24,8.924 -28.315,5.996z" />
15
+ <glyph unicode="&#xe071;" d="M 219.281,480.00L 219.281,183.906L 292.719,183.906L 292.719,480.00L 219.281,480.00 z M 74.969,405.031C 28.642,358.704 0.00,294.692 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,294.692 483.358,358.704 437.031,405.031L 385.469,353.469C 418.603,320.334 439.094,274.556 439.094,224.00C 439.094,122.888 357.112,40.906 256.00,40.906C 154.888,40.906 72.906,122.888 72.906,224.00C 72.906,274.556 93.397,320.334 126.531,353.469L 74.969,405.031z" />
16
+ <glyph unicode="&#xe070;" d="M 428.475,437.695 m0.00,0.00,-260.881-260.881 -84.61,84.61 -82.983-82.983 84.61-84.61 83.525-83.525 82.983,82.983 260.881,260.881 -83.525,83.525z" />
17
+ <glyph unicode="&#xe06f;" d="M 256.00,480.00C 114.616,480.00 0.00,365.384 0.00,224.00C0.00,82.616 114.616-32.00 256.00-32.00C 397.384-32.00 512.00,82.616 512.00,224.00C 512.00,365.384 397.384,480.00 256.00,480.00 z M 256.00,424.375C 366.664,424.375 456.344,334.637 456.344,224.00C 456.344,113.363 366.664,23.656 256.00,23.656C 145.336,23.656 55.656,113.363 55.656,224.00C 55.656,334.637 145.336,424.375 256.00,424.375 z M 354.094,345.562L 205.719,197.156L 157.594,245.281L 110.375,198.094L 158.50,149.969L 206.031,102.437L 253.219,149.656L 401.625,298.031L 354.094,345.562z" />
18
+ <glyph unicode="&#xe06e;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 365.844,360.094L 419.031,306.906L 252.906,140.75L 200.031,87.906L 146.844,141.094L 92.969,195.00L 145.813,247.844L 199.688,193.937L 365.844,360.094z" />
19
+ <glyph unicode="&#xe06d;" d="M 201.439,7.317 m0.00,0.00,c 87.658,87.172 156.228,156.856 232.499,231.659 25.181,26.299 41.127,52.039 47.842,77.22 11.751,47.518 -6.316,88.666 -37.771,120.866C 413.792,467.277 381.477,481.546 347.065,479.867 312.652,478.188 278.658,460.842 245.085,427.828L 31.052,212.956 66.304,178.542 280.337,392.576c 21.962,20.881 48.097,40.566 78.06,37.771 45.651-6.409 85.965-62.282 75.541-101.56 -13.217-34.848 -31.438-50.742 -56.655-75.961 -76.713-76.517 -136.527-135.689 -211.095-210.256 -28.024-25.607 -46.148-32.54 -72.183-8.394 -13.429,13.429 -19.305,26.579 -17.627,39.449 1.862,15.017 10.364,25.402 20.144,35.252L 292.088,304.444c 8.934,8.95 29.281,26.129 37.771,18.465 6.512-15.11 -10.26-29.533 -18.465-37.771l-179.62-179.62 34.413-35.252 180.459,179.62c 31.082,32.059 53.413,71.234 18.465,107.436C 326.459,390.497 285.742,368.35 256.835,339.697L 61.268,144.129c-20.144-20.144 -31.615-41.967 -34.413-65.469 -2.206-32.947 12.649-59.395 32.735-79.737 18.88-18.777 39.278-29.179 64.629-29.377 30.482,1.22 60.453,21.297 77.22,37.771z" />
20
+ <glyph unicode="&#xe06c;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 317.25,384.344C 337.363,384.158 356.298,375.139 374.094,357.344C 393.853,337.116 405.195,311.288 397.813,281.437C 393.594,265.619 383.599,249.458 367.781,232.937C 319.869,185.946 276.786,142.167 221.719,87.406C 211.186,77.058 192.367,64.423 173.219,63.656C 157.293,63.781 144.454,70.329 132.594,82.125C 119.976,94.904 110.645,111.521 112.031,132.219C 113.789,146.982 121.002,160.689 133.656,173.344L 256.531,296.187C 274.69,314.187 300.251,328.121 324.531,307.281C 346.485,284.539 332.463,259.92 312.938,239.781L 199.563,126.937L 177.938,149.094L 290.781,261.937C 295.936,267.113 306.466,276.164 302.375,285.656C 297.042,290.47 284.269,279.685 278.656,274.062L 155.813,151.187C 149.669,145.00 144.326,138.495 143.156,129.062C 142.102,120.978 145.782,112.718 154.219,104.281C 170.574,89.112 181.958,93.445 199.563,109.531C 246.405,156.374 283.997,193.558 332.188,241.625C 348.029,257.467 359.478,267.452 367.781,289.344C 374.329,314.018 348.99,349.099 320.313,353.125C 301.491,354.881 285.078,342.523 271.281,329.406L 136.813,194.969L 114.688,216.562L 249.125,351.562C 270.216,372.302 291.569,383.195 313.188,384.25C 314.539,384.316 315.909,384.356 317.25,384.344z" />
21
+ <glyph unicode="&#xe06b;" d="M 493.566,283.392C 492.823,228.789 468.995,179.268 430.42,147.543 380.26,109.365 317.274,96.644 260.778,95.66l0.00-30.72C 259.265,25.503 236.214-8.724 203.434-23.807c-12.053-5.721 -25.364-8.144 -37.547-8.192 -17.179,0.208 -33.89,5.403 -47.787,12.288l0.00,88.747c 11.722-8.259 25.154-13.818 38.571-9.899 11.868,4.404 17.30,13.686 17.408,24.917l0.00,246.443 86.699,0.00 0.00-153.60c 19.921,0.276 39.572,2.462 57.685,6.485 23.745,5.763 46.36,14.857 63.488,30.037 21.019,20.025 30.20,43.868 30.379,69.973 -0.326,38.654 -19.776,70.798 -49.493,89.429 -33.682,19.271 -71.032,25.795 -106.837,25.941 -38.61-0.846 -76.612-8.439 -107.52-27.648 -31.567-20.435 -48.526-54.226 -48.811-87.723 2.005-24.14 8.186-57.75 24.576-73.045L 68.949,150.956c-17.943,17.945 -29.766,39.915 -37.547,62.123 -7.636,23.49 -12.874,46.874 -12.971,70.315 0.944,57.006 26.276,108.466 66.219,141.995 50.399,39.40 113.678,54.312 171.349,54.613 63.144-1.073 125.55-16.975 172.032-54.272 43.588-37.052 65.15-90.68 65.536-142.336z" />
22
+ <glyph unicode="&#xe059;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 215.125,368.281L 296.875,368.281L 296.875,264.875L 400.281,264.875L 400.281,183.125L 296.875,183.125L 296.875,79.719L 215.125,79.719L 215.125,183.125L 111.719,183.125L 111.719,264.875L 215.125,264.875L 215.125,368.281z" />
23
+ <glyph unicode="&#xe058;" d="M 156.781,444.562L 156.781,367.25L 136.563,367.25L 17.156,316.437L 494.844,316.437L 375.438,367.25L 355.219,367.25L 355.219,444.562L 156.781,444.562 z M 0.00,286.75L0.00,131.281L 79.25,131.281L 51.406-4.656L 460.594-4.656L 432.75,131.281L 512.00,131.281L 512.00,286.75L0.00,286.75 z M 124.344,228.156L 387.625,228.156L 427.625,32.844L 84.344,32.844L 124.344,228.156z" />
24
+ <glyph unicode="&#xe057;" d="M 0.00-31.998L 0.00,200.667 L 232.666,200.667 L 232.666-31.998 L 0.00-31.998 z m 0.00,279.332L 0.00,480.00 L 232.666,480.00 L 232.666,247.334 L 0.00,247.334 z m 46.333-232.999l 139.999,0.00 l0.00,139.999 l-139.999,0.00 l0.00-139.999 z m 0.00,279.332l 139.999,0.00 l0.00,139.999 l-139.999,0.00 l0.00-139.999 z m 46.667-232.666l0.00,47.00 l 47.00,0.00 l0.00-47.00 l-47.00,0.00 z m 0.00,278.999l0.00,46.333 l 47.00,0.00 l0.00-46.333 l-47.00,0.00 z m 186.332-371.999L 279.332,200.667 l 138.999,0.00 l0.00-46.333 l 47.333,0.00 l0.00,46.333 l 46.333,0.00 L 511.998,61.002 L 371.999,61.002 l0.00,46.333 l-46.333,0.00 l0.00-139.332 l-46.333,0.00 z m 0.00,279.332L 279.332,480.00 L 511.998,480.00 L 511.998,247.334 L 279.332,247.334 z m 46.333,46.333l 139.999,0.00 l0.00,139.999 l-139.999,0.00 l0.00-139.999 z m 46.333-325.666l0.00,46.333 l 46.333,0.00 l0.00-46.333 l-46.333,0.00 z m 0.00,371.999l0.00,46.333 l 46.333,0.00 l0.00-46.333 l-46.333,0.00 z m 93.667-371.999l0.00,46.333 l 46.333,0.00 l0.00-46.333 l-46.333,0.00 z" />
25
+ <glyph unicode="&#xe056;" d="M 249.789,479.999 m0.00,0.00,c-41.444,0.10 -116.881-39.787 -119.273-75.249 -2.392-35.462 4.831-37.648 8.19-39.587l 38.904,0.00c 8.889,20.072 19.717,31.807 48.119,31.567 28.401-0.239 59.556-35.767 46.412-67.23 -13.144-31.462 -25.29-42.421 -41.464-76.444 -16.174-34.023 -21.576-85.415 -0.341-128.146l 47.948-0.853c-11.868,60.996 50.952,115.339 75.932,152.887 24.98,37.548 27.355,51.859 27.643,82.928 -0.22,29.483 -10.897,58.945 -34.126,82.928 -23.23,23.982 -56.50,37.098 -97.944,37.198 z m 2.389-395.699c-32.068,0.00 -58.016-25.947 -58.016-58.016 0.00-32.068 25.947-58.186 58.016-58.186 32.068,0.00 58.016,26.118 58.016,58.186 0.00,32.068 -25.947,58.016 -58.016,58.016z" />
26
+ <glyph unicode="&#xe055;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 251.375,415.844C 282.44,415.769 307.40,405.945 324.813,387.969C 342.225,369.992 350.21,347.912 350.375,325.812C 350.159,302.524 348.381,291.801 329.656,263.656C 310.932,235.511 263.854,194.784 272.75,149.062L 236.813,149.687C 220.895,181.717 224.939,220.247 237.063,245.75C 249.186,271.253 258.272,279.448 268.125,303.031C 277.978,326.615 254.633,353.258 233.344,353.437C 212.054,353.617 203.945,344.827 197.281,329.781L 168.125,329.781C 165.607,331.235 160.176,332.856 161.969,359.437C 163.761,386.019 220.31,415.919 251.375,415.844 z M 253.188,119.25C 277.225,119.25 296.656,99.788 296.656,75.75C 296.656,51.712 277.225,32.156 253.188,32.156C 229.15,32.156 209.688,51.712 209.688,75.75C 209.688,99.788 229.15,119.25 253.188,119.25z" />
27
+ <glyph unicode="&#xe054;" d="M 222.779,435.163C 132.051,428.787 1.635,414.302 1.563,236.616L 1.563,13.056L 204.018,13.056L 204.018,252.25L 136.794,252.25C 132.535,316.119 185.128,332.61 242.321,345.27L 222.779,435.163 z M 494.021,435.163C 403.294,428.787 272.878,414.302 272.806,236.616L 272.806,13.056L 475.261,13.056L 475.261,252.25L 408.037,252.25C 403.778,316.119 456.371,332.61 513.563,345.27L 494.021,435.163z" />
28
+ <glyph unicode="&#xe053;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 236.406,359.50L 247.406,308.844C 215.175,301.709 185.537,292.431 187.938,256.437L 225.813,256.437L 225.813,121.625L 111.719,121.625L 111.719,247.625C 111.759,347.76 185.277,355.907 236.406,359.50 z M 389.25,359.50L 400.281,308.844C 368.05,301.709 338.412,292.431 340.813,256.437L 378.688,256.437L 378.688,121.625L 264.594,121.625L 264.594,247.625C 264.634,347.76 338.12,355.907 389.25,359.50z" />
29
+ <glyph unicode="&#xe052;" d="M 399.329,461.993 m0.00,0.00,0.00-79.386 -73.373,0.00c-23.214,0.00 -48.847-11.332 -70.284-32.99 -21.437-21.658 -44.733-53.788 -81.719-106.626 -37.152-53.075 -57.842-85.148 -70.744-99.561 -12.902-14.412 -10.827-13.176 -29.605-13.176l-72.716,0.00 -0.887,0.00 0.00-63.088 0.887,0.00 72.716,0.00c 28.193,0.00 56.55,11.784 76.593,34.173 20.043,22.389 38.96,53.403 75.41,105.475 36.616,52.309 59.896,83.268 74.884,98.411 14.989,15.143 15.633,14.293 25.465,14.293l 73.373,0.00 0.00-82.836L 512.00,349.322 399.329,461.993 z M 0.00,382.607l0.00-63.088 0.887,0.00 72.716,0.00c 18.778,0.00 16.703,1.269 29.605-13.143 8.301-9.273 21.977-28.939 39.036-53.724 2.312,3.317 3.402,4.916 5.849,8.412 9.293,13.275 17.734,25.253 25.531,36.177 2.714,3.802 4.986,6.801 7.557,10.35 -11.528,16.657 -21.131,29.867 -30.985,40.876C 130.153,370.856 101.796,382.607 73.603,382.607l-72.716,0.00 -0.887,0.00 z m 399.329-171.291 0.00-81.062 -73.373,0.00c-9.832,0.00 -10.477-0.817 -25.465,14.326 -9.914,10.017 -23.955,27.773 -42.584,53.231 -2.253-3.196 -4.076-5.725 -6.44-9.102 -13.044-18.634 -22.037-32.078 -31.478-46.002 13.395-17.74 24.798-31.52 35.684-42.519 21.437-21.658 47.07-33.023 70.284-33.023l 73.373,0.00 0.00-81.16L 512.00,98.645 399.329,211.317z" />
30
+ <glyph unicode="&#xe051;" d="M 256.00-32.00 m0.00,0.00,c-141.376,0.00 -256.00,114.624 -256.00,256.00 0.00,141.376 114.624,256.00 256.00,256.00 141.376,0.00 256.00-114.624 256.00-256.00 0.00-141.376 -114.624-256.00 -256.00-256.00 z m 0.00,384.00c-70.688,0.00 -128.00-57.312 -128.00-128.00 0.00-70.688 57.312-128.00 128.00-128.00 70.688,0.00 128.00,57.312 128.00,128.00 0.00,70.688 -57.312,128.00 -128.00,128.00z" />
31
+ <glyph unicode="&#xe050;" d="M 340.97,104.728 m0.00,0.00,c 5.801-9.393 -0.381-13.312 -5.647-17.748 -22.654-16.864 -54.361-23.029 -80.403-23.126 -24.363,0.478 -59.937,6.221 -78.252,23.126 -6.255,4.94 -9.99,12.889 -4.034,18.286 6.308,5.291 12.025-0.311 16.941-4.571 21.201-14.773 40.337-15.474 65.344-18.017 27.058,1.317 45.183,5.344 68.302,18.555 5.492,4.774 11.753,9.322 17.748,3.496 z m 93.478,335.344c-20.366,0.00 -37.776-12.655 -44.806-30.525L 290.416,433.88 248.998,316.628c-29.401-0.717 -57.005-4.839 -82.821-12.369 -25.815-7.529 -48.752-17.571 -68.831-30.12 -10.756,9.681 -23.669,14.525 -38.727,14.525 -8.246,0.00 -15.866-1.524 -22.857-4.571 -6.992-3.048 -13.183-7.266 -18.561-12.644 -5.378-5.378 -9.581-11.65 -12.628-18.821 -3.048-7.171 -4.571-14.693 -4.571-22.582 0.00-10.398 2.422-19.91 7.262-28.515 4.84-8.605 11.368-15.598 19.615-20.977 -0.359-2.868 -0.711-5.819 -1.07-8.867 -0.359-3.048 -0.535-6.191 -0.535-9.418 0.00-21.154 5.999-41.14 18.01-59.964 12.011-18.823 28.517-35.216 49.491-49.20 20.975-13.983 45.356-25.019 73.143-33.086 27.787-8.067 57.622-12.093 89.532-12.093 31.552,0.00 61.322,4.026 89.289,12.093 27.966,8.067 52.428,19.103 73.402,33.086 20.975,13.983 37.48,30.376 49.491,49.20 12.011,18.823 18.01,38.81 18.01,59.964 0.00,5.737 -0.545,11.656 -1.621,17.751 8.605,5.378 15.422,12.468 20.442,21.252 5.019,8.784 7.538,18.377 7.538,28.774 0.00,7.888 -1.524,15.411 -4.571,22.582 -3.048,7.171 -7.266,13.443 -12.644,18.821 -5.378,5.378 -11.65,9.597 -18.821,12.644 -7.171,3.048 -14.886,4.571 -23.133,4.571 -14.342,0.00 -27.238-4.844 -38.711-14.525 -19.361,12.191 -41.417,22.055 -66.156,29.585 -24.739,7.529 -51.27,11.828 -79.595,12.904l 33.88,95.189 84.069-19.712c0.00-0.059 0.00-0.119 0.00-0.178 0.00-26.584 21.546-48.13 48.13-48.13 26.584,0.00 48.146,21.546 48.146,48.13 0.00,26.584 -21.562,48.146 -48.146,48.146 z M 255.45,298.342c 29.042,0.00 56.471-3.577 82.286-10.748 25.815-7.171 48.319-16.859 67.501-29.05 19.182-12.191 34.34-26.627 45.455-43.299 11.115-16.672 16.665-34.332 16.665-52.977 0.00-18.644 -5.55-36.208 -16.665-52.701 -11.114-16.493 -26.272-30.833 -45.455-43.023 -19.182-12.191 -41.686-21.879 -67.501-29.05 -25.815-7.171 -53.244-10.748 -82.286-10.748 -29.042,0.00 -56.471,3.577 -82.286,10.748 -25.815,7.171 -48.223,16.859 -67.226,29.05 -19.003,12.191 -34.048,26.53 -45.163,43.023 -11.115,16.493 -16.681,34.057 -16.681,52.701 0.00,18.644 5.566,36.304 16.681,52.977 11.115,16.672 26.16,31.108 45.163,43.299 19.003,12.191 41.411,21.879 67.226,29.05 25.815,7.171 53.244,10.748 82.286,10.748 z m 78.055-72.186c-20.049,0.00 -36.312-16.136 -36.312-36.036 0.00-19.901 16.263-36.036 36.312-36.036 20.049,0.00 36.296,16.136 36.296,36.036 0.00,19.901 -16.247,36.036 -36.296,36.036 z m -150.744-0.567c-20.049,0.00 -36.296-16.136 -36.296-36.036 0.00-19.901 16.247-36.036 36.296-36.036 20.049,0.00 36.312,16.136 36.312,36.036 0.00,19.901 -16.263,36.036 -36.312,36.036 z m 300.191-46.379c-0.172-0.089 -0.341-0.193 -0.519-0.324 0.175,0.131 0.343,0.236 0.519,0.324z" />
32
+ <glyph unicode="&#xe04f;" d="M 256.00,480.00C 131.729,480.00 28.164,391.443 4.906,274.00l 71.063,0.00C 97.864,352.957 170.071,411.00 256.00,411.00c 51.656,0.00 98.336-20.99 132.125-54.875L 306.00,274.00 436.031,274.00 512.00,274.00 512.00,480.00 437.00,405.00C 390.679,451.336 326.698,480.00 256.00,480.00 z M 0.00,174.00 0.00-32.00 75.00,43.00c 46.321-46.336 110.302-75.00 181.00-75.00 124.271,0.00 227.836,88.557 251.094,206.00l-71.063,0.00C 414.136,95.043 341.929,37.00 256.00,37.00 204.344,37.00 157.664,57.99 123.875,91.875L 206.00,174.00z" />
33
+ <glyph unicode="&#xe03f;" d="M 217.438,480.00L 217.438,413.344C 141.67,397.994 82.006,338.33 66.656,262.562L0.00,262.562L0.00,185.437L 66.656,185.437C 82.006,109.67 141.67,50.006 217.438,34.656L 217.438-32.00L 294.563-32.00L 294.563,34.656C 370.33,50.006 429.994,109.67 445.344,185.437L 512.00,185.437L 512.00,262.562L 445.344,262.562C 429.994,338.33 370.33,397.994 294.563,413.344L 294.563,480.00L 217.438,480.00 z M 217.438,361.969L 217.438,287.156L 294.563,287.156L 294.563,361.969C 342.665,348.554 380.554,310.665 393.969,262.562L 319.156,262.562L 319.156,185.437L 393.969,185.437C 380.554,137.335 342.665,99.446 294.563,86.031L 294.563,160.844L 217.438,160.844L 217.438,86.031C 169.335,99.446 131.446,137.335 118.031,185.437L 192.844,185.437L 192.844,262.562L 118.031,262.562C 131.446,310.665 169.335,348.554 217.438,361.969z" />
34
+ <glyph unicode="&#xe03e;" d="M 286.99,480.00 m0.00,0.00,c-120.877,0.00 -218.879-97.985 -218.879-218.862 0.00-42.949 12.367-83.014 33.742-116.817 -0.157-0.068 -0.311-0.13 -0.468-0.201l-95.237-95.22 80.90-80.90 98.666,98.683c-0.03,0.139 -0.069,0.278 -0.10,0.418 30.308-15.868 64.796-24.842 101.376-24.842 120.877,0.00 218.862,98.002 218.862,218.879 0.00,120.877 -97.985,218.862 -218.862,218.862 z m 0.00-97.228c 67.175,0.00 121.618-54.459 121.618-121.635 0.00-67.175 -54.443-121.635 -121.618-121.635 -67.175,0.00 -121.635,54.459 -121.635,121.635 0.00,67.175 54.459,121.635 121.635,121.635z" />
35
+ <glyph unicode="&#xe03d;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 273.563,369.062C 342.057,369.062 397.563,313.525 397.563,245.031C 397.563,176.537 342.057,121.031 273.563,121.031C 252.835,121.031 233.299,126.102 216.125,135.094C 216.143,135.014 216.171,134.923 216.188,134.844L 160.25,78.937L 114.438,124.781L 168.375,178.75C 168.464,178.79 168.567,178.805 168.656,178.844C 156.544,197.998 149.531,220.695 149.531,245.031C 149.531,313.525 205.069,369.062 273.563,369.062 z M 273.563,313.969C 235.498,313.969 204.625,283.096 204.625,245.031C 204.625,206.967 235.498,176.125 273.563,176.125C 311.627,176.125 342.469,206.967 342.469,245.031C 342.469,283.096 311.627,313.969 273.563,313.969z" />
36
+ <glyph unicode="&#xe03c;" d="M 0.00,480.00 m0.00,0.00,0.00-512.00 512.00,0.00 0.00,267.313 -84.00-89.063 0.00-94.25 -344.00,0.00 0.00,344.00 169.25,0.00 0.00,84.00zM 366.023,480.00 m0.00,0.00,0.00-96.415c-87.575-0.002 -247.273-0.963 -247.273-273.876 18.106,182.501 101.282,183.649 247.273,183.651l0.00-105.29L 512.00,334.046 366.023,480.00z" />
37
+ <glyph unicode="&#xe03b;" d="M 321.942,465.054 m0.00,0.00,0.00-125.529C 207.922,339.521 0.00,338.271 0.00-17.054 23.573,220.557 131.866,222.051 321.942,222.054l0.00-137.085L 512.00,275.026 321.942,465.054z" />
38
+ <glyph unicode="&#xe03a;" d="M 507.601,309.218 m0.00,0.00,-21.297-122.18c-2.627-13.497 -13.38-21.704 -25.781-21.858l-310.493,0.00 -6.165-34.748 295.921,0.00c 15.583-1.184 26.152-12.222 26.341-26.341 -1.133-15.55 -12.171-26.149 -26.341-26.341l-327.307,0.00c-17.702,1.592 -28.257,15.702 -26.341,31.386L 100.148,185.356 78.851,399.451 18.321,418.507c-14.791,5.873 -20.829,19.254 -17.374,33.067 5.744,14.396 19.509,20.973 33.067,17.374l 77.343-24.66c 10.419-3.906 16.413-12.435 17.935-22.418l 4.483-42.594 350.846-39.232c 16.12-3.492 24.871-16.26 22.978-30.825 z m -314.924-286.777c0.00-22.209 -18.004-40.213 -40.213-40.213 -22.209,0.00 -40.213,18.004 -40.213,40.213 0.00,22.209 18.004,40.213 40.213,40.213 22.209,0.00 40.213-18.004 40.213-40.213 z m 240.068,0.00c0.00-22.209 -18.004-40.213 -40.213-40.213 -22.209,0.00 -40.213,18.004 -40.213,40.213 0.00,22.209 18.004,40.213 40.213,40.213 22.209,0.00 40.213-18.004 40.213-40.213z" />
39
+ <glyph unicode="&#xe039;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00 0.00,82.615 114.615-32.00 256.00-32.00 397.385-32.00 512.00,82.615 512.00,224.00 512.00,365.385 397.385,480.00 256.00,480.00 z m -129.031-108.156 45.563-14.313c 6.032-1.981 10.049-7.582 10.75-13.313l 2.563-25.094 206.313-23.031c 8.859-1.717 15.084-9.715 13.844-17.938l-12.813-72.188c-1.631-7.551 -7.885-12.727 -14.844-12.813l-183.281,0.00 -3.594-20.469 174.063,0.00c 9.102-0.321 15.768-7.251 15.875-15.344 -0.377-9.232 -7.819-15.274 -15.875-15.375l-192.50,0.00c-9.709,0.803 -16.837,8.497 -15.344,17.906l 8.188,45.063 -12.813,125.969 -35.313,11.25c-4.096,1.365 -7.171,3.933 -9.219,7.688 -3.875,8.12 -0.255,17.111 6.656,21.00 3.945,2.051 7.798,2.307 11.781,1.00 z m 69.375-238.719c 13.255,0.00 24.00-10.745 24.00-24.00 0.00-13.255 -10.745-24.00 -24.00-24.00 -13.255,0.00 -24.00,10.745 -24.00,24.00 0.00,13.255 10.745,24.00 24.00,24.00 z m 140.875,0.00c 13.255,0.00 24.00-10.745 24.00-24.00 0.00-13.255 -10.745-24.00 -24.00-24.00 -13.255,0.00 -24.00,10.745 -24.00,24.00 0.00,13.255 10.745,24.00 24.00,24.00z" />
40
+ <glyph unicode="&#xe038;" d="M 409.60-32.00 m0.00,0.00,0.00,512.00 102.40,0.00 0.00-512.00 -102.40,0.00 z m -136.533,384.00 102.40,0.00 0.00-384.00 -102.40,0.00 0.00,384.00 z m -136.533-128.00 102.40,0.00 0.00-256.00 -102.40,0.00 0.00,256.00 z m -136.533-128.00 102.40,0.00 0.00-128.00 -102.40,0.00 0.00,128.00z" />
41
+ <glyph unicode="&#xe037;" d="M 389.48,167.617 m0.00,0.00,c 0.262,38.99 -22.818,64.913 -54.321,79.474 -15.514,6.631 -31.407,12.046 -46.561,15.788 -20.546,5.197 -39.752,8.649 -60.207,14.45 -16.578,3.919 -36.876,16.637 -37.463,31.575 3.768,26.501 36.046,32.499 55.659,32.646 29.325,1.119 47.702-13.591 60.475-35.322 9.355-15.675 16.945-24.993 34.251-25.153 18.837,1.06 33.469,15.947 33.717,33.181 -2.631,38.815 -37.271,61.193 -69.038,71.714 -41.026,10.368 -86.071,10.677 -124.161-3.746 -36.233-13.383 -61.141-43.466 -61.545-79.206 1.818-65.677 67.847-84.559 117.204-95.262 15.032-2.996 29.524-6.128 43.349-10.703 18.49-6.714 33.996-16.852 34.251-36.392 0.00-11.774 -5.887-21.585 -17.66-29.434 -25.191-12.396 -56.297-19.072 -81.347-5.887 -17.882,8.544 -26.556,22.968 -33.717,39.068 -7.486,16.656 -16.706,27.103 -34.251,27.294 -18.394-0.686 -34.526-13.886 -34.787-31.041 2.914-34.32 26.906-62.602 54.053-77.066 51.41-21.112 108.135-25.204 157.878-4.817 38.661,16.594 63.819,50.325 64.221,88.84 z m 93.121,9.633c 9.277-19.267 13.915-39.603 13.915-61.011 -0.817-37.359 -15.626-71.997 -39.871-96.599 -27.88-26.094 -61.415-39.617 -96.599-39.871 -23.232,0.392 -45.075,5.863 -64.221,16.055 -44.715-7.767 -96.773-1.354 -134.865,14.718 -57.797,26.103 -102.113,72.278 -125.499,125.499 -17.958,47.942 -22.905,92.983 -13.647,139.146 -30.67,55.408 -21.528,122.339 21.14,165.638 47.273,45.205 115.581,50.943 169.384,18.999 76.459,12.347 154.857-14.849 206.579-65.827 44.58-46.506 68.61-107.452 69.038-166.44 -0.073-17.415 -1.949-34.494 -5.352-50.306z" />
42
+ <glyph unicode="&#xe036;" d="M 26.574,480.00 m0.00,0.00, 0.00-247.311c-5.882,3.919 -16.366,7.198 -21.755,3.258 -5.197-6.008 2.19-14.775 5.447-20.377 32.284-32.494 65.367-53.375 104.349-70.387 -8.819-27.603 -11.412-55.26 -8.689-82.61 5.795-47.803 38.457-94.231 89.678-94.573 24.498,0.559 50.865,18.214 51.096,43.477l0.00,107.623c 6.216-1.777 12.299-4.396 18.48-5.447l0.00-100.539c0.00-7.247 1.713-13.502 5.155-18.756 10.624-15.353 27.823-24.614 45.925-24.738 53.604,2.14 83.638,46.159 89.694,94.573 2.624,28.619 -1.185,57.598 -8.705,82.626 35.541,17.947 100.306,44.291 111.692,85.593 0.512,5.124 -4.311,7.031 -8.284,7.068 -6.43-0.264 -11.635-2.656 -16.438-6.241l 0.00,246.76 z m 26.618-27.185 403.842,0.00 0.00-235.882c-6.733-4.274 -13.25-7.103 -20.101-10.326l-357.641-3.809c-9.259,3.533 -17.30,9.26 -26.099,13.05 z M 186.672,327.635c-33.32,0.00 -60.32-27.016 -60.32-60.336 0.00-33.32 27.00-60.32 60.32-60.32 33.32,0.00 60.336,27.00 60.336,60.32 0.00,33.32 -27.016,60.336 -60.336,60.336 z m 142.995,0.00c-33.32,0.00 -60.32-27.016 -60.32-60.336 0.00-33.32 27.00-60.32 60.32-60.32 33.32,0.00 60.336,27.00 60.336,60.32 0.00,33.32 -27.016,60.336 -60.336,60.336z" />
43
+ <glyph unicode="&#xe035;" d="M 0.00,480.00 m0.00,0.00,0.00-512.00 512.00,0.00 0.00,512.00 z m 167.375-97.375c 30.524,0.00 55.281-24.726 55.281-55.25 0.00-30.524 -24.757-55.281 -55.281-55.281 -30.524,0.00 -55.281,24.757 -55.281,55.281 0.00,30.524 24.757,55.25 55.281,55.25 z m 172.281,0.00c 30.524,0.00 55.25-24.726 55.25-55.25 0.00-30.524 -24.726-55.281 -55.25-55.281 -30.524,0.00 -55.281,24.757 -55.281,55.281 0.00,30.524 24.757,55.25 55.281,55.25 z m -261.563-174.031 355.813,0.00c0.00-98.256 -79.651-177.938 -177.906-177.938 -98.256,0.00 -177.906,79.682 -177.906,177.938z" />
44
+ <glyph unicode="&#xe023;" d="M0.00,480.00L0.00,256.00L 224.00,256.00L 224.00,480.00L0.00,480.00 z M 288.00,480.00L 288.00,256.00L 512.00,256.00L 512.00,480.00L 288.00,480.00 z M 0.00,192.00L0.00-32.00L 224.00-32.00L 224.00,192.00L0.00,192.00 z M 288.00,192.00L 288.00-32.00L 512.00-32.00L 512.00,192.00L 288.00,192.00z" />
45
+ <glyph unicode="&#xe022;" d="M0.00,480.00L0.00,352.00L 128.00,352.00L 128.00,480.00L0.00,480.00 z M 200.00,480.00L 200.00,352.00L 512.00,352.00L 512.00,480.00L 200.00,480.00 z M 0.00,288.00L0.00,160.00L 128.00,160.00L 128.00,288.00L0.00,288.00 z M 200.00,288.00L 200.00,160.00L 512.00,160.00L 512.00,288.00L 200.00,288.00 z M 0.00,96.00L0.00-32.00L 128.00-32.00L 128.00,96.00L0.00,96.00 z M 200.00,96.00L 200.00-32.00L 512.00-32.00L 512.00,96.00L 200.00,96.00z" />
46
+ <glyph unicode="&#xe021;" d="M 485.151,141.119 m0.00,0.00,-126.837,0.00c 2.569-20.825 6.231-40.827 10.781-60.247 2.472-36.931 -22.259-63.543 -48.198-81.175 -6.765-4.228 -13.952-5.285 -21.563-3.171 -7.191,2.537 -12.475,7.61 -15.855,15.22l-57.711,129.373 -58.344,0.00c-15.336,1.089 -25.187,11.488 -25.368,25.368l0.00,256.211c 1.089,15.336 11.488,25.187 25.368,25.368l 234.648,0.00c 12.811-0.977 25.453-5.541 35.831-11.415 17.991-10.928 30.659-25.998 36.466-44.393l 35.514-220.696c 2.115-16.735 -10.069-30.229 -24.733-30.441 z m -392.56-5.073 -74.199,0.00c-10.305,0.746 -18.25,8.203 -18.391,17.758l0.00,282.846c 0.819,10.90 8.628,17.632 18.391,17.758l 74.199,0.00c 10.756-0.748 18.257-7.889 18.391-17.758l0.00-282.846c-0.886-10.479 -8.976-17.629 -18.391-17.758z" />
47
+ <glyph unicode="&#xe020;" d="M -0.007,467.122 m0.00,0.00,z m 305.497-25.757c 18.099,0.195 35.224-18.501 47.086-31.837 27.859-34.232 12.486-72.166 6.361-113.692l 127.07,0.00c 17.178-0.128 25.985-13.045 24.79-30.497l-35.579-220.462c-8.063-28.192 -39.402-53.01 -72.438-56.535l-235.055,0.00c-13.905,0.182 -24.324,10.051 -25.414,25.414l0.00,256.666c 0.181,13.904 10.051,24.324 25.414,25.414l 58.436,0.00 57.813,129.596c 3.215,6.994 11.643,15.776 21.516,15.934 z m -212.728-140.447c 9.78-0.125 17.577-6.886 18.397-17.805l0.00-283.358c-0.142-9.571 -8.074-17.026 -18.397-17.775l-74.34,0.00c-9.433,0.129 -17.541,7.277 -18.429,17.775l0.00,283.358c 0.135,9.886 7.653,17.055 18.429,17.805z" />
48
+ <glyph unicode="&#xe01f;" d="M 233.22,480.00C 173.534,480.00 113.837,457.241 68.298,411.702C-22.78,320.624 -22.78,172.936 68.298,81.858C 159.376-9.22 307.064-9.22 398.142,81.858C 489.22,172.936 489.22,320.624 398.142,411.702C 352.603,457.241 292.906,480.00 233.22,480.00 z M 233.22,419.076C 277.315,419.076 321.423,402.273 355.068,368.629C 422.357,301.339 422.357,192.221 355.068,124.932C 287.779,57.643 178.661,57.643 111.371,124.932C 44.082,192.221 44.082,301.339 111.371,368.629C 145.016,402.273 189.124,419.076 233.22,419.076 z M 209.362,379.931L 209.362,270.979L 148.979,270.979L 148.979,211.336L 209.362,211.336L 269.005,211.336L 269.005,270.979L 269.005,379.931L 209.362,379.931z" />
49
+ <glyph unicode="&#xe01e;" d="M 436.99,405.024C 390.666,451.348 326.67,480.017 255.983,480.017 114.607,480.017 -0.017,365.393 -0.017,224.017c0.00-141.376 114.624-256.00 256.00-256.00 141.376,0.00 256.00,114.624 256.00,256.00 0.00,70.687 -28.669,134.683 -74.993,181.007 z m -51.947-36.834 46.136-46.136 -173.164-173.164 -0.022,0.022 -0.022-0.022 -121.239,121.239 5.06,5.06 35.862,35.862 5.215,5.215 75.125-75.125 127.05,127.05z" />
50
+ <glyph unicode="&#xe01d;" d="M 74.839,150.20 m0.00,0.00,c 0.57,36.14 10.635,68.654 28.742,96.765 18.657,27.943 39.382,55.132 56.686,81.117 27.469,42.361 50.752,86.24 64.989,131.256 4.949,14.121 16.183,22.106 30.019,20.439 15.419,0.946 26.098-7.266 30.019-20.439 14.991-48.743 38.895-91.351 65.308-131.256 18.037-29.408 38.641-52.105 56.367-81.117 19.232-30.564 28.569-63.629 28.742-96.765C 434.614,100.765 415.164,54.808 383.178,22.138 347.502-12.141 300.569-30.23 255.276-30.556 205.865-29.504 160.035-9.893 127.533,22.138 93.325,57.928 75.165,104.864 74.839,150.20 z M 154.039,110.281c 1.184-26.025 21.859-45.036 45.03-45.349 26.258,1.162 44.726,22.187 45.03,45.349 0.00,9.155 -2.342,17.139 -7.026,23.952 -5.148,6.70 -10.224,13.634 -14.371,20.28 -6.57,10.729 -12.993,21.398 -16.287,32.734 -0.852,4.258 -3.30,6.068 -7.345,5.429 -3.832,0.852 -6.387-0.958 -7.664-5.429C 187.961,175.102 181.943,164.398 175.596,154.512 171.132,147.062 165.781,141.264 161.065,134.232 156.169,127.206 153.827,119.222 154.039,110.281z" />
51
+ <glyph unicode="&#xe01c;" d="M 482.001,151.014 m0.00,0.00,0.00-183.017 -452.001,0.00 0.00,183.017L 202.667,224.558C 160.138,251.862 140.159,299.745 139.789,344.699 140.35,412.293 186.725,479.412 256.00,479.997 328.761,477.611 371.814,409.491 372.211,344.699 370.766,296.093 349.339,249.927 311.017,225.12z" />
52
+ <glyph unicode="&#xe01b;" d="M 192.587,480.00 m0.00,0.00,0.00-39.144 -147.963,0.00 0.00-72.025 422.752,0.00 0.00,72.025 -147.963,0.00 0.00,39.144 -126.826,0.00 z m -125.26-165.969 0.00-346.031 377.346,0.00 0.00,346.031 -377.346,0.00z" />
53
+ <glyph unicode="&#xe01a;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 216.281,384.281L 295.719,384.281L 295.719,359.781L 388.344,359.781L 388.344,314.687L 123.656,314.687L 123.656,359.781L 216.281,359.781L 216.281,384.281 z M 137.875,280.375L 374.125,280.375L 374.125,63.719L 137.875,63.719L 137.875,280.375z" />
54
+ <glyph unicode="&#xe019;" d="M 512.00,480.00 m0.00,0.00,0.00-512.00 -512.00,0.00 0.00,512.00 z M 298.215,106.824c-8.70,2.425 -17.279,5.182 -24.085,10.554 -2.706,2.165 -4.059,4.15 -4.059,5.954 0.00,43.659 0.00,87.318 0.00,130.977l 82.808,0.00c0.00,19.123 0.00,38.247 0.00,57.37l-82.808,0.00 0.00,86.596 -47.628,0.00c-3.551-44.459 -27.105-86.596 -73.607-86.596l0.00-57.37 39.51,0.00c0.00-47.267 0.00-94.534 0.00-141.801 0.163-22.30 10.459-41.487 28.414-51.687 16.994-8.797 34.90-11.036 52.77-11.095 17.514,0.085 36.152-0.263 52.77,0.812 14.55,0.522 28.497,3.852 40.863,10.013l0.00,61.159 0.00,0.541 0.00-0.541c-7.216-4.691 -15.154-8.66 -23.814-11.907 -14.526-4.763 -27.493-6.326 -41.133-2.977z" />
55
+ <glyph unicode="&#xe00a;" d="M 458.166,211.417 m0.00,0.00,c 1.237,4.967 -0.037,10.075 -4.681,11.703l-19.31,8.777c-4.772,1.992 -10.846-0.699 -11.703-5.266 -3.727-7.979 -9.011-14.511 -17.554-14.628 -7.412,0.00 -13.458,3.998 -18.139,11.995 -4.681,7.997 -7.022,18.432 -7.022,31.305 0.00,12.873 2.341,23.406 7.022,31.598 4.681,8.192 10.727,12.288 18.139,12.288 9.35-0.679 13.787-6.584 17.554-14.043 1.997-4.90 7.43-6.051 11.703-4.681l 19.31,8.777c 4.472,2.354 6.464,8.181 4.096,12.288 -11.313,24.186 -28.867,36.279 -52.663,36.279 -19.895,0.00 -35.986-7.607 -48.274-22.82 -12.288-15.214 -18.432-35.108 -18.432-59.684 0.00-24.576 6.144-44.373 18.432-59.392 12.288-15.019 28.379-22.528 48.274-22.528 23.796,0.00 41.545,12.678 53.248,38.034 z M 272.091,173.383c 31.017,0.48 54.636,21.792 55.003,49.737 -0.548,14.757 -6.481,26.236 -16.969,35.108 9.235,8.72 14.537,20.596 14.628,32.183 -0.768,31.621 -27.067,46.559 -52.663,46.811 -22.235,0.00 -39.399-8.777 -51.492-26.331 -2.731-3.902 -2.341-7.803 1.17-11.703l 14.043-12.873c 4.502-4.013 9.509-3.271 13.458,0.585 5.851,8.192 12.873,12.288 21.065,12.288 6.631,0.00 10.533-1.658 11.703-4.974 2.256-4.92 1.608-9.408 0.00-13.458 -6.035-6.249 -14.856-4.389 -23.406-4.389 -5.561-0.187 -9.862-3.448 -9.947-8.777l0.00-21.065c 0.485-6.043 4.604-10.035 9.947-8.777 6.45,0.006 22.807,0.736 25.454-4.681 1.365-3.121 2.048-5.657 2.048-7.607 0.00-8.972 -4.876-13.458 -14.628-13.458 -9.362,0.00 -17.164,4.291 -23.406,12.873 -3.818,4.62 -9.85,4.687 -13.458,1.17l-14.628-14.628c-3.511-3.511 -3.901-7.217 -1.17-11.118 13.261-18.655 32.567-26.753 53.248-26.916 z m -57.929,150.967c 1.069,5.609 -3.061,11.019 -8.192,11.118l-25.746,0.00c-4.681,0.00 -7.412-2.341 -8.192-7.022L 159.744,265.836 146.871,328.446c-1.17,4.681 -4.096,7.022 -8.777,7.022l-18.724,0.00c-5.072,0.00 -7.998-2.341 -8.777-7.022L 97.718,265.836 85.43,328.446c-0.78,4.681 -3.706,7.022 -8.777,7.022l-25.161,0.00c-6.413-0.505 -9.496-5.576 -8.777-11.118l 32.183-141.605c 1.17-4.681 4.096-7.022 8.777-7.022l 24.576,0.00c 4.681,0.00 7.607,2.341 8.777,7.022l 11.703,58.514 11.703-58.514c 0.78-4.681 3.706-7.022 8.777-7.022l 24.576,0.00c 4.681,0.00 7.607,2.341 8.777,7.022 z M 511.999,479.998 511.999,87.998 256.00-32.002 0.00,87.998 0.00,479.998z" horiz-adv-x="511" />
56
+ <glyph unicode="&#xe009;" d="M 256.00,480.00L0.00-32.00L 512.00-32.00L 256.00,480.00 z M 236.313,302.469L 275.688,302.469L 275.688,234.781L 266.063,139.594L 245.938,139.594L 236.313,234.781L 236.313,302.469 z M 236.313,102.219L 275.688,102.219L 275.688,59.812L 236.313,59.812L 236.313,102.219z" />
57
+ <glyph unicode="&#xe008;" d="M 298.068,86.512 m0.00,0.00,-85.162,0.00 0.00,85.162 85.162,0.00 z m 107.735,0.00 -85.162,0.00 0.00,85.162 85.162,0.00 z m -215.471,0.00 -85.162,0.00 0.00,85.162 85.162,0.00 z m 215.471,269.339 0.00-156.986 -300.634,0.00 0.00,156.986 z m 43.095,45.147 -385.796,0.00 0.00-353.988 385.796,0.00 z M 0.00-15.58l0.00,479.166 512.00,0.00 0.00-479.166z" />
58
+ <glyph unicode="&#xe007;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m -136.041-128.697 272.065,0.00 0.00-254.606 -272.065,0.00 z m 33.541-33.264 0.00-188.093 205.001,0.00 0.00,188.093 z m 22.355-23.992 159.741,0.00 0.00-83.404 -159.741,0.00 z m 0.00-97.864 45.244,0.00 0.00-45.244 -45.244,0.00 z m 57.24,0.00 45.26,0.00 0.00-45.244 -45.26,0.00 z m 57.24,0.00 45.26,0.00 0.00-45.244 -45.26,0.00z" />
59
+ <glyph unicode="&#xe006;" d="M 354.757,129.191 m0.00,0.00,c 12.85-3.884 19.605-13.656 16.939-25.682C 369.876,95.859 367.69,88.937 365.14,82.745 351.382,47.449 328.612,19.142 299.569-0.586 267.233-21.326 231.772-31.809 196.294-32.005 147.652-30.983 102.397-12.238 69.797,18.812 36.161,52.65 17.396,97.503 17.066,141.212c 0.848,36.879 11.908,70.458 31.692,98.357 22.451,29.885 51.414,51.407 83.603,63.932 12.287,2.961 24.419-1.666 28.96-12.568 3.82-12.322 -2.113-23.713 -13.114-27.321C 122.103,252.915 100.676,236.504 85.37,215.252 69.762,192.291 61.48,166.921 61.327,141.212 62.122,105.148 77.063,72.019 100.943,48.866 128.734,23.988 161.884,10.861 196.294,10.616c 28.935,0.653 55.601,8.901 77.866,24.042 22.901,16.519 40.171,37.756 49.451,62.293 2.186,5.10 3.825,10.382 4.918,15.846 4.086,12.541 14.54,18.983 26.228,16.393 z M 492.457,45.588c 4.979-10.651 2.047-22.871 -5.191-30.053 -15.087-12.537 -35.87-8.933 -43.987,8.196L 371.151,149.409c-42.783,0.519 -88.186-0.431 -130.049-0.546 -18.223,1.133 -31.871,11.828 -34.971,28.414l-30.053,144.802 0.546,0.00c-2.335,11.57 4.964,25.976 11.475,32.512 8.014,7.832 17.85,11.748 29.507,11.748 9.471,0.00 17.759-2.732 24.862-8.196 16.881-15.035 16.195-28.313 20.491-50.271l 85.243,0.00c 9.752-0.374 18.101-7.788 20.491-15.846 3.253-16.493 -8.06-28.483 -23.769-27.321l-72.675,0.00 10.928-53.55 92.892,0.00c 14.879-0.731 26.762-7.756 32.785-20.218L 492.457,45.588 z M 203.398,377.814c-29.432,1.083 -51.161,23.032 -51.364,51.364 1.194,29.115 23.374,50.616 51.364,50.817 29.017-1.286 50.618-22.601 50.817-50.817 -1.325-29.411 -24.609-51.009 -50.817-51.364z" />
60
+ <glyph unicode="&#xe005;" d="M 255.707-32.00C 112.743-29.252 0.999,87.941 0.00,224.292 2.78,367.15 119.351,479.00 255.707,480.00 398.574,477.143 510.999,360.832 512.00,224.292 509.176,81.32 392.242-30.999 255.707-32.00 z m 0.00,493.861C 122.964,459.246 18.478,351.047 17.554,224.292 20.136,91.443 128.957-12.937 255.707-13.861 388.557-11.279 492.937,97.543 493.86,224.292 491.355,357.134 382.274,460.938 255.707,461.86 z m -61.44-447.049 65.536,188.416 68.462-184.32c-46.124-15.44 -89.729-16.376 -133.998-4.096 z M 143.945,347.757c-23.992-3.261 -47.324-4.424 -70.217-3.511 43.468,62.144 113.065,97.106 181.979,97.719 56.367-1.067 108.915-22.373 147.456-57.344 -17.874,1.321 -28.577-6.518 -36.279-19.895 -11.194-34.534 12.459-60.097 25.746-86.016 12.563-23.682 11.567-50.611 4.681-73.728L 364.544,93.22 285.55,327.862c 8.231,0.766 16.516,1.013 23.991,2.341 8.848,1.97 10.789,10.203 4.681,15.214 -1.95,1.561 -4.096,2.341 -6.437,2.341l-47.397-3.511 -35.986,0.00c-10.16-0.60 -38.848,9.215 -41.253-4.096 -1.242-5.127 2.585-9.146 7.022-9.947 7.827-1.014 16.796-2.166 23.991-2.926l 34.523-92.453 -47.982-141.605 -79.579,234.642c 8.421,0.731 16.953,0.986 24.576,2.341 6.242,0.782 8.972,3.903 8.192,9.362 -1.107,4.854 -5.433,8.134 -9.947,8.192 z m -87.771-36.279 104.741-283.209C 123.121,46.897 93.243,74.291 71.972,106.971 33.062,169.065 28.969,247.841 56.174,311.479 z m 409.307-145.408c-17.196-56.153 -52.317-102.662 -100.937-130.779 2.341,6.242 6.046,16.774 11.118,31.598l 60.855,176.713c 5.851,17.164 9.947,36.279 12.288,57.344 0.79,8.618 0.817,17.308 -0.585,25.161 24.934-53.778 32.008-107.047 17.262-160.037z" />
61
+ <glyph unicode="&#xe004;" d="M 412.247,471.913C 363.906,489.307 307.739,478.644 269.005,439.91c-38.734-38.734 -49.396-94.901 -32.003-143.241l-237.003-237.003 82.359-82.359 237.003,237.003c 48.34-17.394 104.507-6.731 143.241,32.003 38.734,38.734 49.396,94.901 32.003,143.241L 411.262,306.21 351.899,329.206 328.903,388.569 412.247,471.913 z M 98.938,76.245c 9.452-9.452 9.452-24.775 0.00-34.227 -9.452-9.452 -24.775-9.452 -34.227,0.00 -9.452,9.452 -9.452,24.775 0.00,34.227 9.452,9.452 24.775,9.452 34.227,0.00z" />
62
+ <glyph unicode="&#xe003;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00 0.00,82.615 114.615-32.00 256.00-32.00 397.385-32.00 512.00,82.615 512.00,224.00 512.00,365.385 397.385,480.00 256.00,480.00 z m 69.719-102.344c 9.698,0.027 19.421-1.615 28.656-4.938l-50.969-50.969 14.063-36.281 36.281-14.063 50.969,50.969c 10.633-29.552 4.117-63.914 -19.563-87.594 -23.679-23.679 -58.011-30.196 -87.563-19.563l-144.906-144.875 -50.344,50.344 144.875,144.906c-10.633,29.552 -4.117,63.883 19.563,87.563 16.279,16.279 37.601,24.44 58.938,24.50 z M 141.906,130.812c-5.778-5.778 -5.778-15.128 0.00-20.906 5.778-5.778 15.128-5.778 20.906,0.00 5.778,5.778 5.778,15.128 0.00,20.906 -6.263,5.693 -15.509,5.234 -20.906,0.00z" />
63
+ <glyph unicode="&#xe002;" d="M 512.00,29.678 0.00,29.679l0.00,388.64 512.00,0.00 z M 182.312,110.464 361.347,222.907 182.312,335.35z" horiz-adv-x="511" />
64
+ <glyph unicode="&#xe001;" d="M 262.045,348.961 m0.00,0.00,-65.519,0.00 0.00-65.519 -65.519,0.00 0.00-65.519 65.519,0.00 0.00-65.519 65.519,0.00 0.00,65.519 65.519,0.00 0.00,65.519 -65.519,0.00 z m 249.956-323.928 -94.642,94.642c 25.946,37.149 41.277,82.259 41.277,131.006 0.00,126.649 -102.701,229.317 -229.317,229.317 -126.616,0.00 -229.317-102.669 -229.317-229.317 0.00-126.649 102.669-229.317 229.317-229.317 48.746,0.00 93.889,15.332 131.038,41.277l 94.642-94.642 z M 229.284,86.85c-90.449,0.00 -163.798,73.316 -163.798,163.798 0.00,90.482 73.349,163.798 163.798,163.798 90.482,0.00 163.798-73.316 163.798-163.798 0.033-90.482 -73.283-163.798 -163.798-163.798z" />
65
+ <glyph unicode="&#xe000;" d="M 512.001,25.033 m0.00,0.00,-94.642,94.642c 25.946,37.149 41.277,82.259 41.277,131.006 0.00,126.649 -102.701,229.317 -229.317,229.317 -126.616,0.00 -229.317-102.669 -229.317-229.317 0.00-126.649 102.669-229.317 229.317-229.317 48.746,0.00 93.889,15.332 131.038,41.277l 94.642-94.642 z M 229.284,86.85c-90.449,0.00 -163.798,73.316 -163.798,163.798 0.00,90.482 73.349,163.798 163.798,163.798 90.482,0.00 163.798-73.316 163.798-163.798 0.033-90.482 -73.283-163.798 -163.798-163.798 z m -98.279,131.071 196.558,0.00 0.00,65.519 -196.558,0.00z" />
66
+ <glyph unicode="&#xe069;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 141.156,356.531L 218.688,356.531L 218.688,91.469L 141.156,91.469L 141.156,356.531 z M 293.313,356.531L 370.844,356.531L 370.844,91.469L 293.313,91.469L 293.313,356.531z" />
67
+ <glyph unicode="&#xe068;" d="M 493.613,399.465 427.109,465.97C 408.771,484.307 377.742,483.108 357.856,463.172 337.969,443.285 336.67,412.206 355.057,393.869l 66.504-66.504c 18.338-18.338 49.366-17.138 69.303,2.798 19.886,19.937 21.136,50.915 2.748,69.303 z M 69.652,175.018 202.661,42.01 418.815,258.111 285.805,391.121 69.652,175.018 z M 0.00-25.595 175.43,9.532 35.126,149.836 0.00-25.595z" />
68
+ <glyph unicode="&#xe067;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 86.128-79.968c 7.505-0.059 14.791-2.827 20.296-8.332l 42.602-42.586c 11.776-11.776 10.969-31.617 -1.767-44.385 -12.768-12.768 -32.641-13.527 -44.385-1.783l-42.586,42.586c-11.776,11.744 -10.953,31.649 1.783,44.385 6.766,6.783 15.551,10.183 24.057,10.116 z m -70.192-56.267 85.187-85.171 -138.44-138.407 -85.187,85.187 138.44,138.391 z m -160.551-154.521 89.856-89.856 -112.357-22.50 22.50,112.357z" />
69
+ <glyph unicode="&#xe066;" d="M 300.322,366.462 m0.00,0.00,c 7.705,0.00 14.796-1.488 21.275-4.465 19.231-9.68 30.586-28.077 30.731-48.591l0.00-141.308c-3.608-22.464 -29.319-16.355 -29.943,0.00l0.00,133.429c-2.292,7.609 -16.984,4.454 -17.336,0.00l0.00-306.255c-3.736-31.272 -44.146-22.093 -45.177,0.525 0.00,62.512 0.00,125.024 0.00,187.536 -2.584,12.096 -19.589,6.60 -19.962-0.525 0.721-62.334 0.525-124.673 0.525-187.01 -4.03-31.111 -44.244-23.151 -45.177-0.525l-0.525,306.255c-2.355,7.445 -15.969,4.589 -16.285,0.00l0.00-133.429c-3.608-22.464 -29.319-16.355 -29.943,0.00l0.00,141.308c 0.363,19.639 7.561,39.315 24.69,48.591 5.603,2.977 12.433,4.465 20.487,4.465 35.546,0.00 71.092,0.00 106.638,0.00 z m -0.53,64.173c0.00-27.263 -22.101-49.365 -49.365-49.365 -27.263,0.00 -49.365,22.101 -49.365,49.365 0.00,27.263 22.101,49.365 49.365,49.365 27.263,0.00 49.365-22.101 49.365-49.365z" />
70
+ <glyph unicode="&#xe065;" d="M 499.753,62.225 m0.00,0.00,-71.393-70.821c-10.538-10.808 -24.508-14.469 -38.112-14.486C 330.086-21.279 273.22,8.273 226.527,38.619 149.887,94.375 79.565,163.51 35.431,247.057 18.504,282.091 -1.358,326.791 0.539,365.896c 0.169,14.71 4.133,29.147 14.493,38.63l 71.393,71.358c 14.825,12.61 29.162,8.25 38.649-6.438l 57.436-108.913c 6.045-12.903 2.578-26.727 -6.441-35.947l-26.303-26.289c-1.624-2.224 -2.657-4.756 -2.684-7.512 10.086-39.042 40.643-75.028 67.636-99.793 26.993-24.765 56.007-58.317 93.67-66.26 4.655-1.299 10.357-1.755 13.688,1.341l 30.597,31.118c 10.548,7.995 25.777,11.902 37.039,5.365l 0.537,0.00 103.60-61.164c 15.208-9.533 16.794-27.958 5.904-39.166z" />
71
+ <glyph unicode="&#xe064;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 164.00,378.312C 169.275,378.624 174.042,375.471 177.656,369.875L 212.656,303.50C 216.341,295.635 214.248,287.213 208.75,281.594L 192.719,265.562C 191.729,264.207 191.078,262.68 191.063,261.00C 197.211,237.202 215.859,215.252 232.313,200.156C 248.766,185.061 266.45,164.623 289.406,159.781C 292.244,158.99 295.72,158.707 297.75,160.594L 316.375,179.562C 322.804,184.436 332.104,186.797 338.969,182.812L 339.281,182.812L 402.438,145.531C 411.708,139.72 412.669,128.488 406.031,121.656L 362.531,78.50C 356.108,71.912 347.573,69.697 339.281,69.687C 302.61,70.786 267.96,88.785 239.50,107.281C 192.785,141.267 149.933,183.418 123.031,234.344C 112.713,255.698 100.593,282.945 101.75,306.781C 101.853,315.748 104.279,324.533 110.594,330.312L 154.094,373.812C 157.482,376.695 160.835,378.126 164.00,378.312z" />
72
+ <glyph unicode="&#xe063;" d="M0.00,466.781L0.00-18.781L 512.00-18.781L 512.00,466.781L0.00,466.781 z M 63.188,405.531L 448.813,405.531L 448.813,139.25L 63.188,139.25L 63.188,405.531z" />
73
+ <glyph unicode="&#xe062;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 118.625,354.281L 393.375,354.281L 393.375,93.719L 118.625,93.719L 118.625,354.281 z M 152.531,321.406L 152.531,178.531L 359.469,178.531L 359.469,321.406L 152.531,321.406z" />
74
+ <glyph unicode="&#xe061;" d="M 388.62,439.509 m0.00,0.00,c 75.976-47.385 122.947-129.32 123.38-215.779 0.00-28.988 -4.892-56.708 -14.675-83.159l-108.705,0.00 z m 97.291-325.571c-40.483-81.338 -120.057-133.494 -206.539-142.403 -44.333-2.839 -92.473,5.549 -128.272,21.197l0.00,121.206 z M 0.00,223.729C 1.131,320.713 56.708,406.314 139.142,448.749l 97.291-86.964 -227.193-203.822c-6.16,22.465 -9.24,44.388 -9.24,65.766 z M 123.923,7.407C 75.579,37.702 38.661,81.668 18.48,130.243L 123.923,225.36 z M 361.444,285.148 166.318,460.706c 29.796,10.016 60.519,16.20 89.681,16.306 36.96,0.00 72.108-7.609 105.444-22.828z" />
75
+ <glyph unicode="&#xe060;" d="M 0.00,437.656L 0.00,10.344L 512.00,10.344L 512.00,437.656L 0.00,437.656 z M 39.281,397.719L 472.719,397.719L 472.719,50.281L 39.281,50.281L 39.281,397.719 z M 128.625,347.562C 116.401,347.562 106.116,343.397 97.781,335.062C 89.447,326.728 85.281,316.443 85.281,304.219C 85.281,292.55 89.447,282.553 97.781,274.219C 106.116,265.884 116.401,261.719 128.625,261.719C 140.293,261.719 150.29,265.884 158.625,274.219C 166.96,282.553 171.125,292.55 171.125,304.219C 171.125,316.443 166.96,326.728 158.625,335.062C 150.29,343.397 140.293,347.562 128.625,347.562 z M 312.813,326.437L 214.469,177.25L 162.25,220.594L 85.281,120.594L 85.281,91.406L 426.719,91.406L 426.719,208.656L 312.813,326.437z" />
76
+ <glyph unicode="&#xe05f;" d="M 256.00,480.00 m0.00,0.00,c 152.087-2.844 255.007-119.478 256.00-256.00 -2.72-145.46 -119.478-255.007 -256.00-256.00 -25.255,0.098 -49.912,4.029 -72.432,10.505 4.792,7.741 9.584,16.311 14.376,25.711 10.106,20.545 14.721,42.547 19.905,63.585 2.212,9.031 5.345,20.919 9.40,35.663 4.423-8.478 12.441-15.85 24.052-22.117 30.308-14.746 67.857-9.874 94.825,3.87 37.835,21.491 60.006,54.87 71.879,92.337 22.862,86.887 -6.617,170.427 -85.425,204.026 -95.025,28.623 -201.075-7.099 -238.03-92.061 -16.135-56.778 -15.18-129.675 40.916-153.434 2.95-1.106 5.623-1.106 8.017,0.00 5.265,3.008 11.371,29.08 10.229,34.557 -0.369,1.659 -1.659,3.963 -3.87,6.912 -31.003,41.971 -12.108,104.432 16.864,135.741 49.266,42.316 125.942,49.188 171.127,8.847 40.078-46.756 30.976-119.522 5.253-165.875 -14.213-22.667 -33.28-39.797 -58.886-40.086 -26.953,0.597 -47.282,23.404 -40.363,49.209 5.88,30.284 22.193,62.402 22.669,90.678 -1.302,23.519 -13.08,38.435 -34.834,38.704 -34.725-4.379 -48.744-36.846 -49.209-66.35 1.11-14.178 1.97-28.609 8.294-40.363 -7.372-29.858 -13.086-53.909 -17.14-72.156 -6.216-32.373 -18.403-66.231 -20.181-97.59 -0.553-10.321 -0.645-19.905 -0.277-28.752 -94.859,44.985 -152.597,132.855 -153.158,234.436 2.763,147.752 119.478,255.007 256.00,256.00z" />
77
+ <glyph unicode="&#xe05e;" d="M 136.96-16.64 m0.00,0.00, 51.20,0.00 114.893,204.826 132.147,0.00c0.00,0.00 76.80,0.00 76.80,35.814 0.00,35.84 -76.80,35.84 -76.80,35.84l-132.147,0.00 -114.893,204.80 -51.20,0.00 63.693-204.80 -91.827,0.00 -57.626,51.226 -51.20,0.00L 40.986,224.025 0.00,136.96l 51.20,0.00 57.626,51.226 91.827,0.00 -63.693-204.826z" />
78
+ <glyph unicode="&#xe05c;" d="M 256.00-32.00 m0.00,0.00,c-141.376,0.00 -256.00,114.624 -256.00,256.00 0.00,141.376 114.624,256.00 256.00,256.00 141.376,0.00 256.00-114.624 256.00-256.00 0.00-141.376 -114.624-256.00 -256.00-256.00 z m -64.00,383.808 0.00-255.616 192.00,127.808 -192.00,127.808z" />
79
+ <glyph unicode="&#xe05b;" d="M 256.00,480.00C 114.624,480.00 0.00,365.376 0.00,224.00C0.00,82.624 114.624-32.00 256.00-32.00C 397.376-32.00 512.00,82.624 512.00,224.00C 512.00,365.376 397.376,480.00 256.00,480.00 z M 256.00,420.625C 364.586,420.625 452.625,332.586 452.625,224.00C 452.625,115.414 364.586,27.375 256.00,27.375C 147.414,27.375 59.375,115.414 59.375,224.00C 59.375,332.586 147.414,420.625 256.00,420.625 z M 192.00,351.812L 192.00,96.187L 384.00,224.00L 192.00,351.812z" />
80
+ <glyph unicode="&#xe05a;" d="M 183.50,480.00L 183.50,296.50L0.00,296.50L0.00,151.50L 183.50,151.50L 183.50-32.00L 328.50-32.00L 328.50,151.50L 512.00,151.50L 512.00,296.50L 328.50,296.50L 328.50,480.00L 183.50,480.00z" />
81
+ <glyph unicode="&#xe04e;" d="M 0.00,367.001 143.001,224.00 0.00,80.998 112.998-32.00 256.00,111.001 399.001-32.00 512.00,80.998 368.998,224.00 512.00,367.001 399.001,480.00 256.00,336.998 112.998,480.00 0.00,367.001z" />
82
+ <glyph unicode="&#xe04d;" d="M 256.00,480.00C 114.616,480.00 0.00,365.384 0.00,224.00C0.00,82.616 114.616-32.00 256.00-32.00C 397.384-32.00 512.00,82.616 512.00,224.00C 512.00,365.384 397.384,480.00 256.00,480.00 z M 256.00,424.375C 366.664,424.375 456.344,334.637 456.344,224.00C 456.344,113.363 366.664,23.656 256.00,23.656C 145.336,23.656 55.656,113.363 55.656,224.00C 55.656,334.637 145.336,424.375 256.00,424.375 z M 185.781,349.719L 130.281,294.219L 200.50,224.00L 130.281,153.781L 185.781,98.281L 256.00,168.50L 326.219,98.281L 381.719,153.781L 311.50,224.00L 381.719,294.219L 326.219,349.719L 256.00,279.50L 185.781,349.719z" />
83
+ <glyph unicode="&#xe04c;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 175.563,368.00L 256.00,287.562L 336.438,368.00L 400.00,304.437L 319.563,224.00L 400.00,143.562L 336.438,80.00L 256.00,160.437L 175.563,80.00L 112.00,143.562L 192.438,224.00L 112.00,304.437L 175.563,368.00z" />
84
+ <glyph unicode="&#xe04b;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 350.895-32.00 433.66,19.671 477.875,96.375L 387.75,148.219C 361.479,102.654 312.374,71.906 256.00,71.906C 172.001,71.906 103.906,140.001 103.906,224.00C 103.906,307.999 172.001,376.094 256.00,376.094C 292.005,376.094 325.006,363.498 351.031,342.562L 283.813,294.75L 512.00,218.656L 512.00,457.125L 437.688,404.25C 391.306,451.007 327.063,480.00 256.00,480.00z" />
85
+ <glyph unicode="&#xe04a;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 256.00,372.281C 297.16,372.281 334.386,355.488 361.25,328.406L 404.281,359.031L 404.281,220.906L 272.094,264.969L 311.031,292.687C 295.957,304.814 276.854,312.094 256.00,312.094C 207.347,312.094 167.906,272.653 167.906,224.00C 167.906,175.347 207.347,135.906 256.00,135.906C 288.652,135.906 317.096,153.702 332.313,180.094L 384.50,150.094C 358.89,105.666 310.964,75.719 256.00,75.719C 174.109,75.719 107.719,142.109 107.719,224.00C 107.719,305.891 174.109,372.281 256.00,372.281z" />
86
+ <glyph unicode="&#xe049;" d="M 178.567,221.299 75.638,118.371 0.00,194.009l 0.00-226.009 226.009,0.00 -75.638,75.638 102.928,102.928 -74.732,74.732zM 333.433,226.701 436.362,329.629 512.00,253.991l0.00,226.009 -226.009,0.00 75.638-75.638 -102.928-102.928 74.732-74.732z" />
87
+ <glyph unicode="&#xe048;" d="M 129.75,353.75 0.00,224.00l 129.75-129.75 0.00,86.844 252.50,0.00 0.00-86.844L 512.00,224.00 382.25,353.75l0.00-86.844 -252.50,0.00z" />
88
+ <glyph unicode="&#xe047;" d="M 74.732-32.00 m0.00,0.00, 102.928,102.928 75.638-75.638 0.00,226.009 -226.009,0.00 75.638-75.638L0.00,42.732 74.732-32.00zM 437.268,480.00 m0.00,0.00,-102.928-102.928 -75.638,75.638 0.00-226.009 226.009,0.00L 409.072,302.339 512.00,405.267 437.268,480.00z" />
89
+ <glyph unicode="&#xe046;" d="M 385.749,350.25 m0.00,0.00,-129.75,129.75 -129.75-129.75 86.844,0.00 0.00-134.313 0.00-15.875 0.00-102.313 -86.844,0.00 129.75-129.75 129.75,129.75 -86.844,0.00 0.00,102.313 0.00,15.875 0.00,134.313 86.844,0.00z" />
90
+ <glyph unicode="&#xe045;" d="M 128.00,384.00L0.00,256.00L 96.00,256.00L 96.00,96.00L 288.00,96.00L 224.00,160.00L 160.00,160.00L 160.00,256.00L 256.00,256.00L 128.00,384.00 z M 224.00,352.00L 288.00,288.00L 352.00,288.00L 352.00,192.00L 256.00,192.00L 384.00,64.00L 512.00,192.00L 416.00,192.00L 416.00,352.00L 224.00,352.00z" />
91
+ <glyph unicode="&#xe044;" d="M 256.00-32.00 m0.00,0.00,c-141.376,0.00 -256.00,114.624 -256.00,256.00 0.00,141.376 114.624,256.00 256.00,256.00 141.376,0.00 256.00-114.624 256.00-256.00 0.00-141.376 -114.624-256.00 -256.00-256.00 z m -32.00,351.84 -128.00-95.84 128.00-95.84 0.00,191.68 z m 160.00,0.00 -128.00-95.84 128.00-95.84 0.00,191.68z" />
92
+ <glyph unicode="&#xe043;" d="M 511.999-31.999 m0.00,0.00,c0.00,0.00 -103.363,511.999 -103.363,511.999 0.00,0.00 -127.595,0.00 -127.595,0.00 0.00,0.00 3.91-118.048 3.91-118.048 0.00,0.00 -57.904,0.00 -57.904,0.00 0.00,0.00 3.91,118.048 3.91,118.048 0.00,0.00 -127.595,0.00 -127.595,0.00 0.00,0.00 -103.363-511.999 -103.363-511.999 0.00,0.00 214.00,0.00 214.00,0.00 0.00,0.00 4.882,147.39 4.882,147.39 0.00,0.00 74.237,0.00 74.237,0.00 0.00,0.00 4.882-147.39 4.882-147.39 0.00,0.00 214.00,0.00 214.00,0.00 0.00,0.00 0.00,0.00 0.00,0.00M 291.657,159.475c0.00,0.00 -71.316,0.00 -71.316,0.00 0.00,0.00 5.751,173.638 5.751,173.638 0.00,0.00 59.814,0.00 59.814,0.00 0.00,0.00 5.751-173.638 5.751-173.638 0.00,0.00 0.00,0.00 0.00,0.00" />
93
+ <glyph unicode="&#xe042;" d="M 511.999-31.999 m0.00,0.00,c0.00,282.769 -229.23,511.999 -511.999,511.999l0.00-102.406c 226.216,0.00 409.593-183.378 409.593-409.593l 102.406,0.00 z m -204.813,0.00c0.00,169.662 -137.526,307.187 -307.187,307.187l0.00-102.375c 113.108,0.00 204.813-91.705 204.813-204.813l 102.375,0.00 z m -204.781,0.00c0.00,56.554 -45.852,102.406 -102.406,102.406l0.00-102.406 102.406,0.00z" />
94
+ <glyph unicode="&#xe041;" d="M 0.00,435.812 m0.00,0.00,0.00-338.00 185.906,0.00 0.00-48.719 -45.313,0.00 0.00-36.906 230.813,0.00 0.00,36.906 -45.313,0.00 0.00,48.719 185.906,0.00 0.00,338.00 -512.00,0.00 z m 62.969-63.813 386.063,0.00 0.00-210.406 -386.063,0.00 0.00,210.406z" />
95
+ <glyph unicode="&#xe040;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 106.688,347.531L 405.313,347.531L 405.313,150.406L 296.875,150.406L 296.875,122.00L 323.313,122.00L 323.313,100.469L 188.688,100.469L 188.688,122.00L 215.125,122.00L 215.125,150.406L 106.688,150.406L 106.688,347.531 z M 143.438,310.312L 143.438,187.594L 368.563,187.594L 368.563,310.312L 143.438,310.312z" />
96
+ <glyph unicode="&#xe034;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 122.094,357.906L 389.906,357.906L 389.906,90.094L 122.094,90.094L 122.094,357.906 z M 209.625,306.969C 193.658,306.969 180.719,294.03 180.719,278.062C 180.719,262.095 193.658,249.156 209.625,249.156C 225.592,249.156 238.563,262.095 238.563,278.062C 238.563,294.03 225.592,306.969 209.625,306.969 z M 299.75,306.969C 283.783,306.969 270.844,294.03 270.844,278.062C 270.844,262.095 283.783,249.156 299.75,249.156C 315.717,249.156 328.656,262.095 328.656,278.062C 328.656,294.03 315.717,306.969 299.75,306.969 z M 162.938,215.937C 162.938,164.54 204.602,122.875 256.00,122.875C 307.397,122.875 349.063,164.54 349.063,215.937L 162.938,215.937z" />
97
+ <glyph unicode="&#xe033;" d="M 0.00,289.573 m0.00,0.00, 120.656,0.00 181.508,147.934 0.00-508.853 -181.508,147.934 -120.656,0.00 z m 370.361,24.132c 35.672-35.672 53.858-79.038 54.558-130.098 0.00-48.962 -18.186-90.929 -54.558-125.902L 333.641,95.473c 25.18,25.18 37.77,54.907 37.77,89.18 0.00,34.973 -12.59,65.399 -37.77,91.278l 36.722,37.77 z m 62.95,61.902c 52.46-52.46 78.688-115.76 78.688-189.902 0.00-74.142 -26.23-137.793 -78.688-190.952l-38.82,38.82c 41.968,41.268 62.952,91.804 62.952,151.606 0.00,59.804 -20.984,110.688 -62.952,152.656z" />
98
+ <glyph unicode="&#xe032;" d="M 121.236,77.283 m0.00,0.00,0.00-41.769 201.753,0.00 0.00,41.769 -201.753,0.00 z m 3.415,75.132 -2.89-41.769 201.227-13.66 2.627,41.506 -200.965,13.923 z m -61.997,17.338 0.00-201.753 33.363,0.00 264.274,0.00 21.279,0.00 0.00,201.753 -33.363,0.00 0.00-168.127 -252.191,0.00 0.00,168.127 -33.363,0.00 z m 77.234,71.454 -9.982-40.456 195.711-48.599 9.982,40.718 -195.711,48.337 z M 183.232,342.346 161.954,306.356 335.859,204.167 357.138,240.419 183.232,342.346 z m 106.13,95.885 -34.676-23.38 112.172-167.339 34.676,23.117 -112.172,167.602 z m 135.553,41.769 -41.506-4.991 24.431-200.177 41.506,4.991 -24.431,200.177z" />
99
+ <glyph unicode="&#xe031;" d="M 410.18-20.532 253.476,94.379 93.746-16.287 154.609,168.256 0.00,285.97 194.319,285.114 258.495,468.531 317.728,283.458 512.00,279.102 354.289,165.578z" />
100
+ <glyph unicode="&#xe030;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 257.688,390.437L 298.031,264.469L 430.25,261.50L 322.906,184.25L 360.938,57.562L 254.281,135.781L 145.563,60.437L 187.00,186.062L 81.75,266.187L 214.031,265.594L 257.688,390.437z" />
101
+ <glyph unicode="&#xe02f;" d="M 258.494,468.527 m0.00,0.00,-15.98-45.661 -48.194-137.744 -145.924,0.633 -48.397,0.228 38.52-29.327 116.091-88.41 -45.712-138.554 -15.145-45.965 39.786,27.554 119.94,83.092 117.686-86.283 39.026-28.617L 396.263,25.818 354.273,165.588 472.719,250.832 511.999,279.12 463.628,280.184 317.729,283.476 273.258,422.435 258.494,468.527 z m -1.368-102.035 33.252-103.909 3.52-11.017 11.548-0.253 109.076-2.431 -88.537-63.744 -9.396-6.737 3.343-11.067 31.378-104.492 -87.98,64.503 -9.32,6.838 -9.497-6.585 -89.677-62.123 34.189,103.606 3.596,10.966 -9.193,7.015 -86.764,66.073 109.076-0.481 11.548-0.051 3.824,10.915 36.013,102.972z" />
102
+ <glyph unicode="&#xe02b;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 128.00,352.00L 384.00,352.00L 384.00,96.00L 128.00,96.00L 128.00,352.00z" />
103
+ <glyph unicode="&#xe02a;" d="M 445.455,383.996C 499.976,310.988 512.00,214.998 478.303,134.912 436.346,41.767 345.414-16.399 248.899-17.10 153.888-16.042 69.551,37.778 27.239,118.377l 108.426,0.00c 46.841,0.337 86.991,29.129 87.595,72.539 -0.021,23.768 -8.878,45.594 -28.041,57.337 -16.841,9.602 -34.539,11.502 -52.344,14.667 -11.055,2.315 -27.814,4.548 -28.041,17.068 1.025,20.12 22.349,21.795 36.32,21.868 25.103,0.00 50.207,0.00 75.31,0.00 10.789-0.284 21.439-0.899 30.979-4.80 9.856-4.581 14.861-11.48 14.956-21.334l0.00-75.206c 0.744-24.912 8.844-46.117 26.438-61.604C 316.713,124.526 337.802,118.501 358.928,118.377c 22.57,0.615 43.983,6.814 60.089,20.534 18.497,17.257 26.284,38.847 26.438,61.604 z M 248.899,480.003c 51.541-0.666 100.228-17.064 139.939-43.203l0.00-238.417c-1.327-17.479 -13.981-29.65 -29.91-29.869 -17.454,1.317 -30.218,13.894 -30.444,29.869l0.00,71.472c-0.651,31.64 -9.315,64.874 -40.059,76.539 -8.19,3.022 -16.915,4.534 -26.171,4.534l-122.313,0.00c-21.666-0.545 -41.647-6.66 -57.151-19.734 -16.144-14.856 -23.887-33.321 -24.035-53.337 0.24-13.676 3.357-27.296 10.416-37.87 11.712-15.966 28.535-23.461 45.667-26.669 13.698-3.249 27.757-3.268 40.593-7.467 9.343-3.492 12.219-8.922 12.285-17.601 -0.543-10.323 -6.03-14.842 -14.689-17.334 -12.307-2.873 -25.029-2.395 -36.587-2.40l-108.426,0.00c-5.101,21.221 -7.962,42.81 -8.012,62.937 2.626,138.927 116.163,247.587 248.90,248.551z" />
104
+ <glyph unicode="&#xe029;" d="M 12.996,293.504 m0.00,0.00,0.00,147.244c 1.125,22.497 19.253,38.973 39.244,39.244l 147.244,0.00c 23.679-1.471 51.951-10.755 67.135-27.893l 217.947-242.596c 13.691-17.332 14.078-41.314 0.00-55.784L 313.971-16.876C 297.244-32.008 272.288-31.364 258.187-16.876L 40.889,226.369C 25.047,245.076 13.215,270.087 12.996,293.504 z m 63.892,84.973c 0.929-21.89 18.196-37.687 37.622-37.946 21.953,0.98 37.687,18.478 37.946,37.946 -0.967,21.962 -18.553,37.368 -37.946,37.622 -21.90-0.915 -37.368-18.272 -37.622-37.622z" />
105
+ <glyph unicode="&#xe028;" d="M0.00,281.806 m0.00,0.00,0.00,123.231c 1.475,19.349 15.289,32.606 32.844,32.844l 123.231,0.00c 16.346-0.274 31.574-6.188 44.923-14.25L 394.123,211.505c 11.645-14.953 12.242-33.561 0.00-46.144L 251.348,23.13C 236.921,10.681 216.703,9.555 205.205,23.13L 23.344,225.62C 10.559,241.441 0.19,262.267 0.00,281.806 z m 62.295,48.859c 13.639-12.575 33.214-11.411 44.923,0.00 12.518,13.524 11.472,33.302 0.00,44.923 -13.54,12.326 -33.26,11.348 -44.923,0.00 -12.379-14.458 -11.914-32.52 0.00-44.923 z m 152.41,106.674 47.23,0.00c 19.80-1.221 43.232-9.023 55.915-23.344l 181.861-203.033c 12.288-14.189 11.789-34.57 0.00-46.686L 357.479,22.044c-19.712-11.175 -37.777-10.395 -49.944,3.80l 139.517,139.517c 12.563,13.90 11.221,33.948 0.00,46.144l-162.743,182.094C 265.045,417.642 223.571,436.253 214.704,437.339z" />
106
+ <glyph unicode="&#xe027;" d="M0.00,413.406L0.00,313.406L 512.00,313.406L 512.00,413.406L0.00,413.406 z M 321.219,388.656L 485.75,388.656L 485.75,338.156L 321.219,338.156L 321.219,388.656 z M 0.00,263.375L0.00,163.375L 512.00,163.375L 512.00,263.375L0.00,263.375 z M 208.094,238.625L 485.75,238.625L 485.75,188.125L 208.094,188.125L 208.094,238.625 z M 0.00,113.375L0.00,13.375L 512.00,13.375L 512.00,113.375L0.00,113.375 z M 381.844,88.625L 485.75,88.625L 485.75,38.125L 381.844,38.125L 381.844,88.625z" />
107
+ <glyph unicode="&#xe026;" d="M 423.125,480.00L 334.25,390.656L 393.75,390.656L 393.75,57.344L 334.25,57.344L 423.125-32.00L 512.00,57.344L 452.531,57.344L 452.531,390.656L 512.00,390.656L 423.125,480.00 z M 2.531,391.406L 0.00,300.50L 31.594,300.50C 31.594,362.851 31.637,362.781 111.313,362.781L 111.313,112.00C 111.313,80.741 111.297,80.793 67.563,81.562L 67.563,56.594L 229.469,56.594L 229.469,81.562C 185.806,81.562 185.719,81.639 185.719,112.00L 185.719,362.781C 265.437,362.781 265.656,362.764 265.656,300.50L 297.031,300.50L 294.75,391.406L 2.531,391.406z" />
108
+ <glyph unicode="&#xe025;" d="M 110.00,480.00L 107.50,389.094L 139.094,389.094C 139.094,451.445 139.105,451.375 218.781,451.375L 218.781,200.594C 218.781,169.335 218.765,169.387 175.031,170.156L 175.031,145.187L 336.969,145.187L 336.969,170.156C 293.306,170.156 293.219,170.232 293.219,200.594L 293.219,451.375C 372.937,451.375 373.125,451.358 373.125,389.094L 404.50,389.094L 402.219,480.00L 110.00,480.00 z M 89.344,145.75L 0.00,56.875L 89.344-32.00L 89.344,27.469L 422.656,27.469L 422.656-32.00L 512.00,56.875L 422.656,145.75L 422.656,86.25L 89.344,86.25L 89.344,145.75z" />
109
+ <glyph unicode="&#xe024;" d="M0.00,480.00L0.00,352.00L 128.00,352.00L 128.00,480.00L0.00,480.00 z M 192.00,480.00L 192.00,352.00L 320.00,352.00L 320.00,480.00L 192.00,480.00 z M 384.00,480.00L 384.00,352.00L 512.00,352.00L 512.00,480.00L 384.00,480.00 z M 0.00,288.00L0.00,160.00L 128.00,160.00L 128.00,288.00L0.00,288.00 z M 192.00,288.00L 192.00,160.00L 320.00,160.00L 320.00,288.00L 192.00,288.00 z M 384.00,288.00L 384.00,160.00L 512.00,160.00L 512.00,288.00L 384.00,288.00 z M 0.00,96.00L0.00-32.00L 128.00-32.00L 128.00,96.00L0.00,96.00 z M 192.00,96.00L 192.00-32.00L 320.00-32.00L 320.00,96.00L 192.00,96.00 z M 384.00,96.00L 384.00-32.00L 512.00-32.00L 512.00,96.00L 384.00,96.00z" />
110
+ <glyph unicode="&#xe018;" d="M 512.00,387.415C 508.575,380.185 502.201,371.052 492.878,360.017 483.556,348.982 472.045,339.279 458.346,330.907c 0.381-3.044 0.666-5.898 0.856-8.562C 460.679,281.334 450.856,238.784 437.226,203.334 410.808,137.426 370.327,84.382 312.509,48.365 252.214,13.781 181.995,6.425 117.298,12.69 74.347,17.623 32.014,31.649 0.00,58.068 58.553,51.069 113.197,70.988 156.397,103.161 108.409,101.946 73.542,136.66 57.079,176.793c 7.421-1.945 15.184-1.71 22.261-1.142 8.711,0.818 16.98,1.635 25.115,3.425 -30.599,9.872 -57.373,28.021 -71.349,55.367 -8.198,17.327 -11.899,33.827 -11.987,52.513 14.338-7.549 31.585-14.906 47.376-14.27 -23.847,20.201 -42.965,46.02 -46.519,75.63 -2.244,24.689 3.934,47.227 12.843,68.209 35.672-39.204 75.697-71.467 121.864-91.326 31.572-12.929 63.055-19.843 95.607-19.978 -3.758,29.075 -0.836,57.194 12.843,81.052 16.098,25.65 39.586,40.532 65.926,47.946 37.69,9.665 74.451-3.987 97.605-30.252 24.969,2.697 48.888,13.774 67.924,25.115 -8.089-24.495 -23.839-48.85 -46.805-60.504 21.867,4.05 42.732,10.522 62.216,18.836z" />
111
+ <glyph unicode="&#xe017;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 0.00-34.205c 122.499,0.00 221.795-99.297 221.795-221.795 0.00-122.499 -99.297-221.812 -221.795-221.812 -122.499,0.00 -221.812,99.313 -221.812,221.812 0.00,122.499 99.313,221.795 221.812,221.795 z M 393.547,249.103c 7.368-6.967 7.139-16.959 1.637-24.017 -6.729-7.099 -17.335-7.401 -24.017-1.637 -20.87,18.938 -43.709,36.658 -64.955,56.222 -0.065-0.836 -5.76,3.76 -8.188,3.821 -2.183,0.00 -3.275-2.547 -3.275-7.642 1.072-21.024 -0.49-43.221 1.91-63.591 0.91-7.46 1.365-11.736 1.365-12.827l 24.563-139.736c 1.407-12.832 -5.606-22.417 -16.921-24.563 -11.33-3.082 -22.973,6.688 -24.563,16.921 0.00,0.00 -19.816,112.83 -20.196,114.627 -0.38,1.797 -1.05,11.749 -4.913,12.281 -4.963-1.801 -4.388-10.16 -4.913-12.281 -0.524-2.122 -20.196-114.627 -20.196-114.627 -3.32-11.837 -13.524-18.833 -24.563-16.921 -12.613,3.154 -18.778,13.234 -16.921,24.563l 24.563,140.281c 3.627,25.928 2.729,49.121 2.729,75.326 0.00,5.096 -1.00,7.735 -3.002,7.915 -2.002,0.182 -4.64-1.183 -7.915-4.094l-64.955-55.676c-7.59-5.655 -18.20-4.713 -24.017,1.637 -5.881,8.403 -5.505,17.496 1.637,24.017l 85.151,75.326c 4.004,2.547 7.734,4.276 11.19,5.186 3.458,0.91 7.734,1.365 12.827,1.365l 56.768,0.00c 5.094,0.00 9.37-0.455 12.827-1.365 3.457-0.91 7.187-2.82 11.19-5.731 27.111-23.781 55.895-49.366 85.151-74.78 z M 293.56,378.314c0.00-20.62 -16.716-37.335 -37.335-37.335 -20.62,0.00 -37.335,16.716 -37.335,37.335 0.00,20.62 16.716,37.335 37.335,37.335 20.62,0.00 37.335-16.716 37.335-37.335z" />
112
+ <glyph unicode="&#xe016;" d="M 482.462,253.538 m0.00,0.00,0.00-285.538 -452.924,0.00 0.00,285.538 78.223,0.00 0.00,71.658c 1.089,42.255 17.904,81.493 45.402,109.402 13.857,13.857 30.177,24.889 48.957,33.094 18.781,8.205 38.929,12.308 60.444,12.308 41.857-0.852 80.232-17.872 108.034-44.581 29.35-29.821 45.289-69.229 46.222-107.487l-90.803,0.00c-0.555,17.821 -7.004,30.358 -18.598,42.119 -12.989,12.202 -28.439,18.48 -44.855,18.598 -17.821-0.555 -33.093-7.004 -44.855-18.598 -12.202-12.989 -18.48-28.439 -18.598-44.855l0.00-71.658z" />
113
+ <glyph unicode="&#xe015;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 3.583-90.65c 47.828,1.937 82.812-39.787 84.523-83.35l-49.751,0.00c-1.851,19.52 -15.669,34.072 -34.772,33.307 -19.103-0.765 -34.347-15.813 -34.756-34.772l0.00-39.246 155.234,0.00 0.00-156.434 -248.138,0.00 0.00,156.434 42.861,0.00 0.00,39.246c 4.044,48.393 36.971,82.878 84.798,84.815z" />
114
+ <glyph unicode="&#xe014;" d="M 256.00-32.00 m0.00,0.00,c-141.384,0.00 -256.00,114.616 -256.00,256.00 0.00,141.384 114.616,256.00 256.00,256.00 141.384,0.00 256.00-114.616 256.00-256.00 0.00-141.384 -114.616-256.00 -256.00-256.00 z m 0.00,456.348c-110.664,0.00 -200.348-89.711 -200.348-200.348 0.00-110.636 89.683-200.348 200.348-200.348 110.664,0.00 200.348,89.711 200.348,200.348 0.00,110.636 -89.683,200.348 -200.348,200.348 z m 50.087-307.478 -100.174,0.00 0.00,113.809 -62.609,0.00 112.696,106.017 112.696-106.017 -62.609,0.00 0.00-113.809z" />
115
+ <glyph unicode="&#xe013;" d="M 400.885,113.756 m0.00,0.00,c-67.132,24.456 -88.592,45.10 -88.592,89.30 0.00,26.526 21.996,43.717 29.494,66.451 7.498,22.734 11.836,49.65 15.442,69.229 3.606,19.579 5.038,27.152 6.999,48.014 2.397,26.036 -15.033,93.249 -108.228,93.249 -93.168,0.00 -110.652-67.214 -108.201-93.249 1.961-20.861 3.401-28.435 6.999-48.014 3.598-19.579 7.894-46.493 15.387-69.229 7.494-22.735 29.522-39.925 29.522-66.451 0.00-44.201 -21.46-64.844 -88.592-89.30 -67.377-24.511 -111.115-48.681 -111.115-65.757 0.00-17.049 0.00-80.00 0.00-80.00l 512.00,0.00c0.00,0.00 0.00,62.952 0.00,80.00 0.00,17.049 -43.765,41.219 -111.115,65.757z" />
116
+ <glyph unicode="&#xe012;" d="M0.00,417.75 m0.00,0.00,0.00-387.50 512.00,0.00 0.00,387.50 z m 62.781-62.813 386.438,0.00 0.00-261.875 -386.438,0.00 z m 135.781-45.594 0.00-174.438L 349.375,222.375z" />
117
+ <glyph unicode="&#xe011;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00 0.00,82.615 114.615-32.00 256.00-32.00 397.385-32.00 512.00,82.615 512.00,224.00 512.00,365.385 397.385,480.00 256.00,480.00 z m -152.625-140.50 305.219,0.00 0.00-231.00 -305.219,0.00 z m 37.438-37.438 0.00-156.125 230.375,0.00 0.00,156.125 z M 221.75,274.875 311.656,223.031 221.75,170.875z" />
118
+ <glyph unicode="&#xe010;" d="M 0.00,459.047 m0.00,0.00,0.00-364.594 105.50,0.00 0.00-105.50 164.469,105.50 242.031,0.00 0.00,364.594 -512.00,0.00 z m 112.25-91.594 206.25,0.00 0.00-63.594 81.25,63.594 0.00-170.00 -81.25,63.594 0.00-63.594 -206.25,0.00 0.00,170.00z" />
119
+ <glyph unicode="&#xe00f;" d="M 473.875,480.00L0.00,5.562L 38.125-32.00L 512.00,441.844L 473.875,480.00 z M 0.00,479.25L0.00,359.219L 120.00,359.219L 120.00,479.219L0.00,479.25 z M 141.406,479.25L 141.406,359.219L 261.406,359.219L 261.406,479.219L 141.406,479.25 z M 0.00,335.594L0.00,215.594L 120.00,215.594L 120.00,335.594L0.00,335.594 z M 141.406,335.594L 141.406,215.594L 261.406,335.594L 141.406,335.594 z M 352.313,208.50L 278.313,141.094L 512.00,141.094L 512.00,208.50L 352.313,208.50 z M 262.313,122.312L 262.313,54.906L 512.00,54.906L 512.00,122.312L 262.313,122.312 z M 262.313,36.125L 262.313-31.25L 512.00-31.25L 512.00,36.125L 262.313,36.125z" />
120
+ <glyph unicode="&#xe00e;" d="M 406.461,344.155 m0.00,0.00,c-52.88,43.701 -123.116-16.02 -139.636-63.864 10.187-0.175 21.842,0.884 30.579-2.436 13.491-7.298 13.679-21.365 12.719-33.286 -6.015-26.379 -24.708-74.378 -48.711-78.207 -5.051-0.541 -10.283,2.255 -15.696,8.389 -20.977,26.277 -18.379,60.845 -23.273,89.843 -4.579,24.261 -8.032,73.225 -36.804,83.89 -31.69,3.87 -59.518-19.742 -79.83-38.427 -12.448-11.546 -25.167-22.551 -38.157-33.015l0.00-2.165c 3.09-3.716 5.595-7.505 8.389-11.095 4.741-4.772 13.393-3.604 18.672-1.894 19.198,4.991 25.946,9.883 36.262-8.389C 146.524,211.47 158.296,164.099 168.592,123.876 175.789,100.934 185.281,71.631 208.372,62.176c 14.267-6.062 38.878,2.084 49.793,8.66 46.711,29.51 82.857,76.727 108.786,122.317 18.93,38.413 65.995,114.836 39.51,151.002 z m 105.539,135.848 0.00-512.00 -512.00,0.00 0.00,512.00z" />
121
+ <glyph unicode="&#xe10e;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 227.281,343.094C 241.778,343.244 255.958,341.637 262.875,341.437C 288.517,340.699 293.046,327.73 292.719,317.062C 292.239,301.439 282.187,235.351 300.813,228.906C 327.953,243.419 346.152,288.494 359.406,317.062C 366.11,331.513 365.05,332.231 380.50,332.25L 441.875,332.344C 456.654,332.362 456.078,332.88 460.813,326.844C 471.825,312.803 426.062,254.398 411.281,238.25C 384.005,208.449 399.919,196.909 404.313,192.812C 424.668,173.833 444.338,154.151 456.563,136.00C 466.281,121.569 462.268,108.133 449.906,107.625L 384.094,104.906C 362.255,104.009 328.296,143.158 322.875,151.687C 318.491,158.723 297.365,167.541 295.375,149.562L 292.594,124.469C 290.573,106.531 277.329,106.95 266.875,106.50C 194.483,103.385 169.83,130.947 133.375,171.625C 106.657,209.411 81.159,247.413 60.031,292.937C 53.707,306.564 50.358,316.561 49.50,327.156C 60.131,335.465 97.446,331.886 122.50,332.437C 129.353,332.588 133.977,328.662 137.594,320.844C 151.708,290.332 167.102,260.369 187.469,233.875C 196.339,225.705 204.18,222.701 208.094,239.312C 210.366,239.522 210.184,267.03 210.313,287.781C 210.401,302.029 208.727,319.117 184.594,327.00C 189.475,339.797 208.643,342.901 227.281,343.094z" />
122
+ <glyph unicode="&#xe00d;" d="M 0.00,290.839 m0.00,0.00, 121.402,0.00 182.631,148.85 0.00-512.00 -182.631,148.85 -121.402,0.00 z m 372.652,24.28c 35.893-35.893 54.191-79.527 54.895-130.903 0.00-49.265 -18.298-91.492 -54.895-126.681l-36.949,38.004c 25.336,25.336 38.004,55.247 38.004,89.732 0.00,35.189 -12.668,65.803 -38.004,91.844z" />
123
+ <glyph unicode="&#xe00c;" d="M 471.632,154.671 m0.00,0.00,q 1.24-1.24 1.24-2.921Q 472.872,150.068 471.632,148.828L 444.19,121.385q-1.24-1.24 -2.833-1.24 -1.416,0.00 -3.01,1.24L 399.218,160.513 360.089,121.385q-1.24-1.24 -2.833-1.24 -1.416,0.00 -3.01,1.24L 326.804,148.828q-1.062,1.062 -1.062,3.01 0.00,1.771 1.062,2.833L 365.932,193.80 326.98,232.929q-1.24,1.062 -1.24,2.833 0.00,1.948 1.24,3.01l 27.266,27.443q 1.24,1.24 3.01,1.24 1.771,0.00 2.833-1.24L 399.218,227.086 438.347,266.214q 1.24,1.24 2.921,1.24 1.683,0.00 2.921-1.24L 471.632,238.771q 1.24-1.24 1.24-2.921 0.00-1.683 -1.24-2.921L 432.503,193.80 z m -471.631,142.623l 117.259,0.00 l 176.399,143.77l0.00-494.528 l-176.399,143.77l-117.259,0.00 L-39.128,297.294 z" />
124
+ <glyph unicode="&#xe00b;" d="M 0.00,314.007 m0.00,0.00, 104.028,0.00 156.495,127.548 0.00-438.728 -156.495,127.548 -104.028,0.00 z m 319.321,20.806c 30.756-30.756 46.436-68.146 47.039-112.169 0.00-42.214 -15.68-78.398 -47.039-108.551l-31.661,32.565c 21.71,21.71 32.565,47.34 32.565,76.89 0.00,30.153 -10.855,56.386 -32.565,78.70l 31.661,32.565 z m 54.276,53.371c 45.23-45.23 67.844-99.807 67.844-163.731 0.00-63.925 -22.615-118.803 -67.844-164.636l-33.47,33.47c 36.184,35.581 54.276,79.152 54.276,130.714 0.00,51.562 -18.092,95.435 -54.276,131.618 z m 49.753,49.753c 27.741-27.741 49.451-60.005 65.131-96.791 15.68-36.787 23.519-75.684 23.519-116.692 0.00-41.008 -7.84-80.056 -23.519-117.145 -15.68-37.088 -37.39-69.503 -65.131-97.244l-32.565,32.565c 50.054,50.054 75.081,110.511 75.081,181.371 0.00,70.86 -25.027,131.317 -75.081,181.371z" />
125
+ <glyph unicode="&#xe0ab;" d="M 288.00,400.00 L 288.00,240.00 L 448.00,400.00 L 448.00,48.00 L 288.00,208.00 L 288.00,48.00 L 112.00,224.00 Z" />
126
+ <glyph unicode="&#xe09a;" d="M 64.00,32.00 L 64.00,416.00 L 128.00,416.00 L 128.00,240.00 L 288.00,400.00 L 288.00,240.00 L 448.00,400.00 L 448.00,48.00 L 288.00,208.00 L 288.00,48.00 L 128.00,208.00 L 128.00,32.00 Z" />
127
+ <glyph unicode="&#xe099;" d="M 448.00,416.00 L 448.00,32.00 L 384.00,32.00 L 384.00,208.00 L 224.00,48.00 L 224.00,208.00 L 64.00,48.00 L 64.00,400.00 L 224.00,240.00 L 224.00,400.00 L 384.00,240.00 L 384.00,416.00 Z" />
128
+ <glyph unicode="&#xe093;" d="M 256.00,48.00 L 256.00,208.00 L 96.00,48.00 L 96.00,400.00 L 256.00,240.00 L 256.00,400.00 L 432.00,224.00 Z" />
129
+ <glyph unicode="&#xe05d;" d="M 96.00,416.00L 416.00,224.00L 96.00,32.00 z" />
130
+ <glyph unicode="&#xe02e;" d="M 128.00,32.00 L 128.00,416.00 L 192.00,416.00 L 192.00,240.00 L 352.00,400.00 L 352.00,48.00 L 192.00,208.00 L 192.00,32.00 Z" />
131
+ <glyph unicode="&#xe02d;" d="M 384.00,416.00 L 384.00,32.00 L 320.00,32.00 L 320.00,208.00 L 160.00,48.00 L 160.00,400.00 L 320.00,240.00 L 320.00,416.00 Z" />
132
+ <glyph unicode="&#xe10d;" d="M 135.731,448.544 m0.00,0.00,0.00-71.366 -135.731,0.00 0.00-207.941 230.92,0.00 0.00,42.676 50.161,0.00 0.00-42.676 230.92,0.00 0.00,207.941 -135.763,0.00 0.00,71.366 z m 36.894-36.894 166.718,0.00 0.00-34.472 -166.718,0.00 z M 0.00,129.187l0.00-129.731 511.999,0.00 0.00,129.731 -230.92,0.00 0.00-41.223 -50.161,0.00 0.00,41.223z" />
133
+ <glyph unicode="&#xe10c;" d="M 437.563,437.719C 371.643,372.439 274.748,332.499 181.406,326.875l-138.625,0.00C 20.959,326.577 1.231,308.013 0.00,283.531l0.00-62.50c 0.298-21.822 18.299-42.112 42.781-43.344l 55.563,0.00c-14.852-50.368 1.115-101.362 18.344-151.406 25.559-24.133 84.006-21.128 103.063,10.281 -40.579,31.899 -60.327,117.738 -11.406,138.906 83.383-9.461 165.988-51.821 229.219-108.625 21.737,0.298 41.509,18.151 42.781,42.50l0.00,102.50C 497.757,216.327 511.184,232.297 512.00,252.125 511.79,270.024 499.441,287.116 480.344,292.687l0.00,102.25C 480.046,416.76 462.045,436.487 437.563,437.719 z m 1.094-55.281 0.00-260.594C 377.552,169.464 302.073,201.41 224.188,215.75l0.00,72.781C 300.614,300.03 375.353,335.276 438.656,382.437z" />
134
+ <glyph unicode="&#xe10b;" d="M 115.95,481.093 m0.00,0.00,0.00-80.215 42.113,0.00 0.00,80.215 z m 242.871,0.00 0.00-80.215 42.113,0.00 0.00,80.215 z m -328.977-38.541 0.00-112.302 457.228,0.00 0.00,112.302 -56.057,0.00 0.00-71.755 -102.275,0.00 0.00,71.755 -140.596,0.00 0.00-71.755 -102.275,0.00 0.00,71.755 z m 0.00-141.787 0.00-331.672 457.228,0.00 0.00,331.672 z m 179.607-76.675c 23.275-0.229 45.294-11.404 54.051-32.212 4.119-12.429 6.318-25.653 1.191-37.225 -6.419-13.349 -19.445-20.338 -32.212-24.817 23.959-6.251 39.743-21.306 39.888-45.779 -0.386-16.786 -8.223-31.643 -20.085-41.361 -12.613-9.971 -27.887-15.565 -42.834-15.667 -42.15,0.00 -63.232,19.014 -63.232,57.028l 37.225,0.00c 0.79-16.004 8.366-28.142 23.939-28.357 19.799,1.349 27.599,14.364 27.762,31.021 -0.008,10.06 -3.659,20.344 -12.408,24.221 -11.287,4.69 -23.878,4.125 -34.875,4.136l0.00,28.953c 17.975-0.376 42.682,2.79 42.865,24.221 -0.699,15.764 -7.165,27.00 -22.467,27.198 -16.30-0.983 -25.244-10.213 -25.412-24.848l-36.63,0.00c 0.795,36.899 31.105,53.322 63.232,53.487 z m 128.439-3.541 32.807,0.00 0.00-189.979 -35.47,0.00 0.00,152.754c-13.591-11.621 -28.639-19.893 -45.184-24.817l0.00,32.493c 19.302,7.484 35.242,17.336 47.847,29.548z" />
135
+ <glyph unicode="&#xe10a;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 166.125,385.469L 192.688,385.469L 192.688,334.875L 166.125,334.875L 166.125,385.469 z M 319.313,385.469L 345.844,385.469L 345.844,334.875L 319.313,334.875L 319.313,385.469 z M 111.813,361.156L 147.156,361.156L 147.156,315.906L 211.656,315.906L 211.656,361.156L 300.313,361.156L 300.313,315.906L 364.844,315.906L 364.844,361.156L 400.188,361.156L 400.188,290.312L 111.813,290.312L 111.813,361.156 z M 111.813,271.719L 400.188,271.719L 400.188,62.531L 111.813,62.531L 111.813,271.719 z M 225.094,223.375C 204.832,223.271 185.72,212.897 185.219,189.625L 208.313,189.625C 208.419,198.855 214.064,204.693 224.344,205.312C 233.994,205.187 238.059,198.098 238.50,188.156C 238.385,174.64 222.805,172.638 211.469,172.875L 211.469,154.625C 218.405,154.618 226.35,154.958 233.469,152.00C 238.987,149.554 241.306,143.064 241.313,136.719C 241.209,126.214 236.268,118.007 223.781,117.156C 213.96,117.292 209.186,124.969 208.688,135.062L 185.219,135.062C 185.219,111.088 198.511,99.094 225.094,99.094C 234.52,99.158 244.139,102.68 252.094,108.969C 259.575,115.098 264.538,124.476 264.781,135.062C 264.69,150.497 254.735,159.995 239.625,163.937C 247.677,166.762 255.889,171.144 259.938,179.562C 263.171,186.861 261.785,195.224 259.188,203.062C 253.665,216.185 239.773,223.23 225.094,223.375 z M 306.094,221.125C 298.144,213.423 288.08,207.22 275.906,202.50L 275.906,182.00C 286.341,185.105 295.835,190.327 304.406,197.656L 304.406,101.312L 326.781,101.312L 326.781,221.125L 306.094,221.125z" />
136
+ <glyph unicode="&#xe0dd;" d="M0.00,480.00 m0.00,0.00,0.00-512.00 399.00,0.00 57.25,0.00 55.75,0.00 0.00,90.625 -55.75,0.00 0.00,49.844 55.75,0.00 0.00,90.625 -55.75,0.00 0.00,49.813 55.75,0.00 0.00,90.625 -55.75,0.00 0.00,49.844 55.75,0.00L 512.00,480.00 456.25,480.00 399.00,480.00 z m 228.125-89.438c 40.869,0.00 74.00-33.131 74.00-74.00 0.00-28.962 -16.636-54.034 -40.875-66.188l 95.875-57.188 0.00-79.531 -258.00,0.00 0.00,79.531L 195.00,250.375c-24.239,12.153 -40.875,37.225 -40.875,66.188 0.00,40.869 33.131,74.00 74.00,74.00z" />
137
+ <glyph unicode="&#xe0dc;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 112.50,367.50L 336.156,367.50L 368.25,367.50L 399.50,367.50L 399.50,316.687L 368.25,316.687L 368.25,288.75L 399.50,288.75L 399.50,237.969L 368.25,237.969L 368.25,210.031L 399.50,210.031L 399.50,159.25L 368.25,159.25L 368.25,131.312L 399.50,131.312L 399.50,80.50L 368.25,80.50L 336.156,80.50L 112.50,80.50L 112.50,367.50 z M 240.375,317.375C 217.466,317.375 198.906,298.784 198.906,275.875C 198.906,259.64 208.225,245.594 221.813,238.781L 168.719,207.00L 168.063,207.00L 168.063,206.719L 168.063,162.156L 312.688,162.156L 312.688,206.719L 312.688,207.00L 312.031,207.00L 258.938,238.781C 272.525,245.594 281.844,259.64 281.844,275.875C 281.844,298.784 263.284,317.375 240.375,317.375z" />
138
+ <glyph unicode="&#xe0db;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 0.00-74.656 0.00-362.719c-100.165,0.00 -181.375,81.21 -181.375,181.375 0.00,100.165 81.21,181.344 181.375,181.344z" />
139
+ <glyph unicode="&#xe0da;" d="M 258.179,275.20 m0.00,0.00,c-57.832,0.895 -102.009,47.384 -102.40,102.40 0.956,57.316 47.802,101.998 102.40,102.40 57.882-2.189 101.989-46.494 102.40-102.40 -1.138-57.36 -47.747-102.011 -102.40-102.40 z m 82.791-21.243c 72.783-0.85 109.693-64.696 110.026-128.545l0.00-148.698c0.00-5.81 -2.905-8.715 -8.715-8.715l-53.923,0.00c-5.81,0.00 -8.715,2.905 -8.715,8.715l0.00,129.634c-3.364,18.517 -24.499,13.341 -25.055,0.00l0.00-129.634c-0.246-5.309 -4.659-8.658 -9.26-8.715l-180.289,0.00c-5.81,0.00 -8.715,2.905 -8.715,8.715l0.00,129.634c-3.143,18.85 -24.609,13.675 -25.055,0.00l0.00-129.634c-0.246-5.309 -4.659-8.658 -9.26-8.715l-51.745,0.00c-6.173,0.00 -9.26,2.905 -9.26,8.715l0.00,148.698c-0.418,68.042 42.625,128.04 110.57,128.545l 86.604,0.00z" />
140
+ <glyph unicode="&#xe0d9;" d="M 124.00,449.062 m0.00,0.00,0.00-80.00 264.00,0.00 0.00,80.00 -264.00,0.00 z m -70.00-123.375 0.00-80.00 404.00,0.00 0.00,80.00 -404.00,0.00 z m 46.00-123.375 0.00-80.00 312.00,0.00 0.00,80.00 -312.00,0.00 z m -100.00-123.375 0.00-80.00 512.00,0.00 0.00,80.00 -512.00,0.00z" />
141
+ <glyph unicode="&#xe0d8;" d="M 0.00,449.062 m0.00,0.00,0.00-80.00 512.00,0.00 0.00,80.00 -512.00,0.00 z m 0.00-123.375 0.00-80.00 512.00,0.00 0.00,80.00 -512.00,0.00 z m 0.00-123.375 0.00-80.00 512.00,0.00 0.00,80.00 -512.00,0.00 z m 0.00-123.375 0.00-80.00 512.00,0.00 0.00,80.00 -512.00,0.00z" />
142
+ <glyph unicode="&#xe0d7;" d="M 264.00,449.062 m0.00,0.00,0.00-80.00 -264.00,0.00 0.00,80.00 264.00,0.00 z m 140.00-123.375 0.00-80.00 -404.00,0.00 0.00,80.00 404.00,0.00 z m -92.00-123.375 0.00-80.00 -312.00,0.00 0.00,80.00 312.00,0.00 z m 200.00-123.375 0.00-80.00 -512.00,0.00 0.00,80.00 512.00,0.00z" />
143
+ <glyph unicode="&#xe0d6;" d="M 248.00,449.062 m0.00,0.00,0.00-80.00 264.00,0.00 0.00,80.00 -264.00,0.00 z m -140.00-123.375 0.00-80.00 404.00,0.00 0.00,80.00 -404.00,0.00 z m 92.00-123.375 0.00-80.00 312.00,0.00 0.00,80.00 -312.00,0.00 z m -200.00-123.375 0.00-80.00 512.00,0.00 0.00,80.00 -512.00,0.00z" />
144
+ <glyph unicode="&#xe0d5;" d="M 256.00-32.00 m0.00,0.00,-200.00,300.00 107.75,0.00 0.00,212.00 184.50,0.00 0.00-212.00 107.75,0.00 -200.00-300.00z" />
145
+ <glyph unicode="&#xe0d4;" d="M 0.00,224.00 m0.00,0.00, 300.00-200.00 0.00,107.75 212.00,0.00 0.00,184.50 -212.00,0.00 0.00,107.75 -300.00-200.00z" />
146
+ <glyph unicode="&#xe0af;" d="M 512.00,224.00 m0.00,0.00,-300.00,200.00 0.00-107.75 -212.00,0.00 0.00-184.50 212.00,0.00 0.00-107.75 300.00,200.00z" />
147
+ <glyph unicode="&#xe0ae;" d="M 256.00,480.00L 56.00,180.00L 163.75,180.00L 163.75-32.00L 348.25-32.00L 348.25,180.00L 456.00,180.00L 256.00,480.00z" />
148
+ <glyph unicode="&#xe0ad;" d="M 261.544,327.062 m0.00,0.00,c 5.678,47.457 66.141,32.916 66.241-1.629l-3.258-130.309c-5.379-51.733 -57.256-50.389 -59.182,1.086 z m -89.044-2.172c 0.242,45.096 62.443,39.519 66.241,2.715l 4.343-126.508c 0.247-64.67 -57.372-45.977 -59.182-4.887 z m -21.175-23.347 10.859-106.962c 3.424-42.552 -40.459-55.808 -51.037-16.831l-18.46,110.762c-6.375,49.231 52.421,52.317 58.639,13.031 z M 485.241,293.128C 507.473,276.673 504.583,248.334 483.07,235.302 391.425,195.438 393.266,78.531 326.428,27.894 318.644,22.103 307.332,19.208 292.493,19.208l-179.718,0.00c-33.644,2.052 -48.712,32.591 -53.753,59.725L 0.384,409.048c-4.911,40.641 38.793,38.676 48.323,10.316l 27.148-93.931c-5.519-10.452 -7.568-21.961 -6.516-33.12 5.449-34.948 11.526-69.881 17.375-104.79 2.895-17.375 8.507-31.129 16.831-41.265 8.325-10.136 19.366-15.202 33.12-15.202 15.439-0.228 30.379,7.353 38.549,18.46 21.769-25.741 61.776-24.544 79.814,2.715 18.555-25.241 53.232-28.386 74.114-7.058 22.045,25.657 17.883,58.652 18.732,91.759 12.22-4.293 23.592,5.062 30.948,11.945 21.964,20.52 76.445,63.252 106.419,44.251z" />
149
+ <glyph unicode="&#xe0ac;" d="M 209.003,467.474 m0.00,0.00,0.00-189.274L 29.027,336.683 0.00,247.338 179.975,188.855 68.73,35.735 144.769-19.475 256.015,133.615 367.231-19.475 443.24,35.735 331.994,188.855 512.00,247.338l-29.027,89.345 -180.006-58.483 0.00,189.274 -93.964,0.00z" />
150
+ <glyph unicode="&#xe0aa;" d="M 68.312,81.853 m0.00,0.00,c 91.082-91.082 238.755-91.082 329.837,0.00 91.082,91.082 91.082,238.755 0.00,329.837 -91.082,91.082 -238.755,91.082 -329.837,0.00 -91.082-91.082 -91.082-238.755 0.00-329.837 z m 63.555,22.326 243.954,243.954c 48.69-68.313 42.386-163.762 -18.903-225.051 -61.289-61.289 -156.738-67.594 -225.051-18.903 z M 90.637,145.408C 41.948,213.721 48.251,309.169 109.541,370.459 170.831,431.749 266.279,438.052 334.592,389.363L 90.637,145.408z" />
151
+ <glyph unicode="&#xe0d3;" d="M0.00,445.469L0.00,2.531L 42.781,2.531L 42.781,445.469L0.00,445.469 z M 63.063,445.469L 63.063,2.531L 73.344,2.531L 73.344,445.469L 63.063,445.469 z M 98.906,445.469L 98.906,2.531L 131.406,2.531L 131.406,445.469L 98.906,445.469 z M 146.188,445.469L 146.188,2.531L 160.063,2.531L 160.063,445.469L 146.188,445.469 z M 198.625,445.469L 198.625,2.531L 219.75,2.531L 219.75,445.469L 198.625,445.469 z M 228.313,445.469L 228.313,2.531L 236.563,2.531L 236.563,445.469L 228.313,445.469 z M 258.688,445.469L 258.688,2.531L 268.938,2.531L 268.938,445.469L 258.688,445.469 z M 281.688,445.469L 281.688,2.531L 324.188,2.531L 324.188,445.469L 281.688,445.469 z M 339.188,445.469L 339.188,2.531L 360.594,2.531L 360.594,445.469L 339.188,445.469 z M 391.438,445.469L 391.438,2.531L 396.188,2.531L 396.188,445.469L 391.438,445.469 z M 403.594,445.469L 403.594,2.531L 417.875,2.531L 417.875,445.469L 403.594,445.469 z M 438.656,445.469L 438.656,2.531L 448.938,2.531L 448.938,445.469L 438.656,445.469 z M 469.50,445.469L 469.50,2.531L 512.00,2.531L 512.00,445.469L 469.50,445.469z" />
152
+ <glyph unicode="&#xe0d2;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 79.563,268.437L 209.813,268.437C 223.137,268.344 237.143,263.219 247.875,253.344C 257.754,243.59 263.557,229.602 263.844,214.625C 263.795,203.124 261.604,189.871 253.969,179.312C 248.633,172.13 240.279,166.699 231.063,163.594L 231.063,162.375C 240.769,159.948 250.337,154.762 257.156,146.187C 265.267,135.698 268.042,121.549 268.281,107.625C 268.185,92.853 263.07,77.033 251.625,65.312C 241.452,55.317 226.845,49.596 211.469,49.281L 79.563,49.281L 79.563,268.437 z M 307.813,268.00L 404.688,268.00L 404.688,232.062L 307.813,232.062L 307.813,268.00 z M 354.188,221.312C 367.704,221.312 379.695,219.557 390.156,216.031C 400.71,212.609 409.591,207.259 416.813,200.00C 424.033,192.845 429.484,183.721 433.188,172.625C 438.072,158.101 438.998,139.506 438.906,122.531L 326.281,122.531C 326.281,110.917 328.59,101.898 333.219,95.469C 337.94,89.143 345.667,86.00 356.406,86.00C 366.609,86.048 378.56,89.32 382.50,100.781C 383.518,103.788 384.031,106.984 384.031,110.406L 438.906,110.406C 438.792,92.968 433.178,75.649 418.469,62.812C 402.22,49.596 379.508,45.825 357.656,45.406C 344.14,45.406 331.924,47.109 321.00,50.531C 310.168,54.057 300.966,59.46 293.375,66.719C 285.784,73.978 279.948,83.102 275.875,94.094C 271.802,105.189 269.75,118.298 269.75,133.437C 269.75,148.163 271.738,161.008 275.719,172.00C 279.70,182.992 285.343,192.116 292.656,199.375C 300.062,206.737 308.944,212.245 319.313,215.875C 329.774,219.504 341.412,221.312 354.188,221.312 z M 142.344,220.375L 142.344,183.062L 185.531,183.062C 189.424,183.093 193.129,184.875 195.938,188.031C 198.665,191.353 200.003,195.729 200.094,200.312L 200.094,203.437C 200.065,207.574 198.476,211.846 195.781,215.406C 193.332,218.299 189.66,220.166 185.531,220.375L 142.344,220.375 z M 356.406,180.875C 346.871,180.875 339.753,178.331 335.031,173.25C 330.402,168.169 327.581,161.273 326.563,152.562L 381.813,152.562C 381.812,161.377 379.60,168.272 375.156,173.25C 370.712,178.331 364.46,180.875 356.406,180.875 z M 142.344,137.781L 142.344,100.312L 190.094,100.312C 193.943,100.342 197.628,102.109 200.50,105.125C 203.215,108.431 204.619,112.828 204.688,117.406L 204.688,120.687C 204.662,124.861 203.31,129.214 200.50,132.812C 198.034,135.722 194.215,137.545 190.094,137.781L 142.344,137.781z" />
153
+ <glyph unicode="&#xe0d1;" d="M 221.761,480.00L 221.761,448.471C 152.171,433.205 100.016,371.342 99.696,297.245L 99.696,161.285L-0.779,74.394L-0.779,50.747L 99.696,50.747L 410.747,50.747L 511.221,50.747L 511.221,74.394L 410.747,161.285L 410.747,297.245C 410.427,371.342 358.271,433.205 288.682,448.471L 288.682,480.00L 221.761,480.00 z M 255.221,44.174C 234.613,44.174 217.898,27.49 217.898,6.881C 217.898-13.727 234.613-30.442 255.221-30.442C 275.83-30.442 292.545-13.727 292.545,6.881C 292.545,27.49 275.83,44.174 255.221,44.174z" />
154
+ <glyph unicode="&#xe0d0;" d="M 160.348,480.00 m0.00,0.00,c-27.387,0.00 -49.588-22.201 -49.588-49.588 0.00-27.387 22.201-49.588 49.588-49.588 27.387,0.00 49.588,22.201 49.588,49.588 0.00,27.387 -22.201,49.588 -49.588,49.588 z m -41.207-124.714 -53.288-71.947c-2.131-2.842 -3.194-5.848 -3.194-9.045l-6.388-59.155c-2.883-25.808 34.024-31.771 38.362-3.731l 5.329,54.886 13.852,18.643 0.537-77.261 -26.106-93.769 -66.603-84.724c-19.365-30.142 20.659-52.587 41.018-28.78l 69.275,88.993c 1.861,2.505 3.013,5.855 4.253,9.045l 20.794,73.545 46.885-52.751 25.569-119.369c 7.058-31.866 56.074-20.892 50.094,9.599l-27.182,124.145c-0.648,3.198 -1.35,6.744 -4.253,9.06l-57.542,65.544 0.00,57.021 0.00,23.972 22.375-28.241c 2.487-3.197 6.222-5.504 11.195-6.925l 52.751-10.12 195.539-257.366c 3.491-4.855 13.373-0.018 9.599,6.388L 299.783,243.38c 21.429,7.184 9.862,31.592 -4.27,34.107l-56.482,11.18 -58.08,73.007c-18.396,18.269 -49.16,13.779 -61.811-6.388z" />
155
+ <glyph unicode="&#xe0cf;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 273.813,386.219C 322.949,382.283 351.51,350.819 354.906,310.594C 357.545,289.892 356.825,274.523 353.813,263.219C 381.841,262.30 414.599,249.847 416.688,204.625L 416.688,160.125C 413.781,121.251 399.827,73.219 328.25,63.031L 208.469,62.594C 135.861,61.275 95.874,92.942 95.50,160.687L 96.438,310.844C 99.563,354.522 134.953,380.13 176.25,385.812L 273.813,386.219 z M 192.219,325.469C 150.393,318.679 148.326,271.316 192.219,265.469L 271.625,265.469C 313.45,272.259 315.518,319.621 271.625,325.469L 192.219,325.469 z M 174.219,194.469C 131.16,187.841 130.49,134.062 175.719,128.50L 321.563,128.00C 364.255,134.571 364.135,188.28 320.031,193.969L 174.219,194.469z" />
156
+ <glyph unicode="&#xe0ce;" d="M 0.002-27.125 m0.00,0.00,0.00,40.705 64.253,0.00 0.00,420.836 -64.253,0.00 0.00,40.705 297.714,0.00c 61.225-0.001 107.198-10.317 137.924-30.949 30.724-20.632 46.085-51.693 46.087-93.183 -0.001-29.828 -10.653-53.488 -31.959-70.98 -21.082-17.492 -52.479-28.483 -94.193-32.968 50.46-4.711 89.146-18.166 116.058-40.369 26.912-22.203 40.367-51.693 40.369-88.473 -0.001-49.787 -18.839-86.454 -56.514-110.002 -37.453-23.548 -96.211-35.322 -176.274-35.322l-279.211,0.00m 193.766,292.668 44.068,0.00c 38.574,0.00 67.167,6.951 85.782,20.856 18.614,14.129 27.921,35.658 27.921,64.589 0.00,29.154 -9.084,50.348 -27.248,63.579 -17.942,13.231 -46.761,19.847 -86.454,19.847l-44.068,0.00 0.00-168.873m0.00-251.963 48.106,0.00c 42.835,0.00 74.568,8.522 95.20,25.567 20.632,17.045 30.949,43.395 30.949,79.055 0.00,35.882 -10.429,62.682 -31.285,80.40 -20.856,17.716 -52.479,26.576 -94.864,26.576l-48.106,0.00 0.00-211.596" />
157
+ <glyph unicode="&#xe0f5;" d="M 189.435,475.419 m0.00,0.00,c-31.746,16.71 -94.311-15.577 -112.283-44.001 -8.008-12.719 -7.441-21.885 -7.441-27.086l0.00-278.21 234.624-145.994 44.121,24.091 0.00,270.944L 107.559,413.472c 12.927,16.269 42.001,36.109 63.801,28.141l 214.575-114.769 0.00-301.835 44.233,24.134 0.00,301.823z" />
158
+ <glyph unicode="&#xe0f4;" d="M 100.00,480.00L 100.00,16.00L 100.00-32.00L 256.00,124.00L 412.00-32.00L 412.00,16.00L 412.00,480.00L 100.00,480.00z" />
159
+ <glyph unicode="&#xe0f3;" d="M 100.00,480.00L 100.00,16.00L 100.00-32.00L 256.00,124.00L 412.00-32.00L 412.00,16.00L 412.00,480.00L 100.00,480.00 z M 132.00,448.00L 380.00,448.00L 380.00,48.00L 256.00,172.00L 132.00,48.00L 132.00,448.00z" />
160
+ <glyph unicode="&#xe0f2;" d="M 217.688,31.581 m0.00,0.00,c0.00-35.115 -28.466-63.581 -63.581-63.581 -35.115,0.00 -63.581,28.466 -63.581,63.581 0.00,35.115 28.466,63.581 63.581,63.581 35.115,0.00 63.581-28.466 63.581-63.581 z m 0.00,192.419c0.00-35.115 -28.466-63.581 -63.581-63.581 -35.115,0.00 -63.581,28.466 -63.581,63.581 0.00,35.115 28.466,63.581 63.581,63.581 35.115,0.00 63.581-28.466 63.581-63.581 z m 0.00,192.419c0.00-35.115 -28.466-63.581 -63.581-63.581 -35.115,0.00 -63.581,28.466 -63.581,63.581 0.00,35.115 28.466,63.581 63.581,63.581 35.115,0.00 63.581-28.466 63.581-63.581 z M 421.474,31.581c0.00-35.115 -28.466-63.581 -63.581-63.581 -35.115,0.00 -63.581,28.466 -63.581,63.581 0.00,35.115 28.466,63.581 63.581,63.581 35.115,0.00 63.581-28.466 63.581-63.581 z m 0.00,192.419c0.00-35.115 -28.466-63.581 -63.581-63.581 -35.115,0.00 -63.581,28.466 -63.581,63.581 0.00,35.115 28.466,63.581 63.581,63.581 35.115,0.00 63.581-28.466 63.581-63.581 z m 0.00,192.419c0.00-35.115 -28.466-63.581 -63.581-63.581 -35.115,0.00 -63.581,28.466 -63.581,63.581 0.00,35.115 28.466,63.581 63.581,63.581 35.115,0.00 63.581-28.466 63.581-63.581z" />
161
+ <glyph unicode="&#xe0a9;" d="M 166.712,416.78 m0.00,0.00,-16.109-64.781 -150.603,0.00 0.00-320.781 512.00,0.00 0.00,320.781 -143.578,0.00 -16.109,64.781 -185.60,0.00 z m 90.599-64.656c 79.529,0.00 143.984-64.455 143.984-143.984 0.00-79.529 -64.456-143.984 -143.984-143.984 -79.529,0.00 -143.984,64.456 -143.984,143.984 0.00,79.529 64.455,143.984 143.984,143.984 z m 168.835-31.344 72.585,0.00 0.00-42.146 -72.585,0.00 0.00,42.146 z m -168.835-11.177c-56.037,0.00 -101.463-45.427 -101.463-101.463 0.00-56.037 45.427-101.463 101.463-101.463 56.037,0.00 101.463,45.427 101.463,101.463 0.00,56.037 -45.427,101.463 -101.463,101.463z" />
162
+ <glyph unicode="&#xe0a8;" d="M 256.00,437.531L0.00,387.531L0.00,60.469L 256.00,10.469L 512.00,60.469L 512.00,387.531L 256.00,437.531 z M 171.125,323.375C 196.102,323.375 215.459,315.374 229.156,299.375C 230.077,298.109 230.985,296.901 231.906,295.75C 238.812,285.621 242.962,272.304 244.344,255.844L 214.656,255.844C 211.548,278.634 200.079,291.838 180.281,295.406L 170.781,296.094C 148.681,296.094 133.506,284.284 125.219,260.687C 121.42,249.868 119.50,237.036 119.50,222.187C 119.50,189.958 128.853,168.486 147.50,157.781C 154.291,153.868 162.292,151.906 171.50,151.906C 196.708,151.906 211.769,166.772 216.719,196.469L 246.406,196.469C 243.874,164.125 230.361,142.538 205.844,131.719C 195.714,127.00 184.018,124.625 170.781,124.625C 140.394,124.625 117.899,137.003 103.281,161.75C 93.612,178.21 88.781,198.361 88.781,222.187C 88.781,259.941 99.61,287.907 121.25,306.094C 135.178,317.604 151.787,323.375 171.125,323.375 z M 347.938,323.375C 372.915,323.375 392.24,315.374 405.938,299.375C 406.858,298.109 407.798,296.901 408.719,295.75C 415.625,285.621 419.775,272.304 421.156,255.844L 391.438,255.844C 388.329,278.634 376.892,291.838 357.094,295.406L 347.594,296.094C 325.494,296.094 310.287,284.284 302.00,260.687C 298.202,249.868 296.313,237.036 296.313,222.187C 296.313,189.958 305.634,168.486 324.281,157.781C 331.072,153.868 339.073,151.906 348.281,151.906C 373.489,151.906 388.582,166.772 393.531,196.469L 423.219,196.469C 420.686,164.125 407.173,142.538 382.656,131.719C 372.527,127.00 360.831,124.625 347.594,124.625C 317.206,124.625 294.712,137.003 280.094,161.75C 270.425,178.21 265.594,198.361 265.594,222.187C 265.594,259.941 276.392,287.907 298.031,306.094C 311.959,317.604 328.60,323.375 347.938,323.375z" />
163
+ <glyph unicode="&#xe0a7;" d="M 465.555,77.323 m0.00,0.00,-85.808-10.332 -26.897-82.136 -77.772,37.70 -67.033-54.556 -45.044,73.762 -85.887-9.655 1.985,86.405 -77.473,38.312 48.384,71.615 -44.461,74.115 79.422,34.088 2.667,86.387 85.243-14.262 48.948,71.232 64.001-58.084 79.688,33.461 22.438-83.465 85.128-14.934 -26.248-82.346 63.541-58.587 -66.601-55.083z" />
164
+ <glyph unicode="&#xe0a6;" d="M 0.00,480.00L 0.00,149.031L 0.00-32.00L 181.031-32.00L 512.00-32.00L 512.00,298.969L 428.00,214.969L 428.00,52.00L 265.031,52.00L 84.00,52.00L 84.00,233.031L 84.00,396.00L 246.969,396.00L 330.969,480.00L 0.00,480.00 z M 439.469,473.531L 254.219,288.25L 188.031,354.437L 120.156,286.531L 254.219,152.50L 322.094,220.375L 507.344,405.656L 439.469,473.531z" />
165
+ <glyph unicode="&#xe0a5;" d="M 0.00,480.00L 0.00-32.00L 512.00-32.00L 512.00,480.00L 0.00,480.00 z M 84.00,396.00L 428.00,396.00L 428.00,52.00L 84.00,52.00L 84.00,396.00z" />
166
+ <glyph unicode="&#xe0a4;" d="M 256.00,57.872 332.255,134.127 512.00,313.872 435.744,390.127 256.00,210.383 76.255,390.127l-76.255-76.255 179.745-179.745 76.255-76.255z" />
167
+ <glyph unicode="&#xe0cd;" d="M 89.872,224.00 m0.00,0.00, 76.255-76.255 179.745-179.745 76.255,76.255L 242.383,224.00 422.127,403.744 345.872,480.00 166.128,300.255 89.872,224.00z" />
168
+ <glyph unicode="&#xe0cc;" d="M 422.128,224.00 345.872,300.255 166.128,480.00l-76.255-76.255 179.745-179.745 -179.745-179.745 76.255-76.255 179.745,179.745 76.255,76.255z" />
169
+ <glyph unicode="&#xe0cb;" d="M 256.00,390.129 179.745,313.873 0.00,134.129 76.255,57.873 256.00,237.618 435.744,57.873 512.00,134.129 332.255,313.873 256.00,390.129z" horiz-adv-x="511" />
170
+ <glyph unicode="&#xe0ca;" d="M 336.774,253.118 m0.00,0.00,c 66.564,0.47 87.361-49.915 87.729-100.567l0.00-176.528c-0.208-3.991 -3.098-7.957 -6.954-8.024l-46.004,0.00c-4.239,0.40 -7.434,4.223 -7.489,8.024l0.00,157.805c-2.744,19.603 -24.065,14.518 -24.607,0.00l0.00-157.805c-0.187-4.389 -3.496-7.966 -7.489-8.024l-149.781,0.00c-4.508,0.252 -7.439,4.083 -7.489,8.024l0.00,157.805c-2.744,19.603 -24.065,14.518 -24.607,0.00l0.00-157.805c-0.187-4.389 -3.496-7.966 -7.489-8.024l-47.609,0.00c-4.239,0.40 -7.434,4.223 -7.489,8.024l0.00,176.528c-2.033,64.07 33.795,99.452 88.264,100.567 z M 257.95,480.00c-57.76,0.00 -104.594-47.069 -104.594-105.145 0.00-58.076 46.834-105.161 104.594-105.161 57.76,0.00 104.578,47.085 104.578,105.161 0.00,58.076 -46.818,105.145 -104.578,105.145 z m -59.891-122.634 119.198,0.00c0.00-32.915 -26.684-59.599 -59.599-59.599 -32.915,0.00 -59.599,26.684 -59.599,59.599z" />
171
+ <glyph unicode="&#xe0c9;" d="M 512.00,224.00 m0.00,0.00,c0.00,141.385 -114.615,256.00 -256.00,256.00 -141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 z M 385.219,252.437 256.00,58.593 126.781,252.437l 69.625,0.00 0.00,136.969 119.188,0.00 0.00-136.969 69.625,0.00z" />
172
+ <glyph unicode="&#xe0c8;" d="M 256.00-32.00 m0.00,0.00,c 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 -141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 z M 284.437,94.781 90.594,224.00 284.437,353.218l0.00-69.625 136.969,0.00 0.00-119.188 -136.969,0.00 0.00-69.625z" />
173
+ <glyph unicode="&#xe0f1;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 227.563,353.219L 421.406,224.00L 227.563,94.781L 227.563,164.406L 90.594,164.406L 90.594,283.594L 227.563,283.594L 227.563,353.219z" />
174
+ <glyph unicode="&#xe0f0;" d="M 512.00,224.00 m0.00,0.00,c0.00-141.385 -114.615-256.00 -256.00-256.00 -141.385,0.00 -256.00,114.615 -256.00,256.00 0.00,141.385 114.615,256.00 256.00,256.00 141.385,0.00 256.00-114.615 256.00-256.00 z M 385.219,195.562 256.00,389.406 126.781,195.562l 69.625,0.00 0.00-136.969 119.188,0.00 0.00,136.969 69.625,0.00z" />
175
+ <glyph unicode="&#xe0ef;" d="M 368.642,264.415 m0.00,0.00,c 70.413,6.934 109.816-86.793 55.699-134.341l-405.701,0.00C -33.541,218.752 30.839,336.769 124.985,313.868c 75.476,122.847 215.274,57.028 243.657-49.454z" />
176
+ <glyph unicode="&#xe0ee;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 258.281,346.906C 306.341,347.955 353.941,308.596 367.719,256.906C 422.408,262.292 453.001,189.493 410.969,152.562L 95.875,152.562C 55.346,221.438 105.346,313.10 178.469,295.312C 200.452,331.093 229.445,346.277 258.281,346.906z" />
177
+ <glyph unicode="&#xe109;" d="M 216.00,480.00 m0.00,0.00,-7.781-77.25c-15.899-4.238 -30.965-10.50 -44.875-18.563L 103.25,433.312 46.688,376.75 95.813,316.625C 87.75,302.711 81.455,287.654 77.219,271.75L0.00,264.00l0.00-80.00 77.25-7.781c 4.236-15.89 10.506-30.941 18.563-44.844l-49.125-60.125 56.563-56.563 60.125,49.125c 13.903-8.056 28.953-14.327 44.844-18.563L 216.00-32.00l 80.00,0.00 7.75,77.219c 15.904,4.236 30.961,10.531 44.875,18.594l 60.125-49.125 56.563,56.563 -49.125,60.094c 8.063,13.91 14.324,28.976 18.563,44.875L 512.00,184.00l0.00,80.00 -77.219,7.75C 430.543,287.663 424.257,302.736 416.188,316.656L 465.313,376.75 408.75,433.312 348.656,384.187C 334.736,392.257 319.663,398.543 303.75,402.781L 296.00,480.00 z m 40.00-182.00c 40.869,0.00 74.00-33.131 74.00-74.00 0.00-40.869 -33.131-74.00 -74.00-74.00 -40.869,0.00 -74.00,33.131 -74.00,74.00 0.00,40.869 33.131,74.00 74.00,74.00z" />
178
+ <glyph unicode="&#xe108;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 231.625,380.00L 280.375,380.00L 285.094,332.937C 294.791,330.355 303.985,326.542 312.469,321.625L 349.094,351.562L 383.563,317.094L 353.625,280.469C 358.542,271.985 362.355,262.791 364.938,253.094L 412.00,248.375L 412.00,199.625L 364.938,194.875C 362.355,185.186 358.539,176.008 353.625,167.531L 383.563,130.906L 349.094,96.437L 312.438,126.375C 303.958,121.462 294.786,117.644 285.094,115.062L 280.375,68.00L 231.625,68.00L 226.875,115.062C 217.191,117.644 208.035,121.465 199.563,126.375L 162.906,96.437L 128.438,130.906L 158.375,167.562C 153.465,176.035 149.644,185.191 147.063,194.875L 100.00,199.625L 100.00,248.375L 147.063,253.094C 149.644,262.786 153.462,271.958 158.375,280.437L 128.438,317.094L 162.906,351.562L 199.531,321.625C 208.008,326.539 217.186,330.355 226.875,332.937L 231.625,380.00 z M 256.00,269.094C 231.094,269.094 210.906,248.906 210.906,224.00C 210.906,199.094 231.094,178.906 256.00,178.906C 280.906,178.906 301.094,199.094 301.094,224.00C 301.094,248.906 280.906,269.094 256.00,269.094z" />
179
+ <glyph unicode="&#xe107;" d="M 388.326,441.122 m0.00,0.00,-7.217-34.583c-7.398-1.162 -14.524-3.303 -21.203-6.291l-24.843,25.099 -28.292-22.895 19.351-29.569c-4.311-5.915 -7.832-12.417 -10.506-19.415l-35.349,0.16 -3.80-36.211 34.583-7.217c 1.162-7.394 3.305-14.463 6.291-21.139l-25.099-24.907 22.895-28.292 29.569,19.383c 5.91-4.308 12.424-7.865 19.415-10.538l-0.16-35.317 36.211-3.80 7.185,34.583c 7.40,1.161 14.522,3.271 21.203,6.259l 24.875-25.099 28.292,22.927 -19.383,29.537c 4.311,5.913 7.863,12.42 10.538,19.415l 35.317-0.128 3.80,36.211 -34.583,7.153c-1.162,7.404 -3.268,14.55 -6.259,21.235l 25.099,24.843 -22.927,28.292 -29.537-19.351c-5.917,4.314 -12.445,7.863 -19.447,10.538l 0.16,35.317 -36.179,3.80 z m 6.003-84.109c 1.138-0.004 2.292-0.038 3.449-0.16 18.499-1.943 31.896-18.511 29.952-37.009 -1.943-18.499 -18.511-31.927 -37.009-29.984 -18.499,1.943 -31.927,18.511 -29.984,37.009 1.822,17.343 16.523,30.203 33.593,30.144 z m -259.831-2.97 -4.854-48.09c-9.901-2.639 -19.279-6.539 -27.941-11.559l-37.425,30.591 -35.221-35.221 30.591-37.456c-5.021-8.665 -8.922-18.037 -11.559-27.941l-48.09-4.822 0.00-49.814 48.09-4.854c 2.638-9.895 6.543-19.251 11.559-27.909l-30.591-37.456 35.221-35.221 37.456,30.591c 8.658-5.017 18.013-8.922 27.909-11.559l 4.854-48.09 49.814,0.00 4.822,48.09c 9.904,2.638 19.276,6.539 27.941,11.559l 37.456-30.591 35.221,35.221 -30.591,37.425c 5.021,8.662 8.92,18.04 11.559,27.941l 48.09,4.854 0.00,49.814 -48.09,4.822c-2.639,9.909 -6.535,19.304 -11.559,27.973l 30.591,37.425 -35.221,35.221 -37.425-30.591c-8.669,5.025 -18.063,8.92 -27.973,11.559l-4.822,48.09 -49.814,0.00 z m 24.907-113.327c 25.45,0.00 46.078-20.628 46.078-46.078 0.00-25.45 -20.628-46.078 -46.078-46.078 -25.45,0.00 -46.078,20.628 -46.078,46.078 0.00,25.45 20.628,46.078 46.078,46.078 z m 211.487-61.533 -5.077-25.29c-5.20-0.85 -10.186-2.412 -14.88-4.598l-17.499,18.361 -19.862-16.764 13.603-21.618c-3.03-4.327 -5.529-9.091 -7.408-14.21l-24.811,0.128 -2.682-26.504 24.30-5.269c 0.817-5.409 2.308-10.603 4.407-15.487l-17.627-18.201 16.094-20.692 20.788,14.178c 4.154-3.151 8.722-5.74 13.635-7.696l-0.096-25.865 25.45-2.778 5.045,25.322c 5.201,0.85 10.185,2.38 14.88,4.566l 17.499-18.361 19.894,16.764 -13.635,21.618c 3.03,4.326 5.529,9.092 7.408,14.21l 24.843-0.096 2.65,26.472 -24.30,5.269c-0.817,5.417 -2.305,10.629 -4.407,15.519l 17.627,18.169 -16.094,20.724 -20.756-14.178c-4.159,3.156 -8.746,5.739 -13.667,7.696l 0.128,25.833 -25.45,2.778 z m 4.215-61.501c 0.80-0.003 1.614-0.039 2.427-0.128 13.001-1.422 22.409-13.545 21.043-27.078 -1.366-13.533 -12.991-23.359 -25.993-21.937 -13.001,1.422 -22.441,13.545 -21.075,27.078 1.28,12.688 11.601,22.108 23.598,22.065z" />
180
+ <glyph unicode="&#xe106;" d="M 0.00,459.047 m0.00,0.00,0.00-364.594 105.50,0.00 0.00-105.50 164.469,105.50 242.031,0.00 0.00,364.594 -512.00,0.00z" />
181
+ <glyph unicode="&#xe0a3;" d="M 0.00,454.182 m0.00,0.00,0.00-311.151 90.054,0.00 0.00-90.024 140.343,90.024 206.537,0.00 0.00,311.151 -436.933,0.00 z m 457.489-68.397 0.00-39.154 15.356,0.00 0.00-221.893 -55.947,0.00 -19.577,0.00 0.00-19.577 0.00-39.735 -87.607,56.192 -4.833,3.12 -5.751,0.00 -60.291,0.00 -61.025-39.154 115.535,0.00 112.966-72.435 30.161-19.332 0.00,35.789 0.00,55.978 55.947,0.00 19.577,0.00 0.00,19.577 0.00,261.047 0.00,19.577 -19.577,0.00 -34.933,0.00z" />
182
+ <glyph unicode="&#xe0a2;" d="M 68.312,81.852 m0.00,0.00,c 91.082-91.082 238.755-91.082 329.837,0.00 91.082,91.082 91.082,238.755 0.00,329.837 -91.082,91.082 -238.755,91.082 -329.837,0.00 -91.082-91.082 -91.082-238.755 0.00-329.837 z m 22.769,22.769c-78.507,78.507 -78.507,205.791 0.00,284.299 78.507,78.507 205.791,78.507 284.299,0.00 78.507-78.507 78.507-205.791 0.00-284.299 -78.507-78.507 -205.791-78.507 -284.299,0.00 z m 22.749,12.16 154.751,94.638 94.638,154.751 -10.589,10.589 -154.751-94.638 -94.638-154.751 10.589-10.589z" />
183
+ <glyph unicode="&#xe0a1;" d="M 68.312,81.852 m0.00,0.00,c 91.082-91.082 238.755-91.082 329.837,0.00 91.082,91.082 91.082,238.755 0.00,329.837 -91.082,91.082 -238.755,91.082 -329.837,0.00 -91.082-91.082 -91.082-238.755 0.00-329.837 z m 36.901,25.507 -11.374,11.374 101.503,165.925 165.925,101.503 11.374-11.374 -101.503-165.925 -165.925-101.503z" />
184
+ <glyph unicode="&#xe0a0;" d="M0.00,394.00L0.00,54.00L 512.00,54.00L 512.00,394.00L0.00,394.00 z M 32.00,362.00L 480.00,362.00L 480.00,311.437L 32.00,311.437L 32.00,362.00 z M 32.00,237.719L 480.00,237.719L 480.00,86.00L 32.00,86.00L 32.00,237.719 z M 73.313,141.125C 70.044,141.125 67.544,139.841 65.813,137.25C 64.094,134.672 63.25,130.922 63.25,126.00C 63.25,121.091 64.094,117.341 65.813,114.75C 67.544,112.172 70.044,110.875 73.313,110.875C 76.581,110.875 79.094,112.172 80.813,114.75C 82.544,117.341 83.406,121.091 83.406,126.00C 83.406,130.922 82.544,134.672 80.813,137.25C 79.094,139.841 76.581,141.125 73.313,141.125 z M 98.781,141.125C 95.513,141.125 93.013,139.841 91.281,137.25C 89.563,134.672 88.719,130.922 88.719,126.00C 88.719,121.091 89.563,117.341 91.281,114.75C 93.013,112.172 95.513,110.875 98.781,110.875C 102.049,110.875 104.563,112.172 106.281,114.75C 108.013,117.341 108.875,121.091 108.875,126.00C 108.875,130.922 108.013,134.672 106.281,137.25C 104.563,139.841 102.049,141.125 98.781,141.125 z M 124.25,141.125C 120.982,141.125 118.482,139.841 116.75,137.25C 115.031,134.672 114.188,130.922 114.188,126.00C 114.188,121.091 115.031,117.341 116.75,114.75C 118.482,112.172 120.982,110.875 124.25,110.875C 127.518,110.875 130.031,112.172 131.75,114.75C 133.482,117.341 134.344,121.091 134.344,126.00C 134.344,130.922 133.482,134.672 131.75,137.25C 130.031,139.841 127.518,141.125 124.25,141.125 z M 149.719,141.125C 146.451,141.125 143.951,139.841 142.219,137.25C 140.50,134.672 139.656,130.922 139.656,126.00C 139.656,121.091 140.50,117.341 142.219,114.75C 143.951,112.172 146.451,110.875 149.719,110.875C 152.987,110.875 155.50,112.172 157.219,114.75C 158.951,117.341 159.813,121.091 159.813,126.00C 159.813,130.922 158.951,134.672 157.219,137.25C 155.50,139.841 152.987,141.125 149.719,141.125 z M 189.656,141.125C 186.388,141.125 183.888,139.841 182.156,137.25C 180.438,134.672 179.563,130.922 179.563,126.00C 179.563,121.091 180.438,117.341 182.156,114.75C 183.888,112.172 186.388,110.875 189.656,110.875C 192.924,110.875 195.406,112.172 197.125,114.75C 198.857,117.341 199.719,121.091 199.719,126.00C 199.719,130.922 198.857,134.672 197.125,137.25C 195.406,139.841 192.924,141.125 189.656,141.125 z M 215.125,141.125C 211.857,141.125 209.357,139.841 207.625,137.25C 205.906,134.672 205.031,130.922 205.031,126.00C 205.031,121.091 205.906,117.341 207.625,114.75C 209.357,112.172 211.857,110.875 215.125,110.875C 218.393,110.875 220.875,112.172 222.594,114.75C 224.326,117.341 225.188,121.091 225.188,126.00C 225.188,130.922 224.326,134.672 222.594,137.25C 220.875,139.841 218.393,141.125 215.125,141.125 z M 240.594,141.125C 237.326,141.125 234.826,139.841 233.094,137.25C 231.375,134.672 230.50,130.922 230.50,126.00C 230.50,121.091 231.375,117.341 233.094,114.75C 234.826,112.172 237.326,110.875 240.594,110.875C 243.862,110.875 246.344,112.172 248.063,114.75C 249.794,117.341 250.656,121.091 250.656,126.00C 250.656,130.922 249.794,134.672 248.063,137.25C 246.344,139.841 243.862,141.125 240.594,141.125 z M 266.063,141.125C 262.794,141.125 260.294,139.841 258.563,137.25C 256.844,134.672 255.969,130.922 255.969,126.00C 255.969,121.091 256.844,117.341 258.563,114.75C 260.294,112.172 262.794,110.875 266.063,110.875C 269.331,110.875 271.813,112.172 273.531,114.75C 275.263,117.341 276.125,121.091 276.125,126.00C 276.125,130.922 275.263,134.672 273.531,137.25C 271.813,139.841 269.331,141.125 266.063,141.125 z M 73.313,138.00C 75.357,138.00 76.891,137.005 77.906,135.00C 78.935,133.008 79.469,130.01 79.469,126.00C 79.469,122.003 78.935,119.005 77.906,117.00C 76.891,115.008 75.357,114.00 73.313,114.00C 71.281,114.00 69.747,115.008 68.719,117.00C 67.703,119.005 67.219,122.003 67.219,126.00C 67.219,130.01 67.703,133.008 68.719,135.00C 69.747,137.005 71.281,138.00 73.313,138.00 z M 98.781,138.00C 100.826,138.00 102.359,137.005 103.375,135.00C 104.404,133.008 104.938,130.01 104.938,126.00C 104.938,122.003 104.404,119.005 103.375,117.00C 102.359,115.008 100.826,114.00 98.781,114.00C 96.75,114.00 95.216,115.008 94.188,117.00C 93.172,119.005 92.688,122.003 92.688,126.00C 92.688,130.01 93.172,133.008 94.188,135.00C 95.216,137.005 96.75,138.00 98.781,138.00 z M 124.25,138.00C 126.294,138.00 127.828,137.005 128.844,135.00C 129.872,133.008 130.406,130.01 130.406,126.00C 130.406,122.003 129.872,119.005 128.844,117.00C 127.828,115.008 126.294,114.00 124.25,114.00C 122.219,114.00 120.685,115.008 119.656,117.00C 118.641,119.005 118.156,122.003 118.156,126.00C 118.156,130.01 118.641,133.008 119.656,135.00C 120.685,137.005 122.219,138.00 124.25,138.00 z M 149.719,138.00C 151.763,138.00 153.297,137.005 154.313,135.00C 155.341,133.008 155.875,130.01 155.875,126.00C 155.875,122.003 155.341,119.005 154.313,117.00C 153.297,115.008 151.763,114.00 149.719,114.00C 147.688,114.00 146.154,115.008 145.125,117.00C 144.109,119.005 143.625,122.003 143.625,126.00C 143.625,130.01 144.109,133.008 145.125,135.00C 146.154,137.005 147.688,138.00 149.719,138.00 z M 189.656,138.00C 191.701,138.00 193.234,137.005 194.25,135.00C 195.279,133.008 195.781,130.01 195.781,126.00C 195.781,122.003 195.279,119.005 194.25,117.00C 193.234,115.008 191.701,114.00 189.656,114.00C 187.625,114.00 186.091,115.008 185.063,117.00C 184.047,119.005 183.531,122.003 183.531,126.00C 183.531,130.01 184.047,133.008 185.063,135.00C 186.091,137.005 187.625,138.00 189.656,138.00 z M 215.125,138.00C 217.169,138.00 218.703,137.005 219.719,135.00C 220.747,133.008 221.25,130.01 221.25,126.00C 221.25,122.003 220.747,119.005 219.719,117.00C 218.703,115.008 217.169,114.00 215.125,114.00C 213.094,114.00 211.56,115.008 210.531,117.00C 209.516,119.005 209.00,122.003 209.00,126.00C 209.00,130.01 209.516,133.008 210.531,135.00C 211.56,137.005 213.094,138.00 215.125,138.00 z M 240.594,138.00C 242.638,138.00 244.172,137.005 245.188,135.00C 246.216,133.008 246.719,130.01 246.719,126.00C 246.719,122.003 246.216,119.005 245.188,117.00C 244.172,115.008 242.638,114.00 240.594,114.00C 238.563,114.00 237.029,115.008 236.00,117.00C 234.984,119.005 234.469,122.003 234.469,126.00C 234.469,130.01 234.984,133.008 236.00,135.00C 237.029,137.005 238.563,138.00 240.594,138.00 z M 266.063,138.00C 268.107,138.00 269.641,137.005 270.656,135.00C 271.685,133.008 272.188,130.01 272.188,126.00C 272.188,122.003 271.685,119.005 270.656,117.00C 269.641,115.008 268.107,114.00 266.063,114.00C 264.031,114.00 262.497,115.008 261.469,117.00C 260.453,119.005 259.938,122.003 259.938,126.00C 259.938,130.01 260.453,133.008 261.469,135.00C 262.497,137.005 264.031,138.00 266.063,138.00 z M 164.438,124.00L 164.438,120.812L 174.969,120.812L 174.969,124.00L 164.438,124.00z" />
185
+ <glyph unicode="&#xe09f;" d="M0.00,469.937 0.00,74.375 256.00-21.938 512.00,74.375 512.00,469.937 z m 122.594-157.031c 36.535-0.57 61.954-18.94 62.188-55.50l-39.625,0.00c 0.027,9.758 -4.165,19.046 -12.938,22.75 -9.899,3.54 -22.268,1.786 -28.625-6.594C 96.787,263.386 98.00,251.995 98.00,240.00c-0.375-15.983 7.806-29.80 24.031-29.906 16.439,0.828 24.25,8.848 24.406,23.656l 38.344,0.00c-0.92-39.266 -27.481-54.497 -62.188-54.656 -43.833-0.266 -66.675,30.603 -67.031,66.938 -0.258,43.818 30.721,66.518 67.031,66.875 z m 138.656,0.00c 26.316,0.278 56.409-11.176 57.156-39.906l0.00-2.188 -38.906,0.00 0.00,0.719c-0.241,9.434 -8.805,13.088 -16.688,13.125 -5.713-0.146 -16.988-1.375 -17.156-8.438 1.438-11.164 29.166-13.198 37.781-15.313 20.012-4.252 37.955-15.599 38.531-36.688 -0.649-34.14 -28.351-45.015 -56.938-45.125 -33.963,0.243 -63.591,8.407 -63.844,46.031l 39.25,0.00c-0.366-13.457 10.138-16.288 20.813-16.313 6.396,0.001 18.155,0.232 18.25,8.625 -1.292,10.347 -29.96,13.033 -38.156,15.125 -21.169,5.307 -37.914,16.329 -38.063,38.969 1.463,32.941 31.03,41.273 57.969,41.375 z m 135.75,0.00c 28.201-0.237 57.125-10.906 57.125-42.094l-38.875,0.00c 0.347,9.815 -8.693,13.806 -16.688,13.844 -5.713-0.146 -16.988-1.375 -17.156-8.438 1.222-11.022 29.271-13.223 37.781-15.313 13.938-3.365 28.169-9.01 34.938-21.563 2.262-4.096 3.44-9.133 3.563-15.125 -0.625-34.149 -28.34-45.015 -56.938-45.125 -33.943,0.234 -63.586,8.427 -63.844,46.031l 39.25,0.00c-0.212-8.595 4.379-14.395 12.219-15.75 7.094-0.666 26.743-3.033 26.875,8.063 -1.545,10.512 -29.822,12.998 -38.156,15.125 -21.19,5.31 -37.914,16.308 -38.063,38.969 1.468,32.963 30.997,41.273 57.969,41.375z" />
186
+ <glyph unicode="&#xe09e;" d="M 256.00,396.64 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-31.40 5.656-61.484 16.00-89.281l 70.00,0.00c-14.036,26.673 -22.00,57.047 -22.00,89.281 0.00,106.039 85.961,192.00 192.00,192.00 106.039,0.00 192.00-85.961 192.00-192.00 0.00-32.234 -7.964-62.608 -22.00-89.281l 70.00,0.00c 10.344,27.797 16.00,57.882 16.00,89.281 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 0.00-100.531c-17.673,0.00 -32.00-14.327 -32.00-32.00 0.00-17.673 14.327-32.00 32.00-32.00 17.673,0.00 32.00,14.327 32.00,32.00 0.00,17.673 -14.327,32.00 -32.00,32.00 z m -95.969-31.344c-17.673,0.00 -32.00-14.327 -32.00-32.00 0.00-17.673 14.327-32.00 32.00-32.00 17.673,0.00 32.00,14.327 32.00,32.00 0.00,17.673 -14.327,32.00 -32.00,32.00 z m 191.938,0.00c-17.673,0.00 -32.00-14.327 -32.00-32.00 0.00-17.673 14.327-32.00 32.00-32.00 17.673,0.00 32.00,14.327 32.00,32.00 0.00,17.673 -14.327,32.00 -32.00,32.00 z M 256.00,201.953l-25.094-125.50 0.00-25.094 50.188,0.00 0.00,25.094L 256.00,201.953z" />
187
+ <glyph unicode="&#xe0c7;" d="M0.00,480.00L0.00,224.00L 256.00,224.00L 256.00,480.00L0.00,480.00 z M 256.00,224.00L 256.00-32.00L 512.00-32.00L 512.00,224.00L 256.00,224.00z" />
188
+ <glyph unicode="&#xe0c6;" d="M 186.141,329.919 m0.00,0.00, 58.021,0.00 0.00-211.904 -242.914-0.153c 2.122,59.066 34.117,141.903 184.893,161.603l 0.739-22.704C 118.337,246.661 94.532,206.134 82.712,155.855l 105.952,0.00 -2.523,174.064 z M 271.011,236.091 270.119,118.307 510.932,118.361C 513.248,236.189 408.483,289.542 243.809,286.929l0.00-23.635c 73.014,1.89 164.429-0.817 189.527-106.582l-107.919,0.891 0.00,74.028C 306.093,237.274 289.444,237.372 271.011,236.091z" />
189
+ <glyph unicode="&#xe0c5;" d="M 479.232,319.963 m0.00,0.00,-32.183,0.00 0.00-63.781 -32.768,0.00 -125.221,0.00 -32.768,0.00 0.00,63.781 -32.768,0.00 0.00-97.719 0.00,0.00 32.768,0.00 0.00,0.00 0.00-188.416 95.378,0.00 0.00,93.623 32.768,0.00 0.00-93.623 62.025,0.00 0.00,188.416 0.585,0.00 32.183,0.00 z m -190.171,93.623 0.00-125.221 125.221,0.00 0.00,125.221 z m 222.939-63.195 0.00-160.914 -32.768,0.00 0.00-187.831 -255.707,0.00 0.00,187.831 -95.378,0.00 0.00-62.025 30.427,0.00 0.00-32.183 32.768,0.00 0.00-93.623 -159.159,0.00 0.00,93.623 32.768,0.00 0.00-61.44 93.623,0.00 0.00,61.44 -93.623,0.00 0.00,32.183 30.427,0.00 0.00,62.025 -63.195,0.00 0.00,32.768 158.574,0.00 0.00,128.146 0.585,0.00 64.951,0.00 0.00,95.963 190.757,0.00 0.00-95.963 z m -353.426,0.00 0.00,30.427 32.183,0.00 0.00-30.427 z m -126.391,0.00 0.00-128.146 -32.183,0.00 0.00,128.146 z m 32.768,0.00 -32.768,0.00 0.00,30.427 32.768,0.00 z m 93.623,30.427 -93.623,0.00 0.00,32.768 93.623,0.00z" />
190
+ <glyph unicode="&#xe0c4;" d="M 256.00,480.00 m0.00,0.00,c-141.384,0.00 -256.00-114.616 -256.00-256.00 0.00-141.384 114.616-256.00 256.00-256.00 141.384,0.00 256.00,114.616 256.00,256.00 0.00,141.384 -114.616,256.00 -256.00,256.00 z m 0.00-456.348c-110.664,0.00 -200.348,89.711 -200.348,200.348 0.00,110.636 89.683,200.348 200.348,200.348 110.664,0.00 200.348-89.711 200.348-200.348 0.00-110.636 -89.684-200.348 -200.348-200.348 z m 50.087,307.478 -100.174,0.00 0.00-113.809 -62.609,0.00 112.696-106.017 112.696,106.017 -62.609,0.00 0.00,113.809z" />
191
+ <glyph unicode="&#xe0c3;" d="M 0.489,37.326 m0.00,0.00, 512.00,0.00 0.00-69.327 -512.00,0.00 z m 350.202,442.673 -188.404,0.00 0.00-211.896 -117.752,0.00 211.954-197.39 211.954,197.39 -117.752,0.00z" />
192
+ <glyph unicode="&#xe0c2;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 0.00-37.09c 55.773,0.00 106.674-20.857 145.329-55.198 -28.40-37.466 -71.562-62.407 -114.788-79.303 -23.571,43.112 -52.586,88.566 -82.124,128.389 16.54,3.995 33.816,6.111 51.583,6.111 z m -93.131-20.75c 28.542-42.677 56.174-82.273 81.459-127.092 -63.892-16.551 -136.062-26.479 -202.732-26.65 14.057,68.215 59.859,124.828 121.272,153.743 z m 262.744-59.753c 30.532-37.372 48.946-85.021 49.281-136.964 -50.63,9.973 -100.987,12.604 -152.268,7.441 -5.777,14.375 -12.746,28.025 -19.437,42.748 44.206,17.829 91.453,48.346 122.424,86.776 z M 262.095,261.203c 5.487-11.664 11.833-24.018 17.783-36.653 -71.296-31.438 -147.121-73.46 -186.505-147.096 -34.986,38.801 -56.284,90.186 -56.284,146.545 0.00,2.14 0.036,4.278 0.097,6.403 76.367,0.371 151.305,9.928 224.908,30.80 z m 212.069-55.425c-0.07-0.855 -0.147-1.71 -0.227-2.561 0.081,0.851 0.156,1.708 0.227,2.561 z m -96.389-4.263c 31.831,0.099 64.692-4.348 94.411-12.158 -9.72-61.146 -44.763-113.854 -94.038-147.048 -11.755,53.443 -22.955,104.576 -42.748,156.142 13.65,2.035 27.906,3.019 42.375,3.064 z m 95.546-3.972c-0.149-1.239 -0.30-2.479 -0.47-3.712 0.171,1.236 0.32,2.47 0.47,3.712 z m -178.448-9.094c 20.189-52.122 36.035-109.849 46.638-166.03 -26.272-11.16 -55.168-17.329 -85.512-17.329 -50.63,0.00 -97.238,17.195 -134.322,46.055 39.644,64.335 101.047,112.994 173.196,137.305z" />
193
+ <glyph unicode="&#xe0ed;" d="M 0.00,480.00L 0.00,149.031L 0.00-32.00L 181.031-32.00L 512.00-32.00L 512.00,298.969L 428.00,214.969L 428.00,52.00L 265.031,52.00L 84.00,52.00L 84.00,233.031L 84.00,396.00L 246.969,396.00L 330.969,480.00L 0.00,480.00 z M 448.00,480.00L 415.219,447.219L 479.219,383.219L 512.00,416.00L 448.00,480.00 z M 399.75,431.75L 212.125,244.125L 276.125,180.125L 463.75,367.75L 399.75,431.75 z M 188.563,214.469C 187.613,214.454 186.645,214.385 185.688,214.312L 185.688,153.687L 246.313,153.687C 246.313,170.203 238.422,186.984 226.125,198.719C 215.953,208.426 202.797,214.688 188.563,214.469z" />
194
+ <glyph unicode="&#xe0ec;" d="M 256.00,448.844L0.00,172.969L 512.00,172.969L 256.00,448.844 z M 0.00,124.312L0.00-7.688L 512.00-7.688L 512.00,124.312L0.00,124.312z" />
195
+ <glyph unicode="&#xe0eb;" d="M 0.00,417.50 m0.00,0.00,0.00-71.969 256.00-145.969 256.00,145.969 0.00,71.969 z m 0.00-118.00 0.00-211.031 130.406,136.688 z m 512.00,0.00 -130.406-74.344 130.406-136.688 z m -345.781-94.781 -166.219-174.219 512.00,0.00 -166.219,174.219 -89.781-51.188z" />
196
+ <glyph unicode="&#xe0ea;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 125.00,323.031L 387.00,323.031L 387.00,286.187L 256.00,211.50L 125.00,286.187L 125.00,323.031 z M 125.00,262.625L 191.719,224.594L 125.00,154.656L 125.00,262.625 z M 387.00,262.625L 387.00,154.656L 320.281,224.594L 387.00,262.625 z M 210.063,214.125L 256.00,187.937L 301.938,214.125L 387.00,124.969L 125.00,124.969L 210.063,214.125z" />
197
+ <glyph unicode="&#xe105;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 256.00,410.00C 358.725,410.00 442.00,326.725 442.00,224.00C 442.00,121.275 358.725,38.00 256.00,38.00C 153.275,38.00 70.00,121.275 70.00,224.00C 70.00,326.725 153.275,410.00 256.00,410.00 z M 120.094,274.281L 120.094,173.719L 391.906,173.719L 391.906,274.281L 120.094,274.281z" />
198
+ <glyph unicode="&#xe104;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 84.188,292.50L 427.813,292.50L 427.813,155.50L 84.188,155.50L 84.188,292.50z" />
199
+ <glyph unicode="&#xe103;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 162.969,429.562L 349.031,429.562L 309.031,147.719L 202.969,147.719L 162.969,429.562 z M 257.00,128.531C 287.405,128.531 312.063,103.874 312.063,73.469C 312.063,43.063 287.405,18.437 257.00,18.437C 226.595,18.437 201.938,43.063 201.938,73.469C 201.938,103.874 226.595,128.531 257.00,128.531z" />
200
+ <glyph unicode="&#xe102;" d="M 335.938,450.594C 331.78,450.377 327.016,447.012 323.906,441.625L 285.75,375.562C 275.983,376.619 266.059,377.224 256.00,377.375C 212.042,377.18 166.475,366.488 123.344,346.00C 91.319,330.161 60.123,307.80 33.031,280.219C 19.726,266.139 2.744,245.752 0.00,224.00C 0.324,205.158 20.545,181.901 33.031,167.781C 58.436,141.282 88.82,119.562 123.344,102.00C 124.517,101.431 125.695,100.868 126.875,100.312L 101.50,56.375C 97.353,49.193 97.773,41.256 102.438,38.562L 128.875,23.281C 133.54,20.588 140.635,24.193 144.781,31.375L 174.313,82.50L 197.688,123.00L 218.781,159.531L 293.188,288.406L 314.281,324.937L 337.688,365.469L 367.219,416.625C 371.365,423.807 370.946,431.744 366.281,434.437L 339.813,449.719C 338.646,450.392 337.323,450.666 335.938,450.594 z M 385.094,347.625L 353.125,292.219C 367.832,273.112 376.563,249.55 376.563,224.00C 376.563,160.317 322.579,108.687 255.969,108.687C 253.089,108.687 250.298,108.998 247.469,109.187L 226.313,72.562C 236.07,71.518 245.935,70.756 256.00,70.625C 299.999,70.823 345.541,81.638 388.625,102.00C 420.65,117.839 451.877,140.20 478.969,167.781C 492.274,181.861 509.256,202.248 512.00,224.00C 511.676,242.842 491.455,266.099 478.969,280.219C 453.564,306.718 423.149,328.438 388.625,346.00C 387.459,346.565 386.267,347.073 385.094,347.625 z M 255.969,339.312C 258.889,339.312 261.788,339.195 264.656,339.00L 239.875,296.094C 205.096,289.043 179.00,259.452 179.00,224.031C 179.00,215.134 180.639,206.615 183.656,198.719C 183.66,198.71 183.653,198.697 183.656,198.687L 158.813,155.656C 144.071,174.781 135.375,198.421 135.375,224.00C 135.375,287.683 189.358,339.312 255.969,339.312 z M 328.063,248.844L 272.219,152.094C 306.811,159.278 332.719,188.734 332.719,224.031C 332.719,232.767 330.976,241.071 328.063,248.844z" />
201
+ <glyph unicode="&#xe09d;" d="M 332.734,224.031 m0.00,0.00,c0.00-40.675 -34.417-73.648 -76.872-73.648 -42.455,0.00 -76.872,32.973 -76.872,73.648 0.00,40.675 34.417,73.648 76.872,73.648 42.455,0.00 76.872-32.973 76.872-73.648 z M 256.001,377.378c-43.958-0.195 -89.521-10.896 -132.653-31.384 -32.025-15.839 -63.234-38.185 -90.326-65.767 -13.306-14.08 -30.277-34.467 -33.021-56.219 0.324-18.842 20.535-42.099 33.021-56.219 25.405-26.499 55.802-48.221 90.326-65.783 40.223-19.52 84.743-30.759 132.653-31.384 43.999,0.198 89.552,11.022 132.636,31.384 32.025,15.839 63.251,38.202 90.342,65.783 13.306,14.08 30.277,34.467 33.021,56.219 -0.324,18.842 -20.535,42.099 -33.021,56.219 -25.405,26.499 -55.818,48.205 -90.342,65.767 -40.202,19.506 -84.832,30.667 -132.636,31.384 z m -0.033-38.079c 66.611,0.00 120.608-51.624 120.608-115.307 0.00-63.683 -53.997-115.307 -120.608-115.307 -66.611,0.00 -120.608,51.624 -120.608,115.307 0.00,63.683 53.997,115.307 120.608,115.307z" />
202
+ <glyph unicode="&#xe09c;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 368.313,413.187C 372.031,413.266 375.904,413.146 379.906,412.875C 394.616,412.855 409.979,411.529 425.219,410.187L 423.563,349.562L 382.625,349.562C 363.43,349.988 356.498,342.534 355.875,320.875L 355.875,273.25L 425.219,273.25L 422.469,208.312L 355.875,208.312L 355.875,27.531L 288.219,27.531L 288.219,208.312L 241.25,208.312L 241.25,273.25L 288.219,273.25L 288.219,329.00C 288.219,369.196 305.212,394.781 338.688,407.75C 347.284,411.132 357.157,412.951 368.313,413.187z" />
203
+ <glyph unicode="&#xe09b;" d="M 0.00,422.481 m0.00,0.00,0.00-396.962 396.962,0.00 0.00,166.935 115.038-166.935 0.00,396.962 -115.038-166.935 0.00,166.935 -396.962,0.00z" />
204
+ <glyph unicode="&#xe098;" d="M 258.339,484.812 m0.00,0.00,c-90.822,0.00 -164.464-73.642 -164.464-164.464 0.00-80.107 57.306-146.851 133.143-161.484l0.00-52.94 -70.534,0.00 0.00-62.609 70.534,0.00 0.00-70.503 62.609,0.00 0.00,70.503 70.534,0.00 0.00,62.609 -70.534,0.00 0.00,52.94c 75.853,14.621 133.175,81.366 133.175,161.484 0.00,90.822 -73.642,164.464 -164.464,164.464 z m 0.00-65.399c 54.712,0.00 99.065-44.353 99.065-99.065 0.00-54.712 -44.353-99.065 -99.065-99.065 -54.712,0.00 -99.065,44.353 -99.065,99.065 0.00,54.712 44.353,99.065 99.065,99.065z" />
205
+ <glyph unicode="&#xe0c1;" d="M 172.923,478.111 m0.00,0.00,-96.456-93.12 0.00-31.544 129.102,0.00 0.00,124.663 -32.645,0.00 z m 76.466,0.00 0.00-166.942 -172.923,0.00 0.00-345.058 362.846,0.00 0.00,512.00 -189.922,0.00z" />
206
+ <glyph unicode="&#xe0c0;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 211.938,356.781L 228.875,356.781L 228.875,292.125L 161.906,292.125L 161.906,308.469L 211.938,356.781 z M 251.594,356.781L 350.094,356.781L 350.094,91.219L 161.906,91.219L 161.906,270.187L 251.594,270.187L 251.594,356.781z" />
207
+ <glyph unicode="&#xe0bf;" d="M 121.389,480.00 m0.00,0.00,-96.457-93.12 0.00-418.88 362.845,0.00 0.00,163.195 -44.797-44.797 0.00-73.885 -273.251,0.00 0.00,342.823 84.305,0.00 0.00,80.15 188.946,0.00 0.00-116.478 -133.73-133.73 -39.728-122.397 122.365,39.76 195.179,195.179 -82.637,82.636 -16.653-16.653 0.00,116.195 -266.389,0.00 z m 108.545-315.372 41.303-41.334 -61.198-19.864 19.896,61.198z" />
208
+ <glyph unicode="&#xe0be;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 194.938,385.75L 363.25,385.75L 363.25,312.344L 373.781,322.844L 426.00,270.656L 302.688,147.312L 225.375,122.187L 250.469,199.531L 334.969,284.031L 334.969,357.625L 215.563,357.625L 215.563,306.969L 162.313,306.969L 162.313,90.375L 334.969,90.375L 334.969,137.062L 363.25,165.375L 363.25,62.25L 134.00,62.25L 134.00,326.906L 194.938,385.75 z M 263.531,186.50L 250.969,147.812L 289.625,160.375L 263.531,186.50z" />
209
+ <glyph unicode="&#xe0bd;" d="M 109.049,480.00 m0.00,0.00,-96.457-93.12 0.00-418.88 258.55,0.00 0.00,44.514 -213.753,0.00 0.00,342.823 84.305,0.00 0.00,80.15 188.946,0.00 0.00-133.541 44.797,0.00 0.00,178.054 -266.389,0.00 z m 201.696-217.059 0.00-106.278 -106.31,0.00 0.00-82.385 106.31,0.00 0.00-106.278 82.353,0.00 0.00,106.278 106.31,0.00 0.00,82.385 -106.31,0.00 0.00,106.278 -82.353,0.00z" />
210
+ <glyph unicode="&#xe0bc;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 191.563,385.312L 347.563,385.312L 347.563,281.031L 321.344,281.031L 321.344,359.25L 210.688,359.25L 210.688,312.281L 161.313,312.281L 161.313,111.50L 286.50,111.50L 286.50,85.437L 135.063,85.437L 135.063,330.781L 191.563,385.312 z M 309.688,258.187L 357.906,258.187L 357.906,195.937L 420.188,195.937L 420.188,147.687L 357.906,147.687L 357.906,85.437L 309.688,85.437L 309.688,147.687L 247.438,147.687L 247.438,195.937L 309.688,195.937L 309.688,258.187z" />
211
+ <glyph unicode="&#xe0e9;" d="M 30.219,480.00L 30.219-32.00L 481.781-32.00L 481.781,480.00L 30.219,480.00 z M 53.25,449.25L 108.719,449.25L 108.719,407.062L 53.25,407.062L 53.25,449.25 z M 403.25,449.25L 458.719,449.25L 458.719,407.062L 403.25,407.062L 403.25,449.25 z M 132.563,446.125L 379.438,446.125L 379.438,222.687L 132.563,222.687L 132.563,446.125 z M 53.25,354.719L 108.719,354.719L 108.719,312.531L 53.25,312.531L 53.25,354.719 z M 403.281,354.719L 458.75,354.719L 458.75,312.531L 403.281,312.531L 403.281,354.719 z M 53.25,260.187L 108.719,260.187L 108.719,218.00L 53.25,218.00L 53.25,260.187 z M 403.281,260.187L 458.75,260.187L 458.75,218.00L 403.281,218.00L 403.281,260.187 z M 132.563,207.062L 379.438,207.062L 379.438-16.375L 132.563-16.375L 132.563,207.062 z M 53.25,165.656L 108.719,165.656L 108.719,123.469L 53.25,123.469L 53.25,165.656 z M 403.281,165.656L 458.75,165.656L 458.75,123.469L 403.281,123.469L 403.281,165.656 z M 53.25,71.125L 108.719,71.125L 108.719,28.937L 53.25,28.937L 53.25,71.125 z M 403.281,71.125L 458.75,71.125L 458.75,28.937L 403.281,28.937L 403.281,71.125z" />
212
+ <glyph unicode="&#xe0e8;" d="M0.00,480.00L 177.438,302.562L 177.438-32.00L 334.563,96.562L 334.563,302.562L 512.00,480.00L0.00,480.00z" />
213
+ <glyph unicode="&#xe0e7;" d="M 145.952,21.08C 51.926,74.072 27.171,124.23 41.325,192.736 51.773,243.32 85.986,284.476 89.266,334.964c 14.615-26.596 20.721-45.774 22.354-73.566 46.482,56.95 77.198,135.788 79.017,218.603 0.00,0.00 121.069-71.136 129.013-178.589 10.423,22.147 15.669,57.324 5.246,80.121 31.267-22.799 214.275-225.192 -24.789-360.453 44.946,87.516 11.596,205.601 -66.444,260.138 5.211-23.451 -3.926-110.914 -38.451-149.345 9.566,64.217 -9.102,91.37 -9.102,91.37 0.00,0.00 -6.407-35.97 -31.267-72.305 -22.701-33.18 -38.43-68.397 -8.894-129.857z" />
214
+ <glyph unicode="&#xe0e6;" d="M -0.451,452.309 m0.00,0.00,0.00-411.666 58.445,0.00 0.00,201.023c 164.144,44.674 269.46-137.155 381.812-24.802l0.00,235.445c-174.513-112.904 -266.472,100.335 -440.257,0.00z" />
215
+ <glyph unicode="&#xe101;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 175.094,368.50C 252.322,368.154 309.332,291.097 400.813,350.281L 400.813,195.406C 326.904,121.498 257.603,241.106 149.625,211.719L 149.625,79.50L 111.188,79.50L 111.188,350.281C 134.409,363.688 155.408,368.588 175.094,368.50z" />
216
+ <glyph unicode="&#xe100;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 151.438,320.50C 204.741,320.50 247.938,277.303 247.938,224.00C 247.938,170.697 204.741,127.469 151.438,127.469C 98.134,127.469 54.938,170.697 54.938,224.00C 54.938,277.303 98.134,320.50 151.438,320.50 z M 360.563,320.50C 413.866,320.50 457.063,277.303 457.063,224.00C 457.063,170.697 413.866,127.469 360.563,127.469C 307.259,127.469 264.063,170.697 264.063,224.00C 264.063,277.303 307.259,320.50 360.563,320.50z" />
217
+ <glyph unicode="&#xe0ff;" d="M 106.313,429.781 70.594,383.687 0.00,383.687l0.00-365.469 512.00,0.00 0.00,365.469 -259.563,0.00 -35.719,46.094z" />
218
+ <glyph unicode="&#xe0fe;" d="M 106.312,429.781 m0.00,0.00,-35.719-46.094 -70.594,0.00 0.00-61.719 512.00,0.00 0.00,61.719 -259.563,0.00 -35.719,46.094 -110.406,0.00 z m -106.313-125.00 0.00-286.563 512.00,0.00 0.00,286.563 -512.00,0.00z" />
219
+ <glyph unicode="&#xe097;" d="M 106.312,429.781 m0.00,0.00,-35.719-46.094 -70.594,0.00 0.00-260.255 52.724,198.536 371.276,0.00 0.00,61.719 -171.563,0.00 -35.719,46.094 z m -106.313-383.536 0.00-28.027 424.00,0.00 88.00,286.563 -437.276,0.00z" />
220
+ <glyph unicode="&#xe096;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 166.625,346.875L 232.531,346.875L 253.875,319.375L 408.875,319.375L 408.875,101.125L 103.125,101.125L 103.125,319.375L 145.281,319.375L 166.625,346.875z" />
221
+ <glyph unicode="&#xe095;" d="M 142.994,154.365 m0.00,0.00, 185.689,0.00 -92.845,240.583 -92.845-240.583m-142.994-183.317 0.00,35.918 44.389,0.00 180.267,469.983 56.926,0.00 180.605-469.983 49.811,0.00 0.00-35.918 -183.995,0.00 0.00,35.918 56.249,0.00 -42.356,111.141 -212.796,0.00 -42.356-111.141 55.571,0.00 0.00-35.918 -142.316,0.00" />
222
+ <glyph unicode="&#xe094;" d="M 443.49,142.134 m0.00,0.00,c-5.088,8.359 -11.449,13.72 -19.08,16.083 -15.829,5.066 -33.498,4.723 -44.158-6.815 -11.917-15.784 -12.215-39.44 0.00-53.153 18.631-17.587 51.538-8.895 63.238,8.45l0.00,35.435 z m 41.977,141.195c 17.082-15.628 25.623-37.797 25.623-66.509l0.00-165.726c-0.279-4.58 -4.037-8.118 -8.178-8.178l-51.244,0.00c-4.58,0.279 -8.118,4.037 -8.178,8.178l0.00,4.906c-17.107-12.982 -36.902-18.963 -56.696-19.08 -22.462,0.658 -41.99,8.606 -57.242,22.624 -18.782,18.796 -26.019,41.904 -26.168,65.691 0.74,26.025 8.255,49.446 26.44,66.237 16.774,14.19 36.614,20.857 56.969,20.989 22.533,0.00 41.432-5.996 56.696-17.99l0.00,15.809c0.00,25.078 -13.084,37.615 -39.251,37.615 -20.352,0.00 -38.887-8.541 -55.605-25.623 -4.439-3.928 -10.697-2.388 -13.084,2.18l-20.17,34.89c-1.817,3.635 -1.272,6.906 1.635,9.813 12.357,12.357 26.713,21.716 43.067,28.075 40.53,14.061 94.624,13.285 125.386-13.901 z m -335.27,27.258 -35.98-128.656 72.506,0.00 z M 300.115,57.089c 0.727-2.18 1.09-3.635 1.09-4.361 -0.153-4.848 -3.873-8.123 -8.178-8.178l-0.545,0.00 -63.783,0.00c-3.998,0.00 -6.541,1.998 -7.632,5.996L 203.077,113.785 97.863,113.785 79.873,50.547c-1.09-3.998 -3.816-5.996 -8.178-5.996l-63.238,0.00c-6.797,0.566 -9.367,4.738 -8.178,10.358l 106.851,351.079c 1.454,3.998 4.18,5.996 8.178,5.996l 70.324,0.00c 3.998,0.00 6.723-1.999 8.178-5.996L 300.115,57.089z" />
223
+ <glyph unicode="&#xe092;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 128.00,319.844L 256.00,224.00L 128.00,128.156L 128.00,319.844 z M 288.00,319.844L 416.00,224.00L 288.00,128.156L 288.00,319.844z" />
224
+ <glyph unicode="&#xe0bb;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,333.312L 397.25,236.437C 406.36,227.082 406.599,213.469 396.719,202.875L 279.25,84.906C 269.436,75.332 256.111,74.863 244.625,84.906L 140.156,189.375C 113.328,190.999 88.871,203.835 69.281,225.094C 51.987,245.349 43.472,271.16 44.906,300.031C 47.297,326.783 59.373,351.029 80.625,370.656C 99.062,386.06 121.742,394.886 147.75,395.562C 177.286,395.327 204.69,382.914 226.219,359.312C 228.023,357.148 229.751,354.876 231.375,352.531C 232.999,350.186 234.525,347.946 235.969,345.781L 244.625,354.437C 254.439,364.012 267.764,364.481 279.25,354.437L 313.906,319.781L 430.813,480.00L0.00,480.00 z M 455.719,480.00L 266.281,219.687C 264.477,217.523 262.307,216.406 259.781,216.406C 257.255,216.406 255.457,217.321 254.375,219.125C 253.654,219.486 250.398,223.454 244.625,231.031C 238.852,238.608 231.83,248.002 223.531,259.187C 223.606,259.657 223.653,260.104 223.719,260.562C 227.771,270.32 230.00,280.995 230.00,292.219C 230.00,337.878 193.003,374.906 147.344,374.906C 101.684,374.906 64.656,337.878 64.656,292.219C 64.656,246.559 101.684,209.562 147.344,209.562C 157.314,209.562 166.869,211.328 175.719,214.562C 175.735,214.568 175.734,214.557 175.75,214.562C 176.156,214.642 176.558,214.699 176.969,214.781L 255.469,151.469C 256.551,150.386 257.605,149.844 258.688,149.844L 260.313,149.844C 262.116,149.844 263.574,150.386 264.656,151.469L 512.00,359.844L 512.00,480.00L 455.719,480.00z" />
225
+ <glyph unicode="&#xe0ba;" d="M 374.764,480.00C 350.798,479.957 324.901,475.728 298.586,461.702 268.977,472.338 237.712,481.316 194.245,478.093 95.936,468.939 58.413,419.264 52.641,348.419c-20.73-2.362 -40.321-7.829 -41.743-62.598 -1.36-62.03 18.052-72.139 38.757-79.006l 1.493-181.853c 2.926-21.472 -1.088-45.384 47.699-50.669l 73.034-1.493c 26.733-3.483 45.279,13.487 55.148,52.163 3.468-31.439 17.286-48.649 43.235-49.176l 84.962,0.00c 19.205,5.118 40.272,6.804 43.219,41.727l 1.493,189.303 22.348-1.493c 18.252,2.643 36.433,5.658 49.192,35.77l0.00,56.641c-3.688,23.123 -9.945,20.397 -16.392,25.351 17.357,3.84 35.283,5.659 41.727,47.699l-1.477,46.206C 495.944,445.98 479.792,462.45 439.315,473.185 420.77,475.893 398.731,480.042 374.764,480.00 z m -169.209-44.363c 11.686,0.131 27.791-1.77 61.566-12.596l 1.048-54.815c-17.574,6.16 -32.964,13.268 -45.316,11.596 -38.226,1.796 -41.811-17.73 -44.268-37.946l0.00-38.994 98.019-1.048c 2.359,51.683 -11.539,117.566 74.082,128.961 37.377,4.971 71.717,0.211 97.717-10.912l-1.048-57.976c-13.443,10.752 -31.59,14.451 -50.59,16.868 -52.85,7.43 -40.676-39.913 -43.219-74.844l 70.619,0.00 0.00-51.638 -70.619,0.00 1.048-233.984 -77.989,2.113 0.00,231.872 -101.18-2.113 0.00-229.759 -77.989,0.00 2.097,229.759 -37.946,0.00 -1.048,57.976 41.107-2.113 -1.048,15.804c 1.841,37.771 -1.459,102.899 79.482,113.045 9.974-0.686 16.388,0.644 25.477,0.747z" />
226
+ <glyph unicode="&#xe0b9;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 345.313,409.656C 363.012,409.688 379.272,406.625 392.969,404.625C 422.86,396.697 434.791,384.534 434.344,363.125L 435.438,329.00C 430.679,297.955 417.443,296.617 404.625,293.781C 409.387,290.123 414.026,292.138 416.75,275.062L 416.75,233.25C 407.328,211.012 393.885,208.764 380.406,206.812L 363.906,207.937L 362.813,68.125C 360.635,42.335 345.058,41.092 330.875,37.312L 268.125,37.312C 248.961,37.702 238.78,50.408 236.219,73.625C 228.93,45.064 215.242,32.521 195.50,35.094L 141.563,36.219C 105.534,40.122 108.473,57.768 106.313,73.625L 105.219,207.937C 89.929,213.009 75.589,220.442 76.594,266.25C 77.644,306.696 92.129,310.756 107.438,312.50C 111.70,364.819 139.40,401.49 212.00,408.25C 244.10,410.629 267.197,404.011 289.063,396.156C 308.496,406.514 327.613,409.625 345.313,409.656 z M 220.344,376.906C 213.632,376.831 208.897,375.837 201.531,376.344C 141.757,368.852 144.204,320.769 142.844,292.875L 143.625,281.187L 113.25,282.75L 114.031,239.937L 142.063,239.937L 140.50,70.281L 198.094,70.281L 198.094,239.937L 272.813,241.50L 272.813,70.281L 330.406,68.719L 329.625,241.50L 381.781,241.50L 381.781,279.656L 329.625,279.656C 331.503,305.453 322.534,340.394 361.563,334.906C 375.594,333.121 388.979,330.409 398.906,322.469L 399.688,365.25C 380.487,373.465 355.134,377.015 327.531,373.344C 264.301,364.929 274.554,316.261 272.813,278.094L 200.438,278.875L 200.438,307.656C 202.252,322.586 204.896,337.013 233.125,335.687C 242.247,336.923 253.615,331.674 266.594,327.125L 265.813,367.594C 240.87,375.589 228.973,377.003 220.344,376.906z" />
227
+ <glyph unicode="&#xe0b8;" d="M 0.00,480.00L 0.00,303.437L 61.50,365.469L 202.969,224.00L 61.25,82.281L 0.00,143.00L 0.00-32.00L 176.563-32.00L 114.531,29.50L 256.00,170.969L 397.719,29.25L 337.00-32.00L 512.00-32.00L 512.00,144.562L 450.50,82.531L 309.031,224.00L 450.75,365.719L 512.00,305.00L 512.00,480.00L 335.438,480.00L 397.469,418.50L 256.00,277.031L 114.281,418.75L 175.00,480.00L 0.00,480.00z" />
228
+ <glyph unicode="&#xe0b7;" d="M 320.252,321.38 m0.00,0.00, 98.384,62.243 -96.376,96.376 -62.243-138.541 -36.141,108.424 -96.376-64.251 80.314-64.251 -182.714,0.00 0.00-128.502 32.126,0.00 0.00-224.878 397.554,0.00 0.00,224.878 32.126,0.00 0.00,128.502 z m 10.136,116.418 50.43-50.43 -102.869-65.233 z m -119.394-25.461 28.475-85.426 -71.188,56.95 z m 12.882-412.212 -134.525,0.00 0.00,202.816 134.525,0.00 z m 0.00,224.878 -166.651,0.00 0.00,64.251 166.651,0.00 z m 198.776-224.878 -134.525,0.00 0.00,202.816 134.525,0.00 z m 32.126,224.878 -166.651,0.00 0.00,64.251 166.651,0.00z" />
229
+ <glyph unicode="&#xe0b6;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 256.00,452.125C 381.99,452.125 484.125,349.99 484.125,224.00C 484.125,98.01 381.99-4.125 256.00-4.125C 130.01-4.125 27.875,98.01 27.875,224.00C 27.875,349.99 130.01,452.125 256.00,452.125 z M 142.781,385.312C 136.284,366.428 134.032,345.932 139.844,328.031C 132.822,320.239 127.37,311.287 123.469,301.156C 113.07,268.292 115.61,226.308 138.375,200.906C 146.372,192.139 157.222,184.931 170.875,179.281C 184.528,173.632 202.076,170.028 223.531,168.469C 209.131,161.74 198.98,157.628 195.438,142.75C 179.375,132.017 159.842,134.578 145.688,146.25C 134.501,154.417 129.434,168.933 117.031,174.312C 116.251,175.092 113.815,175.673 109.719,176.062C 105.623,176.452 102.403,175.29 100.063,172.562C 98.892,171.394 98.979,170.145 100.344,168.781C 109.733,161.145 118.77,153.051 124.063,143.344C 129.134,132.823 134.383,125.12 139.844,120.25C 154.993,110.013 175.311,104.687 193.094,111.187C 191.02,98.674 196.614,79.132 192.50,67.937C 190.939,64.82 188.707,62.088 185.781,59.75C 183.174,57.206 175.089,54.024 176.719,50.125C 177.499,48.372 180.225,47.296 184.906,46.906C 195.211,47.169 205.469,51.335 211.531,59.469C 213.677,62.391 214.75,66.199 214.75,70.875L 214.75,118.781C 214.75,124.236 215.909,128.131 218.25,130.469C 220.591,132.807 223.144,134.377 225.875,135.156L 225.875,72.031C 225.875,66.576 225.382,61.897 224.406,58.00C 223.431,54.103 222.561,51.371 221.781,49.812C 219.99,46.809 216.567,44.038 216.50,40.469C 216.50,39.30 217.197,38.632 218.563,38.437C 228.811,38.882 240.702,44.894 244.875,53.344C 248.191,60.357 249.844,67.738 249.844,75.531L 249.844,137.50L 262.719,137.50L 262.719,75.531C 262.719,67.738 264.489,60.357 268.00,53.344C 271.511,46.33 277.37,41.823 285.563,39.875C 289.853,38.706 292.752,38.243 294.313,38.437C 295.873,38.632 296.57,39.30 296.375,40.469C 295.435,44.009 293.478,47.038 291.406,49.812C 288.675,53.319 287.313,60.731 287.313,72.031L 287.313,135.156C 290.043,134.377 292.683,132.807 295.219,130.469C 297.754,128.131 299.00,124.236 299.00,118.781L 299.00,70.875C 299.00,66.199 300.073,62.391 302.219,59.469C 308.74,51.176 318.567,46.969 328.844,46.906C 333.525,47.296 336.251,48.372 337.031,50.125C 337.811,51.878 337.231,53.331 335.281,54.50C 333.331,55.669 330.894,57.412 327.969,59.75C 325.043,62.088 322.811,64.82 321.25,67.937C 319.499,88.038 321.205,109.584 319.781,129.906C 316.97,152.084 308.434,159.38 291.406,167.875C 311.691,169.434 328.37,173.155 341.438,179.00C 380.502,197.981 391.304,227.323 391.469,266.656C 390.853,291.97 383.545,314.053 366.875,330.969C 369.216,339.93 369.913,349.259 368.938,359.00C 367.962,368.741 365.902,377.52 362.781,385.312C 348.349,384.533 336.254,381.628 326.50,376.562C 316.747,371.497 309.728,367.194 305.438,363.687C 270.871,371.535 233.867,371.582 200.719,362.531C 183.757,376.404 162.735,384.133 142.781,385.312z" />
230
+ <glyph unicode="&#xe0e5;" d="M 436.712,352.99 m0.00,0.00, 48.752,0.00 0.00-54.357c-1.867,0.00 -5.323,0.185 -10.367,0.56 -5.043,0.373 -9.806,0.561 -14.29,0.561l-24.095,0.00 0.00-104.232c0.00-25.032 8.218-37.546 24.656-37.546 11.582,0.00 22.041,3.173 31.384,9.526l0.00-56.037c-13.823-7.475 -30.45-11.209 -49.877-11.209 -27.272,0.00 -46.136,9.713 -56.598,29.138 -7.845,14.572 -11.77,37.545 -11.77,68.931l0.00,100.309 0.561,0.00 0.00,1.121 -8.406,0.558c-4.857,0.00 -11.208-0.558 -19.053-1.679l0.00,54.357 27.459,0.00 0.00,21.855c0.00,10.461 -0.561,18.867 -1.681,25.218l 65.004,0.00c-1.119-7.099 -1.68-15.131 -1.68-24.096l0.00-22.978 z M 257.431,104.178c 0.747,7.469 1.118,20.17 1.118,38.105l0.00,174.284c0.00,17.557 -0.371,29.70 -1.118,36.424l 63.324,0.00c-0.749-7.099 -1.122-18.867 -1.122-35.306l0.00-172.038c0.00-19.055 0.374-32.878 1.122-41.468l-63.324,0.00 z M 116.75,355.781c-25.404,0.00 -47.255-8.407 -65.563-25.219 -19.051-17.933 -28.594-40.35 -28.594-67.25 0.00-17.933 5.258-34.717 15.719-50.406 9.339-14.569 19.982-23.922 31.938-28.031l0.00-1.125c-11.955-5.226 -17.938-18.297 -17.938-39.219 0.00-16.066 6.331-28.03 19.031-35.875l0.00-1.125C 36.602,95.951 19.25,74.474 19.25,43.094c0.00-27.275 11.585-47.267 34.75-59.969 18.303-10.088 41.638-15.125 70.031-15.125 69.114,0.00 103.688,28.965 103.688,86.875 0.00,36.238 -26.73,58.47 -80.156,66.688 -12.328,1.867 -21.649,6.337 -28.00,13.438 -4.857,4.855 -7.281,9.706 -7.281,14.563 0.00,13.822 7.465,21.851 22.406,24.094 22.789,3.359 41.366,13.943 55.75,31.688 14.383,17.746 21.594,38.558 21.594,62.469 0.00,7.472 -1.512,15.502 -4.50,24.094 9.715,2.244 17.175,4.289 22.406,6.156l0.00,57.719c-23.539-8.967 -44.256-13.438 -62.188-13.438 -15.693,8.966 -32.694,13.438 -51.00,13.438 z m 2.25-51.531c 11.209,0.00 19.993-4.315 26.344-12.906 5.23-7.848 7.844-17.197 7.844-28.031 0.00-26.151 -11.398-39.219 -34.188-39.219 -23.535,0.00 -35.313,12.908 -35.313,38.688 0.00,27.645 11.778,41.469 35.313,41.469 z m 3.906-228.094c 31.384,0.00 47.094-9.54 47.094-28.594 0.00-20.176 -14.389-30.25 -43.156-30.25 -32.875,0.00 -49.313,9.732 -49.313,29.156 0.00,19.802 15.114,29.688 45.375,29.688 z m 205.283,362.095c0.00-23.057 -17.437-41.749 -38.947-41.749 -21.51,0.00 -38.947,18.692 -38.947,41.749 0.00,23.057 17.437,41.749 38.947,41.749 21.51,0.00 38.947-18.692 38.947-41.749z" />
231
+ <glyph unicode="&#xe0e4;" d="M 0.489,459.722 m0.00,0.00, 215.01-215.00 0.00-210.569 -79.062,0.00 0.00-45.876 240.114,0.00 0.00,45.876 -79.062,0.00 0.00,210.569L 512.489,459.722z" />
232
+ <glyph unicode="&#xe0e3;" d="M 476.417,227.564 m0.00,0.00,-164.552,0.00 21.25-96.988 132.949,0.00 z m -277.885,0.00 -164.552,0.00 10.352-96.988 132.949,0.00 z m 307.853,28.333c 3.634-3.996 5.087-8.354 4.359-13.076L 496.577,112.052C 494.634,103.502 488.539,96.912 480.231,96.796l-160.193,0.00c-8.615,0.573 -14.323,5.975 -15.802,13.621l-25.609,113.878c-13.858,8.631 -32.079,7.373 -46.859,1.09L 206.16,110.417C 204.128,102.136 198.218,96.892 190.359,96.796L 30.166,96.796C 21.154,97.507 15.136,104.009 14.365,112.052L 0.199,242.821c-0.726,5.085 0.545,9.444 3.814,13.076l 184.167,94.807c 8.834,3.941 17.583,0.156 21.25-7.628 3.076-8.891 1.079-19.018 -7.083-22.885l-116.602-52.853 337.276,0.00 -116.602,52.853c-8.65,4.903 -10.887,14.778 -7.628,22.885 4.624,8.294 13.993,11.047 21.795,7.628z" />
233
+ <glyph unicode="&#xe0e2;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z M 192.535,410.618c 9.322-5.019 20.341-9.768 33.07-14.249 12.729-4.482 25.368-6.728 37.917-6.728 9.261,0.018 18.50,2.317 26.359,8.073 7.609,4.56 14.974,8.199 24.738,7.262 10.032-1.096 20.597-4.55 31.189-5.123 13.266-7.171 26.179-16.121 38.727-26.877 -6.095-0.358 -12.559-1.00 -19.372-1.897 -6.813-0.896 -13.437-2.228 -19.891-4.02 -6.454-1.792 -12.373-4.135 -17.751-7.003 -5.378-2.868 -9.324-6.445 -11.834-10.748 -3.944-6.454 -6.719-11.924 -8.332-16.405 -3.321-9.293 -2.536-24.119 -10.213-30.93 -1.613-1.076 -2.961-2.327 -4.037-3.761 -1.076-1.434 -1.525-3.311 -1.345-5.641 0.179-2.33 1.35-5.651 3.502-9.953 1.076-2.51 1.958-5.557 2.675-9.143 6.811,0.022 13.876,1.047 19.907,5.382l 35.502-3.226c 9.164,10.322 19.843,10.494 29.033,0.00 2.868-2.868 5.916-7.183 9.143-12.92l-15.06-10.213c-3.586,1.076 -7.884,3.225 -12.904,6.452 -2.504,1.434 -5.023,3.054 -7.538,4.847 -14.308,6.945 -42.325-1.143 -58.083-2.156 -2.055-4.109 -3.71-8.134 -8.592-9.143 -0.848-2.659 -0.029-5.512 -1.086-8.073 -6.813-10.756 -9.138-22.049 -6.987-33.88 3.944-18.644 13.616-27.963 29.033-27.963l 1.621,0.00 4.296,0.00c 7.529,0.00 12.822-0.353 15.87-1.07 3.048-0.717 4.571-1.262 4.571-1.621 -1.792-4.303 -2.418-7.703 -1.88-10.213 1.776-8.053 7.586-14.147 6.987-22.857 -0.557-11.079 -4.04-20.631 -0.259-31.741 4.311-10.777 9.726-22.479 13.714-33.605 1.613-3.227 4.035-5.20 7.262-5.917 6.454-1.076 14.522,3.223 24.203,12.904 7.171,7.888 11.293,16.502 12.369,25.824 1.42,8.251 7.236,15.582 9.143,24.203l0.00,6.987c 1.789,3.586 3.313,7.082 4.571,10.488 1.794,4.951 1.991,11.26 2.415,16.94 5.637,5.637 11.136,10.669 15.06,17.751 2.51,4.303 3.232,8.056 2.156,11.283 -0.345,0.717 -1.243,1.439 -2.691,2.156l-8.073,3.226c 0.138,4.508 8.427,3.837 12.369,3.226l 19.356,11.834c-0.717-24.381 -5.465-47.96 -14.249-70.728 -8.784-22.767 -21.777-43.283 -38.987-61.568 -22.946-25.098 -50.471-43.031 -82.561-53.787 -32.09-10.756 -65.165-12.906 -99.226-6.452 5.864,10.36 9.249,22.033 16.146,32.276 0.00,5.378 0.802,9.95 2.415,13.714 6.845,15.836 18.014,19.957 30.93,32.259 13.033,13.585 12.911,29.637 13.439,49.216 -0.178,12.393 -19.992,20.00 -29.05,26.894 -20.993,14.147 -34.324,34.961 -64.259,28.774 -10.699-1.091 -13.288-3.17 -21.252,3.485l-3.226,1.621 0.276,1.07 1.345,2.691c 3.213,3.361 -1.348,7.586 -5.657,6.192 -0.896-0.179 -1.875-0.276 -2.95-0.276 -0.983,4.803 -4.206,9.272 -4.847,14.525 5.019-3.944 9.334-6.911 12.92-8.883 3.584-1.972 6.632-3.32 9.143-4.037 2.51-1.076 4.659-1.429 6.452-1.07 3.944,0.717 6.173,4.663 6.711,11.834 0.538,7.171 0.281,15.416 -0.794,24.738 1.076,1.433 1.781,2.877 2.14,4.312 3.789,19.596 13.825,15.299 29.05,20.96 2.51,1.434 3.039,3.231 1.605,5.382 0.00,0.359 -0.08,0.535 -0.259,0.535 -0.179,0.00 -0.276,0.193 -0.276,0.551 8.277,4.157 13.152,12.668 18.286,20.425 -4.374,6.932 -11.165,12.72 -18.821,16.681 -4.106,5.064 -20.223,1.959 -23.668,10.213 -2.868,0.359 -5.018,0.904 -6.452,1.621 -14.521,9.41 -20.654,25.865 -36.296,32.535 -6.275,0.538 -12.466,0.441 -18.561-0.276 18.286,14.70 38.191,25.639 59.704,32.81 z M 61.844,258.95c 3.227-5.378 7.173-10.222 11.834-14.525 24.191-22.223 46.931-26.933 77.974-38.176 1.433-1.076 3.406-2.872 5.917-5.382 3.382-2.567 6.244-5.641 9.694-8.073 0.00-1.792 -0.273-4.295 -0.81-7.522 -0.538-3.227 -0.634-8.424 -0.276-15.595 1.036-19.953 17.492-35.749 22.047-54.857 -4.04-24.763 -4.098-49.102 -6.987-73.678 -24.381,10.039 -45.794,24.379 -64.259,43.023 -18.465,18.644 -32.724,40.33 -42.764,65.07 -7.171,17.927 -11.742,36.133 -13.714,54.598 -1.974,18.465 -1.525,36.831 1.345,55.117z" />
234
+ <glyph unicode="&#xe0fd;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 253.938,414.469C 268.274,414.469 282.015,413.026 295.156,410.125C 308.298,407.226 320.866,403.027 332.813,397.562C 331.106,397.904 328.887,398.411 326.156,399.094C 312.477,401.807 299.846,402.999 287.219,394.50C 279.449,389.657 270.927,385.928 261.125,386.312C 249.519,386.312 237.839,388.262 226.063,392.187C 214.286,396.113 203.779,400.472 194.563,405.25C 213.335,411.394 233.116,414.469 253.938,414.469 z M 143.219,375.406C 146.472,375.393 149.576,375.028 152.563,374.281C 157.341,373.087 160.606,370.598 162.313,366.844C 164.702,362.065 168.015,357.627 172.281,353.531C 176.548,349.435 181.065,345.853 185.844,342.781C 188.574,342.099 190.793,341.433 192.50,340.75C 197.57,338.966 200.298,334.181 205.813,334.094C 209.909,335.459 213.173,334.413 215.563,331.00C 223.104,327.217 229.785,321.968 234.50,314.625C 229.876,306.929 224.586,298.506 216.063,294.156C 216.404,294.156 216.563,294.046 216.563,293.875C 216.563,293.704 216.752,293.625 217.094,293.625C 218.461,291.236 217.764,289.365 215.031,288.00C 213.325,287.317 211.724,286.81 210.188,286.469C 208.651,286.127 207.019,285.779 205.313,285.437C 200.875,284.755 197.959,283.899 196.594,282.875C 196.594,282.192 196.087,281.844 195.063,281.844C 195.063,281.502 193.969,280.409 191.75,278.531C 189.531,276.654 187.74,272.803 186.375,267.00C 186.034,265.635 185.337,264.272 184.313,262.906C 185.337,253.349 185.606,245.916 185.094,240.625C 184.582,235.334 182.442,232.18 178.688,231.156C 176.982,230.815 174.763,231.163 172.031,232.187C 169.642,232.87 166.647,234.154 163.063,236.031C 159.478,237.909 155.31,240.904 150.531,245.00C 151.231,238.801 153.057,232.419 155.125,226.062C 159.516,226.924 167.075,226.425 163.844,219.906C 161.53,217.563 162.163,215.973 165.375,214.781C 166.738,214.44 168.101,213.236 169.469,211.187C 174.766,210.72 180.207,210.598 186.125,211.719C 191.075,212.401 196.337,212.56 201.969,212.219C 207.601,211.877 213.163,210.594 218.625,208.375C 234.191,201.868 246.823,181.351 263.938,173.812C 268.202,171.082 271.705,168.356 274.438,165.625C 277.168,162.894 278.531,159.82 278.531,156.406C 278.503,144.566 277.461,132.516 274.438,120.562C 273.413,117.49 270.259,113.243 264.969,107.781C 259.679,102.32 253.609,97.185 246.781,92.406C 244.051,90.358 241.673,87.981 239.625,85.25C 237.918,82.861 236.286,79.786 234.75,76.031C 233.214,72.277 232.438,67.839 232.438,62.719C 229.707,57.599 227.409,52.892 225.531,48.625C 223.654,44.358 222.053,40.887 220.688,38.156C 219.322,34.402 217.928,31.327 216.563,28.937C 202.976,29.727 190.288,34.816 177.656,42.25C 179.131,66.519 183.964,90.574 186.375,114.437C 187.058,116.827 186.868,119.046 185.844,121.094C 174.867,142.909 161.99,153.81 164.875,184.062C 165.558,187.476 165.875,190.043 165.875,191.75C 161.362,196.197 155.072,199.652 150.531,205.062C 119.511,219.602 87.20,220.714 64.50,253.187C 68.254,278.105 76.544,300.96 89.344,321.781C 102.144,342.603 118.104,360.354 137.219,375.031C 139.267,375.287 141.267,375.414 143.219,375.406 z M 377.344,369.906C 398.506,352.157 415.243,330.665 427.531,305.406C 439.819,280.148 445.938,252.506 445.938,222.469L 445.938,218.875L 429.563,213.75C 422.633,215.659 415.252,210.64 412.156,204.031L 420.875,200.969C 422.24,200.286 423.096,199.589 423.438,198.906C 425.334,194.048 423.33,188.144 421.875,183.031C 419.137,179.421 414.642,176.03 411.125,172.281C 410.784,170.575 410.625,168.007 410.625,164.594C 410.625,159.132 408.406,152.476 403.969,144.625C 404.651,142.236 404.651,140.017 403.969,137.969C 402.945,133.531 401.423,129.284 399.375,125.187C 396.992,121.091 395.597,117.32 395.25,113.906C 393.885,104.69 389.795,96.163 382.969,88.312C 373.753,78.755 365.733,74.507 358.906,75.531C 355.834,76.214 353.536,78.164 352.00,81.406C 346.957,92.089 343.815,103.272 338.438,114.937C 334.801,124.628 337.442,135.79 338.188,146.187C 338.464,153.896 333.339,160.904 331.781,168.437C 331.439,170.998 332.104,174.50 333.813,178.937C 333.476,179.279 331.875,179.897 328.969,180.75C 313.478,185.09 302.218,176.80 289.031,188.687C 283.741,193.466 280.238,200.281 278.531,209.156C 276.483,221.444 278.861,232.539 285.688,242.437C 286.029,243.462 286.219,244.476 286.219,245.50C 286.219,247.889 286.377,249.601 286.719,250.625C 288.416,250.966 289.859,251.663 291.063,252.687C 292.248,253.712 293.183,254.726 293.875,255.75C 294.899,257.114 295.596,258.477 295.938,259.844C 332.383,263.167 340.167,269.966 372.75,250.625L 387.594,260.875C 384.18,266.678 381.185,270.926 378.625,273.656C 369.982,282.734 359.07,284.297 350.219,273.656L 314.375,276.75C 309.683,272.147 301.491,272.005 294.906,271.625C 294.906,274.697 294.05,277.772 292.344,280.844C 290.296,284.94 289.281,288.173 289.281,290.562C 289.281,292.95 289.788,294.82 290.813,296.187C 301.669,310.494 299.522,311.497 303.875,330.50C 305.411,334.937 308.216,340.389 312.313,346.875C 321.881,360.452 358.313,367.922 377.344,369.906z" />
235
+ <glyph unicode="&#xe0fc;" d="M0.00,480.00L0.00,389.969C 31.861,420.799 85.098,435.414 132.625,435.812L 290.375,435.812L 248.375,401.937L 203.063,401.937C 214.014,391.861 224.17,381.034 232.25,367.562C 242.699,349.795 248.184,328.913 248.375,306.969C 248.279,285.847 243.194,262.275 230.063,242.562C 219.341,226.798 203.944,213.135 187.75,200.531C 177.101,189.836 167.811,180.921 167.031,163.969C 167.158,151.33 175.432,139.932 186.688,131.75C 205.526,117.14 221.65,104.932 239.344,89.719C 256.316,75.073 272.085,56.943 282.188,34.844C 290.819,14.806 290.91-9.55 284.938-32.00L 512.00-32.00L 512.00,301.531L 417.563,301.531L 417.563,206.00L 376.656,206.00L 376.656,301.531L 282.188,301.531L 282.188,340.844L 376.656,340.844L 376.656,435.812L 417.563,435.812L 417.563,340.844L 512.00,340.844L 512.00,480.00L0.00,480.00 z M 93.50,409.625C 84.283,409.423 74.916,407.396 66.031,403.344C 48.176,394.604 35.063,380.501 30.281,359.094C 26.592,336.95 27.409,313.515 33.031,289.781C 39.695,262.71 52.959,237.024 76.938,218.25C 95.022,205.477 122.414,203.571 145.469,209.812C 163.492,215.176 176.403,232.208 183.406,250.75C 189.765,270.856 187.566,293.702 182.031,316.781C 174.839,346.254 160.531,374.71 135.344,396.219C 123.791,405.191 108.862,409.962 93.50,409.625 z M 0.00,204.344L0.00,74.437C 25.682,93.412 61.337,95.726 93.625,96.812C 103.632,96.812 112.253,96.98 119.531,97.344C 114.437,104.258 109.444,111.546 104.531,119.187C 93.478,136.891 96.204,158.493 104.25,177.625C 66.479,172.78 32.841,179.743 0.00,204.344 z M 126.531,76.687C 108.60,76.622 91.157,73.321 73.406,70.875C 45.858,65.533 19.751,54.546 0.00,32.437L0.00-32.00L 241.281-32.00C 242.109-29.487 242.344-26.64 242.344-23.813C 242.157-5.056 229.70,12.026 214.50,25.031C 193.153,43.168 168.411,57.878 144.656,75.531C 138.538,76.375 132.508,76.709 126.531,76.687z" />
236
+ <glyph unicode="&#xe0fb;" d="M0.00,417.906L0.00,30.094L 512.00,30.094L 512.00,417.906L0.00,417.906 z M 62.938,355.469L 449.063,355.469L 449.063,92.531L 62.938,92.531L 62.938,355.469 z M 391.438,334.656L 325.625,220.531L 294.75,284.906L 275.375,325.344L 251.188,287.625L 197.094,203.375L 174.875,226.719L 158.719,243.687L 140.75,228.656L 77.219,175.625L 109.25,137.25L 154.813,175.281L 182.844,145.844L 204.813,122.781L 222.00,149.562L 269.063,222.906L 301.063,156.125L 321.563,113.344L 345.25,154.469L 434.75,309.687L 391.438,334.656z" />
237
+ <glyph unicode="&#xe0fa;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 107.156,336.719L 404.844,336.719L 404.844,111.281L 107.156,111.281L 107.156,336.719 z M 143.75,300.437L 143.75,147.562L 368.25,147.562L 368.25,300.437L 143.75,300.437 z M 334.75,288.344L 359.906,273.812L 307.875,183.562L 294.125,159.656L 282.188,184.531L 263.594,223.375L 236.219,180.719L 226.25,165.156L 213.469,178.562L 197.188,195.687L 170.688,173.562L 152.063,195.875L 189.00,226.719L 199.438,235.437L 208.844,225.594L 221.75,212.00L 253.188,261.00L 267.25,282.906L 278.531,259.406L 296.469,221.969L 334.75,288.344z" />
238
+ <glyph unicode="&#xe091;" d="M 254.654,399.578 m0.00,0.00,c-44.093,0.00 -79.838-41.732 -79.838-93.212 0.00-35.703 17.193-66.71 42.44-82.367l-29.277-13.568 -77.909-36.134c-7.526-3.764 -11.283-10.145 -11.283-19.177 0.00-28.601 0.00-57.202 0.00-85.803 0.619-10.728 7.056-20.726 17.491-20.896l 277.171,0.00c 11.914,1.036 17.941,10.633 18.059,20.896 0.00,28.601 0.00,57.202 0.00,85.803 0.00,9.032 -3.756,15.414 -11.283,19.177l-75.088,36.134 -31.206,14.784c 24.211,16.009 40.559,46.346 40.559,81.151 0.00,51.479 -35.745,93.212 -79.838,93.212 z m -128.778-32.778c-18.975-0.721 -34.013-8.931 -45.439-22.014 -12.638-15.751 -18.799-34.453 -18.918-53.058 0.776-27.511 13.085-53.554 34.999-67.177l-87.489-40.657c-6.021-2.258 -9.029-7.526 -9.029-15.806l0.00-68.863c 0.47-9.133 5.212-16.808 14.103-16.94l 58.148,0.00 0.00,72.835c 0.962,19.473 10.107,35.212 26.537,42.894l 58.132,27.655c 4.516,2.635 8.845,6.215 12.985,10.732 -23.969,36.982 -27.297,81.276 -11.85,120.235 -10.046,6.148 -21.337,10.099 -32.178,10.164 z m 259.664,0.00c-12.409-0.26 -23.876-4.829 -33.297-11.283 15.026-39.312 10.881-83.634 -11.299-117.982 4.893-5.645 9.986-9.974 15.254-12.985l 55.878-26.537c 17.023-9.336 25.801-25.215 25.97-42.894l0.00-72.835 59.834,0.00c 9.84,0.85 14.034,8.698 14.12,16.94l0.00,68.863c0.00,7.527 -3.008,12.794 -9.029,15.806l-86.371,41.224c 22.399,16.515 33.647,41.267 33.864,66.61 -0.595,20.058 -6.723,38.684 -18.918,53.058 -12.743,13.824 -28.548,21.868 -46.006,22.014z" />
239
+ <glyph unicode="&#xe090;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m -0.519-142.346c 23.613-0.31 43.171-19.533 49.67-44.028 2.477-9.994 2.757-20.134 0.259-30.719 -3.766-14.903 -11.306-29.46 -25.354-38.403l 20.474-9.726 48.648-23.554c 4.779-2.048 7.165-6.144 7.165-12.288l0.00-47.092c0.00-9.712 0.771-18.087 -11.267-21.512l-179.194,0.00c-11.577,0.167 -12.056,11.893 -11.785,21.512l0.00,47.092c0.00,6.144 2.564,10.417 7.684,12.806l 50.172,23.035 19.469,9.224c-8.874,5.803 -15.873,13.817 -20.993,24.057 -6.148,13.518 -8.586,31.067 -4.101,47.108 5.67,21.744 23.426,41.279 49.151,42.488 z m -83.453-21.495c 7.51,0.00 14.33-2.225 20.474-6.663 -1.704-4.778 -3.147-9.817 -4.345-15.108 -1.194-5.29 -1.799-10.829 -1.799-16.632 0.00-8.534 1.193-16.725 3.583-24.576 2.389-7.851 5.807-15.026 10.245-21.512 -2.048-2.731 -4.773-5.117 -8.186-7.165l-37.901-17.41c-5.12-2.731 -9.216-6.56 -12.288-11.51 -3.072-4.949 -4.604-10.504 -4.604-16.648l0.00-47.092 -37.366,0.00c-5.421,0.085 -9.082,5.548 -9.224,11.25l0.00,44.547c0.00,5.12 1.871,8.539 5.625,10.245l 56.835,26.116c-14.684,9.027 -21.769,25.342 -22.517,43.51 0.259,22.384 14.93,46.789 41.467,48.648 z m 167.927,0.00c 23.591-0.373 40.631-23.762 41.483-48.648 -0.13-16.467 -6.558-32.368 -21.512-43.007l 55.814-26.618c 3.755-2.048 5.625-5.467 5.625-10.245l0.00-44.547c-0.056-5.287 -2.91-10.71 -9.208-11.25l-38.403,0.00 0.00,47.092c0.00,6.144 -1.532,11.699 -4.604,16.648 -3.072,4.949 -7.168,8.779 -12.288,11.51 -15.916,7.398 -34.196,12.708 -46.087,25.094 8.874,13.653 13.309,28.843 13.309,45.568 0.00,10.582 -1.871,20.998 -5.625,31.238 6.166,4.071 13.465,7.051 21.495,7.165z" />
240
+ <glyph unicode="&#xe08f;" d="M 261.43,318.388 204.448,407.621c-3.336,6.398 -1.826,14.124 3.763,17.739 6.392,3.356 13.609,1.787 17.201-3.763L 282.393,331.826c 3.336-6.398 1.828-14.126 -3.763-17.739 -6.374-3.073 -14.185-0.989 -17.201,4.30 z m 239.209-16.664c 9.166-16.616 -13.552-30.238 -24.19-36.016 -9.317,0.72 -18.187,1.705 -26.608,2.957 -8.421,1.254 -15.858,2.419 -22.308,3.494 -7.526,1.434 -14.513,2.866 -20.964,4.30 -0.73-3.584 -1.715-7.347 -2.957-11.289 -1.261-3.942 -2.784-8.063 -4.569-12.364 -36.643,7.927 -79.798,29.371 -99.984,62.356l 68.806,70.419 12.364,44.617 26.34-32.253c 18.171-5.108 43.38-5.467 51.067-24.19 6.657-11.215 6.118-34.999 13.439-44.078 3.942-3.942 8.243-7.526 12.901-10.751 4.658-3.226 10.213-8.959 16.664-17.201 z M 242.614,152.286c-16.285,0.116 -33.279,5.765 -49.455,5.913 -9.317,1.075 -12.722-3.046 -10.213-12.364l 22.577-90.846c-0.303-14.593 -8.231-25.768 -19.89-27.684 -11.346-1.09 -22.754,9.144 -25.265,16.933l-29.028,113.96c-0.717,3.942 -2.957,5.823 -6.72,5.644 -3.763-0.179 -6.181-2.06 -7.257-5.644L 90.489,44.776c-3.544-10.644 -12.132-17.611 -22.577-17.739 -15.419,0.272 -26.064,14.593 -23.114,27.953l 32.791,134.387 2.688,81.169c-28.421,7.21 -64.337,26.654 -78.482,53.755 -3.99,8.76 -1.098,17.257 6.451,21.502 8.923,4.078 19.015,0.152 22.577-5.913 13.917-21.783 44.639-35.664 65.581-36.016l 160.189,0.00C 246.68,254.161 241.135,204.445 242.614,152.286 z m 39.241,142.45c 27.135-35.287 66.239-57.40 108.047-66.119 -3.892-11.648 -9.089-22.981 -12.632-33.597 -1.612-4.838 -1.165-11.916 1.344-21.233 10.301-39.464 21.628-81.596 31.716-118.26 3.929-30.711 -38.722-30.057 -45.154-11.289L 342.062,132.397c-6.378,10.826 -22.329,13.354 -25.802,0.00L 295.294,44.776c-10.849-27.054 -49.557-8.864 -45.154,10.213l 19.89,81.707c 0.358,2.866 0.179,5.734 -0.537,8.601 0.347,49.784 1.935,100.719 12.364,149.439z" />
241
+ <glyph unicode="&#xe08e;" d="M 97.221,480.00 m0.00,0.00, 177.284,0.00c 18.762-0.935 32.309-16.123 32.534-32.81l0.00-79.406c 17.431-22.697 41.623-38.783 59.141-60.657 6.158-7.72 13.005-13.694 20.541-17.921 27.00-13.744 58.434-5.417 79.957-24.952 16.846-39.257 -6.72-86.285 -43.701-99.533 -30.20-10.413 -60.316-3.435 -86.988,9.512 0.077-46.872 -0.302-93.743 -0.551-140.614 -2.849-38.158 -28.54-65.366 -65.068-65.62 -36.811,0.104 -63.58,31.839 -64.241,65.62l0.00,55.143c-10.845,1.838 -20.678,5.422 -29.501,10.753 -22.675-3.089 -44.905,3.98 -60.933,17.646C-15.186,124.661 62.463,296.123 64.412,360.34l0.00,86.85c 0.894,18.893 16.038,32.584 32.81,32.81 z m 0.00-118.281c-1.106-51.381 -78.787-226.948 32.534-210.094 10.014-18.579 36.815-25.728 53.764-14.337 17.069-17.308 38.513-22.237 55.418-5.514 0.00-16.543 0.092-32.902 0.276-49.077 0.184-16.175 0.276-32.534 0.276-49.077 0.398-18.931 14.288-32.052 30.88-32.258 19.616,0.432 32.058,15.323 32.258,32.258 0.003,64.164 0.545,127.416 0.551,186.934 42.992-5.356 101.37-56.648 135.238-4.274 4.118,8.385 5.866,15.09 4.274,23.849 -0.735,1.47 -1.47,2.298 -2.206,2.481 -0.735,0.184 -1.93,0.46 -3.584,0.827 -34.078,5.566 -68.152,10.761 -90.71,37.221 -22.333,29.125 -57.493,46.299 -71.686,79.681l0.00,1.379z" />
242
+ <glyph unicode="&#xe08d;" d="M 511.999,65.222 511.999,242.505c-0.935,18.762 -16.123,32.309 -32.81,32.534l-79.406,0.00c-22.697,17.431 -38.783,41.623 -60.657,59.141 -7.72,6.158 -13.694,13.005 -17.921,20.541 -13.744,27.00 -5.417,58.434 -24.952,79.957 -39.257,16.846 -86.285-6.72 -99.533-43.701 -10.413-30.20 -3.435-60.316 9.512-86.988 -46.872,0.077 -93.743-0.302 -140.614-0.551 -38.158-2.849 -65.366-28.54 -65.62-65.068 0.104-36.811 31.839-63.58 65.62-64.241l 55.143,0.00c 1.838-10.845 5.422-20.678 10.753-29.501 -3.089-22.675 3.98-44.905 17.646-60.933 7.499-130.88 178.962-53.231 243.179-51.283l 86.85,0.00C 498.083,33.307 511.774,48.451 511.999,65.222 z m -118.281,0.00c-51.381-1.106 -226.948-78.787 -210.094,32.534 -18.579,10.014 -25.728,36.815 -14.337,53.764 -17.308,17.069 -22.237,38.513 -5.514,55.418 -16.543,0.00 -32.902,0.092 -49.077,0.276 -16.175,0.184 -32.534,0.276 -49.077,0.276 -18.931,0.398 -32.052,14.288 -32.258,30.88 0.432,19.616 15.323,32.058 32.258,32.258 64.164,0.003 127.416,0.545 186.934,0.551 -5.356,42.992 -56.648,101.37 -4.274,135.238 8.385,4.118 15.09,5.866 23.849,4.274 1.47-0.735 2.298-1.47 2.481-2.206 0.184-0.735 0.46-1.93 0.827-3.584 5.566-34.078 10.761-68.152 37.221-90.71 29.125-22.333 46.299-57.493 79.681-71.686l 1.379,0.00z" />
243
+ <glyph unicode="&#xe08c;" d="M0.00,65.222 m0.00,0.00,0.00,177.284C 0.935,261.267 16.123,274.814 32.81,275.039l 79.406,0.00c 22.697,17.431 38.783,41.623 60.657,59.141 7.72,6.158 13.694,13.005 17.921,20.541 13.744,27.00 5.417,58.434 24.952,79.957 39.257,16.846 86.285-6.72 99.533-43.701 10.413-30.20 3.435-60.316 -9.512-86.988 46.872,0.077 93.743-0.302 140.614-0.551 38.158-2.849 65.366-28.54 65.62-65.068 -0.104-36.811 -31.839-63.58 -65.62-64.241l-55.143,0.00c-1.838-10.845 -5.422-20.678 -10.753-29.501 3.089-22.675 -3.98-44.905 -17.646-60.933 -7.499-130.88 -178.962-53.231 -243.179-51.283l-86.85,0.00C 13.916,33.307 0.225,48.451 0.00,65.222 z m 118.281,0.00c 51.381-1.106 226.948-78.787 210.094,32.534 18.579,10.014 25.728,36.815 14.337,53.764 17.308,17.069 22.237,38.513 5.514,55.418 16.543,0.00 32.902,0.092 49.077,0.276 16.175,0.184 32.534,0.276 49.077,0.276 18.931,0.398 32.052,14.288 32.258,30.88 -0.432,19.616 -15.323,32.058 -32.258,32.258 -64.164,0.003 -127.416,0.545 -186.934,0.551 5.356,42.992 56.648,101.37 4.274,135.238 -8.385,4.118 -15.09,5.866 -23.849,4.274 -1.47-0.735 -2.298-1.47 -2.481-2.206 -0.184-0.735 -0.46-1.93 -0.827-3.584 -5.566-34.078 -10.761-68.152 -37.221-90.71 -29.125-22.333 -46.299-57.493 -79.681-71.686l-1.379,0.00z" />
244
+ <glyph unicode="&#xe0b5;" d="M 97.221-31.999 m0.00,0.00, 177.284,0.00c 18.762,0.935 32.309,16.123 32.534,32.81l0.00,79.406c 17.431,22.697 41.623,38.783 59.141,60.657 6.158,7.72 13.005,13.694 20.541,17.921 27.00,13.744 58.434,5.417 79.957,24.952 16.846,39.257 -6.72,86.285 -43.701,99.533 -30.20,10.413 -60.316,3.435 -86.988-9.512 0.077,46.872 -0.302,93.743 -0.551,140.614 -2.849,38.158 -28.54,65.366 -65.068,65.62 -36.811-0.104 -63.58-31.839 -64.241-65.62l0.00-55.143c-10.845-1.838 -20.678-5.422 -29.501-10.753 -22.675,3.089 -44.905-3.98 -60.933-17.646 -130.88-7.499 -53.231-178.962 -51.283-243.179l0.00-86.85c 0.894-18.893 16.038-32.584 32.81-32.81 z m 0.00,118.281c-1.106,51.381 -78.787,226.948 32.534,210.094 10.014,18.579 36.815,25.728 53.764,14.337 17.069,17.308 38.513,22.237 55.418,5.514 0.00,16.543 0.092,32.902 0.276,49.077 0.184,16.175 0.276,32.534 0.276,49.077 0.398,18.931 14.288,32.052 30.88,32.258 19.616-0.432 32.058-15.323 32.258-32.258 0.003-64.164 0.545-127.416 0.551-186.934 42.992,5.356 101.37,56.648 135.238,4.274 4.118-8.385 5.866-15.09 4.274-23.849 -0.735-1.47 -1.47-2.298 -2.206-2.481 -0.735-0.184 -1.93-0.46 -3.584-0.827 -34.078-5.566 -68.152-10.761 -90.71-37.221 -22.333-29.125 -57.493-46.299 -71.686-79.681l0.00-1.379z" />
245
+ <glyph unicode="&#xe0b4;" d="M 102.406,441.719 0.00,166.594l 40.969-160.313 430.063,0.00L 512.00,166.594l-102.406,275.125 -307.188,0.00 z M 40.00,141.25l 432.031,0.00 -28.00-109.625 -376.031,0.00 -28.00,109.625 z m 355.938-34.344c-11.31,0.00 -20.469-9.159 -20.469-20.469 0.00-11.31 9.159-20.50 20.469-20.50 11.31,0.00 20.50,9.19 20.50,20.50 0.00,11.31 -9.19,20.469 -20.50,20.469z" />
246
+ <glyph unicode="&#xe0b3;" d="M 448.00,80.00 m0.00,0.00,c0.00,42.667 0.00,85.333 0.00,128.00 0.00,106.032 -85.968,192.00 -192.00,192.00 -106.032,0.00 -192.00-85.968 -192.00-192.00 0.00-42.667 0.00-85.333 0.00-128.00 -4.714-45.613 -62.975-33.684 -64.00,0.00 0.00,42.667 0.00,85.333 0.00,128.00 0.00,141.392 114.624,256.00 256.00,256.00 141.376,0.00 256.00-114.608 256.00-256.00 0.00-42.667 0.00-85.333 0.00-128.00 -4.714-45.613 -62.975-33.684 -64.00,0.00 z m -336.00,96.00 32.00,0.00c 8.832,0.00 16.00-7.152 16.00-16.00l0.00-160.00c0.00-8.848 -7.168-16.00 -16.00-16.00l-32.00,0.00c-8.832,0.00 -16.00,7.152 -16.00,16.00l0.00,160.00c0.00,8.848 7.168,16.00 16.00,16.00 z m 256.00,0.00 32.00,0.00c 8.848,0.00 16.00-7.152 16.00-16.00l0.00-160.00c0.00-8.848 -7.152-16.00 -16.00-16.00l-32.00,0.00c-8.848,0.00 -16.00,7.152 -16.00,16.00l0.00,160.00c0.00,8.848 7.152,16.00 16.00,16.00z" />
247
+ <glyph unicode="&#xe0b2;" d="M 492.298,472.323 m0.00,0.00,c 11.125-12.898 10.76-29.441 0.00-40.494l-69.739-70.302c-12.785-11.177 -28.949-10.69 -39.931,0.00 -10.909,12.546 -10.99,29.923 0.00,40.494L 452.366,472.323c 12.163,10.326 29.485,10.144 39.931,0.00 z M 144.163,161.87c 12.163,10.325 29.485,10.144 39.931,0.00 10.703-12.192 11.201-30.452 0.00-40.494L 56.988-6.854c-12.785-11.177 -28.949-10.69 -39.931,0.00 -10.91,12.546 -10.99,29.923 0.00,40.494 z m 122.606,93.361c-1.018,20.663 -17.645,35.747 -35.995,35.995 -20.379-1.125 -35.738-17.688 -35.995-35.995 -0.87-13.109 -9.37-21.776 -21.372-21.934 -13.269,0.975 -21.225,10.094 -21.372,21.934 0.741,22.039 8.636,41.60 23.059,56.241 16.071,15.05 35.379,22.912 55.679,23.059 22.008-0.715 41.109-8.70 55.679-23.059 15.071-16.17 22.911-35.84 23.059-56.241 -0.87-13.109 -9.37-21.776 -21.372-21.934 -13.269,0.975 -21.225,10.094 -21.372,21.934 z M 230.774,417.769c 43.174-0.926 83.153-18.24 111.358-46.40 29.709-31.487 45.83-72.49 46.118-112.201 -0.891-36.108 -7.284-53.227 -24.184-80.988 -9.224-21.99 -30.497-38.299 -41.90-58.21 -6.464-20.578 -1.705-42.997 -2.531-65.803 -0.308-25.434 -10.267-53.87 -27.839-67.771 -19.687-11.474 -40.236-15.747 -58.21-15.747 -14.951,1.164 -24.442,11.983 -25.308,25.308 -0.486,6.936 2.242,13.418 6.749,17.997 11.328,11.551 22.44,7.178 36.276,10.686 4.996,1.587 12.21,3.481 14.06,8.718 3.184,9.819 3.082,21.838 3.093,30.089 0.933,20.955 -2.996,40.241 1.406,59.897 3.018,12.664 7.981,24.646 15.467,34.307 5.058,6.653 10.844,12.505 15.185,18.279 6.246,7.728 11.307,16.088 16.31,23.903 5.397,8.257 9.624,16.445 14.623,24.465 4.013,11.541 5.593,23.641 5.624,34.87 -1.018,29.66 -11.805,55.942 -31.214,75.644 -21.632,20.232 -47.736,31.013 -75.082,31.214 -29.628-0.992 -55.451-11.868 -75.082-31.214 -20.252-21.731 -31.013-48.196 -31.214-75.644 -1.086-15.149 -11.455-25.682 -25.308-25.871 -15.221,1.142 -25.682,12.031 -25.871,25.871 0.983,43.33 18.19,83.494 46.118,112.201 30.99,30.066 71.846,46.112 111.358,46.40z" />
248
+ <glyph unicode="&#xe0b1;" d="M 480.13,377.844 m0.00,0.00,c 22.24-68.717 3.628-138.642 -35.596-191.326 -25.89-35.727 -56.832-66.518 -88.465-93.438 -29.104-27.09 -94.233-80.695 -111.498-82.184 -15.259,2.917 -32.38,20.171 -44.495,29.052C 132.007,91.694 58.731,154.621 21.577,223.422 -9.574,289.475 -9.631,371.174 38.851,421.815c 62.865,56.674 157.641,45.599 205.72-13.61 12.912,16.751 28.791,29.925 47.635,39.521 76.393,30.493 155.866-0.579 187.923-69.883z" />
249
+ <glyph unicode="&#xe0b0;" d="M 256.259,477.406C 114.874,477.406 0.259,362.791 0.259,221.406C 0.259,80.021 114.874-34.594 256.259-34.594C 397.644-34.594 512.259,80.021 512.259,221.406C 512.259,362.791 397.644,477.406 256.259,477.406 z M 312.916,330.845C 343.335,331.32 370.846,314.782 383.886,286.59C 395.95,249.317 385.854,211.401 364.58,182.825C 350.537,163.447 333.754,146.735 316.596,132.134C 300.81,117.44 265.478,88.362 256.114,87.554C 247.837,89.137 238.546,98.51 231.976,103.327C 195.054,131.394 155.318,165.511 135.165,202.829C 118.269,238.656 118.238,282.984 144.535,310.452C 178.633,341.192 230.035,335.175 256.114,303.06C 263.117,312.145 271.732,319.301 281.953,324.507C 292.312,328.641 302.776,330.686 312.916,330.845z" />
250
+ <glyph unicode="&#xe0e1;" d="M 338.864,461.206 m0.00,0.00,c-19.667-0.202 -39.839-4.042 -59.575-11.921l-0.896-0.381 -0.896-0.462c-12.511-6.371 -23.914-14.342 -34.05-23.787 -54.554,47.184 -141.406,50.608 -200.827-2.959l-0.597-0.543 -0.543-0.571c-52.125-54.445 -50.904-138.294 -19.659-204.547l 0.272-0.516 0.272-0.543c 36.799-68.143 105.514-126.044 168.133-173.646l 0.163-0.135 0.135-0.109c 4.029-2.954 10.956-9.059 18.953-15.07 7.998-6.01 17.03-12.597 30.249-15.124l 2.959-0.571 2.987,0.244c 13.873,1.196 19.315,6.319 28.43,12.056 9.114,5.738 19.204,13.02 29.57,20.989 20.435,15.71 41.579,33.817 55.501,46.731 0.179,0.166 0.475,0.405 0.652,0.571 0.029,0.025 0.052,0.057 0.081,0.081 29.329,25.027 58.381,53.878 83.008,87.814 0.008,0.01 0.02,0.017 0.027,0.027 0.047,0.062 0.09,0.128 0.135,0.19 39.059,52.588 58.006,123.456 35.408,193.278l-0.407,1.249 -0.543,1.168C 452.435,429.574 397.864,461.812 338.864,461.206 z m 0.706-42.957c 42.51,0.978 79.771-21.784 98.268-60.715 17.092-54.502 2.317-110.033 -29.516-152.792l-0.081-0.109 -0.081-0.109c-22.176-30.602 -49.033-57.389 -76.871-81.08l-0.353-0.326 -0.353-0.326c-12.536-11.669 -33.754-29.846 -53.139-44.749 -9.693-7.452 -18.984-14.11 -26.203-18.654 -2.714-1.709 -5.295-2.874 -7.413-3.774 -2.227,1.216 -5.052,2.929 -7.983,5.132 -5.903,4.435 -12.187,10.098 -19.035,15.152 -0.107,0.081 -0.219,0.163 -0.326,0.244C 155.713,122.366 91.702,178.49 60.921,235.073 35.932,288.459 37.023,352.357 72.326,389.901 120.327,432.582 191.642,423.302 227.208,379.502l 17.324-21.316 16.754,21.75c 9.639,12.505 21.144,22.067 35.109,29.326 14.639,5.718 29.183,8.666 43.174,8.988z" />
251
+ <glyph unicode="&#xe0e0;" d="M 256.00,480.00 m0.00,0.00,-231.832-180.191 0.00-331.809 159.50,0.00 0.00,200.303 144.663,0.00 0.00-200.303 159.50,0.00 0.00,331.809L 256.00,480.00z" />
252
+ <glyph unicode="&#xe0df;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 256.00,362.031L 381.00,264.875L 381.00,85.969L 295.00,85.969L 295.00,193.969L 217.00,193.969L 217.00,85.969L 131.00,85.969L 131.00,264.875L 256.00,362.031z" />
253
+ <glyph unicode="&#xe0de;" d="M 309.867,3.746 m0.00,0.00,c 2.20,0.00 4.125-0.825 5.774-2.475 1.65-1.65 2.475-3.575 2.475-5.774l0.00-18.698c0.00-2.567 -0.825-4.675 -2.475-6.324 -1.65-1.65 -3.575-2.475 -5.774-2.475l-107.24,0.00c-5.866,0.00 -8.799,2.933 -8.799,8.799l0.00,18.698c0.00,2.20 0.825,4.125 2.475,5.774 1.65,1.65 3.758,2.475 6.324,2.475 z m 0.00,53.345c 2.20,0.00 4.125-0.825 5.774-2.475 1.65-1.65 2.475-3.758 2.475-6.324l0.00-18.698c0.00-2.20 -0.825-4.125 -2.475-5.774 -1.65-1.65 -3.575-2.475 -5.774-2.475l-107.24,0.00c-2.567,0.00 -4.675,0.825 -6.324,2.475 -1.65,1.65 -2.475,3.575 -2.475,5.774l0.00,18.698c0.00,5.866 2.933,8.799 8.799,8.799 z m 110.539,170.483 0.00,0.00 45.646-7.149c 4.766-0.733 8.616-2.842 11.549-6.324 2.933-3.483 4.033-7.241 3.30-11.274 -0.733-4.40 -2.933-7.791 -6.599-10.174 -3.667-2.383 -8.066-3.208 -13.199-2.475l-45.645,7.149c-5.133,0.733 -9.074,2.933 -11.824,6.599 -2.75,3.667 -3.758,7.516 -3.025,11.549 0.733,4.033 2.933,7.241 6.599,9.624 3.667,2.383 8.066,3.208 13.199,2.475 z m -4.949,103.94 0.00,0.00 42.346,18.698c 4.40,2.20 8.707,2.658 12.924,1.375 4.216-1.288 7.241-3.946 9.074-7.974 1.833-4.035 1.833-8.068 0.00-12.099 -1.833-4.033 -5.133-6.966 -9.899-8.799l-42.346-19.248c-4.40-1.833 -8.707-2.108 -12.924-0.825 -4.216,1.285 -7.241,3.943 -9.074,7.974 -1.833,4.035 -1.742,8.068 0.275,12.099 2.017,4.035 5.224,6.968 9.624,8.799 z m -71.493,70.393 0.00,0.00 25.297,39.046c 2.933,4.033 6.508,6.691 10.724,7.974 4.223,1.283 8.164,0.825 11.824-1.375 3.667-2.567 5.774-6.049 6.324-10.449 0.55-4.40 -0.458-8.616 -3.025-12.649l-25.297-39.046c-2.933-4.038 -6.508-6.696 -10.724-7.974 -4.216-1.283 -8.157-0.825 -11.824,1.375 -3.667,2.20 -5.866,5.591 -6.599,10.174 -0.733,4.583 0.367,8.891 3.30,12.924 z m -251.875-174.333c 4.766,0.733 9.074-0.092 12.924-2.475 3.85-2.383 6.141-5.591 6.874-9.624 0.733-4.033 -0.367-7.882 -3.30-11.549 -2.933-3.667 -6.966-5.866 -12.099-6.599l-45.645-7.149c-4.766-0.733 -9.074,0.092 -12.924,2.475 -3.85,2.383 -6.141,5.774 -6.874,10.174 -0.733,4.034 0.367,7.792 3.30,11.274 2.933,3.485 6.966,5.592 12.099,6.324 z m 4.949,103.94c 4.40-1.833 7.607-4.766 9.624-8.799 2.021-4.033 2.112-8.066 0.275-12.099 -1.833-4.033 -4.949-6.691 -9.349-7.974 -4.40-1.283 -8.799-1.008 -13.199,0.825l-42.346,19.248c-4.40,1.835 -7.607,4.768 -9.624,8.799 -2.017,4.033 -2.109,8.066 -0.275,12.099 1.833,4.033 4.858,6.691 9.074,7.974 4.216,1.283 8.707,0.825 13.474-1.375 z m 70.943,70.393c 2.933-4.035 4.033-8.343 3.30-12.924 -0.733-4.583 -2.933-7.974 -6.599-10.174 -3.30-2.20 -7.149-2.658 -11.549-1.375 -4.40,1.283 -7.882,3.942 -10.449,7.974l-25.297,39.046c-2.933,4.033 -4.033,8.249 -3.30,12.649 0.733,4.40 2.933,7.882 6.599,10.449 3.30,2.20 7.149,2.658 11.549,1.375 4.40-1.289 7.882-3.947 10.449-7.974 z m 103.94,14.299c0.00-5.133 -1.467-9.349 -4.40-12.649 -2.933-3.30 -6.599-4.949 -10.999-4.949 -4.033,0.00 -7.516,1.65 -10.449,4.949 -2.933,3.30 -4.40,7.516 -4.40,12.649l0.00,46.196c0.00,5.133 1.467,9.349 4.40,12.649 2.933,3.30 6.416,4.949 10.449,4.949 4.40,0.00 8.066-1.65 10.999-4.949 2.933-3.30 4.40-7.516 4.40-12.649 z m 88.816-218.054c-7.149-14.848 -14.94-30.705 -23.373-47.57 -13.303-21.517 -12.631-46.971 -20.898-69.018 -1.467-3.85 -4.216-6.141 -8.249-6.874l-104.49,0.00c-4.033,0.733 -6.782,3.025 -8.249,6.874 -6.372,24.081 -10.241,47.532 -20.898,69.018 -8.432,16.865 -16.223,32.722 -23.373,47.57 -16.484,36.439 -25.095,78.606 -8.249,116.314 6.049,13.199 14.482,24.381 25.297,33.547 10.816,9.166 23.648,16.04 38.496,20.623 14.848,4.583 31.072,6.874 48.67,6.874l 0.55,0.00 0.55,0.00c 17.598,0.00 33.822-2.292 48.67-6.874 14.848-4.583 27.68-11.457 38.496-20.623 10.816-9.166 19.34-20.348 25.573-33.547 15.792-39.559 9.336-78.805 -8.524-116.314z" />
254
+ <glyph unicode="&#xe0f9;" d="M 256.00,480.00 m0.00,0.00,c-141.385,0.00 -256.00-114.615 -256.00-256.00 0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00 0.00,141.385 -114.615,256.00 -256.00,256.00 z m 0.00-95.757c 0.167,0.009 0.332,0.00 0.502,0.00 2.731,0.00 4.956-1.105 6.663-3.323 1.706-2.219 2.561-4.855 2.561-7.927l0.00-28.677c0.00-3.072 -0.855-5.725 -2.561-7.943 -1.704-2.219 -3.93-3.323 -6.663-3.323 -2.731,0.00 -5.028,1.105 -6.906,3.323 -1.877,2.219 -2.821,4.871 -2.821,7.943l0.00,28.677c0.00,3.072 0.943,5.708 2.821,7.927 1.76,2.08 3.893,3.193 6.403,3.323 z m -80.324-19.113c 0.976,0.032 1.975-0.085 2.999-0.34 2.731-0.682 4.956-2.392 6.663-5.123l 15.368-24.576c 1.706-2.731 2.384-5.367 2.042-7.927 -0.342-2.56 -1.535-4.697 -3.583-6.403 -2.389-1.699 -4.953-2.127 -7.684-1.281 -2.729,0.854 -4.955,2.651 -6.663,5.382l-15.87,24.057c-1.706,2.729 -2.295,5.471 -1.783,8.203 0.512,2.726 1.794,4.935 3.842,6.646 1.493,0.853 3.042,1.308 4.669,1.362 z m 160.632,0.00c 1.627-0.053 3.192-0.508 4.685-1.362 4.776-3.755 5.453-8.705 2.042-14.849L 327.165,324.863c-1.706-2.731 -3.932-4.529 -6.663-5.382 -2.731-0.854 -5.294-0.426 -7.684,1.281 -2.048,1.706 -3.241,3.843 -3.583,6.403 -0.344,2.56 0.35,5.197 2.059,7.927l 15.352,24.576c 1.702,2.728 3.927,4.438 6.663,5.123 1.024,0.256 2.023,0.372 2.999,0.34 z m -80.827-46.411 0.519,0.00c 10.921,0.00 21.073-1.459 30.46-4.361 9.386-2.901 17.488-7.158 24.316-12.79 6.827-5.632 12.204-12.63 16.13-20.993 10.617-23.192 4.764-50.422 -5.382-72.965 -4.435-9.216 -9.386-19.117 -14.849-29.698 -3.409-7.168 -5.795-13.562 -7.165-19.194 -1.818-7.532 -2.877-16.247 -5.625-24.332 -1.024-2.389 -2.733-3.744 -5.123-4.085l-65.54,0.00c-2.731,0.341 -4.512,1.696 -5.366,4.085 -2.769,7.857 -3.532,16.061 -5.901,24.332 -1.365,5.632 -3.752,12.025 -7.165,19.194 -5.12,10.582 -9.893,20.482 -14.33,29.698 -15.385,32.31 -16.985,66.701 10.488,93.957 14.507,11.434 32.687,17.151 54.533,17.151 z m -130.659-14.622c 1.773,0.013 3.513-0.395 5.22-1.248l 26.116-11.785c 2.731-1.365 4.778-3.236 6.144-5.625 1.365-2.389 1.365-4.953 0.00-7.684 -1.024-2.389 -2.911-4.01 -5.641-4.863 -2.729-0.854 -5.454-0.604 -8.186,0.762l-26.618,11.785c-2.731,1.365 -4.706,3.325 -5.901,5.885 -1.194,2.56 -1.267,5.035 -0.243,7.425 1.024,2.389 2.983,4.009 5.885,4.863 1.088,0.32 2.162,0.478 3.226,0.486 z m 261.82,0.00c 1.237,0.051 2.475-0.113 3.745-0.486 2.901-0.854 4.877-2.474 5.901-4.863 1.024-2.389 0.935-4.864 -0.259-7.425 -1.194-2.56 -3.154-4.519 -5.885-5.885l-26.634-11.785c-2.731-1.365 -5.456-1.615 -8.186-0.762 -2.731,0.85 -4.601,2.471 -5.625,4.863 -1.365,2.731 -1.365,5.294 0.00,7.684 1.365,2.387 3.413,4.258 6.144,5.625l 26.099,11.785c 1.536,0.768 3.111,1.182 4.701,1.248 z m -231.327-77.747c 2.176,0.096 4.173-0.437 5.966-1.589 2.389-1.536 3.921-3.673 4.604-6.403 0.342-2.731 -0.424-5.117 -2.302-7.165 -1.877-2.048 -4.353-3.419 -7.425-4.101l-28.677-4.604c-3.072-0.342 -5.709,0.263 -7.927,1.799 -2.219,1.536 -3.678,3.673 -4.361,6.403 -0.682,2.731 -0.005,5.117 2.042,7.165 2.048,2.048 4.451,3.241 7.181,3.583l 28.661,4.604c 0.768,0.171 1.512,0.276 2.237,0.308 z m 200.284,0.00c 1.056,0.056 2.155-0.052 3.307-0.308l 28.677-4.604c 2.731-0.342 5.117-1.535 7.165-3.583 2.048-2.048 2.725-4.435 2.042-7.165 -0.682-2.731 -2.126-4.867 -4.345-6.403 -2.219-1.536 -4.871-2.141 -7.943-1.799l-28.661,4.604c-3.072,0.682 -5.547,2.053 -7.425,4.101 -1.877,2.048 -2.66,4.435 -2.318,7.165 0.682,2.731 2.231,4.867 4.62,6.403 1.493,0.96 3.119,1.495 4.879,1.589 z m -133.398-107.315 67.583,0.00c 3.413,0.00 5.123-1.709 5.123-5.123l0.00-11.769c0.00-3.413 -1.709-5.123 -5.123-5.123l-67.583,0.00c-3.413,0.00 -5.123,1.709 -5.123,5.123l0.00,11.769c0.00,3.413 1.709,5.123 5.123,5.123 z m 0.00-32.762 67.583,0.00c 3.413,0.00 5.123-1.887 5.123-5.641l0.00-11.769c0.00-3.413 -1.709-5.123 -5.123-5.123l-67.583,0.00c-3.413,0.00 -5.123,1.709 -5.123,5.123l0.00,11.769c0.00,3.755 1.709,5.641 5.123,5.641z" />
255
+ <glyph unicode="&#xe0f8;" d="M 204.00,480.00L 204.00,360.531L 143.281,360.531L 256.00,191.437L 368.719,360.531L 308.00,360.531L 308.00,480.00L 204.00,480.00 z M 0.00,214.719L0.00-32.00L 512.00-32.00L 512.00,214.719L 343.813,214.719C 343.813,166.238 304.481,126.906 256.00,126.906C 207.519,126.906 168.188,166.238 168.188,214.719L0.00,214.719z" />
256
+ <glyph unicode="&#xe0f7;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C 0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 224.75,387.812L 287.25,387.812L 287.25,316.031L 323.719,316.031L 256.00,214.437L 188.281,316.031L 224.75,316.031L 224.75,387.812 z M 102.188,228.437L 203.25,228.437C 203.25,199.311 226.873,175.656 256.00,175.656C 285.127,175.656 308.75,199.311 308.75,228.437L 409.813,228.437L 409.813,80.187L 102.188,80.187L 102.188,228.437z" />
257
+ <glyph unicode="&#xe0f6;" d="M 40.00,208.00 m0.00,0.00, 118.544,160.00 194.912,0.00 118.544-160.00 -88.00,0.00 -64.00-64.00 -128.00,0.00 -64.00,64.00 -88.00,0.00 z m 100.496,192.00 -140.496-192.00 0.00-160.00 512.00,0.00 0.00,160.00 -140.496,192.00 -231.008,0.00z" />
258
+ <glyph unicode="&#xe08b;" d="M 512.00,437.234 m0.00,0.00,0.00-75.156 -512.00,0.00 0.00,75.125 512.00,0.031 z m -512.00-117.125 144.188-96.125 -144.188-96.125 0.00,192.25 z m 512.00-0.563 0.00-74.906 -296.00,0.00 0.00,74.906 296.00,0.00 z m 0.00-116.781 0.00-74.906 -296.00,0.00 0.00,74.906 296.00,0.00 z m -512.00-116.875 512.00-0.031 0.00-75.094 -512.00,0.00 0.00,75.125z" />
259
+ <glyph unicode="&#xe08a;" d="M 0.00,437.25L 0.00,362.094L 512.00,362.094L 512.00,437.219L 0.00,437.25 z M 512.00,320.125L 367.813,224.00L 512.00,127.875L 512.00,320.125 z M 0.00,319.562L 0.00,244.656L 296.00,244.656L 296.00,319.562L 0.00,319.562 z M 0.00,202.781L 0.00,127.875L 296.00,127.875L 296.00,202.781L 0.00,202.781 z M 512.00,85.906L 0.00,85.875L 0.00,10.781L 512.00,10.781L 512.00,85.906z" />
260
+ <glyph unicode="&#xe089;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 247.969,392.156C 259.699,392.156 269.251,388.993 276.625,382.625C 283.998,376.257 287.687,367.859 287.688,357.469C 287.687,347.078 283.998,338.712 276.625,332.344C 269.251,325.975 259.699,322.781 247.969,322.781C 236.238,322.781 226.686,325.975 219.313,332.344C 212.274,338.712 208.75,347.078 208.75,357.469C 208.75,367.859 212.274,376.257 219.313,382.625C 226.686,388.993 236.238,392.156 247.969,392.156 z M 284.656,280.062L 294.719,268.50C 289.356,254.423 286.656,238.843 286.656,221.75L 286.656,98.562C 286.656,94.205 287.017,91.207 287.688,89.531C 288.693,87.855 290.867,86.176 294.219,84.50C 300.252,80.813 309.113,77.289 320.844,73.937L 317.344,55.844C 288.52,58.86 268.231,60.344 256.50,60.344C 244.769,60.344 224.676,58.86 196.188,55.844L 192.156,73.937C 204.222,76.619 213.115,79.978 218.813,84.00C 223.84,87.016 226.344,91.859 226.344,98.562L 226.344,224.25C 226.344,235.981 221.799,241.844 212.75,241.844L 195.156,238.344L 191.156,258.437C 203.222,263.465 219.132,268.339 238.906,273.031C 258.681,277.723 273.931,280.062 284.656,280.062z" />
261
+ <glyph unicode="&#xe088;" d="M0.00,480.00L0.00,333.969L 151.563,333.969C 174.879,363.873 211.393,383.156 252.469,383.156C 293.547,383.156 330.09,363.876 353.406,333.969L 512.00,333.969L 512.00,480.00L0.00,480.00 z M 409.719,458.281L 457.594,458.281C 474.637,458.281 488.344,444.544 488.344,427.50L 488.344,387.406C 488.344,370.362 474.637,356.625 457.594,356.625L 409.719,356.625C 392.675,356.625 378.969,370.362 378.969,387.406L 378.969,427.50C 378.969,444.544 392.675,458.281 409.719,458.281 z M 56.219,457.812L 73.688,457.812L 73.688,356.594L 56.219,356.594L 56.219,457.812 z M 86.25,457.812L 104.25,457.812L 104.25,356.594L 86.25,356.594L 86.25,457.812 z M 116.813,457.812L 134.281,457.812L 134.281,427.50L 134.281,386.375L 134.281,356.594L 116.813,356.594L 116.813,457.812 z M 43.125,455.094L 43.125,356.594L 25.094,356.594L 25.094,427.50C 25.094,433.631 26.824,439.227 30.281,444.281C 33.738,449.332 38.031,452.929 43.125,455.094 z M 252.281,368.656C 190.175,368.656 139.813,318.52 139.813,256.719C 139.813,194.917 190.175,144.812 252.281,144.812C 314.388,144.812 364.75,194.917 364.75,256.719C 364.75,318.52 314.388,368.656 252.281,368.656 z M 252.281,345.937C 301.802,345.937 341.938,305.997 341.938,256.719C 341.938,207.441 301.802,167.50 252.281,167.50C 202.76,167.50 162.625,207.441 162.625,256.719C 162.625,305.997 202.76,345.937 252.281,345.937 z M 0.00,313.281L0.00-32.00L 512.00-32.00L 512.00,313.281L 366.563,313.281C 375.15,296.277 379.969,277.06 379.969,256.75C 379.969,186.95 322.879,130.375 252.469,130.375C 182.058,130.375 125.00,186.95 125.00,256.75C 125.00,277.065 129.846,296.274 138.438,313.281L0.00,313.281z" />
262
+ <glyph unicode="&#xe087;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 167.344,333.719L 344.625,333.719C 356.557,332.911 365.56,324.229 365.719,313.219L 365.719,135.344C 364.873,122.945 355.853,114.432 344.625,114.281L 167.344,114.281C 154.953,115.126 146.432,124.126 146.281,135.344L 146.281,313.219C 146.965,325.093 156.85,333.578 167.344,333.719 z M 197.188,293.344C 190.825,293.186 186.723,288.29 186.656,282.781L 186.656,165.781C 186.821,159.43 191.694,155.285 197.188,155.219L 314.781,155.219C 321.146,155.384 325.278,160.276 325.344,165.781L 325.344,282.781C 325.188,289.158 320.302,293.278 314.781,293.344L 197.188,293.344z" />
263
+ <glyph unicode="&#xe086;" d="M 246.741,4.351 m0.00,0.00, 65.157,0.00 -7.202-36.351 -199.93,0.00 7.202,36.351 65.157,0.00 87.791,438.955 -65.157,0.00 7.545,36.694 199.93,0.00 -7.545-36.694 -65.157,0.00 -87.791-438.955" />
264
+ <glyph unicode="&#xe085;" d="M 140.058,366.928 m0.00,0.00,c-77.348,0.00 -140.058-62.694 -140.058-140.042 0.00-77.348 62.71-140.058 140.058-140.058 69.001,0.00 126.329,49.903 137.901,115.585 0.131-0.007 0.258-0.027 0.389-0.032l 53.925,0.00 0.00-77.849 59.536,0.00 0.00,77.849 28.073,0.00 0.00-112.669 59.536,0.00 0.00,112.67 32.582,0.00 0.00,59.535 -235.906,0.00c-0.138-0.011 -0.269-0.021 -0.405-0.032 -15.541,60.409 -70.368,105.043 -135.631,105.043 z m 0.00-64.791c 41.563,0.00 75.251-33.688 75.251-75.251 0.00-41.563 -33.688-75.267 -75.251-75.267 -41.563,0.00 -75.267,33.704 -75.267,75.267 0.00,41.563 33.704,75.251 75.267,75.251z" />
265
+ <glyph unicode="&#xe084;" d="M 51.313,406.437L 51.313,138.469L 460.688,138.469L 460.688,406.437L 51.313,406.437 z M 102.094,357.594L 409.906,357.594L 409.906,187.281L 102.094,187.281L 102.094,357.594 z M 0.00,114.094L0.00,68.781L 26.00,41.812L 486.00,41.812L 512.00,68.781L 512.00,114.094L0.00,114.094 z M 208.531,99.25L 303.469,99.25L 303.469,58.219L 208.531,58.219L 208.531,99.25z" />
266
+ <glyph unicode="&#xe083;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 123.719,341.812L 388.281,341.812L 388.281,168.656L 123.719,168.656L 123.719,341.812 z M 156.531,310.25L 156.531,200.187L 355.469,200.187L 355.469,310.25L 156.531,310.25 z M 90.563,152.906L 421.438,152.906L 421.438,123.625L 404.625,106.187L 107.375,106.187L 90.563,123.625L 90.563,152.906 z M 225.313,143.312L 225.313,116.781L 286.688,116.781L 286.688,143.312L 225.313,143.312z" />
267
+ <glyph unicode="&#xe082;" d="M 48.83,168.624 m0.00,0.00,c-2.767,6.67 -6.211,13.299 -7.219,20.494C 28.337,281.885 104.025,357.099 172.72,385.666c 68.696,28.567 147.792-16.876 194.685,31.904 11.715,13.229 23.639,25.756 41.452,25.849 7.425-0.369 13.608-3.858 16.767-10.013 58.615-120.055 -25.129-262.407 -119.699-312.986 -60.015-29.665 -122.117-36.191 -180.247-16.069 -16.164,3.834 -29.121,20.74 -45.877,20.959 -11.555-6.483 -21.152-27.607 -28.993-39.24 -9.134-15.852 -27.319-20.042 -40.405-6.171 -38.165,37.612 41.148,70.992 38.424,88.726 z m 51.00,15.37c 8.197-6.622 20.021-4.745 26.315,1.863 50.328,60.978 118.475,87.73 192.59,85.699 10.922-0.634 18.859,8.21 19.562,17.699 0.219,11.268 -8.452,18.888 -18.165,19.562 -89.577,4.979 -167.291-34.518 -222.165-98.274 -6.951-8.679 -5.689-20.228 1.863-26.548z" />
268
+ <glyph unicode="&#xe081;" d="M0.00,480.00L0.00-32.00L 512.00-32.00L 512.00,480.00L0.00,480.00 z M 125.563,379.344C 145.842,379.115 165.818,365.125 166.688,340.906C 167.121,319.37 148.353,302.966 125.031,302.469L 124.469,302.469C 104.391,302.701 84.784,317.042 83.875,340.906C 84.161,362.203 102.063,378.839 125.563,379.344 z M 343.125,277.594C 365.421,277.456 386.463,270.841 403.75,253.219C 421.716,233.183 427.483,205.556 428.125,177.469L 428.125,49.719L 354.50,49.719L 354.50,168.781C 354.337,191.097 346.692,218.222 317.156,219.125C 299.846,218.941 287.64,208.882 279.281,192.062C 277.00,186.649 276.671,180.426 276.563,174.219L 276.563,49.719L 202.969,49.719C 203.25,111.959 203.637,174.196 203.50,236.437C 203.50,254.118 203.33,266.023 202.969,272.156L 276.563,272.156L 276.563,240.781C 282.809,249.666 289.737,258.092 299.031,264.875C 311.637,273.871 326.779,277.32 343.125,277.594 z M 88.219,272.156L 161.813,272.156L 161.813,49.719L 88.219,49.719L 88.219,272.156z" />
269
+ <glyph unicode="&#xe080;" d="M 0.00,60.204 m0.00,0.00, 92.202,0.00 0.00-92.202 -92.202,0.00 z m 0.00,0.00 92.202,0.00 0.00-92.202 -92.202,0.00 z m 0.00,139.932 92.202,0.00 0.00-92.202 -92.202,0.00 z m 0.00,139.932 92.202,0.00 0.00-92.202 -92.202,0.00 z m 0.00,139.932 92.202,0.00 0.00-92.202 -92.202,0.00 z m 135.506-419.796 376.492,0.00 0.00-92.202 -376.492,0.00 z m 0.00,0.00 376.492,0.00 0.00-92.202 -376.492,0.00 z m 0.00,139.932 376.492,0.00 0.00-92.202 -376.492,0.00 z m 0.00,139.932 376.492,0.00 0.00-92.202 -376.492,0.00 z m 0.00,139.932 376.492,0.00 0.00-92.202 -376.492,0.00z" />
270
+ <glyph unicode="&#xe07f;" d="M 256.00,480.00C 228.195,480.00 206.781,456.801 206.781,429.062C 206.781,402.345 206.594,378.969 206.594,378.969L 157.156,378.969C 156.226,378.969 155.326,378.866 154.438,378.719L 140.688,378.719L 140.688,362.531L 140.688,330.687L 371.313,330.687L 371.313,362.531L 371.313,378.719L 357.563,378.719C 356.675,378.866 355.774,378.969 354.844,378.969L 305.406,378.969C 305.406,378.969 305.969,400.13 305.969,428.906C 305.969,455.624 283.805,480.00 256.00,480.00 z M 74.75,431.281L 74.75-32.00L 437.25-32.00L 437.25,431.281L 322.406,431.281L 322.406,397.719L 404.063,397.719L 404.063,1.625L 107.969,1.625L 107.969,397.719L 189.594,397.719L 189.594,431.281L 74.75,431.281 z M 256.00,430.656C 265.109,430.656 272.469,423.326 272.469,414.25C 272.469,405.157 265.109,397.812 256.00,397.812C 246.891,397.812 239.531,405.157 239.531,414.25C 239.531,423.326 246.891,430.656 256.00,430.656 z M 140.688,298.125L 140.688,281.687L 157.156,281.687L 157.156,298.125L 140.688,298.125 z M 190.125,297.812L 190.125,281.375L 371.313,281.375L 371.313,297.812L 190.125,297.812 z M 140.688,236.125L 140.688,219.687L 157.156,219.687L 157.156,236.125L 140.688,236.125 z M 190.125,235.812L 190.125,219.344L 371.313,219.344L 371.313,235.812L 190.125,235.812 z M 140.688,174.125L 140.688,157.687L 157.156,157.687L 157.156,174.125L 140.688,174.125 z M 190.125,173.781L 190.125,157.344L 371.313,157.344L 371.313,173.781L 190.125,173.781 z M 140.688,112.094L 140.688,95.656L 157.156,95.656L 157.156,112.094L 140.688,112.094 z M 190.125,111.75L 190.125,95.312L 371.313,95.312L 371.313,111.75L 190.125,111.75 z M 140.688,50.094L 140.688,33.656L 157.156,33.656L 157.156,50.094L 140.688,50.094 z M 190.125,49.75L 190.125,33.312L 371.313,33.312L 371.313,49.75L 190.125,49.75z" />
271
+ <glyph unicode="&#xe07e;" d="M 252.475,480.00 m0.00,0.00,c-63.719,0.304 -119.666-37.902 -146.694-97.598 -13.901-33.146 -13.075-78.54 -12.43-118.18l-71.052,0.00 0.00-295.918 467.098,0.00 0.00,295.918 -77.267,0.00 0.00,56.123c0.00,22.002 -4.53,42.311 -12.992,62.057C 374.398,439.093 316.194,479.696 252.475,480.00 z m 0.00-94.225c 37.222-0.988 64.372-28.977 65.992-64.868l0.00-0.562 0.00-56.123 -131.453,0.00 0.00,56.123c 3.513,39.07 28.239,66.418 65.461,65.43z" />
272
+ <glyph unicode="&#xe07d;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 254.156,362.812C 288.728,362.648 320.327,340.602 333.75,309.844C 338.341,299.131 340.781,288.125 340.781,276.187L 340.781,245.75L 382.719,245.75L 382.719,85.187L 129.281,85.187L 129.281,245.75L 167.844,245.75C 167.494,267.257 167.052,291.86 174.594,309.844C 189.258,342.232 219.585,362.977 254.156,362.812 z M 252.281,311.687C 233.132,311.284 220.503,296.723 218.656,276.187L 218.656,245.75L 289.969,245.75L 289.969,276.187L 289.969,276.50C 289.09,295.973 274.352,311.151 254.156,311.687C 253.525,311.704 252.899,311.701 252.281,311.687z" />
273
+ <glyph unicode="&#xe07c;" d="M 255.639,480.00C 124.306,480.00 17.444,379.523 17.444,256.004C 17.444,249.526 17.737,242.976 18.318,236.469L 22.999,138.014L 173.505,150.372L 168.824,248.764C 168.621,251.117 168.481,253.593 168.481,256.004C 168.481,301.205 207.591,337.951 255.639,337.951C 303.687,337.951 342.797,301.176 342.797,256.004C 342.797,253.593 342.686,251.146 342.454,248.764L 337.804,150.372L 488.279,138.014L 492.96,236.469C 493.541,242.976 493.834,249.526 493.834,256.004C 493.834,379.523 386.972,480.00 255.639,480.00 z M 332.187,91.58L 323.137-3.942C 322.324-12.947 329.464-20.914 339.021-21.698L 454.764-31.184C 464.292-31.969 472.799-25.305 473.612-16.299L 482.693,79.16L 332.187,91.58 z M 179.028,91.517L 28.585,79.129L 37.634-16.299C 38.477-25.305 46.986-32.00 56.514-31.216L 172.257-21.729C 181.785-20.945 188.952-12.949 188.109-3.973L 179.028,91.517z" />
274
+ <glyph unicode="&#xe07b;" d="M 310.399,480.00 m0.00,0.00,0.00-71.288 77.801,0.00 -102.553-101.87c-28.776,18.622 -63.076,29.428 -99.904,29.428 -101.694,0.00 -184.143-82.433 -184.143-184.127 0.00-101.694 82.449-184.143 184.143-184.143 101.694,0.00 184.127,82.449 184.127,184.143 0.00,38.654 -11.906,74.526 -32.256,104.145l 100.83,100.83 0.00-77.119 71.288,0.00c0.00,62.496 0.677,137.667 0.666,200.00 z M 185.744,262.154c 60.763,0.00 110.011-49.249 110.011-110.011 0.00-60.763 -49.249-110.028 -110.011-110.028 -60.763,0.00 -110.028,49.265 -110.028,110.028 0.00,60.763 49.265,110.011 110.028,110.011z" />
275
+ <glyph unicode="&#xe07a;" d="M 256.00,480.00 m0.00,0.00,c-106.591,0.00 -193.00-86.409 -193.00-193.00 0.00-35.647 6.977-72.464 27.00-99.00l 166.00-220.00 166.00,220.00c 18.187,24.103 27.00,66.712 27.00,99.00 0.00,106.591 -86.409,193.00 -193.00,193.00 z m 0.00-111.781c 44.849,0.00 81.219-36.369 81.219-81.219 0.00-44.849 -36.369-81.219 -81.219-81.219 -44.849,0.00 -81.219,36.369 -81.219,81.219 0.00,44.849 36.369,81.219 81.219,81.219z" />
276
+ <glyph unicode="&#xe079;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 256.00,393.281C 326.479,393.281 383.625,336.135 383.625,265.656C 383.625,244.307 377.775,216.124 365.75,200.187L 256.00,54.719L 146.25,200.187C 133.011,217.733 128.375,242.086 128.375,265.656C 128.375,336.135 185.521,393.281 256.00,393.281 z M 256.00,319.344C 226.345,319.344 202.313,295.311 202.313,265.656C 202.313,236.001 226.345,211.969 256.00,211.969C 285.655,211.969 309.688,236.001 309.688,265.656C 309.688,295.311 285.655,319.344 256.00,319.344z" />
277
+ <glyph unicode="&#xe078;" d="M 242.188,480.00C 229.12,478.981 216.309,476.471 203.906,472.719L 203.906,404.062L 175.781,404.062L 175.781,461.594C 163.287,455.409 151.441,447.938 140.688,439.062C 140.631,439.016 140.588,438.953 140.531,438.906L 140.531,158.469C 140.588,158.422 140.631,158.36 140.688,158.312C 173.315,131.285 214.578,116.83 256.00,116.75C 298.382,116.766 339.33,131.916 371.313,158.312C 371.37,158.36 371.413,158.422 371.469,158.469L 371.469,438.906C 371.412,438.953 371.369,439.016 371.313,439.062C 360.632,447.91 348.952,455.254 336.719,461.344L 336.719,404.062L 308.594,404.062L 308.594,472.531C 296.113,476.333 283.281,478.94 270.313,480.00L 270.313,404.062L 242.188,404.062L 242.188,480.00 z M 85.313,255.906L 85.313,112.312C 95.602,102.816 106.681,94.192 118.438,86.50C 145.523,68.779 176.188,56.106 209.125,49.875L 209.125,66.437L 302.875,66.437L 302.875,49.875C 335.812,56.106 366.477,68.779 393.563,86.50C 405.319,94.192 416.398,102.816 426.688,112.312L 426.688,255.906L 393.563,255.906L 393.563,128.812C 356.024,98.158 308.165,79.75 256.00,79.75C 203.835,79.75 155.976,98.158 118.438,128.812L 118.438,255.906L 85.313,255.906 z M 302.875,49.875C 287.691,47.002 272.017,45.50 256.00,45.50C 239.983,45.50 224.309,47.002 209.125,49.875L 209.125,3.156L 153.656,3.156L 153.656-32.00L 209.125-32.00L 302.875-32.00L 358.344-32.00L 358.344,3.156L 302.875,3.156L 302.875,49.875z" />
278
+ <glyph unicode="&#xe077;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 247.031,390.50L 247.031,341.125L 265.313,341.125L 265.313,390.50C 273.748,389.81 282.101,388.129 290.219,385.656L 290.219,341.125L 308.50,341.125L 308.50,378.375C 316.457,374.414 324.053,369.629 331.00,363.875C 331.037,363.844 331.057,363.812 331.094,363.781L 331.094,181.375C 331.057,181.344 331.037,181.312 331.00,181.281C 310.198,164.112 283.566,154.26 256.00,154.25C 229.058,154.302 202.222,163.702 181.00,181.281C 180.963,181.312 180.943,181.344 180.906,181.375L 180.906,363.781C 180.943,363.812 180.963,363.844 181.00,363.875C 187.994,369.647 195.686,374.509 203.813,378.531L 203.813,341.125L 222.125,341.125L 222.125,385.781C 230.192,388.222 238.532,389.837 247.031,390.50 z M 144.969,244.75L 166.531,244.75L 166.531,162.094C 190.947,142.155 222.071,130.187 256.00,130.187C 289.929,130.187 321.053,142.155 345.469,162.094L 345.469,244.75L 367.031,244.75L 367.031,151.344C 360.339,145.167 353.115,139.565 345.469,134.562C 327.852,123.036 307.923,114.803 286.50,110.75L 286.50,80.375L 322.563,80.375L 322.563,57.50L 286.50,57.50L 225.50,57.50L 189.438,57.50L 189.438,80.375L 225.50,80.375L 225.50,110.75C 204.077,114.803 184.148,123.036 166.531,134.562C 158.885,139.565 151.661,145.167 144.969,151.344L 144.969,244.75 z M 225.50,110.75C 235.376,108.882 245.582,107.906 256.00,107.906C 266.418,107.906 276.624,108.882 286.50,110.75L 286.50,121.531L 225.50,121.531L 225.50,110.75z" />
279
+ <glyph unicode="&#xe076;" d="M 0.00,296.50 m0.00,0.00, 512.00,0.00 0.00-145.00 -512.00,0.00z" />
280
+ <glyph unicode="&#xe075;" d="M 256.00,480.00C 114.615,480.00 0.00,365.385 0.00,224.00C0.00,82.615 114.615-32.00 256.00-32.00C 397.385-32.00 512.00,82.615 512.00,224.00C 512.00,365.385 397.385,480.00 256.00,480.00 z M 109.00,265.625L 403.031,265.625L 403.031,182.375L 109.00,182.375L 109.00,265.625z" />
281
+ <glyph unicode="&#xe06a;" d="M 64.00,416.00L 224.00,416.00L 224.00,32.00L 64.00,32.00zM 288.00,416.00L 448.00,416.00L 448.00,32.00L 288.00,32.00z" />
282
+ <glyph unicode="&#xe10f;" d="M 18.042,79.89 m0.00,0.00, 79.541,0.00 0.00,73.517c0.00,23.259 11.354,48.943 33.055,70.422 21.70,21.479 53.893,44.821 106.835,81.879 53.179,37.225 85.315,57.955 99.756,70.882 14.44,12.927 13.202,10.848 13.202,29.663l0.00,72.858 0.00,0.889 63.211,0.00 0.00-0.889 0.00-72.858c0.00-28.248 -11.807-56.661 -34.24-76.743 -22.433-20.082 -53.508-39.036 -105.681-75.558 -52.411-36.688 -83.431-60.013 -98.604-75.031 -15.173-15.018 -14.321-15.664 -14.321-25.515l0.00-73.517 82.998,0.00L 130.934-33.002 z m 251.168,0.00 81.221,0.00 0.00,73.517c0.00,9.851 0.819,10.498 -14.354,25.515 -10.037,9.933 -27.827,24.002 -53.335,42.667 3.202,2.257 5.736,4.084 9.12,6.453 18.67,13.07 32.141,22.08 46.092,31.54 17.775-13.421 31.582-24.847 42.602-35.754 21.70-21.479 33.088-47.162 33.088-70.422l0.00-73.517 81.319,0.00L 382.101-33.002z" />
283
+ <glyph unicode="&#xe110;" d="M 466.619,480.00 291.808,305.188c-12.561,7.219 -28.865,5.476 -39.599-5.259 -8.979-8.979 -11.663-21.856 -8.077-33.178 -24.666,12.608 -53.03,14.733 -81.581,2.557C 108.998,242.733 72.05,187.44 0.00,181.016c 5.499-11.322 12.62-23.947 21.354-37.856 30.296-4.77 60.127,4.864 83.44,28.646 -9.054-28.18 -31.178-49.211 -61.098-60.169 7.763-10.351 16.643-21.218 26.671-32.539 34.496,11.533 46.831,27.314 14.556-15.485 13.612-14.139 28.192-29.132 46.107-41.749 7.959,29.388 29.409,51.954 60.14,63.568 -23.547-22.07 -32.977-54.037 -27.165-88.292 17.791-11.969 34.132-21.70 49.012-29.14 12.675,54.372 49.659,110.772 88.292,162.551 12.465,26.239 10.446,54.593 -2.818,81.668 11.385-3.711 24.392-1.059 33.44,7.99 10.735,10.735 12.478,27.038 5.259,39.599L 512.00,434.619 466.619,480.00z" />
284
+ <glyph unicode="&#xe111;" d="M 345.16,422.857 m0.00,0.00,0.00-109.678 57.161,0.00 0.00-114.304 -223.983,0.00 0.00,64.053L0.00,144.035l 178.339-118.893 0.00,64.053 223.983,0.00 109.678,0.00 0.00,109.678 0.00,114.304 0.00,109.678 -109.678,0.00 -57.161,0.00z" />
285
+ <glyph unicode="&#xe112;" d="M 256.002,480.00C 114.617,480.00 0.001,365.385 0.001,224.00c0.00-141.385 114.615-256.00 256.00-256.00 141.385,0.00 256.00,114.615 256.00,256.00C 512.002,365.385 397.387,480.00 256.002,480.00 z M 162.908,342.50c 19.57,0.16 28.956-1.26 44.969-6.813 26.419-9.162 48.919-28.096 64.375-54.188 24.051-45.879 44.866-100.108 61.781-135.813 22.649-31.212 68.91-29.762 85.975-10.848 39.233,43.486 -20.347,67.711 -41.288,74.723 -23.45,7.33 -50.969,19.993 -61.406,41.563 -19.131,54.486 16.035,90.197 61.406,88.969 14.076,2.023 40.835-6.14 58.375-34.50l-22.844-12.375c-9.684,10.251 -23.489,18.757 -36.75,18.875 -29.532,4.159 -45.693-33.509 -27.844-54.438 6.022-6.20 13.381-9.614 41.188-19.031 39.727-13.35 68.689-26.521 70.875-67.469 2.698-55.278 -52.212-88.419 -107.844-75.594 -22.404,6.082 -40.915,22.003 -52.688,45.281 -20.696,40.35 -35.181,89.958 -56.50,125.563 -17.892,28.433 -46.422,44.044 -80.469,44.00 -41.73,0.562 -78.264-32.41 -90.094-65.656 -8.815-35.417 -0.172-71.349 24.50-95.625 57.888-51.315 121.754-17.71 147.156,18.438 1.073,0.00 14.375-28.60 14.375-30.906 -17.284-20.802 -49.734-38.807 -73.563-43.25 -12.711-2.216 -33.14-2.248 -45.188-0.063C 94.791,101.802 55.923,137.841 42.814,184.75 23.356,263.076 74.541,325.58 133.47,339.25c 9.86,2.603 14.707,3.129 29.438,3.25z" />
286
+ <glyph unicode="&#xe113;" d="M 131.671-24.581C 87.371-13.173 54.879,27.299 49.708,72.189 39.918,140.145 68.676,206.663 107.048,261.231 99.875,277.151 90.058,285.787 75.797,264.453 49.833,228.571 30.887,187.895 18.14,145.633 10.051,200.306 49.713,252.694 74.93,291.277 70.058,313.531 42.982,343.405 44.037,342.972 29.718,360.747 13.934,396.762 29.027,417.774 49.539,452.373 87.678,481.103 129.227,479.967 155.109,473.739 167.612,447.147 183.419,428.04c 5.701-7.664 11.401-15.328 17.102-22.993 57.57,30.721 122.528,57.415 188.925,45.206 49.082-7.612 89.85-47.986 98.33-96.862 16.736-82.479 -19.16-165.434 -67.432-230.721 -50.056-66.11 -117.15-124.626 -198.88-145.986 -29.262-6.057 -60.546-8.477 -89.793-1.266 z M 246.685,8.14C 309.34,28.509 356.694,78.033 398.626,126.627 444.448,184.858 475.324,261.819 460.227,336.496 449.229,384.432 404.881,421.433 355.657,423.335 307.783,426.432 260.119,411.565 217.985,389.825c-0.87-6.812 10.08-28.777 20.53-17.236 44.652,23.201 99.259,33.561 147.943,17.649 31.486-11.697 54.267-42.208 55.171-75.988 5.905-71.57 -37.766-136.375 -88.32-182.877 -16.522-19.506 -35.165-27.044 -61.534-13.87 -37.244,17.066 -76.021,31.224 -112.312,50.124 -24.109,22.612 -41.016,51.706 -61.414,77.598 -7.045-8.556 -13.959-23.515 -20.119-34.584 -24.764-48.94 -41.546-111.28 -11.303-161.767 25.966-45.13 84.065-57.837 131.98-47.78 9.505,1.71 18.888,4.083 28.079,7.046 z m 67.124,111.525C 305.778,165.921 300.731,212.847 294.873,259.31 273.929,293.29 247.184,324.672 226.584,358.116 204.743,387.315 182.243,419.459 158.911,444.37 146.647,465.402 121.592,477.581 98.68,465.471 68.102,452.631 37.342,427.902 30.827,393.809c 7.589-26.765 28.491-48.467 43.38-71.861 37.33-49.163 70.287-101.209 107.194-145.352 44.471-19.425 91.209-38.938 133.484-59.203 z M 190.187,193.782c-19.608,9.683 -27.882,35.028 -42.827,51.186 -20.476,28.772 -43.297,56.231 -60.359,87.194 5.585,20.774 12.455,24.741 24.525,38.969 17.763,12.629 53.135,45.23 75.585,13.182 29.687-37.693 59.253-75.788 84.212-116.813l 24.104-99.36 -21.222-16.878C 252.819,163.477 190.187,193.782 190.187,193.782 z m -20.529,94.627c-17.39,23.47 -33.624,48.085 -53.272,69.694 -25.159-16.751 -9.286-38.606 4.239-59.404 22.411-29.144 42.431-60.24 66.475-88.058 33.807,31.006 -11.015,63.237 -17.441,77.768 z m 88.634-23.577c-6.143,21.63 -24.573,39.141 -36.788,58.235 -17.095,22.974 -33.757,46.284 -51.525,68.748 -11.558-6.228 -24.44-6.797 -33.635-16.435 17.44-27.353 37.287-55.751 56.568-82.197 18.762-23.352 42.431-37.537 65.38-28.352 z M 65.541,353.338C 46.285,376.518 75.985,401.575 92.423,416.195 107.527,428.903 126.747,438.394 145.976,435.261c 12.137-1.978 27.037-17.402 16.728-24.192 -25.26-16.638 -57.38-28.26 -74.473-57.09 -7.981-14.986 -13.346-15.145 -22.69-0.64 z M 86.481,369.585C 101.195,392.578 128.132,401.673 149.905,415.83 146.388,441.685 113.014,420.188 100.867,410.284 88.759,398.66 53.864,372.912 77.318,358.878c 4.146,2.543 6.357,6.96 9.163,10.706 z M 45.128,386.281C 40.441,412.158 62.991,434.331 83.326,446.934 94.996,454.04 134.883,467.887 130.918,445.727 100.305,435.977 73.168,414.984 56.258,387.464c-2.578-4.488 -9.345-9.221 -11.13-1.183 z M 373.269,177.49c 30.035,39.882 55.575,92.07 40.024,142.766 -14.962,45.053 -69.391,60.083 -111.857,51.425 -17.187-6.027 -56.695-6.515 -54.612-26.889 18.046-26.047 37.531-51.051 56.452-76.46 6.422-47.152 11.687-95.055 19.078-141.608 19.459,13.826 35.631,32.477 50.915,50.766z" />
287
+ <glyph unicode="&#xe114;" d="M 141.179,98.499 m0.00,0.00,-0.394-31.864 -140.785,0.00 0.00,31.864C 0.00,137.123 32.526,168.06 71.149,168.06c 38.624,0.00 70.527-30.941 70.029-69.561 z M 135.124,243.45c0.00-35.399 -28.575-64.095 -63.974-64.095 -35.399,0.00 -64.217,28.697 -64.217,64.095 0.00,35.399 28.818,64.096 64.217,64.096 35.399,0.00 63.974-28.697 63.974-64.096 z m 180.647-140.069 -0.454-36.746 -162.355,0.00 0.00,36.746c0.00,44.542 37.509,80.219 82.05,80.219 44.541,0.00 81.333-35.681 80.759-80.219 z m -6.983,167.159c0.00-40.822 -32.953-73.915 -73.776-73.915 -40.822,0.00 -74.055,33.093 -74.055,73.915 0.00,40.822 33.233,73.915 74.055,73.915 40.822,0.00 73.776-33.093 73.776-73.915 z m 203.205-162.277 -0.515-41.628 -183.924,0.00 0.00,41.628c0.00,50.459 42.492,90.876 92.951,90.876 50.459,0.00 92.138-40.422 91.488-90.876 z m -7.911,189.367c0.00-46.246 -37.331-83.736 -83.577-83.736 -46.246,0.00 -83.894,37.49 -83.894,83.736 0.00,46.246 37.648,83.736 83.894,83.736 46.246,0.00 83.577-37.49 83.577-83.736z" />
288
+ <glyph unicode="&#xe115;" d="M 309.753,335.22 m0.00,0.00,c-11.836-0.083 -23.715-2.048 -35.091-6.171 -2.37-0.888 -6.21-2.188 -7.894-6.044l 0.518-203.985c 1.006-2.219 2.331-3.451 4.545-4.242l 181.364,0.00c 29.644-0.52 52.745,24.835 56.484,55.719 3.202,33.439 -17.232,63.385 -53.087,68.58 -10.185,1.47 -22.874,0.01 -33.194-4.067 -0.346-0.155 -0.444,0.235 -0.71,2.679 -2.547,22.397 -11.935,42.144 -27.022,60.694 -20.772,22.883 -53.192,37.065 -85.914,36.837 z m -56.189-14.918c-3.46,0.00 -6.771-49.258 -7.32-147.78 8.475-75.554 7.521-77.516 15.524,0.00 -1.137,98.527 -4.745,147.782 -8.205,147.78 z m -21.919-11.729c-3.46-0.107 -6.697-45.564 -7.104-136.051 8.475-75.554 7.521-77.516 15.524,0.00 -1.278,90.916 -4.96,136.158 -8.42,136.051 z m -63.596-14.057c-0.026,0.00 -0.054,0.00 -0.08-0.01 -3.255-0.492 -6.313-41.016 -7.136-121.986 8.475-75.554 7.513-77.516 15.516,0.00 -1.559,81.044 -5.017,121.85 -8.30,121.994 z m 21.353-3.811c-3.354,0.069 -6.601-39.253 -7.431-118.183 8.475-75.554 7.521-77.516 15.524,0.00 -1.278,78.653 -4.739,118.114 -8.093,118.183 z m -42.363-1.587c-3.495-0.037 -6.66-38.935 -6.785-116.596 8.475-75.554 7.513-77.516 15.516,0.00 -1.418,77.807 -5.236,116.633 -8.731,116.596 z m 63.445-2.312c-0.027,0.001 -0.053,0.00 -0.08-0.01 -3.424-0.53 -6.601-39.152 -7.009-114.276 8.475-75.554 7.521-77.516 15.524,0.00 -1.407,76.64 -5.035,114.219 -8.436,114.284 z m -84.128-5.079c-3.011,0.029 -5.865-35.787 -7.248-109.205 8.475-75.554 7.521-77.516 15.524,0.00 -1.998,72.165 -5.218,109.176 -8.276,109.205 z m -20.261-20.30c-2.861,0.175 -5.747-29.285 -7.846-88.904 8.475-75.554 7.521-77.516 15.524,0.00 -1.982,58.92 -4.818,88.729 -7.678,88.904 z m -41.215-29.534c-1.694-0.343 -3.364-19.032 -7.088-56.763 8.013-74.719 7.112-76.66 14.679,0.00 -4.069,37.943 -5.843,57.117 -7.591,56.763 z m -20.436-1.547c-1.694-0.337 -3.364-18.657 -7.088-55.639 8.013-73.235 7.112-75.137 14.679,0.00 -4.007,36.618 -5.789,55.401 -7.511,55.639 -0.027,0.00 -0.053,0.01 -0.08,0.00 z m 40.577-0.845c-1.791-0.344 -3.556-19.04 -7.495-56.771 8.475-74.719 7.521-76.66 15.524,0.00 -4.238,37.36 -6.12,56.528 -7.942,56.771 -0.028,0.00 -0.059,0.01 -0.088,0.00 z m -60.447-9.162c-1.694-0.283 -3.372-15.71 -7.096-46.836 8.013-61.64 7.112-63.241 14.679,0.00 -4.007,30.82 -5.781,46.636 -7.503,46.836 -0.027,0.00 -0.053,0.00 -0.08,0.00 z M 5.797,203.418C 4.412,203.236 3.045,193.32 0.00,173.295 6.551,133.639 5.814,132.609 12.00,173.295 8.673,193.433 7.225,203.607 5.797,203.418z" />
289
+ <glyph unicode="&#xe116;" d="M 235.138,480.00 m0.00,0.00, 69.083-147.775c 0.982,37.373 -30.247,125.585 -69.083,147.775 z m 216.20-10.392c-1.001-0.09 -2.069-1.226 -3.224-3.506 -15.678-28.648 -42.732-45.66 -68.018-52.775 -25.709-7.215 -52.45-24.431 -62.259-43.947 -11.461-26.613 -6.546-47.735 4.601-71.712 14.058,2.13 28.127,7.561 40.035,13.272 30.545,14.871 57.005,38.176 74.216,65.452 6.921,10.969 8.276,9.001 2.316-3.349 -11.221-23.253 -47.987-55.838 -94.155-83.481 -10.29-6.161 -10.441-6.373 -5.822-10.392 14.776-12.856 30.97-20.637 45.669-21.88 63.751-0.293 91.116,68.007 92.903,115.472 -0.474,30.798 -5.683,70.597 -24.54,95.877 -0.574,0.72 -1.121,1.024 -1.722,0.97 z m -232.383-132.50c-101.678,0.00 -184.554-82.876 -184.554-184.554 0.00-101.678 82.876-184.554 184.554-184.554 101.678,0.00 184.523,82.876 184.523,184.554 0.00,25.419 -5.147,49.773 -14.493,71.868l-38.72-16.371c 7.206-17.036 11.206-35.756 11.206-55.498 0.00-76.663 -59.909-138.801 -135.661-142.36 87.664,59.892 127.349,215.00 80.476,313.611 3.724-67.674 0.669-251.815 -104.109-312.797 -70.994,8.258 -125.77,68.263 -125.77,141.546 0.00,78.966 63.582,142.516 142.547,142.516 19.741,0.00 38.399-3.938 55.435-11.143l 16.402,38.657c-22.096,9.346 -46.418,14.524 -71.837,14.524z" />
290
+ <glyph unicode="&#xe117;" d="M 256.00,480.00 C 114.615,480.00 0.00,365.387 0.00,224.00 0.00,162.322 21.826,105.759 58.156,61.562 158.751,168.211 358.66,135.625 408.438,18.344 471.266,64.994 512.00,139.733 512.00,224.00 512.00,365.387 397.385,480.00 256.00,480.00 z m 153.875-133.281 c 23.482-7.725 14.365-47.549 -3.344-46.469 C 308.977,331.32 233.977,347.317 121.00,329.937 c -23.482,7.725 -14.365,47.549 3.344,46.469 100.713,8.776 188.276,6.27 285.531-29.688 z m -33.406-75.344 c 19.88-6.56 12.191-40.294 -2.844-39.375 -82.662,26.317 -146.209,39.866 -241.938,25.156 -19.901,6.547 -12.16,40.29 2.844,39.375 85.231,7.538 159.655,5.242 241.938-25.156 z m -27.313-74.469 c 16.735-5.516 10.271-33.929 -2.375-33.156 -69.629,22.19 -123.167,33.596 -203.813,21.188 -16.747,5.526 -10.262,33.931 2.406,33.156 72.00,6.276 134.196,4.551 203.781-21.188 z m -122.00-144.594 c -39.489,0.00 -75.025-21.197 -91.688-54.219 C 171.388-21.111 212.422-32.00 256.00-32.00 c 26.326,0.00 51.723,3.963 75.625,11.344 -19.264,40.222 -63.328,72.969 -104.469,72.969 z" />
291
+ <glyph unicode="&#xe119;" d="M 453.629,445.311 80.052,221.165 453.629-2.981z" />
292
+ <glyph unicode="&#xe02c;" d="M 26.684,42.382 250.83,415.958 474.976,42.382z" />
293
+ <glyph unicode="&#xe118;" d="M 80.052,445.311 453.629,221.165 80.052-2.981z" />
294
+ <glyph unicode="&#xe11a;" d="M 26.684,415.958 250.83,42.382 474.976,415.958z" />
295
+ <glyph unicode="&#xe11b;" d="M 64.00,416.00L 448.00,416.00L 448.00,32.00L 64.00,32.00z" />
296
+ <glyph unicode="&#x20;" horiz-adv-x="256" />
297
+ <glyph class="hidden" unicode="&#xf000;" d="M0,480L 512 -32L0 -32 z" horiz-adv-x="0" />
298
+ </font></defs></svg>
ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.ttf ADDED
Binary file
ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.woff ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png ADDED
Binary file
ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css ADDED
@@ -0,0 +1,1614 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery UI Bootstrap (0.5)
3
+ * http://addyosmani.github.com/jquery-ui-bootstrap
4
+ *
5
+ * Copyright 2012 - 2013, Addy Osmani
6
+ * Dual licensed under the MIT or GPL Version 2 licenses.
7
+ *
8
+ * Portions copyright jQuery UI & Twitter Bootstrap
9
+ */
10
+
11
+
12
+ /* Layout helpers
13
+ ----------------------------------*/
14
+ .ui-helper-hidden { display: none; }
15
+ .ui-helper-hidden-accessible {
16
+ border: 0; clip: rect(0 0 0 0);
17
+ height: 1px;
18
+ margin: -1px;
19
+ overflow: hidden;
20
+ padding: 0;
21
+ position: absolute;
22
+ width: 1px;
23
+ }
24
+ .ui-helper-reset {
25
+ margin: 0;
26
+ padding: 0;
27
+ border: 0;
28
+ outline: 0;
29
+ line-height: 1.3;
30
+ text-decoration: none;
31
+ font-size: 100%;
32
+ list-style: none;
33
+ }
34
+ .ui-helper-clearfix:before,
35
+ .ui-helper-clearfix:after {
36
+ content: "";
37
+ display: table;
38
+ }
39
+ .ui-helper-clearfix:after {
40
+ content: ".";
41
+ display: block;
42
+ height: 0;
43
+ clear: both;
44
+ visibility: hidden;
45
+ }
46
+ .ui-helper-clearfix {
47
+ /*display: inline-block; */
48
+ display:block;
49
+ min-height: 0; /* support: IE7 */
50
+ }
51
+ /* required comment for clearfix to work in Opera \*/
52
+ * html .ui-helper-clearfix {
53
+ height:1%;
54
+ }
55
+
56
+ /* end clearfix */
57
+ .ui-helper-zfix {
58
+ width: 100%;
59
+ height: 100%;
60
+ top: 0;
61
+ left: 0;
62
+ position: absolute;
63
+ opacity: 0;
64
+ filter:Alpha(Opacity=0);
65
+ }
66
+ .ui-front {
67
+ z-index: 100;
68
+ }
69
+
70
+
71
+ /* Interaction Cues
72
+ ----------------------------------*/
73
+ .ui-state-disabled { cursor: default !important; }
74
+
75
+
76
+ /* Icons
77
+ ----------------------------------*/
78
+
79
+ /* states and images */
80
+ .ui-icon {
81
+ display: block;
82
+ text-indent: -99999px;
83
+ overflow: hidden;
84
+ background-repeat: no-repeat;
85
+ }
86
+
87
+
88
+ /* Misc visuals
89
+ ----------------------------------*/
90
+
91
+ /* Overlays */
92
+ .ui-widget-overlay {
93
+ position: absolute;
94
+ top: 0;
95
+ left: 0;
96
+ width: 100%;
97
+ height: 100%;
98
+ }
99
+
100
+ /*
101
+ * jQuery UI Resizable 1.10.0
102
+ *
103
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
104
+ * Dual licensed under the MIT or GPL Version 2 licenses.
105
+ * http://jquery.org/license
106
+ *
107
+ * http://api.jqueryui.com/resizable/
108
+ */
109
+
110
+ .ui-resizable {
111
+ position: relative;
112
+ }
113
+ .ui-resizable-handle {
114
+ position: absolute;
115
+ font-size: 0.1px;
116
+ z-index: 99999;
117
+ display: block;
118
+ }
119
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle {
120
+ display: none;
121
+ }
122
+ .ui-resizable-n {
123
+ cursor: n-resize;
124
+ height: 7px;
125
+ width: 100%;
126
+ top: -5px;
127
+ left: 0;
128
+ }
129
+ .ui-resizable-s {
130
+ cursor: s-resize;
131
+ height: 7px;
132
+ width: 100%;
133
+ bottom: -5px;
134
+ left: 0;
135
+ }
136
+ .ui-resizable-e {
137
+ cursor: e-resize;
138
+ width: 7px;
139
+ right: -5px;
140
+ top: 0;
141
+ height: 100%;
142
+ }
143
+ .ui-resizable-w {
144
+ cursor: w-resize;
145
+ width: 7px;
146
+ left: -5px;
147
+ top: 0;
148
+ height: 100%;
149
+ }
150
+ .ui-resizable-se {
151
+ cursor: se-resize;
152
+ width: 12px;
153
+ height: 12px;
154
+ right: 1px;
155
+ bottom: 1px;
156
+ }
157
+ .ui-resizable-sw {
158
+ cursor: sw-resize;
159
+ width: 9px;
160
+ height: 9px;
161
+ left: -5px;
162
+ bottom: -5px;
163
+ }
164
+ .ui-resizable-nw {
165
+ cursor: nw-resize;
166
+ width: 9px;
167
+ height: 9px;
168
+ left: -5px;
169
+ top: -5px;
170
+ }
171
+ .ui-resizable-ne {
172
+ cursor: ne-resize;
173
+ width: 9px;
174
+ height: 9px;
175
+ right: -5px;
176
+ top: -5px;
177
+ }
178
+
179
+ /*
180
+ * jQuery UI Selectable 1.10.0
181
+ *
182
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
183
+ * Dual licensed under the MIT or GPL Version 2 licenses.
184
+ * http://jquery.org/license
185
+ *
186
+ * http://jqueryui.com/selectable/
187
+ */
188
+ .ui-selectable-helper {
189
+ position: absolute;
190
+ z-index: 100;
191
+ border:1px dotted black;
192
+ }
193
+
194
+ /*
195
+ * jQuery UI CSS Framework 1.10.0
196
+ *
197
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
198
+ * Dual licensed under the MIT or GPL Version 2 licenses.
199
+ * http://jquery.org/license
200
+ *
201
+ *
202
+ *
203
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/
204
+ */
205
+
206
+ /* Component containers
207
+ ----------------------------------*/
208
+ .ui-widget { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size:13px; }
209
+ .ui-widget .ui-widget { font-size: 1em; }
210
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1em; }
211
+ .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #404040; }
212
+ .ui-widget-content a { color: #404040; }
213
+ .ui-widget-header {
214
+ font-weight:bold;
215
+ border-color: #0064cd #0064cd #003f81;
216
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
217
+ border:1px solid #666;
218
+
219
+ }
220
+ .ui-widget-header a { color: #222222; }
221
+
222
+ /* Interaction states
223
+ ----------------------------------*/
224
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
225
+
226
+ background-color: #e6e6e6;
227
+ background-repeat: no-repeat;
228
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
229
+ background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
230
+ background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
231
+ background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
232
+ background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
233
+ background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
234
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
235
+
236
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
237
+
238
+ color: #333;
239
+ font-size: 13px;
240
+ line-height: normal;
241
+ border: 1px solid #ccc;
242
+ border-bottom-color: #bbb;
243
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
244
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
245
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
246
+ -webkit-transition: 0.1s linear background-image;
247
+ -moz-transition: 0.1s linear background-image;
248
+ -ms-transition: 0.1s linear background-image;
249
+ -o-transition: 0.1s linear background-image;
250
+ transition: 0.1s linear background-image;
251
+ overflow: visible;
252
+
253
+ }
254
+
255
+
256
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
257
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus {
258
+ background-position: 0 -15px;
259
+ color: #333;
260
+ text-decoration: none;
261
+ }
262
+
263
+ .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; }
264
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; font-weight: normal; color: #212121; }
265
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
266
+ .ui-widget :active { outline: none; }
267
+
268
+ /* Interaction Cues
269
+ ----------------------------------*/
270
+
271
+
272
+ .ui-state-highlight p, .ui-state-error p, .ui-state-default p{
273
+ font-size: 13px;
274
+ font-weight: normal;
275
+ line-height: 18px;
276
+ margin:7px 15px;
277
+ }
278
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
279
+
280
+
281
+ position: relative;
282
+ margin-bottom: 18px;
283
+ color: #404040;
284
+ background-color: #eedc94;
285
+ background-repeat: repeat-x;
286
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
287
+ background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
288
+ background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
289
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
290
+ background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
291
+ background-image: -o-linear-gradient(top, #fceec1, #eedc94);
292
+ background-image: linear-gradient(top, #fceec1, #eedc94);
293
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
294
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
295
+ border-color: #eedc94 #eedc94 #e4c652;
296
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
297
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
298
+ border-width: 1px;
299
+ border-style: solid;
300
+ -webkit-border-radius: 4px;
301
+ -moz-border-radius: 4px;
302
+ border-radius: 4px;
303
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
304
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
305
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
306
+
307
+
308
+ }
309
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
310
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
311
+
312
+
313
+ position: relative;
314
+ margin-bottom: 18px;
315
+ color: #ffffff;
316
+ border-width: 1px;
317
+ border-style: solid;
318
+ -webkit-border-radius: 4px;
319
+ -moz-border-radius: 4px;
320
+ border-radius: 4px;
321
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
322
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
323
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
324
+ background-color: #c43c35;
325
+ background-repeat: repeat-x;
326
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
327
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
328
+ background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
329
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
330
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
331
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
332
+ background-image: linear-gradient(top, #ee5f5b, #c43c35);
333
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
334
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
335
+ border-color: #c43c35 #c43c35 #882a25;
336
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
337
+
338
+
339
+ }
340
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
341
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
342
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
343
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
344
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
345
+ .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */
346
+
347
+
348
+ /* Icons
349
+ ----------------------------------*/
350
+
351
+ /* states and images */
352
+ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
353
+ .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
354
+ .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
355
+ .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
356
+ .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
357
+ .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
358
+ .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
359
+ .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_f6cf3b_256x240.png); }
360
+
361
+ /* positioning */
362
+ .ui-icon-carat-1-n { background-position: 0 0; }
363
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
364
+ .ui-icon-carat-1-e { background-position: -32px 0; }
365
+ .ui-icon-carat-1-se { background-position: -48px 0; }
366
+ .ui-icon-carat-1-s { background-position: -64px 0; }
367
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
368
+ .ui-icon-carat-1-w { background-position: -96px 0; }
369
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
370
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
371
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
372
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
373
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
374
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
375
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
376
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
377
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
378
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
379
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
380
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
381
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
382
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
383
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
384
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
385
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
386
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
387
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
388
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
389
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
390
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
391
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
392
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
393
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
394
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
395
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
396
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
397
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
398
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
399
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
400
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
401
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
402
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
403
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
404
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
405
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
406
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
407
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
408
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
409
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
410
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
411
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
412
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
413
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
414
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
415
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
416
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
417
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
418
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
419
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
420
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
421
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
422
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
423
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
424
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
425
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
426
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
427
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
428
+ .ui-icon-extlink { background-position: -32px -80px; }
429
+ .ui-icon-newwin { background-position: -48px -80px; }
430
+ .ui-icon-refresh { background-position: -64px -80px; }
431
+ .ui-icon-shuffle { background-position: -80px -80px; }
432
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
433
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
434
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
435
+ .ui-icon-folder-open { background-position: -16px -96px; }
436
+ .ui-icon-document { background-position: -32px -96px; }
437
+ .ui-icon-document-b { background-position: -48px -96px; }
438
+ .ui-icon-note { background-position: -64px -96px; }
439
+ .ui-icon-mail-closed { background-position: -80px -96px; }
440
+ .ui-icon-mail-open { background-position: -96px -96px; }
441
+ .ui-icon-suitcase { background-position: -112px -96px; }
442
+ .ui-icon-comment { background-position: -128px -96px; }
443
+ .ui-icon-person { background-position: -144px -96px; }
444
+ .ui-icon-print { background-position: -160px -96px; }
445
+ .ui-icon-trash { background-position: -176px -96px; }
446
+ .ui-icon-locked { background-position: -192px -96px; }
447
+ .ui-icon-unlocked { background-position: -208px -96px; }
448
+ .ui-icon-bookmark { background-position: -224px -96px; }
449
+ .ui-icon-tag { background-position: -240px -96px; }
450
+ .ui-icon-home { background-position: 0 -112px; }
451
+ .ui-icon-flag { background-position: -16px -112px; }
452
+ .ui-icon-calendar { background-position: -32px -112px; }
453
+ .ui-icon-cart { background-position: -48px -112px; }
454
+ .ui-icon-pencil { background-position: -64px -112px; }
455
+ .ui-icon-clock { background-position: -80px -112px; }
456
+ .ui-icon-disk { background-position: -96px -112px; }
457
+ .ui-icon-calculator { background-position: -112px -112px; }
458
+ .ui-icon-zoomin { background-position: -128px -112px; }
459
+ .ui-icon-zoomout { background-position: -144px -112px; }
460
+ .ui-icon-search { background-position: -160px -112px; }
461
+ .ui-icon-wrench { background-position: -176px -112px; }
462
+ .ui-icon-gear { background-position: -192px -112px; }
463
+ .ui-icon-heart { background-position: -208px -112px; }
464
+ .ui-icon-star { background-position: -224px -112px; }
465
+ .ui-icon-link { background-position: -240px -112px; }
466
+ .ui-icon-cancel { background-position: 0 -128px; }
467
+ .ui-icon-plus { background-position: -16px -128px; }
468
+ .ui-icon-plusthick { background-position: -32px -128px; }
469
+ .ui-icon-minus { background-position: -48px -128px; }
470
+ .ui-icon-minusthick { background-position: -64px -128px; }
471
+ .ui-icon-close { background-position: -80px -128px; }
472
+ .ui-icon-closethick { background-position: -96px -128px; }
473
+ .ui-icon-key { background-position: -112px -128px; }
474
+ .ui-icon-lightbulb { background-position: -128px -128px; }
475
+ .ui-icon-scissors { background-position: -144px -128px; }
476
+ .ui-icon-clipboard { background-position: -160px -128px; }
477
+ .ui-icon-copy { background-position: -176px -128px; }
478
+ .ui-icon-contact { background-position: -192px -128px; }
479
+ .ui-icon-image { background-position: -208px -128px; }
480
+ .ui-icon-video { background-position: -224px -128px; }
481
+ .ui-icon-script { background-position: -240px -128px; }
482
+ .ui-icon-alert { background-position: 0 -144px; }
483
+ .ui-icon-info { background-position: -16px -144px; }
484
+ .ui-icon-notice { background-position: -32px -144px; }
485
+ .ui-icon-help { background-position: -48px -144px; }
486
+ .ui-icon-check { background-position: -64px -144px; }
487
+ .ui-icon-bullet { background-position: -80px -144px; }
488
+ .ui-icon-radio-off { background-position: -96px -144px; }
489
+ .ui-icon-radio-on { background-position: -112px -144px; }
490
+ .ui-icon-pin-w { background-position: -128px -144px; }
491
+ .ui-icon-pin-s { background-position: -144px -144px; }
492
+ .ui-icon-play { background-position: 0 -160px; }
493
+ .ui-icon-pause { background-position: -16px -160px; }
494
+ .ui-icon-seek-next { background-position: -32px -160px; }
495
+ .ui-icon-seek-prev { background-position: -48px -160px; }
496
+ .ui-icon-seek-end { background-position: -64px -160px; }
497
+ .ui-icon-seek-start { background-position: -80px -160px; }
498
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
499
+ .ui-icon-seek-first { background-position: -80px -160px; }
500
+ .ui-icon-stop { background-position: -96px -160px; }
501
+ .ui-icon-eject { background-position: -112px -160px; }
502
+ .ui-icon-volume-off { background-position: -128px -160px; }
503
+ .ui-icon-volume-on { background-position: -144px -160px; }
504
+ .ui-icon-power { background-position: 0 -176px; }
505
+ .ui-icon-signal-diag { background-position: -16px -176px; }
506
+ .ui-icon-signal { background-position: -32px -176px; }
507
+ .ui-icon-battery-0 { background-position: -48px -176px; }
508
+ .ui-icon-battery-1 { background-position: -64px -176px; }
509
+ .ui-icon-battery-2 { background-position: -80px -176px; }
510
+ .ui-icon-battery-3 { background-position: -96px -176px; }
511
+ .ui-icon-circle-plus { background-position: 0 -192px; }
512
+ .ui-icon-circle-minus { background-position: -16px -192px; }
513
+ .ui-icon-circle-close { background-position: -32px -192px; }
514
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
515
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
516
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
517
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
518
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
519
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
520
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
521
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
522
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
523
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
524
+ .ui-icon-circle-check { background-position: -208px -192px; }
525
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
526
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
527
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
528
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
529
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
530
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
531
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
532
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
533
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
534
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
535
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
536
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
537
+
538
+
539
+ /* Misc visuals
540
+ ----------------------------------*/
541
+
542
+ /* Corner radius */
543
+ .ui-corner-all,
544
+ .ui-corner-top,
545
+ .ui-corner-left,
546
+ .ui-corner-tl {
547
+ -moz-border-radius-topleft: 4px;
548
+ -webkit-border-top-left-radius: 4px;
549
+ -khtml-border-top-left-radius: 4px;
550
+ border-top-left-radius: 4px;
551
+ }
552
+ .ui-corner-all,
553
+ .ui-corner-top,
554
+ .ui-corner-right,
555
+ .ui-corner-tr {
556
+ -moz-border-radius-topright: 4px;
557
+ -webkit-border-top-right-radius: 4px;
558
+ -khtml-border-top-right-radius: 4px;
559
+ border-top-right-radius: 4px;
560
+ }
561
+ .ui-corner-all,
562
+ .ui-corner-bottom,
563
+ .ui-corner-left,
564
+ .ui-corner-bl {
565
+ -moz-border-radius-bottomleft: 4px;
566
+ -webkit-border-bottom-left-radius: 4px;
567
+ -khtml-border-bottom-left-radius: 4px;
568
+ border-bottom-left-radius: 4px;
569
+ }
570
+ .ui-corner-all,
571
+ .ui-corner-bottom,
572
+ .ui-corner-right,
573
+ .ui-corner-br {
574
+ -moz-border-radius-bottomright: 4px;
575
+ -webkit-border-bottom-right-radius: 4px;
576
+ -khtml-border-bottom-right-radius: 4px;
577
+ border-bottom-right-radius: 4px;
578
+ }
579
+
580
+
581
+ /* Overlays */
582
+
583
+ .ui-widget-overlay {
584
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
585
+ opacity: .30;
586
+ filter:Alpha(Opacity=30);
587
+ }
588
+
589
+ .ui-widget-shadow {
590
+ margin: -8px 0 0 -8px;
591
+ padding: 8px;
592
+ background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
593
+ opacity: .30;filter:Alpha(Opacity=30);
594
+ -moz-border-radius: 8px;
595
+ -khtml-border-radius: 8px;
596
+ -webkit-border-radius: 8px;
597
+ border-radius: 8px;
598
+ }
599
+
600
+ /*
601
+ * jQuery UI Accordion 1.10.0
602
+ *
603
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
604
+ * Dual licensed under the MIT or GPL Version 2 licenses.
605
+ * http://jquery.org/license
606
+ *
607
+ * http://jqueryui.com/accordion/
608
+ */
609
+
610
+ /* IE/Win - Fix animation bug - #4615 */
611
+
612
+ .ui-accordion {
613
+ width: 100%;
614
+ }
615
+ .ui-accordion .ui-accordion-header {
616
+ cursor: pointer;
617
+ position: relative;
618
+ margin-top: 1px;
619
+ zoom: 1;
620
+ font-weight:bold;
621
+ }
622
+ .ui-accordion .ui-accordion-li-fix {
623
+ display: inline;
624
+ }
625
+ .ui-accordion .ui-accordion-header-active {
626
+ border-bottom: 0 !important;
627
+ }
628
+ .ui-accordion .ui-accordion-header a {
629
+ display: block;
630
+ font-size: 1em;
631
+ padding: .5em .5em .5em 1.7em;
632
+ }
633
+ .ui-accordion-icons .ui-accordion-header a {
634
+ padding-left: 2.2em;
635
+ }
636
+ .ui-accordion .ui-accordion-header .ui-icon {
637
+ position: absolute;
638
+ left: .5em;
639
+ top: 50%;
640
+ margin-top: -8px;
641
+ }
642
+ .ui-accordion .ui-accordion-content {
643
+ padding: 1em 2.2em;
644
+ border-top: 0;
645
+ margin-top: -2px;
646
+ position: relative;
647
+ top: 1px;
648
+ margin-bottom: 2px;
649
+ overflow: auto;
650
+ display: none;
651
+ zoom: 1;
652
+ }
653
+ .ui-accordion .ui-accordion-content-active {
654
+ display: block;
655
+ }
656
+
657
+ /*
658
+ * jQuery UI Autocomplete 1.10.0
659
+ *
660
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
661
+ * Dual licensed under the MIT or GPL Version 2 licenses.
662
+ * http://jquery.org/license
663
+ *
664
+ * http://jqueryui.com/autocomplete/
665
+ */
666
+
667
+ .ui-autocomplete {
668
+ position: absolute;
669
+ top: 0;
670
+ left: 0;
671
+ cursor: default;
672
+ }
673
+
674
+ /*
675
+ * jQuery UI Button 1.10.0
676
+ *
677
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
678
+ * Dual licensed under the MIT or GPL Version 2 licenses.
679
+ * http://jquery.org/license
680
+ *
681
+ * http://docs.jquery.com/UI/Button#theming
682
+ */
683
+
684
+ .ui-button {
685
+
686
+ cursor: pointer;
687
+ display: inline-block;
688
+ background-color: #e6e6e6;
689
+ background-repeat: no-repeat;
690
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
691
+ background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
692
+ background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
693
+ background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
694
+ background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
695
+ background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
696
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
697
+ padding: 5px 14px 6px;
698
+ margin: 0;
699
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
700
+ color: #333;
701
+ font-size: 13px;
702
+ line-height: normal;
703
+ border: 1px solid #ccc;
704
+ border-bottom-color: #bbb;
705
+
706
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
707
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
708
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
709
+ -webkit-transition: 0.1s linear background-image;
710
+ -moz-transition: 0.1s linear background-image;
711
+ -ms-transition: 0.1s linear background-image;
712
+ -o-transition: 0.1s linear background-image;
713
+ transition: 0.1s linear background-image;
714
+ overflow: visible;
715
+ } /* the overflow property removes extra width in IE */
716
+
717
+ .ui-button-primary {
718
+ color: #ffffff;
719
+ background-color: #0064cd;
720
+ background-repeat: repeat-x;
721
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
722
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
723
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
724
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
725
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
726
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
727
+ background-image: linear-gradient(top, #049cdb, #0064cd);
728
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
729
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
730
+ border-color: #0064cd #0064cd #003f81;
731
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
732
+ }
733
+
734
+
735
+ .ui-button-success{
736
+ color:#ffffff;
737
+ background-color: #57a957;
738
+ background-repeat: repeat-x;
739
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
740
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
741
+ background-image: -ms-linear-gradient(top, #62c462, #57a957);
742
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
743
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
744
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
745
+ background-image: linear-gradient(top, #62c462, #57a957);
746
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
747
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
748
+ border-color: #57a957 #57a957 #3d773d;
749
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
750
+ }
751
+
752
+ .ui-button-error{
753
+ color:#ffffff;
754
+ background-color: #c43c35;
755
+ background-repeat: repeat-x;
756
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
757
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
758
+ background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
759
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
760
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
761
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
762
+ background-image: linear-gradient(top, #ee5f5b, #c43c35);
763
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
764
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
765
+ border-color: #c43c35 #c43c35 #882a25;
766
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
767
+ }
768
+
769
+ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
770
+ button.ui-button-icon-only { } /* button elements seem to need a little more width */
771
+ .ui-button-icons-only { width: 3.4em; }
772
+ button.ui-button-icons-only { width: 3.7em; }
773
+
774
+ /*button text element */
775
+
776
+ .ui-button .ui-button-text { display: block; }
777
+ .ui-button-text-only .ui-button-text { }
778
+ .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; /*tempfix*/ display:none;}
779
+ .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
780
+ .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
781
+ .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
782
+ /* no icon support for input elements, provide padding by default */
783
+ /* input.ui-button { padding: .4em 1em; } */
784
+
785
+ /*button icon element(s) */
786
+ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { top: 50%; margin-top:-3px; margin-bottom:3px; }
787
+ .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
788
+ .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
789
+ .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
790
+ .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
791
+
792
+ /*button sets*/
793
+
794
+
795
+ .ui-buttonset { margin-right: 7px; }
796
+ .ui-buttonset .ui-state-active {
797
+ color: #ffffff;
798
+ background-color: #0064cd;
799
+ background-repeat: repeat-x;
800
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
801
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
802
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
803
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
804
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
805
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
806
+ background-image: linear-gradient(top, #049cdb, #0064cd);
807
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
808
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
809
+ border-color: #0064cd #0064cd #003f81;
810
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
811
+ }
812
+ .ui-buttonset .ui-button { margin-left: 0; margin-right: 0; }
813
+
814
+ /* workarounds */
815
+ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
816
+
817
+
818
+ /*
819
+ * jQuery UI Menu 1.10.0
820
+ *
821
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
822
+ * Dual licensed under the MIT or GPL Version 2 licenses.
823
+ * http://jquery.org/license
824
+ *
825
+ * http://docs.jquery.com/UI/Menu#theming
826
+ */
827
+
828
+ .ui-menu { list-style:none; padding: 2px; margin: 0; display:block; float:left; outline: none; }
829
+ .ui-menu .ui-menu { margin-top: -3px; position: absolute; }
830
+ .ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1;float: left;clear: left; width: 100%; }
831
+ .ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; }
832
+ .ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; }
833
+ .ui-menu .ui-menu-item a.ui-state-focus,
834
+ .ui-menu .ui-menu-item a.ui-state-active {
835
+ font-weight: normal;
836
+ margin: 0;
837
+ color: #ffffff;
838
+ background: #0064cd;
839
+ background-color: #0064cd;
840
+ background-repeat: repeat-x;
841
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
842
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
843
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
844
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
845
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
846
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
847
+ background-image: linear-gradient(top, #049cdb, #0064cd);
848
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
849
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
850
+ border-color: #0064cd #0064cd #003f81;
851
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
852
+ }
853
+ /* Fix problem with border in ui-state-active */
854
+ .ui-menu .ui-menu-item a.ui-state-active {
855
+ padding: 1px .4em;
856
+ }
857
+
858
+ .ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; }
859
+ .ui-menu .ui-state-disabled a { cursor: default; }
860
+
861
+ /* icon support */
862
+ .ui-menu-icons { position: relative; }
863
+ .ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; }
864
+
865
+ /* left-aligned */
866
+ .ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; }
867
+
868
+ /* right-aligned */
869
+ .ui-menu .ui-menu-icon { position: static; float: right; }
870
+
871
+ .ui-menu { width: 200px; margin-bottom: 2em; }
872
+
873
+
874
+ /*
875
+ * jQuery UI spinner 1.10.0
876
+ *
877
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
878
+ * Dual licensed under the MIT or GPL Version 2 licenses.
879
+ * http://jquery.org/license
880
+ *
881
+ * http://docs.jquery.com/UI/Menu#theming
882
+ */
883
+
884
+ .ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; }
885
+ .ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; }
886
+ .ui-spinner{}
887
+ .ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; }
888
+ .ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */
889
+ .ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */
890
+ .ui-spinner-up { top: 0; }
891
+ .ui-spinner-down { bottom: 0; }
892
+
893
+ /* TR overrides */
894
+ .ui-spinner .ui-icon-triangle-1-s {
895
+ /* need to fix icons sprite */
896
+ background-position:-65px -16px;
897
+ }
898
+
899
+ /*
900
+ * jQuery UI Dialog 1.10.0
901
+ *
902
+ * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about)
903
+ * Dual licensed under the MIT or GPL Version 2 licenses.
904
+ * http://jquery.org/license
905
+ *
906
+ * http://docs.jquery.com/UI/Dialog#theming
907
+ */
908
+ .ui-dialog {
909
+ position: absolute;
910
+ top: 0;
911
+ left: 0;
912
+ padding: .2em;
913
+ width: 300px;
914
+ overflow: hidden;
915
+ outline: 0;
916
+ background-clip: padding-box;
917
+ background-color: #FFFFFF;
918
+ border: 1px solid rgba(0, 0, 0, 0.3);
919
+ border-radius: 6px 6px 6px 6px;
920
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
921
+ /*left: 50%;
922
+ margin-left: -280px;*/
923
+ outline: medium none;
924
+ position: fixed;
925
+ /*top: 10%;
926
+ width: 560px;*/
927
+ z-index: 1050;
928
+ }
929
+ .ui-dialog .ui-dialog-titlebar { /*padding: .4em 1em;*/
930
+ position: relative;
931
+ padding:5px 15px;
932
+ border:0px 0px 0px 1px solid;
933
+ border-color: white;
934
+ padding: 5px 15px;
935
+ font-size: 18px;
936
+ text-decoration:none;
937
+ background:none;
938
+ -moz-border-radius-bottomright: 0px;
939
+ -webkit-border-bottom-right-radius: 0px;
940
+ -khtml-border-bottom-right-radius: 0px;
941
+
942
+ -moz-border-radius-bottomleft: 0px;
943
+ -webkit-border-bottom-left-radius: 0px;
944
+ -khtml-border-bottom-left-radius: 0px;
945
+ border-bottom-left-radius: 0px;
946
+ border-bottom:1px solid #ccc;
947
+ }
948
+ .ui-dialog .ui-dialog-title {
949
+ float: left;
950
+ color:#404040;
951
+ font-weight:bold;
952
+ margin-top:5px;
953
+ margin-bottom:5px;
954
+ padding:5px;
955
+ text-overflow: ellipsis;
956
+ overflow: hidden;
957
+ }
958
+ .ui-dialog .ui-dialog-titlebar-close {
959
+ position: absolute;
960
+ right: .3em;
961
+ top: 50%;
962
+ width: 19px;
963
+ margin: -20px 0 0 0;
964
+ padding: 1px;
965
+ height: 18px;
966
+ font-size: 20px;
967
+ font-weight: bold;
968
+ line-height: 13.5px;
969
+ text-shadow: 0 1px 0 #ffffff;
970
+ filter: alpha(opacity=25);
971
+ -khtml-opacity: 0.25;
972
+ -moz-opacity: 0.25;
973
+ opacity: 0.25;
974
+ background:none;
975
+ border-width: 0;
976
+ border:none;
977
+ box-shadow: none;
978
+ }
979
+
980
+ .ui-dialog .ui-dialog-titlebar-close span {
981
+ display: block;
982
+ margin: 1px;
983
+ text-indent: 9999px;
984
+ }
985
+
986
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 1px; filter: alpha(opacity=90);
987
+ -khtml-opacity: 0.90;
988
+ -moz-opacity: 0.90;
989
+ opacity: 0.90;
990
+ }
991
+
992
+ .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
993
+
994
+ .ui-dialog .ui-dialog-buttonpane {
995
+ text-align: left;
996
+ border-width: 1px 0 0 0;
997
+ background-image: none;
998
+ margin: .5em 0 0 0;
999
+ background-color: #f5f5f5;
1000
+ padding: 5px 15px 5px;
1001
+ border-top: 1px solid #ddd;
1002
+ -webkit-border-radius: 0 0 6px 6px;
1003
+ -moz-border-radius: 0 0 6px 6px;
1004
+ border-radius: 0 0 6px 6px;
1005
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
1006
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
1007
+ box-shadow: inset 0 1px 0 #ffffff;
1008
+ zoom: 1;
1009
+ margin-bottom: 0;
1010
+
1011
+ }
1012
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
1013
+ .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
1014
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
1015
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
1016
+
1017
+ .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button{
1018
+ color: #ffffff;
1019
+ background-color: #0064cd;
1020
+ background-repeat: repeat-x;
1021
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
1022
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
1023
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
1024
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
1025
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
1026
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
1027
+ background-image: linear-gradient(top, #049cdb, #0064cd);
1028
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
1029
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1030
+ border-color: #0064cd #0064cd #003f81;
1031
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1032
+ }
1033
+ /*
1034
+ * jQuery UI Slider 1.8.16
1035
+ *
1036
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
1037
+ * Dual licensed under the MIT or GPL Version 2 licenses.
1038
+ * http://jquery.org/license
1039
+ *
1040
+ * http://docs.jquery.com/UI/Slider#theming
1041
+ */
1042
+ .ui-slider { position: relative; text-align: left; }
1043
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
1044
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0;
1045
+
1046
+ color: #ffffff;
1047
+ background-color: #0064cd;
1048
+ background-repeat: repeat-x;
1049
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
1050
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
1051
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
1052
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
1053
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
1054
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
1055
+ background-image: linear-gradient(top, #049cdb, #0064cd);
1056
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
1057
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1058
+ border-color: #0064cd #0064cd #003f81;
1059
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1060
+
1061
+ }
1062
+
1063
+ .ui-slider-horizontal { height: .8em; }
1064
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
1065
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
1066
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
1067
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
1068
+
1069
+ .ui-slider-vertical { width: .8em; height: 100px; }
1070
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
1071
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
1072
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
1073
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }
1074
+
1075
+ /*
1076
+ * jQuery UI Tabs 1.9.2
1077
+ *
1078
+ * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
1079
+ * Dual licensed under the MIT or GPL Version 2 licenses.
1080
+ * http://jquery.org/license
1081
+ *
1082
+ * http://jqueryui.com/tabs/
1083
+ */
1084
+ .ui-tabs .ui-tabs-nav{ background:none; border-color: #ddd;border-style: solid;border-width: 0 0 1px;}
1085
+ .ui-tabs { position: relative; padding: .2em; zoom: 1; border:0px;} /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
1086
+
1087
+
1088
+ .ui-tabs .ui-tabs-nav li:hover, .ui-tabs .ui-tabs-nav li a:hover{
1089
+ background:whiteSmoke;
1090
+ border-bottom:1px solid #ddd;
1091
+ padding-bottom:0px;
1092
+ color:#00438A;
1093
+ }
1094
+
1095
+ .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; border-bottom:1px solid #DDD; }
1096
+ .ui-tabs .ui-tabs-nav li { text-decoration: none; list-style: none; float: left; position: relative; top: 1px; padding: 0px 0px 1px 0px; white-space: nowrap; background:none; border:0px; }
1097
+
1098
+ .ui-tabs-nav .ui-state-default{
1099
+ -webkit-box-shadow: 0px 0px 0px #ffffff; /* Saf3-4, iOS 4.0.2 - 4.2, Android 2.3+ */
1100
+ -moz-box-shadow: 0px 0px 0px #ffffff; /* FF3.5 - 3.6 */
1101
+ box-shadow: 0px 0px 0px #ffffff; /* Opera 10.5, IE9, FF4+, Chrome 6+, iOS 5 */
1102
+ }
1103
+ .ui-tabs .ui-tabs-nav li a {
1104
+ float: left;
1105
+ text-decoration: none;
1106
+ cursor: text;
1107
+ padding: 0 15px;
1108
+ margin-right: 2px;
1109
+ line-height: 34px;
1110
+ border: 1px solid transparent;
1111
+ -webkit-border-radius: 4px 4px 0 0;
1112
+ -moz-border-radius: 4px 4px 0 0;
1113
+ border-radius: 4px 4px 0 0;
1114
+
1115
+
1116
+ }
1117
+
1118
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: 0; padding-bottom: 0px; outline:none;}
1119
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active , .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a {
1120
+ background-color: #ffffff;
1121
+ border: 1px solid #ddd;
1122
+ border-bottom-color: #ffffff;
1123
+ cursor: default;
1124
+ color:gray;
1125
+ outline:none;
1126
+ }
1127
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active a{background-color: #ffffff;outline:none;border:none;}
1128
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active:hover{
1129
+ background:#ffffff;
1130
+ outline:none;
1131
+ margin-bottom:0px;
1132
+ }
1133
+ .ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; }
1134
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; color:#0069D6; background:none; font-weight:normal; margin-bottom:-1px;}
1135
+ /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
1136
+ .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
1137
+ .ui-tabs-panel .ui-button{text-decoration:none;}
1138
+ .ui-tabs .ui-tabs-hide { display: none !important; }
1139
+
1140
+
1141
+ /* IE fix for background inheritance from ui-widget*/
1142
+ .ui-tabs .ui-tabs-nav li{
1143
+ filter:none;
1144
+ }
1145
+
1146
+ /*
1147
+ * jQuery UI Tooltip 1.9.0
1148
+ *
1149
+ * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about)
1150
+ * Dual licensed under the MIT or GPL Version 2 licenses.
1151
+ * http://jquery.org/license
1152
+ *
1153
+ * http://jqueryui.com/tooltip/
1154
+ */
1155
+ .ui-tooltip {
1156
+ padding:8px;
1157
+ position:absolute;
1158
+ z-index:9999;
1159
+ max-width: 300px;
1160
+ -o-box-shadow: 0 0 5px #ddd;
1161
+ -moz-box-shadow: 0 0 5px #ddd;
1162
+ -webkit-box-shadow: 0 0 5px #ddd;
1163
+ /*box-shadow: 0 2px 5px #ddd;*/
1164
+ box-shadow: inset 0 1px 0 #ffffff;
1165
+ }
1166
+
1167
+ body .ui-tooltip { border-width:2px; }
1168
+
1169
+ /*
1170
+ * jQuery UI Datepicker 1.9.0
1171
+ *
1172
+ * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about)
1173
+ * Dual licensed under the MIT or GPL Version 2 licenses.
1174
+ * http://jquery.org/license
1175
+ *
1176
+ * http://jqueryui.com/datepicker/
1177
+ */
1178
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
1179
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; border:0px; font-weight: bold; width: 100%; padding: 4px 0; background-color: #f5f5f5; color: #808080; }
1180
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
1181
+
1182
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { /*top: 1px;*/ }
1183
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
1184
+ .ui-datepicker .ui-datepicker-next { right:2px; }
1185
+
1186
+ .ui-datepicker .ui-datepicker-prev-hover { /*left:1px;*/ }
1187
+ .ui-datepicker .ui-datepicker-next-hover { /*right:1px;*/ }
1188
+
1189
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
1190
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
1191
+ .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
1192
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
1193
+ .ui-datepicker select.ui-datepicker-month,
1194
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
1195
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
1196
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
1197
+ .ui-datepicker td { border: 0; padding: 1px; }
1198
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
1199
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
1200
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
1201
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
1202
+
1203
+ /* with multiple calendars */
1204
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
1205
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
1206
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
1207
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
1208
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
1209
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
1210
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
1211
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
1212
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
1213
+ .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
1214
+
1215
+ /* RTL support */
1216
+ .ui-datepicker-rtl { direction: rtl; }
1217
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
1218
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
1219
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
1220
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
1221
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
1222
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
1223
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
1224
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
1225
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
1226
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
1227
+
1228
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
1229
+ .ui-datepicker-cover {
1230
+ display: none; /*sorry for IE5*/
1231
+ display/**/: block; /*sorry for IE5*/
1232
+ position: absolute; /*must have*/
1233
+ z-index: -1; /*must have*/
1234
+ filter: mask(); /*must have*/
1235
+ top: -4px; /*must have*/
1236
+ left: -4px; /*must have*/
1237
+ width: 200px; /*must have*/
1238
+ height: 200px; /*must have*/
1239
+ }
1240
+
1241
+ .ui-datepicker th{
1242
+ font-weight: bold;
1243
+ color: gray;
1244
+ }
1245
+
1246
+ .ui-datepicker-today a:hover{
1247
+ background-color: #808080;
1248
+ color: #ffffff;
1249
+
1250
+ }
1251
+ .ui-datepicker-today a{
1252
+ background-color: #BFBFBF;
1253
+ cursor: pointer;
1254
+ padding: 0 4px;
1255
+ margin-bottom:0px;
1256
+
1257
+ }
1258
+
1259
+
1260
+ .ui-datepicker td a{
1261
+ margin-bottom:0px;
1262
+ border:0px;
1263
+ }
1264
+
1265
+ .ui-datepicker td:hover{
1266
+ color: #ffffff;
1267
+ }
1268
+
1269
+ .ui-datepicker td .ui-state-default {
1270
+ border:0px;
1271
+ background:none;
1272
+ margin-bottom:0px;
1273
+ padding:5px;
1274
+ color:gray;
1275
+ text-align: center;
1276
+ filter:none;
1277
+ }
1278
+
1279
+
1280
+ .ui-datepicker td .ui-state-active{
1281
+ background:#BFBFBF;
1282
+ margin-bottom:0px;
1283
+ font-size:normal;
1284
+ text-shadow: 0px;
1285
+ color: #ffffff;
1286
+ -webkit-border-radius: 4px;
1287
+ -moz-border-radius: 4px;
1288
+ border-radius: 4px;
1289
+ }
1290
+
1291
+ .ui-datepicker td .ui-state-hover {
1292
+ color: #ffffff;
1293
+ background: #0064cd;
1294
+ background-color: #0064cd;
1295
+ background-repeat: repeat-x;
1296
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
1297
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
1298
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
1299
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
1300
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
1301
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
1302
+ background-image: linear-gradient(top, #049cdb, #0064cd);
1303
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
1304
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1305
+ border-color: #0064cd #0064cd #003f81;
1306
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1307
+ -webkit-border-radius: 4px;
1308
+ -moz-border-radius: 4px;
1309
+ -khtml-border-radius: 4px;
1310
+ border-radius: 4px;
1311
+ }
1312
+
1313
+ /*
1314
+ * jQuery UI Progressbar 1.8.16
1315
+ *
1316
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
1317
+ * Dual licensed under the MIT or GPL Version 2 licenses.
1318
+ * http://jquery.org/license
1319
+ *
1320
+ * http://docs.jquery.com/UI/Progressbar#theming
1321
+ */
1322
+ .ui-progressbar { height:2em; text-align: left; }
1323
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%;
1324
+
1325
+ /*this can be removed if ui-widget-header is blue*/
1326
+ color: #ffffff;
1327
+ background-color: #0064cd;
1328
+ background-repeat: repeat-x;
1329
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
1330
+ background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
1331
+ background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
1332
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
1333
+ background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
1334
+ background-image: -o-linear-gradient(top, #049cdb, #0064cd);
1335
+ background-image: linear-gradient(top, #049cdb, #0064cd);
1336
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
1337
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
1338
+ border-color: #0064cd #0064cd #003f81;
1339
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
1340
+ }
1341
+
1342
+
1343
+
1344
+ /*** Input field styling from Bootstrap **/
1345
+ input, textarea {
1346
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
1347
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
1348
+ -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
1349
+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
1350
+ transition: border linear 0.2s, box-shadow linear 0.2s;
1351
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
1352
+ -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
1353
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
1354
+ }
1355
+ input:focus, textarea:focus {
1356
+ outline: 0;
1357
+ border-color: rgba(82, 168, 236, 0.8);
1358
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
1359
+ -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
1360
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
1361
+ }
1362
+ input[type=file]:focus, input[type=checkbox]:focus, select:focus {
1363
+ -webkit-box-shadow: none;
1364
+ -moz-box-shadow: none;
1365
+ box-shadow: none;
1366
+ outline: 1px dotted #666;
1367
+ }
1368
+
1369
+ input[type="text"],
1370
+ input[type="password"],
1371
+ .ui-autocomplete-input,
1372
+ textarea,
1373
+ .uneditable-input {
1374
+ display: inline-block;
1375
+ padding: 4px;
1376
+ font-size: 13px;
1377
+ line-height: 18px;
1378
+ color: #808080;
1379
+ border: 1px solid #ccc;
1380
+ -webkit-border-radius: 3px;
1381
+ -moz-border-radius: 3px;
1382
+ border-radius: 3px;
1383
+ }
1384
+
1385
+
1386
+
1387
+ /**Toolbar**/
1388
+
1389
+ .ui-toolbar{
1390
+ padding: 7px 14px;
1391
+ margin: 0 0 18px;
1392
+ background-color: #f5f5f5;
1393
+ background-repeat: repeat-x;
1394
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));
1395
+ background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
1396
+ background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
1397
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));
1398
+ background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
1399
+ background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
1400
+ background-image: linear-gradient(top, #ffffff, #f5f5f5);
1401
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
1402
+ border: 1px solid #ddd;
1403
+ -webkit-border-radius: 3px;
1404
+ -moz-border-radius: 3px;
1405
+ border-radius: 3px;
1406
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
1407
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
1408
+ box-shadow: inset 0 1px 0 #ffffff;
1409
+ }
1410
+
1411
+
1412
+ /***Dialog fixes**/
1413
+
1414
+ .ui-dialog-buttonset .ui-button:nth-child(2){
1415
+ cursor: pointer;
1416
+ display: inline-block;
1417
+ background-color: #e6e6e6;
1418
+ background-repeat: no-repeat;
1419
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
1420
+ background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
1421
+ background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
1422
+ background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
1423
+ background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
1424
+ background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
1425
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
1426
+ padding: 5px 14px 6px;
1427
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
1428
+ color: #333;
1429
+ font-size: 13px;
1430
+ line-height: normal;
1431
+ border: 1px solid #ccc;
1432
+ border-bottom-color: #bbb;
1433
+ -webkit-border-radius: 4px;
1434
+ -moz-border-radius: 4px;
1435
+ border-radius: 4px;
1436
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
1437
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
1438
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
1439
+ -webkit-transition: 0.1s linear all;
1440
+ -moz-transition: 0.1s linear all;
1441
+ -ms-transition: 0.1s linear all;
1442
+ -o-transition: 0.1s linear all;
1443
+ transition: 0.1s linear all;
1444
+ overflow: visible;
1445
+ }
1446
+
1447
+
1448
+
1449
+ /***Wijmo Theming**/
1450
+
1451
+ div.wijmo-wijmenu{
1452
+ padding:0 20px;
1453
+ background-color: #222;
1454
+ background-color: #222222;
1455
+ background-repeat: repeat-x;
1456
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));
1457
+ background-image: -moz-linear-gradient(top, #333333, #222222);
1458
+ background-image: -ms-linear-gradient(top, #333333, #222222);
1459
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));
1460
+ background-image: -webkit-linear-gradient(top, #333333, #222222);
1461
+ background-image: -o-linear-gradient(top, #333333, #222222);
1462
+ background-image: linear-gradient(top, #333333, #222222);
1463
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
1464
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
1465
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
1466
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
1467
+ }
1468
+
1469
+ .wijmo-wijmenu .ui-state-default{
1470
+ box-shadow: none;
1471
+ color:#BFBFBF;
1472
+ }
1473
+
1474
+ .wijmo-wijmenu .ui-state-default .wijmo-wijmenu-text{
1475
+ color:#BFBFBF;
1476
+ }
1477
+
1478
+ .wijmo-wijmenu .ui-state-hover{
1479
+ background: #444;
1480
+ background: rgba(255, 255, 255, 0.05);
1481
+ }
1482
+
1483
+ .wijmo-wijmenu .ui-state-hover .wijmo-wijmenu-text{
1484
+ color:#ffffff;
1485
+ }
1486
+
1487
+ div.wijmo-wijmenu .ui-widget-header h3{
1488
+ position: relative;
1489
+ margin-top:1px;
1490
+ padding:0;
1491
+ }
1492
+
1493
+ .wijmo-wijmenu h3 a{
1494
+ color: #FFFFFF;
1495
+ display: block;
1496
+ float: left;
1497
+ font-size: 20px;
1498
+ font-weight: 200;
1499
+ line-height: 1;
1500
+ margin-left: -20px;
1501
+ margin-top:1px;
1502
+ padding: 8px 20px 12px;
1503
+ }
1504
+
1505
+ .wijmo-wijmenu h3 a:hover{
1506
+ background-color: rgba(255, 255, 255, 0.05);
1507
+ color: #FFFFFF;
1508
+ text-decoration: none;
1509
+ }
1510
+
1511
+ .wijmo-wijmenu .ui-widget-header{
1512
+ border:0px;
1513
+ }
1514
+
1515
+ .wijmo-wijmenu .wijmo-wijmenu-parent .wijmo-wijmenu-child{
1516
+ padding: 0.3em 0;
1517
+ }
1518
+
1519
+ div.wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child{
1520
+ background: #333;
1521
+ border:0;
1522
+ margin:0;
1523
+ padding: 6px 0;
1524
+ width:160px;
1525
+ -webkit-border-radius: 0 0 6px 6px;
1526
+ -moz-border-radius: 0 0 6px 6px;
1527
+ border-radius: 0 0 6px 6px;
1528
+ -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1529
+ -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1530
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1531
+ }
1532
+
1533
+ div.wijmo-wijmenu .wijmo-wijmenu-item{
1534
+ margin:0;
1535
+ border:0;
1536
+ }
1537
+
1538
+ .wijmo-wijmenu a.wijmo-wijmenu-link{
1539
+ margin:0;
1540
+ line-height: 19px;
1541
+ padding: 10px 10px 11px;
1542
+ border:0;
1543
+ -webkit-border-radius: 0;
1544
+ -moz-border-radius: 0;
1545
+ border-radius:0;
1546
+ }
1547
+
1548
+ div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-link{
1549
+ display:block;
1550
+ float:none;
1551
+ padding: 4px 15px;
1552
+ width:auto;
1553
+ }
1554
+
1555
+ div.wijmo-wijmenu .wijmo-wijmenu-child .wijmo-wijmenu-text
1556
+ {
1557
+ float:none;
1558
+ }
1559
+
1560
+ .wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-child .ui-state-hover {
1561
+ background: #191919;
1562
+ }
1563
+
1564
+ .wijmo-wijmenu .wijmo-wijmenu-item .wijmo-wijmenu-separator{
1565
+ padding: 5px 0;
1566
+ background-image: none;
1567
+ background-color: #222;
1568
+ border-top: 1px solid #444;
1569
+ border-bottom:0;
1570
+ border-left:0;
1571
+ border-right:0;
1572
+ }
1573
+
1574
+ .wijmo-wijmenu .wijmo-wijmenu-item input {
1575
+ -moz-transition: none 0s ease 0s;
1576
+ background-color: rgba(255, 255, 255, 0.3);
1577
+ border: 1px solid #111111;
1578
+ border-radius: 4px 4px 4px 4px;
1579
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.25);
1580
+ color: rgba(255, 255, 255, 0.75);
1581
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
1582
+ line-height: 1;
1583
+ margin: 5px 10px 0 10px;
1584
+ padding: 4px 9px;
1585
+ width:100px;
1586
+ }
1587
+
1588
+ .wijmo-wijmenu .wijmo-wijmenu-item input:hover {
1589
+ background-color: rgba(255, 255, 255, 0.5);
1590
+ color: #FFFFFF;
1591
+ }
1592
+
1593
+ .wijmo-wijmenu .wijmo-wijmenu-item input:focus {
1594
+ background-color: #FFFFFF;
1595
+ border: 0 none;
1596
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
1597
+ color: #404040;
1598
+ outline: 0 none;
1599
+ padding: 5px 10px;
1600
+ text-shadow: 0 1px 0 #FFFFFF;
1601
+ }
1602
+
1603
+
1604
+ .wijmo-wijmenu .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
1605
+ text-shadow:none;
1606
+ }
1607
+
1608
+
1609
+ .wijmo-wijmenu .ui-state-default{
1610
+ box-shadow: none;
1611
+ color:#BFBFBF;
1612
+ filter: none;
1613
+ }
1614
+
ReduxCore/assets/img/1c.png ADDED
Binary file
ReduxCore/assets/img/1col.png ADDED
Binary file
ReduxCore/assets/img/2-col-portfolio.png ADDED
Binary file
ReduxCore/assets/img/2cl.png ADDED
Binary file
ReduxCore/assets/img/2cr.png ADDED
Binary file
ReduxCore/assets/img/3-col-portfolio.png ADDED
Binary file
ReduxCore/assets/img/3cl.png ADDED
Binary file
ReduxCore/assets/img/3cm.png ADDED
Binary file
ReduxCore/assets/img/3cr.png ADDED
Binary file
ReduxCore/assets/img/4-col-portfolio.png ADDED
Binary file
ReduxCore/assets/img/ajax.gif ADDED
Binary file
ReduxCore/assets/img/fs-sprite.png ADDED
Binary file
ReduxCore/assets/img/menu_icon.png ADDED
Binary file
ReduxCore/assets/img/social/Apple.png ADDED
Binary file
ReduxCore/assets/img/social/Blogger.png ADDED
Binary file
ReduxCore/assets/img/social/DailyBooth.png ADDED
Binary file
ReduxCore/assets/img/social/Digg.png ADDED
Binary file
ReduxCore/assets/img/social/Dribbble.png ADDED
Binary file
ReduxCore/assets/img/social/Drupal.png ADDED
Binary file
ReduxCore/assets/img/social/Facebook.png ADDED
Binary file
ReduxCore/assets/img/social/FeedBurner.png ADDED
Binary file
ReduxCore/assets/img/social/Flickr.png ADDED
Binary file
ReduxCore/assets/img/social/Forrst.png ADDED
Binary file
ReduxCore/assets/img/social/GitHub.png ADDED
Binary file
ReduxCore/assets/img/social/Google.png ADDED
Binary file
ReduxCore/assets/img/social/GrooveShark.png ADDED
Binary file
ReduxCore/assets/img/social/LastFM.png ADDED
Binary file
ReduxCore/assets/img/social/LinkedIn.png ADDED
Binary file
ReduxCore/assets/img/social/Map.png ADDED
Binary file
ReduxCore/assets/img/social/Newsvine.png ADDED
Binary file
ReduxCore/assets/img/social/RSS.png ADDED
Binary file
ReduxCore/assets/img/social/ShareThis.png ADDED
Binary file
ReduxCore/assets/img/social/Skype.png ADDED
Binary file
ReduxCore/assets/img/social/SoundCloud.png ADDED
Binary file
ReduxCore/assets/img/social/Squidoo.png ADDED
Binary file
ReduxCore/assets/img/social/StumbleUpon.png ADDED
Binary file
ReduxCore/assets/img/social/Tumblr.png ADDED
Binary file
ReduxCore/assets/img/social/Twitter.png ADDED
Binary file
ReduxCore/assets/img/social/Vimeo.png ADDED
Binary file
ReduxCore/assets/img/social/Windows.png ADDED
Binary file
ReduxCore/assets/img/social/WordPress.png ADDED
Binary file
ReduxCore/assets/img/social/YouTube.png ADDED
Binary file
ReduxCore/assets/img/social/deviantART.png ADDED
Binary file
ReduxCore/assets/img/toggle_tabs.png ADDED
Binary file
ReduxCore/assets/js/admin.js ADDED
@@ -0,0 +1,636 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*global jQuery, document, redux_opts, confirm, relid:true, console, jsonView */
2
+ (function($){
3
+ 'use strict';
4
+
5
+ $.redux = $.redux || {}
6
+
7
+ var the_body = $("body");
8
+
9
+ $(document).ready(function(){
10
+
11
+ $.redux.required();
12
+
13
+ the_body.on('check_dependencies', function(event,variable){
14
+ $.redux.check_dependencies(event,variable);
15
+ });
16
+ });
17
+
18
+ $.redux.required = function(){
19
+
20
+ // Hide the fold elements on load ,
21
+ // It's better to do this by PHP but there is no filter in tr tag , so is not possible
22
+ // we going to move each attributes we may need for folding to tr tag
23
+ $('.hiddenFold , .showFold').each(function() {
24
+ var current = $(this),
25
+ scope = current.parents('tr:eq(0)'),
26
+ check_data = current.data();
27
+
28
+ if(current.hasClass('hiddenFold')){
29
+ scope.addClass('hiddenFold').attr('data-check-field' , check_data.checkField)
30
+ .attr('data-check-comparison' , check_data.checkComparison)
31
+ .attr('data-check-value' , check_data.checkValue)
32
+ .attr('data-check-id' , check_data.id).hide();
33
+ //we clean here, so we won't get confuse
34
+ current.removeClass('hiddenFold').removeAttr('data-check-field')
35
+ .removeAttr('data-check-comparison')
36
+ .removeAttr('data-check-value');
37
+ }else{
38
+ scope.attr('data-check-field' , check_data.checkField)
39
+ .attr('data-check-comparison' , check_data.checkComparison)
40
+ .attr('data-check-value' , check_data.checkValue)
41
+ .attr('data-check-id' , check_data.id);
42
+ //we clean here, so we won't get confuse
43
+ current.removeClass('showFold').removeAttr('data-check-field')
44
+ .removeAttr('data-check-comparison')
45
+ .removeAttr('data-check-value');
46
+ }
47
+ });
48
+
49
+ $( ".fold" ).promise().done(function() {
50
+ // Hide the fold elements on load
51
+ $('.foldParent').each(function() {
52
+ var id = $(this).parents('.redux-field:first').data('id');
53
+ if ( redux_opts.folds[ id ] ) {
54
+ if ( !redux_opts.folds[ id ].parent ) {
55
+
56
+ $.redux.verify_fold($(this));
57
+ }
58
+ }
59
+ });
60
+ });
61
+
62
+ the_body.on('change', '#redux-main select, #redux-main radio, #redux-main input[type=checkbox], #redux-main input[type=hidden]', function(e){
63
+ $.redux.check_dependencies(e,this);
64
+
65
+ });
66
+ }
67
+
68
+ $.redux.check_dependencies = function(e,variable){
69
+
70
+ var current = $(variable),
71
+ scope = current.parents('.redux-group-tab:eq(0)');
72
+
73
+ if(!scope.length) scope = the_body;
74
+
75
+ var id = current.parents('.redux-field:first').data('id'),
76
+ dependent = scope.find('tr[data-check-field="'+id+'"]'),
77
+ value1 = variable.value,
78
+ is_hidden = current.parents('tr:eq(0)').is('.hiddenFold');
79
+
80
+ if(!dependent.length) return;
81
+
82
+ dependent.each(function(){
83
+ var current = $(this),
84
+ check_data = current.data(),
85
+ value2 = check_data.checkValue,
86
+ show = false;
87
+
88
+ if(!is_hidden){
89
+ switch(check_data.checkComparison){
90
+ case '=':
91
+ case 'equals':
92
+ //if value was array
93
+ if (value2.toString().indexOf('|') !== -1){
94
+ var value2_array = value2.split('|');
95
+ if($.inArray( value1, value2_array ) != -1){
96
+ show = true;
97
+ }
98
+ }else{
99
+ if(value1 == value2)
100
+ show = true;
101
+ }
102
+ break;
103
+ case '!=':
104
+ case 'not':
105
+ //if value was array
106
+ if (value2.indexOf('|') !== -1){
107
+ var value2_array = value2.split('|');
108
+ if($.inArray( value1, value2_array ) == -1){
109
+ show = true;
110
+ }
111
+ }else{
112
+ if(value1 != value2)
113
+ show = true;
114
+ }
115
+ break;
116
+ case '>':
117
+ case 'greater':
118
+ case 'is_larger':
119
+ if(value1 > value2)
120
+ show = true;
121
+ break;
122
+ case '<':
123
+ case 'less':
124
+ case 'is_smaller':
125
+ if(value1 < value2)
126
+ show = true;
127
+ break;
128
+ case 'contains':
129
+ if(value1.indexOf(value2) != -1)
130
+ show = true;
131
+ break;
132
+ case 'doesnt_contain':
133
+ if(value1.indexOf(value2) == -1)
134
+ show = true;
135
+ break;
136
+ case 'is_empty_or':
137
+ if(value1 == "" || value1 == value2)
138
+ show = true;
139
+ break;
140
+ case 'not_empty_and':
141
+ if(value1 != "" && value1 != value2)
142
+ show = true;
143
+ break;
144
+
145
+
146
+ }
147
+ }
148
+
149
+ /*if(show == true && current.is('.hiddenFold')){
150
+ current.css({
151
+ display:'none'
152
+ }).removeClass('hiddenFold').find('select, radio, input[type=checkbox]').trigger('change');
153
+ current.slideDown(300);
154
+ }else if(show == false && !current.is('.hiddenFold')){
155
+ current.css({
156
+ display:''
157
+ }).addClass('hiddenFold').find('select, radio, input[type=checkbox]').trigger('change');
158
+ current.slideUp(300);
159
+ }*/
160
+ $.redux.verify_fold($(variable));
161
+ });
162
+ }
163
+
164
+ $.redux.verify_fold = function(item){
165
+ var id = item.parents('.redux-field:first').data('id');
166
+ var itemVal = item.val();
167
+ var scope = (item.parents('.redux-groups-accordion-group:first').length > 0)?item.parents('.redux-groups-accordion-group:first'):item.parents('.redux-group-tab:eq(0)');
168
+
169
+ if ( redux_opts.folds[ id ] ) {
170
+
171
+ if ( redux_opts.folds[ id ].children ) {
172
+
173
+ var theChildren = {};
174
+ $.each(redux_opts.folds[ id ].children, function(index, value) {
175
+ $.each(value, function(index2, value2) { // Each of the children for this value
176
+ if ( ! theChildren[value2] ) { // Create an object if it's not there
177
+ theChildren[value2] = { show:false, hidden:false };
178
+ }
179
+
180
+ if ( index == itemVal || theChildren[value2] === true ) { // Check to see if it's in the criteria
181
+ theChildren[value2].show = true;
182
+ }
183
+
184
+ if ( theChildren[value2].show === true && scope.find('tr[data-check-id="'+id+'"]').hasClass("hiddenFold") ) {
185
+ theChildren[value2].show = false; // If this item is hidden, hide this child
186
+ }
187
+
188
+ if ( theChildren[value2].show === true && scope.find('tr[data-check-id="'+redux_opts.folds[ id ].parent+'"]').hasClass('hiddenFold') ) {
189
+ theChildren[value2].show = false; // If the parent of the item is hidden, hide this child
190
+ }
191
+ // Current visibility of this child node
192
+ theChildren[value2].hidden = scope.find('tr[data-check-id="'+value2+'"]').hasClass("hiddenFold");
193
+ });
194
+ });
195
+
196
+ $.each(theChildren, function(index) {
197
+
198
+ var parent = scope.find('tr[data-check-id="'+index+'"]');
199
+
200
+ if ( theChildren[index].show === true ) {
201
+
202
+ parent.fadeIn('medium', function() {
203
+ parent.removeClass('hiddenFold');
204
+ if ( redux_opts.folds[ index ] && redux_opts.folds[ index ].children ) {
205
+ // Now iterate the children
206
+ $.redux.verify_fold(parent.find('select, radio, input[type=checkbox], input[type=hidden]'));
207
+ }
208
+ });
209
+
210
+ } else if ( theChildren[index].hidden === false ) {
211
+
212
+ parent.fadeOut('medium', function() {
213
+ parent.addClass('hiddenFold');
214
+ if ( redux_opts.folds[ index ].children ) {
215
+ // Now iterate the children
216
+ $.redux.verify_fold(parent.find('select, radio, input[type=checkbox], input[type=hidden]'));
217
+ }
218
+ });
219
+ }
220
+ });
221
+ }
222
+ }
223
+ }
224
+
225
+ })(jQuery);
226
+
227
+ jQuery.noConflict();
228
+ var confirmOnPageExit = function(e) {
229
+ //return; // ONLY FOR DEBUGGING
230
+ // If we haven't been passed the event get the window.event
231
+ e = e || window.event;
232
+ var message = redux_opts.save_pending;
233
+ // For IE6-8 and Firefox prior to version 4
234
+ if (e) {
235
+ e.returnValue = message;
236
+ }
237
+ window.onbeforeunload = null;
238
+ // For Chrome, Safari, IE8+ and Opera 12+
239
+ return message;
240
+ };
241
+
242
+ function verify_fold(item) {
243
+
244
+ jQuery(document).ready(function($) {
245
+
246
+
247
+
248
+ if (item.hasClass('redux-info') || item.hasClass('redux-typography')) {
249
+ return;
250
+ }
251
+
252
+ var id = item.parents('.redux-field:first').data('id');
253
+ //console.log(id);
254
+ var itemVal = item.val();
255
+
256
+ if ( redux_opts.folds[ id ] ) {
257
+
258
+ /*
259
+ if ( redux_opts.folds[ id ].parent && jQuery( '#' + redux_opts.folds[ id ].parent ).is('hidden') ) {
260
+ console.log('Going to parent: '+redux_opts.folds[ id ].parent+' for field: '+id);
261
+ //verify_fold( jQuery( '#' + redux_opts.folds[ id ].parent ) );
262
+ }
263
+ */
264
+ if ( redux_opts.folds[ id ].children ) {
265
+ //console.log('Children for: '+id);
266
+
267
+ var theChildren = {};
268
+ $.each(redux_opts.folds[ id ].children, function(index, value) {
269
+ $.each(value, function(index2, value2) { // Each of the children for this value
270
+ if ( ! theChildren[value2] ) { // Create an object if it's not there
271
+ theChildren[value2] = { show:false, hidden:false };
272
+ }
273
+ //console.log('id: '+id+' childID: '+value2+' parent value: '+index+' itemVal: '+itemVal);
274
+ if ( index == itemVal || theChildren[value2] === true ) { // Check to see if it's in the criteria
275
+ theChildren[value2].show = true;
276
+ //console.log('theChildren['+value2+'].show = true');
277
+ }
278
+
279
+ if ( theChildren[value2].show === true && jQuery('#' + id).parents("tr:first").hasClass("hiddenFold") ) {
280
+ theChildren[value2].show = false; // If this item is hidden, hide this child
281
+ //console.log('set '+value2+' false');
282
+ }
283
+
284
+ if ( theChildren[value2].show === true && jQuery( '#' + redux_opts.folds[ id ].parent ).hasClass('hiddenFold') ) {
285
+ theChildren[value2].show = false; // If the parent of the item is hidden, hide this child
286
+ //console.log('set '+value2+' false2');
287
+ }
288
+ // Current visibility of this child node
289
+ theChildren[value2].hidden = jQuery('#' + value2).parents("tr:first").hasClass("hiddenFold");
290
+ });
291
+ });
292
+
293
+ //console.log(theChildren);
294
+
295
+ $.each(theChildren, function(index) {
296
+
297
+ var parent = jQuery('#' + index).parents("tr:first");
298
+
299
+ if ( theChildren[index].show === true ) {
300
+ //console.log('FadeIn '+index);
301
+
302
+ parent.fadeIn('medium', function() {
303
+ parent.removeClass('hiddenFold');
304
+ if ( redux_opts.folds[ index ] && redux_opts.folds[ index ].children ) {
305
+ //verify_fold(jQuery('#'+index)); // Now iterate the children
306
+ }
307
+ });
308
+
309
+ } else if ( theChildren[index].hidden === false ) {
310
+ //console.log('FadeOut '+index);
311
+
312
+ parent.fadeOut('medium', function() {
313
+ parent.addClass('hiddenFold');
314
+ if ( redux_opts.folds[ index ].children ) {
315
+ //verify_fold(jQuery('#'+index)); // Now iterate the children
316
+ }
317
+ });
318
+ }
319
+ });
320
+ }
321
+ }
322
+
323
+ });
324
+ }
325
+
326
+ function redux_change(variable) {
327
+ //We need this for switch and image select fields , jquery dosn't catch it on fly
328
+ if(variable.is('input[type=hidden]') || jQuery(variable).parents('fieldset:eq(0)').is('.redux-container-image_select') )
329
+ jQuery('body').trigger('check_dependencies' , variable);
330
+
331
+ if (variable.hasClass('compiler')) {
332
+ jQuery('#redux-compiler-hook').val(1);
333
+ //console.log('Compiler init');
334
+ }
335
+ if (variable.hasClass('foldParent')) {
336
+ //verify_fold(variable);
337
+ }
338
+ window.onbeforeunload = confirmOnPageExit;
339
+ if (jQuery(variable).hasClass('redux-field-error')) {
340
+ jQuery(variable).removeClass('redux-field-error');
341
+ jQuery(variable).parent().find('.redux-th-error').slideUp();
342
+ var parentID = jQuery(variable).closest('.redux-group-tab').attr('id');
343
+ var hideError = true;
344
+ jQuery('#' + parentID + ' .redux-field-error').each(function() {
345
+ hideError = false;
346
+ });
347
+ if (hideError) {
348
+ jQuery('#' + parentID + '_li .redux-menu-error').hide();
349
+ jQuery('#' + parentID + '_li .redux-group-tab-link-a').removeClass('hasError');
350
+ }
351
+ }
352
+ jQuery('#redux-save-warn').slideDown();
353
+ }
354
+ jQuery(document).ready(function($) {
355
+ jQuery('.redux-action_bar, .redux-presets-bar').on('click', function() {
356
+ window.onbeforeunload = null;
357
+ }); /** Tipsy @since v1.3 DEPRICATE? */
358
+ if (jQuery().tipsy) {
359
+ $('.tips').tipsy({
360
+ fade: true,
361
+ gravity: 's',
362
+ opacity: 0.7
363
+ });
364
+ }
365
+ /**
366
+ Current tab checks, based on cookies
367
+ **/
368
+ jQuery('.redux-group-tab-link-a').click(function() {
369
+ relid = jQuery(this).data('rel'); // The group ID of interest
370
+ // Set the proper page cookie
371
+ $.cookie('redux_current_tab', relid, {
372
+ expires: 7,
373
+ path: '/'
374
+ });
375
+ // Remove the old active tab
376
+ var oldid = jQuery('.redux-group-tab-link-li.active .redux-group-tab-link-a').data('rel');
377
+ jQuery('#' + oldid + '_section_group_li').removeClass('active');
378
+ // Show the group
379
+ jQuery('#' + oldid + '_section_group').hide();
380
+ jQuery('#' + relid + '_section_group').fadeIn(300, function() {
381
+ stickyInfo(); // race condition fix
382
+ });
383
+ jQuery('#' + relid + '_section_group_li').addClass('active');
384
+ });
385
+ // Get the URL parameter for tab
386
+
387
+ function getURLParameter(name) {
388
+ return decodeURI((new RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, ''])[1]);
389
+ }
390
+ // If the $_GET param of tab is set, use that for the tab that should be open
391
+ var tab = getURLParameter('tab');
392
+ if (tab !== "") {
393
+ if ($.cookie("redux_current_tab_get") !== tab) {
394
+ $.cookie('redux_current_tab', tab, {
395
+ expires: 7,
396
+ path: '/'
397
+ });
398
+ $.cookie('redux_current_tab_get', tab, {
399
+ expires: 7,
400
+ path: '/'
401
+ });
402
+ jQuery('#' + tab + '_section_group_li').click();
403
+ }
404
+ } else if ($.cookie('redux_current_tab_get') !== "") {
405
+ $.removeCookie('redux_current_tab_get');
406
+ }
407
+ var sTab = jQuery('#' + $.cookie("redux_current_tab") + '_section_group_li_a');
408
+ // Tab the first item or the saved one
409
+ if ($.cookie("redux_current_tab") === null || typeof($.cookie("redux_current_tab")) === "undefined" || sTab.length === 0) {
410
+ jQuery('.redux-group-tab-link-a:first').click();
411
+ } else {
412
+ sTab.click();
413
+ }
414
+ // Default button clicked
415
+ jQuery('input[name="' + redux_opts.opt_name + '[defaults]"]').click(function() {
416
+ if (!confirm(redux_opts.reset_confirm)) {
417
+ return false;
418
+ }
419
+ window.onbeforeunload = null;
420
+ });
421
+ jQuery('#expand_options').click(function(e) {
422
+ e.preventDefault();
423
+ var trigger = jQuery('#expand_options');
424
+ var width = jQuery('#redux-sidebar').width();
425
+ var id = jQuery('#redux-group-menu .active a').data('rel') + '_section_group';
426
+ if (trigger.hasClass('expanded')) {
427
+ trigger.removeClass('expanded');
428
+ jQuery('#redux-main').removeClass('expand');
429
+ jQuery('#redux-sidebar').stop().animate({
430
+ 'margin-left': '0px'
431
+ }, 500);
432
+ jQuery('#redux-main').stop().animate({
433
+ 'margin-left': width
434
+ }, 500);
435
+ jQuery('.redux-group-tab').each(function() {
436
+ if (jQuery(this).attr('id') !== id) {
437
+ jQuery(this).fadeOut('fast');
438
+ }
439
+ });
440
+ // Show the only active one
441
+ } else {
442
+ trigger.addClass('expanded');
443
+ jQuery('#redux-main').addClass('expand');
444
+ jQuery('#redux-sidebar').stop().animate({
445
+ 'margin-left': -width - 2
446
+ }, 500);
447
+ jQuery('#redux-main').stop().animate({
448
+ 'margin-left': '0px'
449
+ }, 500);
450
+ jQuery('.redux-group-tab').fadeIn();
451
+ }
452
+ return false;
453
+ });
454
+ jQuery('#redux-import').click(function(e) {
455
+ if (jQuery('#import-code-value').val() === "" && jQuery('#import-link-value').val() === "") {
456
+ e.preventDefault();
457
+ return false;
458
+ }
459
+ });
460
+ if (jQuery('#redux-save').is(':visible')) {
461
+ jQuery('#redux-save').slideDown();
462
+ }
463
+ if (jQuery('#redux-imported').is(':visible')) {
464
+ jQuery('#redux-imported').slideDown();
465
+ }
466
+ jQuery('input, textarea, select').on('change', function() {
467
+ if (!jQuery(this).hasClass('noUpdate')) {
468
+ redux_change(jQuery(this));
469
+ }
470
+ });
471
+ jQuery('#redux-import-code-button').click(function() {
472
+ if (jQuery('#redux-import-link-wrapper').is(':visible')) {
473
+ jQuery('#redux-import-link-wrapper').fadeOut('fast');
474
+ jQuery('#import-link-value').val('');
475
+ }
476
+ jQuery('#redux-import-code-wrapper').fadeIn('slow');
477
+ });
478
+ jQuery('#redux-import-link-button').click(function() {
479
+ if (jQuery('#redux-import-code-wrapper').is(':visible')) {
480
+ jQuery('#redux-import-code-wrapper').fadeOut('fast');
481
+ jQuery('#import-code-value').val('');
482
+ }
483
+ jQuery('#redux-import-link-wrapper').fadeIn('slow');
484
+ });
485
+ jQuery('#redux-export-code-copy').click(function() {
486
+ if (jQuery('#redux-export-link-value').is(':visible')) {
487
+ jQuery('#redux-export-link-value').fadeOut('slow');
488
+ }
489
+ jQuery('#redux-export-code').toggle('fade');
490
+ });
491
+ jQuery('#redux-export-link').click(function() {
492
+ if (jQuery('#redux-export-code').is(':visible')) {
493
+ jQuery('#redux-export-code').fadeOut('slow');
494
+ }
495
+ jQuery('#redux-export-link-value').toggle('fade');
496
+ });
497
+ jQuery.fn.isOnScreen = function() {
498
+ if (!window) {
499
+ return;
500
+ }
501
+
502
+ var win = jQuery(window);
503
+ var viewport = {
504
+ top: win.scrollTop(),
505
+ left: win.scrollLeft()
506
+ };
507
+ viewport.right = viewport.left + win.width();
508
+ viewport.bottom = viewport.top + win.height();
509
+ var bounds = this.offset();
510
+ bounds.right = bounds.left + this.outerWidth();
511
+ bounds.bottom = bounds.top + this.outerHeight();
512
+ return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
513
+ };
514
+ /**
515
+ Show the sticky header bar and notes!
516
+ **/
517
+ var stickyHeight = jQuery('#redux-footer').height();
518
+ jQuery('#redux-sticky-padder').css({
519
+ height: stickyHeight
520
+ });
521
+
522
+ function stickyInfo() {
523
+ var stickyWidth = jQuery('#info_bar').width() - 2;
524
+ if (!jQuery('#info_bar').isOnScreen() && !jQuery('#redux-footer-sticky').isOnScreen()) {
525
+ jQuery('#redux-footer').css({
526
+ position: 'fixed',
527
+ bottom: '0',
528
+ width: stickyWidth
529
+ });
530
+ jQuery('#redux-footer').addClass('sticky-footer-fixed');
531
+ jQuery('#redux-sticky-padder').show();
532
+ } else {
533
+ jQuery('#redux-footer').css({
534
+ background: '#eee',
535
+ position: 'inherit',
536
+ bottom: 'inherit',
537
+ width: 'inherit'
538
+ });
539
+ jQuery('#redux-sticky-padder').hide();
540
+ jQuery('#redux-footer').removeClass('sticky-footer-fixed');
541
+ }
542
+ }
543
+ jQuery(window).scroll(function() {
544
+ stickyInfo();
545
+ });
546
+ jQuery(window).resize(function() {
547
+ stickyInfo();
548
+ });
549
+ jQuery('#redux-save, #redux-imported').delay(4000).slideUp();
550
+ jQuery('#redux-field-errors').delay(8000).slideUp();
551
+ jQuery('.redux-save').click(function() {
552
+ window.onbeforeunload = null;
553
+ });
554
+ /*
555
+ // Markdown Viewer for Theme Documentation
556
+ if ($('#theme_docs_section_group').length !== 0) {
557
+ var converter = new Showdown.converter();
558
+ var text = jQuery('#theme_docs_section_group').html();
559
+ text = converter.makeHtml(text);
560
+ jQuery('#theme_docs_section_group').html(text);
561
+ }
562
+ */
563
+ // Hide the fold elements on load
564
+
565
+ /*jQuery('.fold').each(function() {
566
+ jQuery(this).parents("tr:first").addClass('hiddenFold');
567
+ jQuery(this).parents("tr:first").hide();
568
+ });*/
569
+
570
+
571
+
572
+ /*jQuery( ".fold" ).promise().done(function() {
573
+ // Hide the fold elements on load
574
+ jQuery('.foldParent').each(function() {
575
+ var id = jQuery(this).parents('.redux-field:first').data('id');
576
+ if ( redux_opts.folds[ id ] ) {
577
+ if ( !redux_opts.folds[ id ].parent ) {
578
+ //verify_fold( jQuery( this ) );
579
+ }
580
+ }
581
+ });
582
+ });*/
583
+
584
+ $('#consolePrintObject').on('click', function() {
585
+ console.log(jQuery.parseJSON(jQuery("#redux-object-json").html()));
586
+ });
587
+
588
+ if (typeof jsonView === 'function') {
589
+ jsonView('#redux-object-json', '#redux-object-browser');
590
+ }
591
+
592
+ // Display errors on page load
593
+ if (redux_opts.errors !== undefined) {
594
+ jQuery("#redux-field-errors span").html(redux_opts.errors.total);
595
+ jQuery("#redux-field-errors").show();
596
+ jQuery.each(redux_opts.errors.errors, function(sectionID, sectionArray) {
597
+ jQuery("#" + sectionID + "_section_group_li_a").prepend('<span class="redux-menu-error">' + sectionArray.total + '</span>');
598
+ jQuery("#" + sectionID + "_section_group_li_a").addClass("hasError");
599
+ jQuery.each(sectionArray.errors, function(key, value) {
600
+ jQuery("#" + value.id).addClass("redux-field-error");
601
+ jQuery("#" + value.id).parents("td:first").append('<span class="redux-th-error">' + value.msg + '</span>');
602
+ });
603
+ });
604
+ }
605
+ // Display warnings on page load
606
+ if (redux_opts.warnings !== undefined) {
607
+ jQuery("#redux-field-warnings span").html(redux_opts.warnings.total);
608
+ jQuery("#redux-field-warnings").show();
609
+ jQuery.each(redux_opts.warnings.warnings, function(sectionID, sectionArray) {
610
+ jQuery("#" + sectionID + "_section_group_li_a").prepend('<span class="redux-menu-warning">' + sectionArray.total + '</span>');
611
+ jQuery("#" + sectionID + "_section_group_li_a").addClass("hasWarning");
612
+ jQuery.each(sectionArray.warnings, function(key, value) {
613
+ jQuery("#" + value.id).addClass("redux-field-warning");
614
+ jQuery("#" + value.id).parents("td:first").append('<span class="redux-th-warning">' + value.msg + '</span>');
615
+ });
616
+ });
617
+ }
618
+
619
+
620
+
621
+ //jQuery( ".redux-section-tabs" ).tabs();
622
+ jQuery('.redux-section-tabs div').hide();
623
+ jQuery('.redux-section-tabs div:first').show();
624
+ jQuery('.redux-section-tabs ul li:first').addClass('active');
625
+
626
+ jQuery('.redux-section-tabs ul li a').click(function(){
627
+ jQuery('.redux-section-tabs ul li').removeClass('active');
628
+ jQuery(this).parent().addClass('active');
629
+ var currentTab = $(this).attr('href');
630
+ jQuery('.redux-section-tabs div').hide();
631
+ jQuery(currentTab).fadeIn();
632
+ return false;
633
+ });
634
+
635
+
636
+ });
ReduxCore/assets/js/admin.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function verify_fold(e){jQuery(document).ready(function(r){if(!e.hasClass("redux-info")&&!e.hasClass("redux-typography")){var d=e.parents(".redux-field:first").data("id"),t=e.val();if(redux_opts.folds[d]&&redux_opts.folds[d].children){var i={};r.each(redux_opts.folds[d].children,function(e,o){r.each(o,function(r,o){i[o]||(i[o]={show:!1,hidden:!1}),(e==t||i[o]===!0)&&(i[o].show=!0),i[o].show===!0&&jQuery("#"+d).parents("tr:first").hasClass("hiddenFold")&&(i[o].show=!1),i[o].show===!0&&jQuery("#"+redux_opts.folds[d].parent).hasClass("hiddenFold")&&(i[o].show=!1),i[o].hidden=jQuery("#"+o).parents("tr:first").hasClass("hiddenFold")})}),r.each(i,function(e){var r=jQuery("#"+e).parents("tr:first");i[e].show===!0?r.fadeIn("medium",function(){r.removeClass("hiddenFold"),redux_opts.folds[e]&&redux_opts.folds[e].children}):i[e].hidden===!1&&r.fadeOut("medium",function(){r.addClass("hiddenFold"),redux_opts.folds[e].children})})}}})}function redux_change(e){if((e.is("input[type=hidden]")||jQuery(e).parents("fieldset:eq(0)").is(".redux-container-image_select"))&&jQuery("body").trigger("check_dependencies",e),e.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1),e.hasClass("foldParent"),window.onbeforeunload=confirmOnPageExit,jQuery(e).hasClass("redux-field-error")){jQuery(e).removeClass("redux-field-error"),jQuery(e).parent().find(".redux-th-error").slideUp();var r=jQuery(e).closest(".redux-group-tab").attr("id"),d=!0;jQuery("#"+r+" .redux-field-error").each(function(){d=!1}),d&&(jQuery("#"+r+"_li .redux-menu-error").hide(),jQuery("#"+r+"_li .redux-group-tab-link-a").removeClass("hasError"))}jQuery("#redux-save-warn").slideDown()}!function(e){"use strict";e.redux=e.redux||{};var r=e("body");e(document).ready(function(){e.redux.required(),r.on("check_dependencies",function(r,d){e.redux.check_dependencies(r,d)})}),e.redux.required=function(){e(".hiddenFold , .showFold").each(function(){var r=e(this),d=r.parents("tr:eq(0)"),t=r.data();r.hasClass("hiddenFold")?(d.addClass("hiddenFold").attr("data-check-field",t.checkField).attr("data-check-comparison",t.checkComparison).attr("data-check-value",t.checkValue).attr("data-check-id",t.id).hide(),r.removeClass("hiddenFold").removeAttr("data-check-field").removeAttr("data-check-comparison").removeAttr("data-check-value")):(d.attr("data-check-field",t.checkField).attr("data-check-comparison",t.checkComparison).attr("data-check-value",t.checkValue).attr("data-check-id",t.id),r.removeClass("showFold").removeAttr("data-check-field").removeAttr("data-check-comparison").removeAttr("data-check-value"))}),e(".fold").promise().done(function(){e(".foldParent").each(function(){var r=e(this).parents(".redux-field:first").data("id");redux_opts.folds[r]&&(redux_opts.folds[r].parent||e.redux.verify_fold(e(this)))})}),r.on("change","#redux-main select, #redux-main radio, #redux-main input[type=checkbox], #redux-main input[type=hidden]",function(r){e.redux.check_dependencies(r,this)})},e.redux.check_dependencies=function(d,t){var i=e(t),o=i.parents(".redux-group-tab:eq(0)");o.length||(o=r);var a=i.parents(".redux-field:first").data("id"),n=o.find('tr[data-check-field="'+a+'"]'),u=t.value,s=i.parents("tr:eq(0)").is(".hiddenFold");n.length&&n.each(function(){var r=e(this),d=r.data(),i=d.checkValue,o=!1;if(!s)switch(d.checkComparison){case"=":case"equals":if(-1!==i.toString().indexOf("|")){var a=i.split("|");-1!=e.inArray(u,a)&&(o=!0)}else u==i&&(o=!0);break;case"!=":case"not":if(-1!==i.indexOf("|")){var a=i.split("|");-1==e.inArray(u,a)&&(o=!0)}else u!=i&&(o=!0);break;case">":case"greater":case"is_larger":u>i&&(o=!0);break;case"<":case"less":case"is_smaller":i>u&&(o=!0);break;case"contains":-1!=u.indexOf(i)&&(o=!0);break;case"doesnt_contain":-1==u.indexOf(i)&&(o=!0);break;case"is_empty_or":(""==u||u==i)&&(o=!0);break;case"not_empty_and":""!=u&&u!=i&&(o=!0)}e.redux.verify_fold(e(t))})},e.redux.verify_fold=function(r){var d=r.parents(".redux-field:first").data("id"),t=r.val(),i=r.parents(".redux-groups-accordion-group:first").length>0?r.parents(".redux-groups-accordion-group:first"):r.parents(".redux-group-tab:eq(0)");if(redux_opts.folds[d]&&redux_opts.folds[d].children){var o={};e.each(redux_opts.folds[d].children,function(r,a){e.each(a,function(e,a){o[a]||(o[a]={show:!1,hidden:!1}),(r==t||o[a]===!0)&&(o[a].show=!0),o[a].show===!0&&i.find('tr[data-check-id="'+d+'"]').hasClass("hiddenFold")&&(o[a].show=!1),o[a].show===!0&&i.find('tr[data-check-id="'+redux_opts.folds[d].parent+'"]').hasClass("hiddenFold")&&(o[a].show=!1),o[a].hidden=i.find('tr[data-check-id="'+a+'"]').hasClass("hiddenFold")})}),e.each(o,function(r){var d=i.find('tr[data-check-id="'+r+'"]');o[r].show===!0?d.fadeIn("medium",function(){d.removeClass("hiddenFold"),redux_opts.folds[r]&&redux_opts.folds[r].children&&e.redux.verify_fold(d.find("select, radio, input[type=checkbox], input[type=hidden]"))}):o[r].hidden===!1&&d.fadeOut("medium",function(){d.addClass("hiddenFold"),redux_opts.folds[r].children&&e.redux.verify_fold(d.find("select, radio, input[type=checkbox], input[type=hidden]"))})})}}}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(e){e=e||window.event;var r=redux_opts.save_pending;return e&&(e.returnValue=r),window.onbeforeunload=null,r};jQuery(document).ready(function(e){function r(e){return decodeURI((new RegExp(e+"="+"(.+?)(&|$)").exec(location.search)||[,""])[1])}function d(){var e=jQuery("#info_bar").width()-2;jQuery("#info_bar").isOnScreen()||jQuery("#redux-footer-sticky").isOnScreen()?(jQuery("#redux-footer").css({background:"#eee",position:"inherit",bottom:"inherit",width:"inherit"}),jQuery("#redux-sticky-padder").hide(),jQuery("#redux-footer").removeClass("sticky-footer-fixed")):(jQuery("#redux-footer").css({position:"fixed",bottom:"0",width:e}),jQuery("#redux-footer").addClass("sticky-footer-fixed"),jQuery("#redux-sticky-padder").show())}jQuery(".redux-action_bar, .redux-presets-bar").on("click",function(){window.onbeforeunload=null}),jQuery().tipsy&&e(".tips").tipsy({fade:!0,gravity:"s",opacity:.7}),jQuery(".redux-group-tab-link-a").click(function(){relid=jQuery(this).data("rel"),e.cookie("redux_current_tab",relid,{expires:7,path:"/"});var r=jQuery(".redux-group-tab-link-li.active .redux-group-tab-link-a").data("rel");jQuery("#"+r+"_section_group_li").removeClass("active"),jQuery("#"+r+"_section_group").hide(),jQuery("#"+relid+"_section_group").fadeIn(300,function(){d()}),jQuery("#"+relid+"_section_group_li").addClass("active")});var t=r("tab");""!==t?e.cookie("redux_current_tab_get")!==t&&(e.cookie("redux_current_tab",t,{expires:7,path:"/"}),e.cookie("redux_current_tab_get",t,{expires:7,path:"/"}),jQuery("#"+t+"_section_group_li").click()):""!==e.cookie("redux_current_tab_get")&&e.removeCookie("redux_current_tab_get");var i=jQuery("#"+e.cookie("redux_current_tab")+"_section_group_li_a");null===e.cookie("redux_current_tab")||"undefined"==typeof e.cookie("redux_current_tab")||0===i.length?jQuery(".redux-group-tab-link-a:first").click():i.click(),jQuery('input[name="'+redux_opts.opt_name+'[defaults]"]').click(function(){return confirm(redux_opts.reset_confirm)?(window.onbeforeunload=null,void 0):!1}),jQuery("#expand_options").click(function(e){e.preventDefault();var r=jQuery("#expand_options"),d=jQuery("#redux-sidebar").width(),t=jQuery("#redux-group-menu .active a").data("rel")+"_section_group";return r.hasClass("expanded")?(r.removeClass("expanded"),jQuery("#redux-main").removeClass("expand"),jQuery("#redux-sidebar").stop().animate({"margin-left":"0px"},500),jQuery("#redux-main").stop().animate({"margin-left":d},500),jQuery(".redux-group-tab").each(function(){jQuery(this).attr("id")!==t&&jQuery(this).fadeOut("fast")})):(r.addClass("expanded"),jQuery("#redux-main").addClass("expand"),jQuery("#redux-sidebar").stop().animate({"margin-left":-d-2},500),jQuery("#redux-main").stop().animate({"margin-left":"0px"},500),jQuery(".redux-group-tab").fadeIn()),!1}),jQuery("#redux-import").click(function(e){return""===jQuery("#import-code-value").val()&&""===jQuery("#import-link-value").val()?(e.preventDefault(),!1):void 0}),jQuery("#redux-save").is(":visible")&&jQuery("#redux-save").slideDown(),jQuery("#redux-imported").is(":visible")&&jQuery("#redux-imported").slideDown(),jQuery("input, textarea, select").on("change",function(){jQuery(this).hasClass("noUpdate")||redux_change(jQuery(this))}),jQuery("#redux-import-code-button").click(function(){jQuery("#redux-import-link-wrapper").is(":visible")&&(jQuery("#redux-import-link-wrapper").fadeOut("fast"),jQuery("#import-link-value").val("")),jQuery("#redux-import-code-wrapper").fadeIn("slow")}),jQuery("#redux-import-link-button").click(function(){jQuery("#redux-import-code-wrapper").is(":visible")&&(jQuery("#redux-import-code-wrapper").fadeOut("fast"),jQuery("#import-code-value").val("")),jQuery("#redux-import-link-wrapper").fadeIn("slow")}),jQuery("#redux-export-code-copy").click(function(){jQuery("#redux-export-link-value").is(":visible")&&jQuery("#redux-export-link-value").fadeOut("slow"),jQuery("#redux-export-code").toggle("fade")}),jQuery("#redux-export-link").click(function(){jQuery("#redux-export-code").is(":visible")&&jQuery("#redux-export-code").fadeOut("slow"),jQuery("#redux-export-link-value").toggle("fade")}),jQuery.fn.isOnScreen=function(){if(window){var e=jQuery(window),r={top:e.scrollTop(),left:e.scrollLeft()};r.right=r.left+e.width(),r.bottom=r.top+e.height();var d=this.offset();return d.right=d.left+this.outerWidth(),d.bottom=d.top+this.outerHeight(),!(r.right<d.left||r.left>d.right||r.bottom<d.top||r.top>d.bottom)}};var o=jQuery("#redux-footer").height();jQuery("#redux-sticky-padder").css({height:o}),jQuery(window).scroll(function(){d()}),jQuery(window).resize(function(){d()}),jQuery("#redux-save, #redux-imported").delay(4e3).slideUp(),jQuery("#redux-field-errors").delay(8e3).slideUp(),jQuery(".redux-save").click(function(){window.onbeforeunload=null}),e("#consolePrintObject").on("click",function(){console.log(jQuery.parseJSON(jQuery("#redux-object-json").html()))}),"function"==typeof jsonView&&jsonView("#redux-object-json","#redux-object-browser"),void 0!==redux_opts.errors&&(jQuery("#redux-field-errors span").html(redux_opts.errors.total),jQuery("#redux-field-errors").show(),jQuery.each(redux_opts.errors.errors,function(e,r){jQuery("#"+e+"_section_group_li_a").prepend('<span class="redux-menu-error">'+r.total+"</span>"),jQuery("#"+e+"_section_group_li_a").addClass("hasError"),jQuery.each(r.errors,function(e,r){jQuery("#"+r.id).addClass("redux-field-error"),jQuery("#"+r.id).parents("td:first").append('<span class="redux-th-error">'+r.msg+"</span>")})})),void 0!==redux_opts.warnings&&(jQuery("#redux-field-warnings span").html(redux_opts.warnings.total),jQuery("#redux-field-warnings").show(),jQuery.each(redux_opts.warnings.warnings,function(e,r){jQuery("#"+e+"_section_group_li_a").prepend('<span class="redux-menu-warning">'+r.total+"</span>"),jQuery("#"+e+"_section_group_li_a").addClass("hasWarning"),jQuery.each(r.warnings,function(e,r){jQuery("#"+r.id).addClass("redux-field-warning"),jQuery("#"+r.id).parents("td:first").append('<span class="redux-th-warning">'+r.msg+"</span>")})})),jQuery(".redux-section-tabs div").hide(),jQuery(".redux-section-tabs div:first").show(),jQuery(".redux-section-tabs ul li:first").addClass("active"),jQuery(".redux-section-tabs ul li a").click(function(){jQuery(".redux-section-tabs ul li").removeClass("active"),jQuery(this).parent().addClass("active");var r=e(this).attr("href");return jQuery(".redux-section-tabs div").hide(),jQuery(r).fadeIn(),!1})});
ReduxCore/assets/js/vendor/cookie.js ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * jQuery Cookie Plugin v1.3.1
3
+ * https://github.com/carhartl/jquery-cookie
4
+ *
5
+ * Copyright 2013 Klaus Hartl
6
+ * Released under the MIT license
7
+ */
8
+ (function (factory) {
9
+ if (typeof define === 'function' && define.amd) {
10
+ // AMD. Register as anonymous module.
11
+ define(['jquery'], factory);
12
+ } else {
13
+ // Browser globals.
14
+ factory(jQuery);
15
+ }
16
+ }(function ($) {
17
+
18
+ var pluses = /\+/g;
19
+
20
+ function raw(s) {
21
+ return s;
22
+ }
23
+
24
+ function decoded(s) {
25
+ return decodeURIComponent(s.replace(pluses, ' '));
26
+ }
27
+
28
+ function converted(s) {
29
+ if (s.indexOf('"') === 0) {
30
+ // This is a quoted cookie as according to RFC2068, unescape
31
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
32
+ }
33
+ try {
34
+ return config.json ? JSON.parse(s) : s;
35
+ } catch(er) {}
36
+ }
37
+
38
+ var config = $.cookie = function (key, value, options) {
39
+
40
+ // write
41
+ if (value !== undefined) {
42
+ options = $.extend({}, config.defaults, options);
43
+
44
+ if (typeof options.expires === 'number') {
45
+ var days = options.expires, t = options.expires = new Date();
46
+ t.setDate(t.getDate() + days);
47
+ }
48
+
49
+ value = config.json ? JSON.stringify(value) : String(value);
50
+
51
+ return (document.cookie = [
52
+ config.raw ? key : encodeURIComponent(key),
53
+ '=',
54
+ config.raw ? value : encodeURIComponent(value),
55
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
56
+ options.path ? '; path=' + options.path : '',
57
+ options.domain ? '; domain=' + options.domain : '',
58
+ options.secure ? '; secure' : ''
59
+ ].join(''));
60
+ }
61
+
62
+ // read
63
+ var decode = config.raw ? raw : decoded;
64
+ var cookies = document.cookie.split('; ');
65
+ var result = key ? undefined : {};
66
+ for (var i = 0, l = cookies.length; i < l; i++) {
67
+ var parts = cookies[i].split('=');
68
+ var name = decode(parts.shift());
69
+ var cookie = decode(parts.join('='));
70
+
71
+ if (key && key === name) {
72
+ result = converted(cookie);
73
+ break;
74
+ }
75
+
76
+ if (!key) {
77
+ result[name] = converted(cookie);
78
+ }
79
+ }
80
+
81
+ return result;
82
+ };
83
+
84
+ config.defaults = {};
85
+
86
+ $.removeCookie = function (key, options) {
87
+ if ($.cookie(key) !== undefined) {
88
+ // Must not alter options, thus extending a fresh object...
89
+ $.cookie(key, '', $.extend({}, options, { expires: -1 }));
90
+ return true;
91
+ }
92
+ return false;
93
+ };
94
+
95
+ }));
ReduxCore/assets/js/vendor/jquery.numeric.js ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ *
3
+ * Copyright (c) 2006-2011 Sam Collett (http://www.texotela.co.uk)
4
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
5
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
6
+ *
7
+ * Version 1.3.1
8
+ * Demo: http://www.texotela.co.uk/code/jquery/numeric/
9
+ *
10
+ */
11
+ (function($) {
12
+ /*
13
+ * Allows only valid characters to be entered into input boxes.
14
+ * Note: fixes value when pasting via Ctrl+V, but not when using the mouse to paste
15
+ * side-effect: Ctrl+A does not work, though you can still use the mouse to select (or double-click to select all)
16
+ *
17
+ * @name numeric
18
+ * @param config { decimal : "." , negative : true }
19
+ * @param callback A function that runs if the number is not valid (fires onblur)
20
+ * @author Sam Collett (http://www.texotela.co.uk)
21
+ * @example $(".numeric").numeric();
22
+ * @example $(".numeric").numeric(","); // use , as separator
23
+ * @example $(".numeric").numeric({ decimal : "," }); // use , as separator
24
+ * @example $(".numeric").numeric({ negative : false }); // do not allow negative values
25
+ * @example $(".numeric").numeric(null, callback); // use default values, pass on the 'callback' function
26
+ *
27
+ */
28
+ $.fn.numeric = function(config, callback)
29
+ {
30
+ if(typeof config === 'boolean')
31
+ {
32
+ config = { decimal: config };
33
+ }
34
+ config = config || {};
35
+ // if config.negative undefined, set to true (default is to allow negative numbers)
36
+ if(typeof config.negative == "undefined") { config.negative = true; }
37
+ // set decimal point
38
+ var decimal = (config.decimal === false) ? "" : config.decimal || ".";
39
+ // allow negatives
40
+ var negative = (config.negative === true) ? true : false;
41
+ // callback function
42
+ callback = (typeof(callback) == "function" ? callback : function() {});
43
+ // set data and methods
44
+ return this.data("numeric.decimal", decimal).data("numeric.negative", negative).data("numeric.callback", callback).keypress($.fn.numeric.keypress).keyup($.fn.numeric.keyup).blur($.fn.numeric.blur);
45
+ };
46
+
47
+ $.fn.numeric.keypress = function(e)
48
+ {
49
+ // get decimal character and determine if negatives are allowed
50
+ var decimal = $.data(this, "numeric.decimal");
51
+ var negative = $.data(this, "numeric.negative");
52
+ // get the key that was pressed
53
+ var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
54
+ // allow enter/return key (only when in an input box)
55
+ if(key == 13 && this.nodeName.toLowerCase() == "input")
56
+ {
57
+ return true;
58
+ }
59
+ else if(key == 13)
60
+ {
61
+ return false;
62
+ }
63
+ var allow = false;
64
+ // allow Ctrl+A
65
+ if((e.ctrlKey && key == 97 /* firefox */) || (e.ctrlKey && key == 65) /* opera */) { return true; }
66
+ // allow Ctrl+X (cut)
67
+ if((e.ctrlKey && key == 120 /* firefox */) || (e.ctrlKey && key == 88) /* opera */) { return true; }
68
+ // allow Ctrl+C (copy)
69
+ if((e.ctrlKey && key == 99 /* firefox */) || (e.ctrlKey && key == 67) /* opera */) { return true; }
70
+ // allow Ctrl+Z (undo)
71
+ if((e.ctrlKey && key == 122 /* firefox */) || (e.ctrlKey && key == 90) /* opera */) { return true; }
72
+ // allow or deny Ctrl+V (paste), Shift+Ins
73
+ if((e.ctrlKey && key == 118 /* firefox */) || (e.ctrlKey && key == 86) /* opera */ ||
74
+ (e.shiftKey && key == 45)) { return true; }
75
+ // if a number was not pressed
76
+ if(key < 48 || key > 57)
77
+ {
78
+ var value = $(this).val();
79
+ /* '-' only allowed at start and if negative numbers allowed */
80
+ if(value.indexOf("-") !== 0 && negative && key == 45 && (value.length === 0 || parseInt($.fn.getSelectionStart(this), 10) === 0)) { return true; }
81
+ /* only one decimal separator allowed */
82
+ if(decimal && key == decimal.charCodeAt(0) && value.indexOf(decimal) != -1)
83
+ {
84
+ allow = false;
85
+ }
86
+ // check for other keys that have special purposes
87
+ if(
88
+ key != 8 /* backspace */ &&
89
+ key != 9 /* tab */ &&
90
+ key != 13 /* enter */ &&
91
+ key != 35 /* end */ &&
92
+ key != 36 /* home */ &&
93
+ key != 37 /* left */ &&
94
+ key != 39 /* right */ &&
95
+ key != 46 /* del */
96
+ )
97
+ {
98
+ allow = false;
99
+ }
100
+ else
101
+ {
102
+ // for detecting special keys (listed above)
103
+ // IE does not support 'charCode' and ignores them in keypress anyway
104
+ if(typeof e.charCode != "undefined")
105
+ {
106
+ // special keys have 'keyCode' and 'which' the same (e.g. backspace)
107
+ if(e.keyCode == e.which && e.which !== 0)
108
+ {
109
+ allow = true;
110
+ // . and delete share the same code, don't allow . (will be set to true later if it is the decimal point)
111
+ if(e.which == 46) { allow = false; }
112
+ }
113
+ // or keyCode != 0 and 'charCode'/'which' = 0
114
+ else if(e.keyCode !== 0 && e.charCode === 0 && e.which === 0)
115
+ {
116
+ allow = true;
117
+ }
118
+ }
119
+ }
120
+ // if key pressed is the decimal and it is not already in the field
121
+ if(decimal && key == decimal.charCodeAt(0))
122
+ {
123
+ if(value.indexOf(decimal) == -1)
124
+ {
125
+ allow = true;
126
+ }
127
+ else
128
+ {
129
+ allow = false;
130
+ }
131
+ }
132
+ }
133
+ else
134
+ {
135
+ allow = true;
136
+ }
137
+ return allow;
138
+ };
139
+
140
+ $.fn.numeric.keyup = function(e)
141
+ {
142
+ var val = $(this).val();
143
+ if(val && val.length > 0)
144
+ {
145
+ // get carat (cursor) position
146
+ var carat = $.fn.getSelectionStart(this);
147
+ var selectionEnd = $.fn.getSelectionEnd(this);
148
+ // get decimal character and determine if negatives are allowed
149
+ var decimal = $.data(this, "numeric.decimal");
150
+ var negative = $.data(this, "numeric.negative");
151
+
152
+ // prepend a 0 if necessary
153
+ if(decimal !== "" && decimal !== null)
154
+ {
155
+ // find decimal point
156
+ var dot = val.indexOf(decimal);
157
+ // if dot at start, add 0 before
158
+ if(dot === 0)
159
+ {
160
+ this.value = "0" + val;
161
+ }
162
+ // if dot at position 1, check if there is a - symbol before it
163
+ if(dot == 1 && val.charAt(0) == "-")
164
+ {
165
+ this.value = "-0" + val.substring(1);
166
+ }
167
+ val = this.value;
168
+ }
169
+
170
+ // if pasted in, only allow the following characters
171
+ var validChars = [0,1,2,3,4,5,6,7,8,9,'-',decimal];
172
+ // get length of the value (to loop through)
173
+ var length = val.length;
174
+ // loop backwards (to prevent going out of bounds)
175
+ for(var i = length - 1; i >= 0; i--)
176
+ {
177
+ var ch = val.charAt(i);
178
+ // remove '-' if it is in the wrong place
179
+ if(i !== 0 && ch == "-")
180
+ {
181
+ val = val.substring(0, i) + val.substring(i + 1);
182
+ }
183
+ // remove character if it is at the start, a '-' and negatives aren't allowed
184
+ else if(i === 0 && !negative && ch == "-")
185
+ {
186
+ val = val.substring(1);
187
+ }
188
+ var validChar = false;
189
+ // loop through validChars
190
+ for(var j = 0; j < validChars.length; j++)
191
+ {
192
+ // if it is valid, break out the loop
193
+ if(ch == validChars[j])
194
+ {
195
+ validChar = true;
196
+ break;
197
+ }
198
+ }
199
+ // if not a valid character, or a space, remove
200
+ if(!validChar || ch == " ")
201
+ {
202
+ val = val.substring(0, i) + val.substring(i + 1);
203
+ }
204
+ }
205
+ // remove extra decimal characters
206
+ var firstDecimal = val.indexOf(decimal);
207
+ if(firstDecimal > 0)
208
+ {
209
+ for(var k = length - 1; k > firstDecimal; k--)
210
+ {
211
+ var chch = val.charAt(k);
212
+ // remove decimal character
213
+ if(chch == decimal)
214
+ {
215
+ val = val.substring(0, k) + val.substring(k + 1);
216
+ }
217
+ }
218
+ }
219
+ // set the value and prevent the cursor moving to the end
220
+ this.value = val;
221
+ $.fn.setSelection(this, [carat, selectionEnd]);
222
+ }
223
+ };
224
+
225
+ $.fn.numeric.blur = function()
226
+ {
227
+ var decimal = $.data(this, "numeric.decimal");
228
+ var callback = $.data(this, "numeric.callback");
229
+ var val = this.value;
230
+ if(val !== "")
231
+ {
232
+ var re = new RegExp("^\\d+$|^\\d*" + decimal + "\\d+$");
233
+ if(!re.exec(val))
234
+ {
235
+ callback.apply(this);
236
+ }
237
+ }
238
+ };
239
+
240
+ $.fn.removeNumeric = function()
241
+ {
242
+ return this.data("numeric.decimal", null).data("numeric.negative", null).data("numeric.callback", null).unbind("keypress", $.fn.numeric.keypress).unbind("blur", $.fn.numeric.blur);
243
+ };
244
+
245
+ // Based on code from http://javascript.nwbox.com/cursor_position/ (Diego Perini <dperini@nwbox.com>)
246
+ $.fn.getSelectionStart = function(o)
247
+ {
248
+ if (o.createTextRange)
249
+ {
250
+ var r = document.selection.createRange().duplicate();
251
+ r.moveEnd('character', o.value.length);
252
+ if (r.text === '') { return o.value.length; }
253
+ return o.value.lastIndexOf(r.text);
254
+ } else { return o.selectionStart; }
255
+ };
256
+
257
+ // Based on code from http://javascript.nwbox.com/cursor_position/ (Diego Perini <dperini@nwbox.com>)
258
+ $.fn.getSelectionEnd = function(o)
259
+ {
260
+ if (o.createTextRange) {
261
+ var r = document.selection.createRange().duplicate()
262
+ r.moveStart('character', -o.value.length)
263
+ return r.text.length
264
+ } else return o.selectionEnd
265
+ }
266
+
267
+ // set the selection, o is the object (input), p is the position ([start, end] or just start)
268
+ $.fn.setSelection = function(o, p)
269
+ {
270
+ // if p is number, start and end are the same
271
+ if(typeof p == "number") { p = [p, p]; }
272
+ // only set if p is an array of length 2
273
+ if(p && p.constructor == Array && p.length == 2)
274
+ {
275
+ if (o.createTextRange)
276
+ {
277
+ var r = o.createTextRange();
278
+ r.collapse(true);
279
+ r.moveStart('character', p[0]);
280
+ r.moveEnd('character', p[1]);
281
+ r.select();
282
+ }
283
+ else if(o.setSelectionRange)
284
+ {
285
+ o.focus();
286
+ o.setSelectionRange(p[0], p[1]);
287
+ }
288
+ }
289
+ };
290
+
291
+ })(jQuery);
ReduxCore/assets/js/vendor/jquery.numeric.min.js ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ *
3
+ * Copyright (c) 2006-2011 Sam Collett (http://www.texotela.co.uk)
4
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
5
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
6
+ *
7
+ * Version 1.3.1
8
+ * Demo: http://www.texotela.co.uk/code/jquery/numeric/
9
+ *
10
+ */(function(e){e.fn.numeric=function(t,n){typeof t=="boolean"&&(t={decimal:t}),t=t||{},typeof t.negative=="undefined"&&(t.negative=!0);var r=t.decimal===!1?"":t.decimal||".",i=t.negative===!0?!0:!1;return n=typeof n=="function"?n:function(){},this.data("numeric.decimal",r).data("numeric.negative",i).data("numeric.callback",n).keypress(e.fn.numeric.keypress).keyup(e.fn.numeric.keyup).blur(e.fn.numeric.blur)},e.fn.numeric.keypress=function(t){var n=e.data(this,"numeric.decimal"),r=e.data(this,"numeric.negative"),i=t.charCode?t.charCode:t.keyCode?t.keyCode:0;if(i==13&&this.nodeName.toLowerCase()=="input")return!0;if(i==13)return!1;var s=!1;if(t.ctrlKey&&i==97||t.ctrlKey&&i==65)return!0;if(t.ctrlKey&&i==120||t.ctrlKey&&i==88)return!0;if(t.ctrlKey&&i==99||t.ctrlKey&&i==67)return!0;if(t.ctrlKey&&i==122||t.ctrlKey&&i==90)return!0;if(t.ctrlKey&&i==118||t.ctrlKey&&i==86||t.shiftKey&&i==45)return!0;if(i<48||i>57){var o=e(this).val();if(!(o.indexOf("-")===0||!r||i!=45||o.length!==0&&parseInt(e.fn.getSelectionStart(this),10)!==0))return!0;n&&i==n.charCodeAt(0)&&o.indexOf(n)!=-1&&(s=!1),i!=8&&i!=9&&i!=13&&i!=35&&i!=36&&i!=37&&i!=39&&i!=46?s=!1:typeof t.charCode!="undefined"&&(t.keyCode==t.which&&t.which!==0?(s=!0,t.which==46&&(s=!1)):t.keyCode!==0&&t.charCode===0&&t.which===0&&(s=!0)),n&&i==n.charCodeAt(0)&&(o.indexOf(n)==-1?s=!0:s=!1)}else s=!0;return s},e.fn.numeric.keyup=function(t){var n=e(this).val();if(n&&n.length>0){var r=e.fn.getSelectionStart(this),i=e.fn.getSelectionEnd(this),s=e.data(this,"numeric.decimal"),o=e.data(this,"numeric.negative");if(s!==""&&s!==null){var u=n.indexOf(s);u===0&&(this.value="0"+n),u==1&&n.charAt(0)=="-"&&(this.value="-0"+n.substring(1)),n=this.value}var a=[0,1,2,3,4,5,6,7,8,9,"-",s],f=n.length;for(var l=f-1;l>=0;l--){var c=n.charAt(l);l!==0&&c=="-"?n=n.substring(0,l)+n.substring(l+1):l===0&&!o&&c=="-"&&(n=n.substring(1));var h=!1;for(var p=0;p<a.length;p++)if(c==a[p]){h=!0;break}if(!h||c==" ")n=n.substring(0,l)+n.substring(l+1)}var d=n.indexOf(s);if(d>0)for(var v=f-1;v>d;v--){var m=n.charAt(v);m==s&&(n=n.substring(0,v)+n.substring(v+1))}this.value=n,e.fn.setSelection(this,[r,i])}},e.fn.numeric.blur=function(){var t=e.data(this,"numeric.decimal"),n=e.data(this,"numeric.callback"),r=this.value;if(r!==""){var i=new RegExp("^\\d+$|^\\d*"+t+"\\d+$");i.exec(r)||n.apply(this)}},e.fn.removeNumeric=function(){return this.data("numeric.decimal",null).data("numeric.negative",null).data("numeric.callback",null).unbind("keypress",e.fn.numeric.keypress).unbind("blur",e.fn.numeric.blur)},e.fn.getSelectionStart=function(e){if(e.createTextRange){var t=document.selection.createRange().duplicate();return t.moveEnd("character",e.value.length),t.text===""?e.value.length:e.value.lastIndexOf(t.text)}return e.selectionStart},e.fn.getSelectionEnd=function(e){if(e.createTextRange){var t=document.selection.createRange().duplicate();return t.moveStart("character",-e.value.length),t.text.length}return e.selectionEnd},e.fn.setSelection=function(e,t){typeof t=="number"&&(t=[t,t]);if(t&&t.constructor==Array&&t.length==2)if(e.createTextRange){var n=e.createTextRange();n.collapse(!0),n.moveStart("character",t[0]),n.moveEnd("character",t[1]),n.select()}else e.setSelectionRange&&(e.focus(),e.setSelectionRange(t[0],t[1]))}})(jQuery);
ReduxCore/assets/js/vendor/jquery.tipsy.js ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // tipsy, facebook style tooltips for jquery
2
+ // version 1.0.0a
3
+ // (c) 2008-2010 jason frame [jason@onehackoranother.com]
4
+ // released under the MIT license
5
+
6
+ (function($) {
7
+
8
+ function maybeCall(thing, ctx) {
9
+ return (typeof thing == 'function') ? (thing.call(ctx)) : thing;
10
+ };
11
+
12
+ function Tipsy(element, options) {
13
+ this.$element = $(element);
14
+ this.options = options;
15
+ this.enabled = true;
16
+ this.fixTitle();
17
+ };
18
+
19
+ Tipsy.prototype = {
20
+ show: function() {
21
+ var title = this.getTitle();
22
+ if (title && this.enabled) {
23
+ var $tip = this.tip();
24
+
25
+ $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);
26
+ $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity
27
+ $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body);
28
+
29
+ var pos = $.extend({}, this.$element.offset(), {
30
+ width: this.$element[0].offsetWidth,
31
+ height: this.$element[0].offsetHeight
32
+ });
33
+
34
+ var actualWidth = $tip[0].offsetWidth,
35
+ actualHeight = $tip[0].offsetHeight,
36
+ gravity = maybeCall(this.options.gravity, this.$element[0]);
37
+
38
+ var tp;
39
+ switch (gravity.charAt(0)) {
40
+ case 'n':
41
+ tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};
42
+ break;
43
+ case 's':
44
+ tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};
45
+ break;
46
+ case 'e':
47
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset};
48
+ break;
49
+ case 'w':
50
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset};
51
+ break;
52
+ }
53
+
54
+ if (gravity.length == 2) {
55
+ if (gravity.charAt(1) == 'w') {
56
+ tp.left = pos.left + pos.width / 2 - 15;
57
+ } else {
58
+ tp.left = pos.left + pos.width / 2 - actualWidth + 15;
59
+ }
60
+ }
61
+
62
+ $tip.css(tp).addClass('tipsy-' + gravity);
63
+ $tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0);
64
+ if (this.options.className) {
65
+ $tip.addClass(maybeCall(this.options.className, this.$element[0]));
66
+ }
67
+
68
+ if (this.options.fade) {
69
+ $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity});
70
+ } else {
71
+ $tip.css({visibility: 'visible', opacity: this.options.opacity});
72
+ }
73
+ }
74
+ },
75
+
76
+ hide: function() {
77
+ if (this.options.fade) {
78
+ this.tip().stop().fadeOut(function() { $(this).remove(); });
79
+ } else {
80
+ this.tip().remove();
81
+ }
82
+ },
83
+
84
+ fixTitle: function() {
85
+ var $e = this.$element;
86
+ if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') {
87
+ $e.attr('original-title', $e.attr('title') || '').removeAttr('title');
88
+ }
89
+ },
90
+
91
+ getTitle: function() {
92
+ var title, $e = this.$element, o = this.options;
93
+ this.fixTitle();
94
+ var title, o = this.options;
95
+ if (typeof o.title == 'string') {
96
+ title = $e.attr(o.title == 'title' ? 'original-title' : o.title);
97
+ } else if (typeof o.title == 'function') {
98
+ title = o.title.call($e[0]);
99
+ }
100
+ title = ('' + title).replace(/(^\s*|\s*$)/, "");
101
+ return title || o.fallback;
102
+ },
103
+
104
+ tip: function() {
105
+ if (!this.$tip) {
106
+ this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>');
107
+ }
108
+ return this.$tip;
109
+ },
110
+
111
+ validate: function() {
112
+ if (!this.$element[0].parentNode) {
113
+ this.hide();
114
+ this.$element = null;
115
+ this.options = null;
116
+ }
117
+ },
118
+
119
+ enable: function() { this.enabled = true; },
120
+ disable: function() { this.enabled = false; },
121
+ toggleEnabled: function() { this.enabled = !this.enabled; }
122
+ };
123
+
124
+ $.fn.tipsy = function(options) {
125
+
126
+ if (options === true) {
127
+ return this.data('tipsy');
128
+ } else if (typeof options == 'string') {
129
+ var tipsy = this.data('tipsy');
130
+ if (tipsy) tipsy[options]();
131
+ return this;
132
+ }
133
+
134
+ options = $.extend({}, $.fn.tipsy.defaults, options);
135
+
136
+ function get(ele) {
137
+ var tipsy = $.data(ele, 'tipsy');
138
+ if (!tipsy) {
139
+ tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));
140
+ $.data(ele, 'tipsy', tipsy);
141
+ }
142
+ return tipsy;
143
+ }
144
+
145
+ function enter() {
146
+ var tipsy = get(this);
147
+ tipsy.hoverState = 'in';
148
+ if (options.delayIn == 0) {
149
+ tipsy.show();
150
+ } else {
151
+ tipsy.fixTitle();
152
+ setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);
153
+ }
154
+ };
155
+
156
+ function leave() {
157
+ var tipsy = get(this);
158
+ tipsy.hoverState = 'out';
159
+ if (options.delayOut == 0) {
160
+ tipsy.hide();
161
+ } else {
162
+ setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut);
163
+ }
164
+ };
165
+
166
+ if (!options.live) this.each(function() { get(this); });
167
+
168
+ if (options.trigger != 'manual') {
169
+ var binder = options.live ? 'live' : 'bind',
170
+ eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
171
+ eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
172
+ this[binder](eventIn, enter)[binder](eventOut, leave);
173
+ }
174
+
175
+ return this;
176
+
177
+ };
178
+
179
+ $.fn.tipsy.defaults = {
180
+ className: null,
181
+ delayIn: 0,
182
+ delayOut: 0,
183
+ fade: false,
184
+ fallback: '',
185
+ gravity: 'n',
186
+ html: false,
187
+ live: false,
188
+ offset: 0,
189
+ opacity: 0.8,
190
+ title: 'title',
191
+ trigger: 'hover'
192
+ };
193
+
194
+ // Overwrite this method to provide options on a per-element basis.
195
+ // For example, you could store the gravity in a 'tipsy-gravity' attribute:
196
+ // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
197
+ // (remember - do not modify 'options' in place!)
198
+ $.fn.tipsy.elementOptions = function(ele, options) {
199
+ return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
200
+ };
201
+
202
+ $.fn.tipsy.autoNS = function() {
203
+ return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
204
+ };
205
+
206
+ $.fn.tipsy.autoWE = function() {
207
+ return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
208
+ };
209
+
210
+ /**
211
+ * yields a closure of the supplied parameters, producing a function that takes
212
+ * no arguments and is suitable for use as an autogravity function like so:
213
+ *
214
+ * @param margin (int) - distance from the viewable region edge that an
215
+ * element should be before setting its tooltip's gravity to be away
216
+ * from that edge.
217
+ * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer
218
+ * if there are no viewable region edges effecting the tooltip's
219
+ * gravity. It will try to vary from this minimally, for example,
220
+ * if 'sw' is preferred and an element is near the right viewable
221
+ * region edge, but not the top edge, it will set the gravity for
222
+ * that element's tooltip to be 'se', preserving the southern
223
+ * component.
224
+ */
225
+ $.fn.tipsy.autoBounds = function(margin, prefer) {
226
+ return function() {
227
+ var dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)},
228
+ boundTop = $(document).scrollTop() + margin,
229
+ boundLeft = $(document).scrollLeft() + margin,
230
+ $this = $(this);
231
+
232
+ if ($this.offset().top < boundTop) dir.ns = 'n';
233
+ if ($this.offset().left < boundLeft) dir.ew = 'w';
234
+ if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';
235
+ if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';
236
+
237
+ return dir.ns + (dir.ew ? dir.ew : '');
238
+ }
239
+ };
240
+
241
+ })(jQuery);
ReduxCore/assets/js/vendor/jquery.typewatch.js ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * TypeWatch 2.2
3
+ *
4
+ * Examples/Docs: github.com/dennyferra/TypeWatch
5
+ *
6
+ * Copyright(c) 2013
7
+ * Denny Ferrassoli - dennyferra.com
8
+ * Charles Christolini
9
+ *
10
+ * Dual licensed under the MIT and GPL licenses:
11
+ * http://www.opensource.org/licenses/mit-license.php
12
+ * http://www.gnu.org/licenses/gpl.html
13
+ */
14
+
15
+ (function(jQuery) {
16
+ jQuery.fn.typeWatch = function(o) {
17
+ // The default input types that are supported
18
+ var _supportedInputTypes =
19
+ ['TEXT', 'TEXTAREA', 'PASSWORD', 'TEL', 'SEARCH', 'URL', 'EMAIL', 'DATETIME', 'DATE', 'MONTH', 'WEEK', 'TIME', 'DATETIME-LOCAL', 'NUMBER', 'RANGE'];
20
+
21
+ // Options
22
+ var options = jQuery.extend({
23
+ wait: 750,
24
+ callback: function() { },
25
+ highlight: true,
26
+ captureLength: 2,
27
+ inputTypes: _supportedInputTypes
28
+ }, o);
29
+
30
+ function checkElement(timer, override) {
31
+ var value = jQuery(timer.el).val();
32
+
33
+ // Fire if text >= options.captureLength AND text != saved text OR if override AND text >= options.captureLength
34
+ if ( ( value.length >= options.captureLength && value.toUpperCase() !== timer.text ) || ( override && value.length >= options.captureLength ) ) {
35
+ timer.text = value.toUpperCase();
36
+ timer.cb.call(timer.el, value);
37
+ }
38
+ }
39
+
40
+ function watchElement(elem) {
41
+ var elementType = elem.type.toUpperCase();
42
+ if (jQuery.inArray(elementType, options.inputTypes) >= 0) {
43
+
44
+ // Allocate timer element
45
+ var timer = {
46
+ timer: null,
47
+ text: jQuery(elem).val().toUpperCase(),
48
+ cb: options.callback,
49
+ el: elem,
50
+ wait: options.wait
51
+ };
52
+
53
+ // Set focus action (highlight)
54
+ if (options.highlight) {
55
+ jQuery(elem).focus(
56
+ function() {
57
+ this.select();
58
+ });
59
+ }
60
+
61
+ // Key watcher / clear and reset the timer
62
+ var startWatch = function(evt) {
63
+ var timerWait = timer.wait;
64
+ var overrideBool = false;
65
+ var evtElementType = this.type.toUpperCase();
66
+
67
+ // If enter key is pressed and not a TEXTAREA and matched inputTypes
68
+ if (typeof evt.keyCode !== 'undefined' && evt.keyCode === 13 && evtElementType !== 'TEXTAREA' && jQuery.inArray(evtElementType, options.inputTypes) >= 0) {
69
+ timerWait = 1;
70
+ overrideBool = true;
71
+ }
72
+
73
+ var timerCallbackFx = function() {
74
+ checkElement(timer, overrideBool);
75
+ };
76
+
77
+ // Clear timer
78
+ clearTimeout(timer.timer);
79
+ timer.timer = setTimeout(timerCallbackFx, timerWait);
80
+ };
81
+
82
+ jQuery(elem).on('keydown paste cut input', startWatch);
83
+ }
84
+ }
85
+
86
+ // Watch Each Element
87
+ return this.each(function() {
88
+ watchElement(this);
89
+ });
90
+
91
+ };
92
+ })(jQuery);
ReduxCore/assets/js/vendor/jquery.typewatch.min.js ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * TypeWatch 2.2
3
+ *
4
+ * Examples/Docs: github.com/dennyferra/TypeWatch
5
+ *
6
+ * Copyright(c) 2013
7
+ * Denny Ferrassoli - dennyferra.com
8
+ * Charles Christolini
9
+ *
10
+ * Dual licensed under the MIT and GPL licenses:
11
+ * http://www.opensource.org/licenses/mit-license.php
12
+ * http://www.gnu.org/licenses/gpl.html
13
+ */(function(e){e.fn.typeWatch=function(t){function i(t,n){var i=e(t.el).val();if(i.length>=r.captureLength&&i.toUpperCase()!==t.text||n&&i.length>=r.captureLength)t.text=i.toUpperCase(),t.cb.call(t.el,i)}function s(t){var n=t.type.toUpperCase();if(e.inArray(n,r.inputTypes)>=0){var s={timer:null,text:e(t).val().toUpperCase(),cb:r.callback,el:t,wait:r.wait};r.highlight&&e(t).focus(function(){this.select()});var o=function(t){var n=s.wait,o=!1,u=this.type.toUpperCase();typeof t.keyCode!="undefined"&&t.keyCode===13&&u!=="TEXTAREA"&&e.inArray(u,r.inputTypes)>=0&&(n=1,o=!0);var a=function(){i(s,o)};clearTimeout(s.timer),s.timer=setTimeout(a,n)};e(t).on("keydown paste cut input",o)}}var n=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],r=e.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:n},t);return this.each(function(){s(this)})}})(jQuery);
ReduxCore/assets/js/vendor/jsonview.js ADDED
@@ -0,0 +1,265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /* global console, jsonView */
3
+ /*
4
+ * ViewJSON
5
+ * Version 1.0
6
+ * A Google Chrome extension to display JSON in a user-friendly format
7
+ *
8
+ * This is a chromeified version of the JSONView Firefox extension by Ben Hollis:
9
+ * http://jsonview.com
10
+ * http://code.google.com/p/jsonview
11
+ *
12
+ * Also based on the XMLTree Chrome extension by Moonty & alan.stroop
13
+ * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb
14
+ *
15
+ * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew
16
+ * MIT license / copyfree (f) F.A.T. Lab http://fffff.at
17
+ * Speed Project Approved: 2h
18
+ */
19
+
20
+ function collapse(evt) {
21
+ var collapser = evt.target;
22
+ var target = collapser.parentNode.getElementsByClassName('collapsible');
23
+ if (!target.length) {
24
+ return;
25
+ }
26
+ target = target[0];
27
+ if (target.style.display === 'none') {
28
+ var ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0];
29
+ target.parentNode.removeChild(ellipsis);
30
+ target.style.display = '';
31
+ } else {
32
+ target.style.display = 'none';
33
+ var ellipsis = document.createElement('span');
34
+ ellipsis.className = 'ellipsis';
35
+ ellipsis.innerHTML = ' &hellip; ';
36
+ target.parentNode.insertBefore(ellipsis, target);
37
+ }
38
+ collapser.innerHTML = (collapser.innerHTML === '-') ? '+' : '-';
39
+ }
40
+
41
+ function addCollapser(item) {
42
+ // This mainly filters out the root object (which shouldn't be collapsible)
43
+ if (item.nodeName !== 'LI') {
44
+ return;
45
+ }
46
+ var collapser = document.createElement('div');
47
+ collapser.className = 'collapser';
48
+ collapser.innerHTML = '-';
49
+ collapser.addEventListener('click', collapse, false);
50
+ item.insertBefore(collapser, item.firstChild);
51
+ }
52
+
53
+ function jsonView(id, target) {
54
+ this.debug = false;
55
+ if (id.indexOf("#") !== -1) {
56
+ this.idType = "id";
57
+ this.id = id.replace('#', '');
58
+ } else if (id.indexOf(".") !== -1) {
59
+ this.idType = "class";
60
+ this.id = id.replace('.', '');
61
+ } else {
62
+ if (this.debug) { console.log("Can't find that element"); }
63
+ return;
64
+ }
65
+
66
+ this.data = document.getElementById(this.id).innerHTML;
67
+ if (typeof(target) !== undefined) {
68
+ if (target.indexOf("#") !== -1) {
69
+ this.targetType = "id";
70
+ this.target = target.replace('#', '');
71
+ } else if (id.indexOf(".") !== -1) {
72
+ this.targetType = "class";
73
+ this.target = target.replace('.', '');
74
+ } else {
75
+ if (this.debug) { console.log("Can't find the target element"); }
76
+ return;
77
+ }
78
+ }
79
+ // Note: now using "*.json*" URI matching rather than these page regexes -- save CPU cycles!
80
+ // var is_json = /^\s*(\{.*\})\s*$/.test(this.data);
81
+ // var is_jsonp = /^.*\(\s*(\{.*\})\s*\)$/.test(this.data);
82
+ // if(is_json || is_jsonp){
83
+ // Our manifest specifies that we only do URLs matching '.json', so attempt to sanitize any HTML
84
+ // added by Chrome's "text/plain" or "text/html" handlers
85
+ if (/^\<pre.*\>(.*)\<\/pre\>$/.test(this.data)) {
86
+ if (this.debug) { console.log("JSONView: data is wrapped in <pre>...</pre>, stripping HTML..."); }
87
+ this.data = this.data.replace(/<(?:.|\s)*?>/g, ''); //Aggressively strip HTML.
88
+ }
89
+ // Test if what remains is JSON or JSONp
90
+ var json_regex = /^\s*([\[\{].*[\}\]])\s*$/; // Ghetto, but it works
91
+ var jsonp_regex = /^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/;
92
+ var jsonp_regex2 = /([\[\{][\s\S]*[\]\}])\)/; // more liberal support... this allows us to pass the jsonp.json & jsonp2.json tests
93
+ var is_json = json_regex.test(this.data);
94
+ var is_jsonp = jsonp_regex.test(this.data);
95
+ if (this.debug) { console.log("JSONView: is_json=" + is_json + " is_jsonp=" + is_jsonp); }
96
+ if (is_json || is_jsonp) {
97
+ if (this.debug) { console.log("JSONView: sexytime!"); }
98
+ // JSONFormatter json->HTML prototype straight from Firefox JSONView
99
+ // For reference: http://code.google.com/p/jsonview
100
+
101
+ function JSONFormatter() {
102
+ // No magic required.
103
+ }
104
+ JSONFormatter.prototype = {
105
+ htmlEncode: function(t) {
106
+ return t != null ? t.toString().replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;") : '';
107
+ },
108
+ decorateWithSpan: function(value, className) {
109
+ return '<span class="' + className + '">' + this.htmlEncode(value) + '</span>';
110
+ },
111
+ // Convert a basic JSON datatype (number, string, boolean, null, object, array) into an HTML fragment.
112
+ valueToHTML: function(value) {
113
+ var valueType = typeof value;
114
+ var output = "";
115
+ if (value === null) {
116
+ output += this.decorateWithSpan('null', 'null');
117
+ } else if (value && value.constructor === Array) {
118
+ output += this.arrayToHTML(value);
119
+ } else if (valueType === 'object') {
120
+ output += this.objectToHTML(value);
121
+ } else if (valueType === 'number') {
122
+ output += this.decorateWithSpan(value, 'num');
123
+ } else if (valueType === 'string') {
124
+ if (/^(http|https):\/\/[^\s]+$/.test(value)) {
125
+ output += '<a href="' + value + '">' + this.htmlEncode(value) + '</a>';
126
+ } else {
127
+ output += this.decorateWithSpan('"' + value + '"', 'string');
128
+ }
129
+ } else if (valueType === 'boolean') {
130
+ output += this.decorateWithSpan(value, 'bool');
131
+ }
132
+ return output;
133
+ },
134
+ // Convert an array into an HTML fragment
135
+ arrayToHTML: function(json) {
136
+ var output = '[<ul class="array collapsible">';
137
+ var hasContents = false;
138
+ for (var prop in json) {
139
+ hasContents = true;
140
+ output += '<li>';
141
+ output += this.valueToHTML(json[prop]);
142
+ output += '</li>';
143
+ }
144
+ output += '</ul>]';
145
+ if (!hasContents) {
146
+ output = "[ ]";
147
+ }
148
+ return output;
149
+ },
150
+ // Convert a JSON object to an HTML fragment
151
+ objectToHTML: function(json) {
152
+ var output = '{<ul class="obj collapsible">';
153
+ var hasContents = false;
154
+ for (var prop in json) {
155
+ hasContents = true;
156
+ output += '<li>';
157
+ output += '<span class="prop">' + this.htmlEncode(prop) + '</span>: ';
158
+ output += this.valueToHTML(json[prop]);
159
+ output += '</li>';
160
+ }
161
+ output += '</ul>}';
162
+ if (!hasContents) {
163
+ output = "{ }";
164
+ }
165
+ return output;
166
+ },
167
+ // Convert a whole JSON object into a formatted HTML document.
168
+ jsonToHTML: function(json, callback, uri) {
169
+ var output = '';
170
+ if (callback) {
171
+ output += '<div class="callback">' + callback + ' (</div>';
172
+ output += '<div id="json">';
173
+ } else {
174
+ output += '<div id="json">';
175
+ }
176
+ output += this.valueToHTML(json);
177
+ output += '</div>';
178
+ if (callback) {
179
+ output += '<div class="callback">)</div>';
180
+ }
181
+ return this.toHTML(output, uri);
182
+ },
183
+ // Produce an error document for when parsing fails.
184
+ errorPage: function(error, data, uri) {
185
+ // var output = '<div id="error">' + this.stringbundle.GetStringFromName('errorParsing') + '</div>';
186
+ // output += '<h1>' + this.stringbundle.GetStringFromName('docContents') + ':</h1>';
187
+ var output = '<div id="error">Error parsing JSON: ' + error.message + '</div>';
188
+ output += '<h1>' + error.stack + ':</h1>';
189
+ output += '<div id="json">' + this.htmlEncode(data) + '</div>';
190
+ return this.toHTML(output, uri + ' - Error');
191
+ },
192
+ // Wrap the HTML fragment in a full document. Used by jsonToHTML and errorPage.
193
+ toHTML: function(content) {
194
+ return content;
195
+ }
196
+ };
197
+ // Sanitize & output -- all magic from JSONView Firefox
198
+ this.jsonFormatter = new JSONFormatter();
199
+ // This regex attempts to match a JSONP structure:
200
+ // * Any amount of whitespace (including unicode nonbreaking spaces) between the start of the file and the callback name
201
+ // * Callback name (any valid JavaScript function name according to ECMA-262 Edition 3 spec)
202
+ // * Any amount of whitespace (including unicode nonbreaking spaces)
203
+ // * Open parentheses
204
+ // * Any amount of whitespace (including unicode nonbreaking spaces)
205
+ // * Either { or [, the only two valid characters to start a JSON string.
206
+ // * Any character, any number of times
207
+ // * Either } or ], the only two valid closing characters of a JSON string.
208
+ // * Any amount of whitespace (including unicode nonbreaking spaces)
209
+ // * A closing parenthesis, an optional semicolon, and any amount of whitespace (including unicode nonbreaking spaces) until the end of the file.
210
+ // This will miss anything that has comments, or more than one callback, or requires modification before use.
211
+ var outputDoc = '';
212
+ // text = text.match(jsonp_regex)[1];
213
+ var cleanData = '',
214
+ callback = '';
215
+ var callback_results = jsonp_regex.exec(this.data);
216
+ if (callback_results && callback_results.length === 3) {
217
+ if (this.debug) { console.log("THIS IS JSONp"); }
218
+ callback = callback_results[1];
219
+ cleanData = callback_results[2];
220
+ } else {
221
+ if (this.debug) { console.log("Vanilla JSON"); }
222
+ cleanData = this.data;
223
+ }
224
+ if (this.debug) { console.log(cleanData); }
225
+ // Covert, and catch exceptions on failure
226
+ try {
227
+ // var jsonObj = this.nativeJSON.decode(cleanData);
228
+ var jsonObj = JSON.parse(cleanData);
229
+ if (jsonObj) {
230
+ outputDoc = this.jsonFormatter.jsonToHTML(jsonObj, callback);
231
+ } else {
232
+ throw "There was no object!";
233
+ }
234
+ } catch (e) {
235
+ if (this.debug) { console.log(e); }
236
+ outputDoc = this.jsonFormatter.errorPage(e, this.data);
237
+ }
238
+ var links = '<style type="text/css">.jsonViewOutput .prop{font-weight:700;}.jsonViewOutput .null{color:red;}.jsonViewOutput .string{color:green;}.jsonViewOutput .collapser{position:absolute;left:-1em;cursor:pointer;}.jsonViewOutput li{position:relative;}.jsonViewOutput li:after{content:\',\';}.jsonViewOutput li:last-child:after{content:\'\';}.jsonViewOutput #error{-moz-border-radius:8px;border:1px solid #970000;background-color:#F7E8E8;margin:.5em;padding:.5em;}.jsonViewOutput .errormessage{font-family:monospace;}.jsonViewOutput #json{font-family:monospace;font-size:1.1em;}.jsonViewOutput ul{list-style:none;margin:0 0 0 2em;padding:0;}.jsonViewOutput h1{font-size:1.2em;}.jsonViewOutput .callback + #json{padding-left:1em;}.jsonViewOutput .callback{font-family:monospace;color:#A52A2A;}.jsonViewOutput .bool,.jsonViewOutput .num{color:blue;}</style>';
239
+ if (this.targetType !== undefined) {
240
+ this.idType = this.targetType;
241
+ this.id = this.target;
242
+ }
243
+ var el;
244
+ if (this.idType === "class") {
245
+ el = document.getElementsByClassName(this.id);
246
+ if (el) {
247
+ el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput';
248
+ el.innerHTML = links + outputDoc;
249
+ }
250
+ } else if (this.idType === "id") {
251
+ el = document.getElementById(this.id);
252
+ if (el) {
253
+ el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput';
254
+ el.innerHTML = links + outputDoc;
255
+ }
256
+ el.innerHTML = links + outputDoc;
257
+ }
258
+ var items = document.getElementsByClassName('collapsible');
259
+ for (var i = 0; i < items.length; i++) {
260
+ addCollapser(items[i].parentNode);
261
+ }
262
+ } else {
263
+ // console.log("JSONView: this is not json, not formatting.");
264
+ }
265
+ }
ReduxCore/assets/js/vendor/jsonview.min.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global console, jsonView *//*
2
+ * ViewJSON
3
+ * Version 1.0
4
+ * A Google Chrome extension to display JSON in a user-friendly format
5
+ *
6
+ * This is a chromeified version of the JSONView Firefox extension by Ben Hollis:
7
+ * http://jsonview.com
8
+ * http://code.google.com/p/jsonview
9
+ *
10
+ * Also based on the XMLTree Chrome extension by Moonty & alan.stroop
11
+ * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb
12
+ *
13
+ * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew
14
+ * MIT license / copyfree (f) F.A.T. Lab http://fffff.at
15
+ * Speed Project Approved: 2h
16
+ */function collapse(e){var t=e.target,n=t.parentNode.getElementsByClassName("collapsible");if(!n.length)return;n=n[0];if(n.style.display==="none"){var r=n.parentNode.getElementsByClassName("ellipsis")[0];n.parentNode.removeChild(r),n.style.display=""}else{n.style.display="none";var r=document.createElement("span");r.className="ellipsis",r.innerHTML=" &hellip; ",n.parentNode.insertBefore(r,n)}t.innerHTML=t.innerHTML==="-"?"+":"-"}function addCollapser(e){if(e.nodeName!=="LI")return;var t=document.createElement("div");t.className="collapser",t.innerHTML="-",t.addEventListener("click",collapse,!1),e.insertBefore(t,e.firstChild)}function jsonView(e,t){this.debug=!1;if(e.indexOf("#")!==-1)this.idType="id",this.id=e.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find that element");return}this.idType="class",this.id=e.replace(".","")}this.data=document.getElementById(this.id).innerHTML;if(typeof t!==undefined)if(t.indexOf("#")!==-1)this.targetType="id",this.target=t.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find the target element");return}this.targetType="class",this.target=t.replace(".","")}/^\<pre.*\>(.*)\<\/pre\>$/.test(this.data)&&(this.debug&&console.log("JSONView: data is wrapped in <pre>...</pre>, stripping HTML..."),this.data=this.data.replace(/<(?:.|\s)*?>/g,""));var n=/^\s*([\[\{].*[\}\]])\s*$/,r=/^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/,i=/([\[\{][\s\S]*[\]\}])\)/,s=n.test(this.data),o=r.test(this.data);this.debug&&console.log("JSONView: is_json="+s+" is_jsonp="+o);if(s||o){this.debug&&console.log("JSONView: sexytime!");function u(){}u.prototype={htmlEncode:function(e){return e!=null?e.toString().replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;"):""},decorateWithSpan:function(e,t){return'<span class="'+t+'">'+this.htmlEncode(e)+"</span>"},valueToHTML:function(e){var t=typeof e,n="";return e===null?n+=this.decorateWithSpan("null","null"):e&&e.constructor===Array?n+=this.arrayToHTML(e):t==="object"?n+=this.objectToHTML(e):t==="number"?n+=this.decorateWithSpan(e,"num"):t==="string"?/^(http|https):\/\/[^\s]+$/.test(e)?n+='<a href="'+e+'">'+this.htmlEncode(e)+"</a>":n+=this.decorateWithSpan('"'+e+'"',"string"):t==="boolean"&&(n+=this.decorateWithSpan(e,"bool")),n},arrayToHTML:function(e){var t='[<ul class="array collapsible">',n=!1;for(var r in e)n=!0,t+="<li>",t+=this.valueToHTML(e[r]),t+="</li>";return t+="</ul>]",n||(t="[ ]"),t},objectToHTML:function(e){var t='{<ul class="obj collapsible">',n=!1;for(var r in e)n=!0,t+="<li>",t+='<span class="prop">'+this.htmlEncode(r)+"</span>: ",t+=this.valueToHTML(e[r]),t+="</li>";return t+="</ul>}",n||(t="{ }"),t},jsonToHTML:function(e,t,n){var r="";return t?(r+='<div class="callback">'+t+" (</div>",r+='<div id="json">'):r+='<div id="json">',r+=this.valueToHTML(e),r+="</div>",t&&(r+='<div class="callback">)</div>'),this.toHTML(r,n)},errorPage:function(e,t,n){var r='<div id="error">Error parsing JSON: '+e.message+"</div>";return r+="<h1>"+e.stack+":</h1>",r+='<div id="json">'+this.htmlEncode(t)+"</div>",this.toHTML(r,n+" - Error")},toHTML:function(e){return e}},this.jsonFormatter=new u;var a="",f="",l="",c=r.exec(this.data);c&&c.length===3?(this.debug&&console.log("THIS IS JSONp"),l=c[1],f=c[2]):(this.debug&&console.log("Vanilla JSON"),f=this.data),this.debug&&console.log(f);try{var h=JSON.parse(f);if(!h)throw"There was no object!";a=this.jsonFormatter.jsonToHTML(h,l)}catch(p){this.debug&&console.log(p),a=this.jsonFormatter.errorPage(p,this.data)}var d="<style type=\"text/css\">.jsonViewOutput .prop{font-weight:700;}.jsonViewOutput .null{color:red;}.jsonViewOutput .string{color:green;}.jsonViewOutput .collapser{position:absolute;left:-1em;cursor:pointer;}.jsonViewOutput li{position:relative;}.jsonViewOutput li:after{content:',';}.jsonViewOutput li:last-child:after{content:'';}.jsonViewOutput #error{-moz-border-radius:8px;border:1px solid #970000;background-color:#F7E8E8;margin:.5em;padding:.5em;}.jsonViewOutput .errormessage{font-family:monospace;}.jsonViewOutput #json{font-family:monospace;font-size:1.1em;}.jsonViewOutput ul{list-style:none;margin:0 0 0 2em;padding:0;}.jsonViewOutput h1{font-size:1.2em;}.jsonViewOutput .callback + #json{padding-left:1em;}.jsonViewOutput .callback{font-family:monospace;color:#A52A2A;}.jsonViewOutput .bool,.jsonViewOutput .num{color:blue;}</style>";this.targetType!==undefined&&(this.idType=this.targetType,this.id=this.target);var v;this.idType==="class"?(v=document.getElementsByClassName(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a)):this.idType==="id"&&(v=document.getElementById(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a),v.innerHTML=d+a);var m=document.getElementsByClassName("collapsible");for(var g=0;g<m.length;g++)addCollapser(m[g].parentNode)}};
ReduxCore/assets/js/vendor/lte-ie7.js ADDED
@@ -0,0 +1,311 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Load this script using conditional IE comments if you need to support IE 7 and IE 6. */
2
+
3
+ window.onload = function() {
4
+ function addIcon(el, entity) {
5
+ var html = el.innerHTML;
6
+ el.innerHTML = '<span style="font-family: \'Elusive-Icons\'">' + entity + '</span>' + html;
7
+ }
8
+ var icons = {
9
+ 'icon-move' : '&#xe074;',
10
+ 'icon-music' : '&#xe073;',
11
+ 'icon-network' : '&#xe072;',
12
+ 'icon-off' : '&#xe071;',
13
+ 'icon-ok' : '&#xe070;',
14
+ 'icon-ok-circle' : '&#xe06f;',
15
+ 'icon-ok-sign' : '&#xe06e;',
16
+ 'icon-paper-clip' : '&#xe06d;',
17
+ 'icon-paper-clip-alt' : '&#xe06c;',
18
+ 'icon-path' : '&#xe06b;',
19
+ 'icon-plus-sign' : '&#xe059;',
20
+ 'icon-print' : '&#xe058;',
21
+ 'icon-qrcode' : '&#xe057;',
22
+ 'icon-question' : '&#xe056;',
23
+ 'icon-question-sign' : '&#xe055;',
24
+ 'icon-quotes' : '&#xe054;',
25
+ 'icon-quotes-alt' : '&#xe053;',
26
+ 'icon-random' : '&#xe052;',
27
+ 'icon-record' : '&#xe051;',
28
+ 'icon-reddit' : '&#xe050;',
29
+ 'icon-refresh' : '&#xe04f;',
30
+ 'icon-screenshot' : '&#xe03f;',
31
+ 'icon-search' : '&#xe03e;',
32
+ 'icon-search-alt' : '&#xe03d;',
33
+ 'icon-share' : '&#xe03c;',
34
+ 'icon-share-alt' : '&#xe03b;',
35
+ 'icon-shopping-cart' : '&#xe03a;',
36
+ 'icon-shopping-cart-sign' : '&#xe039;',
37
+ 'icon-signal' : '&#xe038;',
38
+ 'icon-skype' : '&#xe037;',
39
+ 'icon-slideshare' : '&#xe036;',
40
+ 'icon-smiley' : '&#xe035;',
41
+ 'icon-th-large' : '&#xe023;',
42
+ 'icon-th-list' : '&#xe022;',
43
+ 'icon-thumbs-down' : '&#xe021;',
44
+ 'icon-thumbs-up' : '&#xe020;',
45
+ 'icon-time' : '&#xe01f;',
46
+ 'icon-time-alt' : '&#xe01e;',
47
+ 'icon-tint' : '&#xe01d;',
48
+ 'icon-torso' : '&#xe01c;',
49
+ 'icon-trash' : '&#xe01b;',
50
+ 'icon-trash-alt' : '&#xe01a;',
51
+ 'icon-tumblr' : '&#xe019;',
52
+ 'icon-w3c' : '&#xe00a;',
53
+ 'icon-warning-sign' : '&#xe009;',
54
+ 'icon-website' : '&#xe008;',
55
+ 'icon-website-alt' : '&#xe007;',
56
+ 'icon-wheelchair' : '&#xe006;',
57
+ 'icon-wordpress' : '&#xe005;',
58
+ 'icon-wrench' : '&#xe004;',
59
+ 'icon-wrench-alt' : '&#xe003;',
60
+ 'icon-youtube' : '&#xe002;',
61
+ 'icon-zoom-in' : '&#xe001;',
62
+ 'icon-zoom-out' : '&#xe000;',
63
+ 'icon-pause-alt' : '&#xe069;',
64
+ 'icon-pencil' : '&#xe068;',
65
+ 'icon-pencil-alt' : '&#xe067;',
66
+ 'icon-person' : '&#xe066;',
67
+ 'icon-phone' : '&#xe065;',
68
+ 'icon-phone-alt' : '&#xe064;',
69
+ 'icon-photo' : '&#xe063;',
70
+ 'icon-photo-alt' : '&#xe062;',
71
+ 'icon-picasa' : '&#xe061;',
72
+ 'icon-picture' : '&#xe060;',
73
+ 'icon-pinterest' : '&#xe05f;',
74
+ 'icon-plane' : '&#xe05e;',
75
+ 'icon-play-alt' : '&#xe05c;',
76
+ 'icon-play-circle' : '&#xe05b;',
77
+ 'icon-plus' : '&#xe05a;',
78
+ 'icon-remove' : '&#xe04e;',
79
+ 'icon-remove-circle' : '&#xe04d;',
80
+ 'icon-remove-sign' : '&#xe04c;',
81
+ 'icon-repeat' : '&#xe04b;',
82
+ 'icon-repeat-alt' : '&#xe04a;',
83
+ 'icon-resize-full' : '&#xe049;',
84
+ 'icon-resize-horizontal' : '&#xe048;',
85
+ 'icon-resize-small' : '&#xe047;',
86
+ 'icon-resize-vertical' : '&#xe046;',
87
+ 'icon-retweet' : '&#xe045;',
88
+ 'icon-reverse-alt' : '&#xe044;',
89
+ 'icon-road' : '&#xe043;',
90
+ 'icon-rss' : '&#xe042;',
91
+ 'icon-screen' : '&#xe041;',
92
+ 'icon-screen-alt' : '&#xe040;',
93
+ 'icon-smiley-alt' : '&#xe034;',
94
+ 'icon-speaker' : '&#xe033;',
95
+ 'icon-stackoverflow' : '&#xe032;',
96
+ 'icon-star' : '&#xe031;',
97
+ 'icon-star-alt' : '&#xe030;',
98
+ 'icon-star-empty' : '&#xe02f;',
99
+ 'icon-stop-alt' : '&#xe02b;',
100
+ 'icon-stumbleupon' : '&#xe02a;',
101
+ 'icon-tag' : '&#xe029;',
102
+ 'icon-tags' : '&#xe028;',
103
+ 'icon-tasks' : '&#xe027;',
104
+ 'icon-text-height' : '&#xe026;',
105
+ 'icon-text-width' : '&#xe025;',
106
+ 'icon-th' : '&#xe024;',
107
+ 'icon-twitter' : '&#xe018;',
108
+ 'icon-universal-access' : '&#xe017;',
109
+ 'icon-unlock' : '&#xe016;',
110
+ 'icon-unlock-alt' : '&#xe015;',
111
+ 'icon-upload' : '&#xe014;',
112
+ 'icon-user' : '&#xe013;',
113
+ 'icon-video' : '&#xe012;',
114
+ 'icon-video-alt' : '&#xe011;',
115
+ 'icon-video-chat' : '&#xe010;',
116
+ 'icon-view-mode' : '&#xe00f;',
117
+ 'icon-vimeo' : '&#xe00e;',
118
+ 'icon-vkontakte' : '&#xe10e;',
119
+ 'icon-volume-down' : '&#xe00d;',
120
+ 'icon-volume-off' : '&#xe00c;',
121
+ 'icon-volume-up' : '&#xe00b;',
122
+ 'icon-backward' : '&#xe0ab;',
123
+ 'icon-fast-backward' : '&#xe09a;',
124
+ 'icon-fast-forward' : '&#xe099;',
125
+ 'icon-forward' : '&#xe093;',
126
+ 'icon-play' : '&#xe05d;',
127
+ 'icon-step-backward' : '&#xe02e;',
128
+ 'icon-step-forward' : '&#xe02d;',
129
+ 'icon-briefcase' : '&#xe10d;',
130
+ 'icon-bullhorn' : '&#xe10c;',
131
+ 'icon-calendar' : '&#xe10b;',
132
+ 'icon-calendar-sign' : '&#xe10a;',
133
+ 'icon-address-book' : '&#xe0dd;',
134
+ 'icon-address-book-alt' : '&#xe0dc;',
135
+ 'icon-adjust' : '&#xe0db;',
136
+ 'icon-adult' : '&#xe0da;',
137
+ 'icon-align-center' : '&#xe0d9;',
138
+ 'icon-align-justify' : '&#xe0d8;',
139
+ 'icon-align-left' : '&#xe0d7;',
140
+ 'icon-align-right' : '&#xe0d6;',
141
+ 'icon-arrow-down' : '&#xe0d5;',
142
+ 'icon-arrow-left' : '&#xe0d4;',
143
+ 'icon-arrow-right' : '&#xe0af;',
144
+ 'icon-arrow-up' : '&#xe0ae;',
145
+ 'icon-asl' : '&#xe0ad;',
146
+ 'icon-asterisk' : '&#xe0ac;',
147
+ 'icon-ban-circle' : '&#xe0aa;',
148
+ 'icon-barcode' : '&#xe0d3;',
149
+ 'icon-behance' : '&#xe0d2;',
150
+ 'icon-bell' : '&#xe0d1;',
151
+ 'icon-blind' : '&#xe0d0;',
152
+ 'icon-blogger' : '&#xe0cf;',
153
+ 'icon-bold' : '&#xe0ce;',
154
+ 'icon-book' : '&#xe0f5;',
155
+ 'icon-bookmark' : '&#xe0f4;',
156
+ 'icon-bookmark-empty' : '&#xe0f3;',
157
+ 'icon-braille' : '&#xe0f2;',
158
+ 'icon-camera' : '&#xe0a9;',
159
+ 'icon-cc' : '&#xe0a8;',
160
+ 'icon-certificate' : '&#xe0a7;',
161
+ 'icon-check' : '&#xe0a6;',
162
+ 'icon-check-empty' : '&#xe0a5;',
163
+ 'icon-chevron-down' : '&#xe0a4;',
164
+ 'icon-chevron-left' : '&#xe0cd;',
165
+ 'icon-chevron-right' : '&#xe0cc;',
166
+ 'icon-chevron-up' : '&#xe0cb;',
167
+ 'icon-child' : '&#xe0ca;',
168
+ 'icon-circle-arrow-down' : '&#xe0c9;',
169
+ 'icon-circle-arrow-left' : '&#xe0c8;',
170
+ 'icon-circle-arrow-right' : '&#xe0f1;',
171
+ 'icon-circle-arrow-up' : '&#xe0f0;',
172
+ 'icon-cloud' : '&#xe0ef;',
173
+ 'icon-cloud-alt' : '&#xe0ee;',
174
+ 'icon-cog' : '&#xe109;',
175
+ 'icon-cog-alt' : '&#xe108;',
176
+ 'icon-cogs' : '&#xe107;',
177
+ 'icon-comment' : '&#xe106;',
178
+ 'icon-comment-alt' : '&#xe0a3;',
179
+ 'icon-compass' : '&#xe0a2;',
180
+ 'icon-compass-alt' : '&#xe0a1;',
181
+ 'icon-credit-card' : '&#xe0a0;',
182
+ 'icon-css' : '&#xe09f;',
183
+ 'icon-dashboard' : '&#xe09e;',
184
+ 'icon-delicious' : '&#xe0c7;',
185
+ 'icon-deviantart' : '&#xe0c6;',
186
+ 'icon-digg' : '&#xe0c5;',
187
+ 'icon-download' : '&#xe0c4;',
188
+ 'icon-download-alt' : '&#xe0c3;',
189
+ 'icon-dribble' : '&#xe0c2;',
190
+ 'icon-edit' : '&#xe0ed;',
191
+ 'icon-eject' : '&#xe0ec;',
192
+ 'icon-envelope' : '&#xe0eb;',
193
+ 'icon-envelope-alt' : '&#xe0ea;',
194
+ 'icon-error' : '&#xe105;',
195
+ 'icon-error-alt' : '&#xe104;',
196
+ 'icon-exclamation-sign' : '&#xe103;',
197
+ 'icon-eye-close' : '&#xe102;',
198
+ 'icon-eye-open' : '&#xe09d;',
199
+ 'icon-facebook' : '&#xe09c;',
200
+ 'icon-facetime-video' : '&#xe09b;',
201
+ 'icon-female' : '&#xe098;',
202
+ 'icon-file' : '&#xe0c1;',
203
+ 'icon-file-alt' : '&#xe0c0;',
204
+ 'icon-file-edit' : '&#xe0bf;',
205
+ 'icon-file-edit-alt' : '&#xe0be;',
206
+ 'icon-file-new' : '&#xe0bd;',
207
+ 'icon-file-new-alt' : '&#xe0bc;',
208
+ 'icon-film' : '&#xe0e9;',
209
+ 'icon-filter' : '&#xe0e8;',
210
+ 'icon-fire' : '&#xe0e7;',
211
+ 'icon-flag' : '&#xe0e6;',
212
+ 'icon-flag-alt' : '&#xe101;',
213
+ 'icon-flickr' : '&#xe100;',
214
+ 'icon-folder' : '&#xe0ff;',
215
+ 'icon-folder-close' : '&#xe0fe;',
216
+ 'icon-folder-open' : '&#xe097;',
217
+ 'icon-folder-sign' : '&#xe096;',
218
+ 'icon-font' : '&#xe095;',
219
+ 'icon-fontsize' : '&#xe094;',
220
+ 'icon-forward-alt' : '&#xe092;',
221
+ 'icon-foursquare' : '&#xe0bb;',
222
+ 'icon-friendfeed' : '&#xe0ba;',
223
+ 'icon-friendfeed-rect' : '&#xe0b9;',
224
+ 'icon-fullscreen' : '&#xe0b8;',
225
+ 'icon-gift' : '&#xe0b7;',
226
+ 'icon-github' : '&#xe0b6;',
227
+ 'icon-github-text' : '&#xe0e5;',
228
+ 'icon-glass' : '&#xe0e4;',
229
+ 'icon-glasses' : '&#xe0e3;',
230
+ 'icon-globe' : '&#xe0e2;',
231
+ 'icon-globe-alt' : '&#xe0fd;',
232
+ 'icon-googleplus' : '&#xe0fc;',
233
+ 'icon-graph' : '&#xe0fb;',
234
+ 'icon-graph-alt' : '&#xe0fa;',
235
+ 'icon-group' : '&#xe091;',
236
+ 'icon-group-alt' : '&#xe090;',
237
+ 'icon-guidedog' : '&#xe08f;',
238
+ 'icon-hand-down' : '&#xe08e;',
239
+ 'icon-hand-left' : '&#xe08d;',
240
+ 'icon-hand-right' : '&#xe08c;',
241
+ 'icon-hand-up' : '&#xe0b5;',
242
+ 'icon-hdd' : '&#xe0b4;',
243
+ 'icon-headphones' : '&#xe0b3;',
244
+ 'icon-hearing-impaired' : '&#xe0b2;',
245
+ 'icon-heart' : '&#xe0b1;',
246
+ 'icon-heart-alt' : '&#xe0b0;',
247
+ 'icon-heart-empty' : '&#xe0e1;',
248
+ 'icon-home' : '&#xe0e0;',
249
+ 'icon-home-alt' : '&#xe0df;',
250
+ 'icon-idea' : '&#xe0de;',
251
+ 'icon-idea-alt' : '&#xe0f9;',
252
+ 'icon-inbox' : '&#xe0f8;',
253
+ 'icon-inbox-alt' : '&#xe0f7;',
254
+ 'icon-inbox-box' : '&#xe0f6;',
255
+ 'icon-indent-left' : '&#xe08b;',
256
+ 'icon-indent-right' : '&#xe08a;',
257
+ 'icon-info-sign' : '&#xe089;',
258
+ 'icon-instagram' : '&#xe088;',
259
+ 'icon-iphone-home' : '&#xe087;',
260
+ 'icon-italic' : '&#xe086;',
261
+ 'icon-key' : '&#xe085;',
262
+ 'icon-laptop' : '&#xe084;',
263
+ 'icon-laptop-alt' : '&#xe083;',
264
+ 'icon-leaf' : '&#xe082;',
265
+ 'icon-linkedin' : '&#xe081;',
266
+ 'icon-list' : '&#xe080;',
267
+ 'icon-list-alt' : '&#xe07f;',
268
+ 'icon-lock' : '&#xe07e;',
269
+ 'icon-lock-alt' : '&#xe07d;',
270
+ 'icon-magnet' : '&#xe07c;',
271
+ 'icon-male' : '&#xe07b;',
272
+ 'icon-map-marker' : '&#xe07a;',
273
+ 'icon-map-marker-alt' : '&#xe079;',
274
+ 'icon-mic' : '&#xe078;',
275
+ 'icon-mic-alt' : '&#xe077;',
276
+ 'icon-minus' : '&#xe076;',
277
+ 'icon-minus-sign' : '&#xe075;',
278
+ 'icon-pause' : '&#xe06a;',
279
+ 'icon-fork' : '&#xe10f;',
280
+ 'icon-broom' : '&#xe110;',
281
+ 'icon-return-key' : '&#xe111;',
282
+ 'icon-lastfm' : '&#xe112;',
283
+ 'icon-livejournal' : '&#xe113;',
284
+ 'icon-myspace' : '&#xe114;',
285
+ 'icon-soundcloud' : '&#xe115;',
286
+ 'icon-viadeo' : '&#xe116;',
287
+ 'icon-spotify' : '&#xe117;',
288
+ 'icon-caret-left' : '&#xe119;',
289
+ 'icon-caret-up' : '&#xe02c;',
290
+ 'icon-caret-right' : '&#xe118;',
291
+ 'icon-caret-down' : '&#xe11a;',
292
+ 'icon-stop' : '&#xe11b;'
293
+ },
294
+ els = document.getElementsByTagName('*'),
295
+ i, attr, html, c, el;
296
+ for (i = 0; ; i += 1) {
297
+ el = els[i];
298
+ if(!el) {
299
+ break;
300
+ }
301
+ attr = el.getAttribute('data-icon');
302
+ if (attr) {
303
+ addIcon(el, attr);
304
+ }
305
+ c = el.className;
306
+ c = c.match(/icon-[^\s'"]+/);
307
+ if (c && icons[c[0]]) {
308
+ addIcon(el, icons[c[0]]);
309
+ }
310
+ }
311
+ };
ReduxCore/assets/js/vendor/select2/LICENSE ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright 2012 Igor Vaynberg
2
+
3
+ Version: @@ver@@ Timestamp: @@timestamp@@
4
+
5
+ This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
6
+ General Public License version 2 (the "GPL License"). You may choose either license to govern your
7
+ use of this software only upon the condition that you accept all of the terms of either the Apache
8
+ License or the GPL License.
9
+
10
+ You may obtain a copy of the Apache License and the GPL License at:
11
+
12
+ http://www.apache.org/licenses/LICENSE-2.0
13
+ http://www.gnu.org/licenses/gpl-2.0.html
14
+
15
+ Unless required by applicable law or agreed to in writing, software distributed under the Apache License
16
+ or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17
+ either express or implied. See the Apache License and the GPL License for the specific language governing
18
+ permissions and limitations under the Apache License and the GPL License.
ReduxCore/assets/js/vendor/select2/README.md ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Select2
2
+ =======
3
+
4
+ Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.
5
+
6
+ To get started, checkout examples and documentation at http://ivaynberg.github.com/select2
7
+
8
+ Use cases
9
+ ---------
10
+
11
+ * Enhancing native selects with search.
12
+ * Enhancing native selects with a better multi-select interface.
13
+ * Loading data from JavaScript: easily load items via ajax and have them searchable.
14
+ * Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction.
15
+ * Tagging: ability to add new items on the fly.
16
+ * Working with large, remote datasets: ability to partially load a dataset based on the search term.
17
+ * Paging of large datasets: easy support for loading more pages when the results are scrolled to the end.
18
+ * Templating: support for custom rendering of results and selections.
19
+
20
+ Browser compatibility
21
+ ---------------------
22
+ * IE 8+
23
+ * Chrome 8+
24
+ * Firefox 10+
25
+ * Safari 3+
26
+ * Opera 10.6+
27
+
28
+ Integrations
29
+ ------------
30
+
31
+ * [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org))
32
+ * [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails)
33
+ * [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org))
34
+ * [Django](https://github.com/applegrew/django-select2)
35
+ * [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin)
36
+ * [Bootstrap](https://github.com/t0m/select2-bootstrap-css) (CSS skin)
37
+ * [Yii](https://github.com/tonybolzan/yii-select2)
38
+
39
+ Internationalization (i18n)
40
+ ---------------------------
41
+
42
+ Select2 supports multiple languages by simply including the right
43
+ language JS file (`select2_locale_it.js`, `select2_locale_nl.js`, etc.).
44
+
45
+ Missing a language? Just copy `select2_locale_en.js.template`, translate
46
+ it, and make a pull request back to Select2 here on GitHub.
47
+
48
+ Bug tracker
49
+ -----------
50
+
51
+ Have a bug? Please create an issue here on GitHub!
52
+
53
+ https://github.com/ivaynberg/select2/issues
54
+
55
+ Mailing list
56
+ ------------
57
+
58
+ Have a question? Ask on our mailing list!
59
+
60
+ select2@googlegroups.com
61
+
62
+ https://groups.google.com/d/forum/select2
63
+
64
+
65
+ Copyright and license
66
+ ---------------------
67
+
68
+ Copyright 2012 Igor Vaynberg
69
+
70
+ This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
71
+ General Public License version 2 (the "GPL License"). You may choose either license to govern your
72
+ use of this software only upon the condition that you accept all of the terms of either the Apache
73
+ License or the GPL License.
74
+
75
+ You may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at:
76
+
77
+ http://www.apache.org/licenses/LICENSE-2.0
78
+ http://www.gnu.org/licenses/gpl-2.0.html
79
+
80
+ Unless required by applicable law or agreed to in writing, software distributed under the Apache License
81
+ or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
82
+ either express or implied. See the Apache License and the GPL License for the specific language governing
83
+ permissions and limitations under the Apache License and the GPL License.
ReduxCore/assets/js/vendor/select2/bower.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "select2",
3
+ "version": "3.4.3",
4
+ "main": ["select2.js", "select2.css", "select2.png", "select2x2.png", "select2-spinner.gif"],
5
+ "dependencies": {
6
+ "jquery": ">= 1.7.1"
7
+ }
8
+ }
ReduxCore/assets/js/vendor/select2/release.sh ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo -n "Enter the version for this release: "
5
+
6
+ read ver
7
+
8
+ if [ ! $ver ]; then
9
+ echo "Invalid version."
10
+ exit
11
+ fi
12
+
13
+ name="select2"
14
+ js="$name.js"
15
+ mini="$name.min.js"
16
+ css="$name.css"
17
+ release="$name-$ver"
18
+ tag="$ver"
19
+ branch="build-$ver"
20
+ curbranch=`git branch | grep "*" | sed "s/* //"`
21
+ timestamp=$(date)
22
+ tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g"
23
+ remote="github"
24
+
25
+ echo "Updating Version Identifiers"
26
+
27
+ sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i "" bower.json select2.jquery.json
28
+ git add bower.json
29
+ git add select2.jquery.json
30
+ git commit -m "modified version identifiers in descriptors for release $ver"
31
+ git push
32
+
33
+ git branch "$branch"
34
+ git checkout "$branch"
35
+
36
+ echo "Tokenizing..."
37
+
38
+ find . -name "$js" | xargs -I{} sed -e "$tokens" -i "" {}
39
+ find . -name "$css" | xargs -I{} sed -e "$tokens" -i "" {}
40
+ sed -e "s/latest/$ver/g" -i "" bower.json
41
+
42
+ git add "$js"
43
+ git add "$css"
44
+
45
+ echo "Minifying..."
46
+
47
+ echo "/*" > "$mini"
48
+ cat LICENSE | sed "$tokens" >> "$mini"
49
+ echo "*/" >> "$mini"
50
+
51
+ curl -s \
52
+ --data-urlencode "js_code@$js" \
53
+ http://marijnhaverbeke.nl/uglifyjs \
54
+ >> "$mini"
55
+
56
+ git add "$mini"
57
+
58
+ git commit -m "release $ver"
59
+
60
+ echo "Tagging..."
61
+ git tag -a "$tag" -m "tagged version $ver"
62
+ git push "$remote" --tags
63
+
64
+ echo "Cleaning Up..."
65
+
66
+ git checkout "$curbranch"
67
+ git branch -D "$branch"
68
+
69
+ echo "Done"
ReduxCore/assets/js/vendor/select2/select2-spinner.gif ADDED
Binary file
ReduxCore/assets/js/vendor/select2/select2.css ADDED
@@ -0,0 +1,615 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013
3
+ */
4
+ .select2-container {
5
+ margin: 0;
6
+ position: relative;
7
+ display: inline-block;
8
+ /* inline-block for ie7 */
9
+ zoom: 1;
10
+ *display: inline;
11
+ vertical-align: middle;
12
+ }
13
+
14
+ .select2-container,
15
+ .select2-drop,
16
+ .select2-search,
17
+ .select2-search input {
18
+ /*
19
+ Force border-box so that % widths fit the parent
20
+ container without overlap because of margin/padding.
21
+
22
+ More Info : http://www.quirksmode.org/css/box.html
23
+ */
24
+ -webkit-box-sizing: border-box; /* webkit */
25
+ -moz-box-sizing: border-box; /* firefox */
26
+ box-sizing: border-box; /* css3 */
27
+ }
28
+
29
+ .select2-container .select2-choice {
30
+ display: block;
31
+ height: 26px;
32
+ padding: 0 0 0 8px;
33
+ overflow: hidden;
34
+ position: relative;
35
+
36
+ border: 1px solid #aaa;
37
+ white-space: nowrap;
38
+ line-height: 26px;
39
+ color: #444;
40
+ text-decoration: none;
41
+
42
+ border-radius: 4px;
43
+
44
+ background-clip: padding-box;
45
+
46
+ -webkit-touch-callout: none;
47
+ -webkit-user-select: none;
48
+ -moz-user-select: none;
49
+ -ms-user-select: none;
50
+ user-select: none;
51
+
52
+ background-color: #fff;
53
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
54
+ background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
55
+ background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
56
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
57
+ background-image: linear-gradient(top, #fff 0%, #eee 50%);
58
+ }
59
+
60
+ .select2-container.select2-drop-above .select2-choice {
61
+ border-bottom-color: #aaa;
62
+
63
+ border-radius: 0 0 4px 4px;
64
+
65
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));
66
+ background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);
67
+ background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);
68
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
69
+ background-image: linear-gradient(top, #eee 0%, #fff 90%);
70
+ }
71
+
72
+ .select2-container.select2-allowclear .select2-choice .select2-chosen {
73
+ margin-right: 42px;
74
+ }
75
+
76
+ .select2-container .select2-choice > .select2-chosen {
77
+ margin-right: 26px;
78
+ display: block;
79
+ overflow: hidden;
80
+
81
+ white-space: nowrap;
82
+
83
+ text-overflow: ellipsis;
84
+ }
85
+
86
+ .select2-container .select2-choice abbr {
87
+ display: none;
88
+ width: 12px;
89
+ height: 12px;
90
+ position: absolute;
91
+ right: 24px;
92
+ top: 8px;
93
+
94
+ font-size: 1px;
95
+ text-decoration: none;
96
+
97
+ border: 0;
98
+ background: url('select2.png') right top no-repeat;
99
+ cursor: pointer;
100
+ outline: 0;
101
+ }
102
+
103
+ .select2-container.select2-allowclear .select2-choice abbr {
104
+ display: inline-block;
105
+ }
106
+
107
+ .select2-container .select2-choice abbr:hover {
108
+ background-position: right -11px;
109
+ cursor: pointer;
110
+ }
111
+
112
+ .select2-drop-mask {
113
+ border: 0;
114
+ margin: 0;
115
+ padding: 0;
116
+ position: fixed;
117
+ left: 0;
118
+ top: 0;
119
+ min-height: 100%;
120
+ min-width: 100%;
121
+ height: auto;
122
+ width: auto;
123
+ opacity: 0;
124
+ z-index: 9998;
125
+ /* styles required for IE to work */
126
+ background-color: #fff;
127
+ filter: alpha(opacity=0);
128
+ }
129
+
130
+ .select2-drop {
131
+ width: 100%;
132
+ margin-top: -1px;
133
+ position: absolute;
134
+ z-index: 9999;
135
+ top: 100%;
136
+
137
+ background: #fff;
138
+ color: #000;
139
+ border: 1px solid #aaa;
140
+ border-top: 0;
141
+
142
+ border-radius: 0 0 4px 4px;
143
+
144
+ -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
145
+ box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
146
+ }
147
+
148
+ .select2-drop-auto-width {
149
+ border-top: 1px solid #aaa;
150
+ width: auto;
151
+ }
152
+
153
+ .select2-drop-auto-width .select2-search {
154
+ padding-top: 4px;
155
+ }
156
+
157
+ .select2-drop.select2-drop-above {
158
+ margin-top: 1px;
159
+ border-top: 1px solid #aaa;
160
+ border-bottom: 0;
161
+
162
+ border-radius: 4px 4px 0 0;
163
+
164
+ -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
165
+ box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
166
+ }
167
+
168
+ .select2-drop-active {
169
+ border: 1px solid #5897fb;
170
+ border-top: none;
171
+ }
172
+
173
+ .select2-drop.select2-drop-above.select2-drop-active {
174
+ border-top: 1px solid #5897fb;
175
+ }
176
+
177
+ .select2-container .select2-choice .select2-arrow {
178
+ display: inline-block;
179
+ width: 18px;
180
+ height: 100%;
181
+ position: absolute;
182
+ right: 0;
183
+ top: 0;
184
+
185
+ border-left: 1px solid #aaa;
186
+ border-radius: 0 4px 4px 0;
187
+
188
+ background-clip: padding-box;
189
+
190
+ background: #ccc;
191
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
192
+ background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
193
+ background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
194
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
195
+ background-image: linear-gradient(top, #ccc 0%, #eee 60%);
196
+ }
197
+
198
+ .select2-container .select2-choice .select2-arrow b {
199
+ display: block;
200
+ width: 100%;
201
+ height: 100%;
202
+ background: url('select2.png') no-repeat 0 1px;
203
+ }
204
+
205
+ .select2-search {
206
+ display: inline-block;
207
+ width: 100%;
208
+ min-height: 26px;
209
+ margin: 0;
210
+ padding-left: 4px;
211
+ padding-right: 4px;
212
+
213
+ position: relative;
214
+ z-index: 10000;
215
+
216
+ white-space: nowrap;
217
+ }
218
+
219
+ .select2-search input {
220
+ width: 100%;
221
+ height: auto !important;
222
+ min-height: 26px;
223
+ padding: 4px 20px 4px 5px;
224
+ margin: 0;
225
+
226
+ outline: 0;
227
+ font-family: sans-serif;
228
+ font-size: 1em;
229
+
230
+ border: 1px solid #aaa;
231
+ border-radius: 0;
232
+
233
+ -webkit-box-shadow: none;
234
+ box-shadow: none;
235
+
236
+ background: #fff url('select2.png') no-repeat 100% -22px;
237
+ background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
238
+ background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
239
+ background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
240
+ background: url('select2.png') no-repeat 100% -22px, linear-gradient(top, #fff 85%, #eee 99%);
241
+ }
242
+
243
+ .select2-drop.select2-drop-above .select2-search input {
244
+ margin-top: 4px;
245
+ }
246
+
247
+ .select2-search input.select2-active {
248
+ background: #fff url('select2-spinner.gif') no-repeat 100%;
249
+ background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
250
+ background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
251
+ background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
252
+ background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(top, #fff 85%, #eee 99%);
253
+ }
254
+
255
+ .select2-container-active .select2-choice,
256
+ .select2-container-active .select2-choices {
257
+ border: 1px solid #5897fb;
258
+ outline: none;
259
+
260
+ -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
261
+ box-shadow: 0 0 5px rgba(0, 0, 0, .3);
262
+ }
263
+
264
+ .select2-dropdown-open .select2-choice {
265
+ border-bottom-color: transparent;
266
+ -webkit-box-shadow: 0 1px 0 #fff inset;
267
+ box-shadow: 0 1px 0 #fff inset;
268
+
269
+ border-bottom-left-radius: 0;
270
+ border-bottom-right-radius: 0;
271
+
272
+ background-color: #eee;
273
+ background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
274
+ background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
275
+ background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
276
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
277
+ background-image: linear-gradient(top, #fff 0%, #eee 50%);
278
+ }
279
+
280
+ .select2-dropdown-open.select2-drop-above .select2-choice,
281
+ .select2-dropdown-open.select2-drop-above .select2-choices {
282
+ border: 1px solid #5897fb;
283
+ border-top-color: transparent;
284
+
285
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
286
+ background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
287
+ background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
288
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
289
+ background-image: linear-gradient(bottom, #fff 0%, #eee 50%);
290
+ }
291
+
292
+ .select2-dropdown-open .select2-choice .select2-arrow {
293
+ background: transparent;
294
+ border-left: none;
295
+ filter: none;
296
+ }
297
+ .select2-dropdown-open .select2-choice .select2-arrow b {
298
+ background-position: -18px 1px;
299
+ }
300
+
301
+ /* results */
302
+ .select2-results {
303
+ max-height: 200px;
304
+ padding: 0 0 0 4px;
305
+ margin: 4px 4px 4px 0;
306
+ position: relative;
307
+ overflow-x: hidden;
308
+ overflow-y: auto;
309
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
310
+ }
311
+
312
+ .select2-results ul.select2-result-sub {
313
+ margin: 0;
314
+ padding-left: 0;
315
+ }
316
+
317
+ .select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px }
318
+ .select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px }
319
+ .select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px }
320
+ .select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px }
321
+ .select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px }
322
+ .select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px }
323
+ .select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px }
324
+
325
+ .select2-results li {
326
+ list-style: none;
327
+ display: list-item;
328
+ background-image: none;
329
+ }
330
+
331
+ .select2-results li.select2-result-with-children > .select2-result-label {
332
+ font-weight: bold;
333
+ }
334
+
335
+ .select2-results .select2-result-label {
336
+ padding: 3px 7px 4px;
337
+ margin: 0;
338
+ cursor: pointer;
339
+
340
+ min-height: 1em;
341
+
342
+ -webkit-touch-callout: none;
343
+ -webkit-user-select: none;
344
+ -moz-user-select: none;
345
+ -ms-user-select: none;
346
+ user-select: none;
347
+ }
348
+
349
+ .select2-results .select2-highlighted {
350
+ background: #3875d7;
351
+ color: #fff;
352
+ }
353
+
354
+ .select2-results li em {
355
+ background: #feffde;
356
+ font-style: normal;
357
+ }
358
+
359
+ .select2-results .select2-highlighted em {
360
+ background: transparent;
361
+ }
362
+
363
+ .select2-results .select2-highlighted ul {
364
+ background: #fff;
365
+ color: #000;
366
+ }
367
+
368
+
369
+ .select2-results .select2-no-results,
370
+ .select2-results .select2-searching,
371
+ .select2-results .select2-selection-limit {
372
+ background: #f4f4f4;
373
+ display: list-item;
374
+ }
375
+
376
+ /*
377
+ disabled look for disabled choices in the results dropdown
378
+ */
379
+ .select2-results .select2-disabled.select2-highlighted {
380
+ color: #666;
381
+ background: #f4f4f4;
382
+ display: list-item;
383
+ cursor: default;
384
+ }
385
+ .select2-results .select2-disabled {
386
+ background: #f4f4f4;
387
+ display: list-item;
388
+ cursor: default;
389
+ }
390
+
391
+ .select2-results .select2-selected {
392
+ display: none;
393
+ }
394
+
395
+ .select2-more-results.select2-active {
396
+ background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
397
+ }
398
+
399
+ .select2-more-results {
400
+ background: #f4f4f4;
401
+ display: list-item;
402
+ }
403
+
404
+ /* disabled styles */
405
+
406
+ .select2-container.select2-container-disabled .select2-choice {
407
+ background-color: #f4f4f4;
408
+ background-image: none;
409
+ border: 1px solid #ddd;
410
+ cursor: default;
411
+ }
412
+
413
+ .select2-container.select2-container-disabled .select2-choice .select2-arrow {
414
+ background-color: #f4f4f4;
415
+ background-image: none;
416
+ border-left: 0;
417
+ }
418
+
419
+ .select2-container.select2-container-disabled .select2-choice abbr {
420
+ display: none;
421
+ }
422
+
423
+
424
+ /* multiselect */
425
+
426
+ .select2-container-multi .select2-choices {
427
+ height: auto !important;
428
+ height: 1%;
429
+ margin: 0;
430
+ padding: 0;
431
+ position: relative;
432
+
433
+ border: 1px solid #aaa;
434
+ cursor: text;
435
+ overflow: hidden;
436
+
437
+ background-color: #fff;
438
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
439
+ background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
440
+ background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
441
+ background-image: linear-gradient(top, #eee 1%, #fff 15%);
442
+ }
443
+
444
+ .select2-locked {
445
+ padding: 3px 5px 3px 5px !important;
446
+ }
447
+
448
+ .select2-container-multi .select2-choices {
449
+ min-height: 26px;
450
+ }
451
+
452
+ .select2-container-multi.select2-container-active .select2-choices {
453
+ border: 1px solid #5897fb;
454
+ outline: none;
455
+
456
+ -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
457
+ box-shadow: 0 0 5px rgba(0, 0, 0, .3);
458
+ }
459
+ .select2-container-multi .select2-choices li {
460
+ float: left;
461
+ list-style: none;
462
+ }
463
+ .select2-container-multi .select2-choices .select2-search-field {
464
+ margin: 0;
465
+ padding: 0;
466
+ white-space: nowrap;
467
+ }
468
+
469
+ .select2-container-multi .select2-choices .select2-search-field input {
470
+ padding: 5px;
471
+ margin: 1px 0;
472
+
473
+ font-family: sans-serif;
474
+ font-size: 100%;
475
+ color: #666;
476
+ outline: 0;
477
+ border: 0;
478
+ -webkit-box-shadow: none;
479
+ box-shadow: none;
480
+ background: transparent !important;
481
+ }
482
+
483
+ .select2-container-multi .select2-choices .select2-search-field input.select2-active {
484
+ background: #fff url('select2-spinner.gif') no-repeat 100% !important;
485
+ }
486
+
487
+ .select2-default {
488
+ color: #999 !important;
489
+ }
490
+
491
+ .select2-container-multi .select2-choices .select2-search-choice {
492
+ padding: 3px 5px 3px 18px;
493
+ margin: 3px 0 3px 5px;
494
+ position: relative;
495
+
496
+ line-height: 13px;
497
+ color: #333;
498
+ cursor: default;
499
+ border: 1px solid #aaaaaa;
500
+
501
+ border-radius: 3px;
502
+
503
+ -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
504
+ box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
505
+
506
+ background-clip: padding-box;
507
+
508
+ -webkit-touch-callout: none;
509
+ -webkit-user-select: none;
510
+ -moz-user-select: none;
511
+ -ms-user-select: none;
512
+ user-select: none;
513
+
514
+ background-color: #e4e4e4;
515
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);
516
+ background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));
517
+ background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
518
+ background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
519
+ background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
520
+ }
521
+ .select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
522
+ cursor: default;
523
+ }
524
+ .select2-container-multi .select2-choices .select2-search-choice-focus {
525
+ background: #d4d4d4;
526
+ }
527
+
528
+ .select2-search-choice-close {
529
+ display: block;
530
+ width: 12px;
531
+ height: 13px;
532
+ position: absolute;
533
+ right: 3px;
534
+ top: 4px;
535
+
536
+ font-size: 1px;
537
+ outline: none;
538
+ background: url('select2.png') right top no-repeat;
539
+ }
540
+
541
+ .select2-container-multi .select2-search-choice-close {
542
+ left: 3px;
543
+ }
544
+
545
+ .select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
546
+ background-position: right -11px;
547
+ }
548
+ .select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
549
+ background-position: right -11px;
550
+ }
551
+
552
+ /* disabled styles */
553
+ .select2-container-multi.select2-container-disabled .select2-choices {
554
+ background-color: #f4f4f4;
555
+ background-image: none;
556
+ border: 1px solid #ddd;
557
+ cursor: default;
558
+ }
559
+
560
+ .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
561
+ padding: 3px 5px 3px 5px;
562
+ border: 1px solid #ddd;
563
+ background-image: none;
564
+ background-color: #f4f4f4;
565
+ }
566
+
567
+ .select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
568
+ background: none;
569
+ }
570
+ /* end multiselect */
571
+
572
+
573
+ .select2-result-selectable .select2-match,
574
+ .select2-result-unselectable .select2-match {
575
+ text-decoration: underline;
576
+ }
577
+
578
+ .select2-offscreen, .select2-offscreen:focus {
579
+ clip: rect(0 0 0 0) !important;
580
+ width: 1px !important;
581
+ height: 1px !important;
582
+ border: 0 !important;
583
+ margin: 0 !important;
584
+ padding: 0 !important;
585
+ overflow: hidden !important;
586
+ position: absolute !important;
587
+ outline: 0 !important;
588
+ left: 0px !important;
589
+ top: 0px !important;
590
+ }
591
+
592
+ .select2-display-none {
593
+ display: none;
594
+ }
595
+
596
+ .select2-measure-scrollbar {
597
+ position: absolute;
598
+ top: -10000px;
599
+ left: -10000px;
600
+ width: 100px;
601
+ height: 100px;
602
+ overflow: scroll;
603
+ }
604
+ /* Retina-ize icons */
605
+
606
+ @media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
607
+ .select2-search input, .select2-search-choice-close, .select2-container .select2-choice abbr, .select2-container .select2-choice .select2-arrow b {
608
+ background-image: url('select2x2.png') !important;
609
+ background-repeat: no-repeat !important;
610
+ background-size: 60px 40px !important;
611
+ }
612
+ .select2-search input {
613
+ background-position: 100% -21px !important;
614
+ }
615
+ }
ReduxCore/assets/js/vendor/select2/select2.jquery.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "select2",
3
+ "title": "Select2",
4
+ "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
5
+ "keywords": [
6
+ "select",
7
+ "autocomplete",
8
+ "typeahead",
9
+ "dropdown",
10
+ "multiselect",
11
+ "tag",
12
+ "tagging"
13
+ ],
14
+ "version": "3.4.3",
15
+ "author": {
16
+ "name": "Igor Vaynberg",
17
+ "url": "https://github.com/ivaynberg"
18
+ },
19
+ "licenses": [
20
+ {
21
+ "type": "Apache",
22
+ "url": "http://www.apache.org/licenses/LICENSE-2.0"
23
+ },
24
+ {
25
+ "type": "GPL v2",
26
+ "url": "http://www.gnu.org/licenses/gpl-2.0.html"
27
+ }
28
+ ],
29
+ "bugs": "https://github.com/ivaynberg/select2/issues",
30
+ "homepage": "http://ivaynberg.github.com/select2",
31
+ "docs": "http://ivaynberg.github.com/select2/",
32
+ "download": "https://github.com/ivaynberg/select2/tags",
33
+ "dependencies": {
34
+ "jquery": ">=1.7.1"
35
+ }
36
+ }
ReduxCore/assets/js/vendor/select2/select2.js ADDED
@@ -0,0 +1,3217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Copyright 2012 Igor Vaynberg
3
+
4
+ Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013
5
+
6
+ This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
7
+ General Public License version 2 (the "GPL License"). You may choose either license to govern your
8
+ use of this software only upon the condition that you accept all of the terms of either the Apache
9
+ License or the GPL License.
10
+
11
+ You may obtain a copy of the Apache License and the GPL License at:
12
+
13
+ http://www.apache.org/licenses/LICENSE-2.0
14
+ http://www.gnu.org/licenses/gpl-2.0.html
15
+
16
+ Unless required by applicable law or agreed to in writing, software distributed under the
17
+ Apache License or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
18
+ CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for
19
+ the specific language governing permissions and limitations under the Apache License and the GPL License.
20
+ */
21
+ (function ($) {
22
+ if(typeof $.fn.each2 == "undefined") {
23
+ $.extend($.fn, {
24
+ /*
25
+ * 4-10 times faster .each replacement
26
+ * use it carefully, as it overrides jQuery context of element on each iteration
27
+ */
28
+ each2 : function (c) {
29
+ var j = $([0]), i = -1, l = this.length;
30
+ while (
31
+ ++i < l
32
+ && (j.context = j[0] = this[i])
33
+ && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object
34
+ );
35
+ return this;
36
+ }
37
+ });
38
+ }
39
+ })(jQuery);
40
+
41
+ (function ($, undefined) {
42
+ "use strict";
43
+ /*global document, window, jQuery, console */
44
+
45
+ if (window.Select2 !== undefined) {
46
+ return;
47
+ }
48
+
49
+ var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,
50
+ lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,
51
+
52
+ KEY = {
53
+ TAB: 9,
54
+ ENTER: 13,
55
+ ESC: 27,
56
+ SPACE: 32,
57
+ LEFT: 37,
58
+ UP: 38,
59
+ RIGHT: 39,
60
+ DOWN: 40,
61
+ SHIFT: 16,
62
+ CTRL: 17,
63
+ ALT: 18,
64
+ PAGE_UP: 33,
65
+ PAGE_DOWN: 34,
66
+ HOME: 36,
67
+ END: 35,
68
+ BACKSPACE: 8,
69
+ DELETE: 46,
70
+ isArrow: function (k) {
71
+ k = k.which ? k.which : k;
72
+ switch (k) {
73
+ case KEY.LEFT:
74
+ case KEY.RIGHT:
75
+ case KEY.UP:
76
+ case KEY.DOWN:
77
+ return true;
78
+ }
79
+ return false;
80
+ },
81
+ isControl: function (e) {
82
+ var k = e.which;
83
+ switch (k) {
84
+ case KEY.SHIFT:
85
+ case KEY.CTRL:
86
+ case KEY.ALT:
87
+ return true;
88
+ }
89
+
90
+ if (e.metaKey) return true;
91
+
92
+ return false;
93
+ },
94
+ isFunctionKey: function (k) {
95
+ k = k.which ? k.which : k;
96
+ return k >= 112 && k <= 123;
97
+ }
98
+ },
99
+ MEASURE_SCROLLBAR_TEMPLATE = "<div class='select2-measure-scrollbar'></div>",
100
+
101
+ DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"};
102
+
103
+ $document = $(document);
104
+
105
+ nextUid=(function() { var counter=1; return function() { return counter++; }; }());
106
+
107
+
108
+ function stripDiacritics(str) {
109
+ var ret, i, l, c;
110
+
111
+ if (!str || str.length < 1) return str;
112
+
113
+ ret = "";
114
+ for (i = 0, l = str.length; i < l; i++) {
115
+ c = str.charAt(i);
116
+ ret += DIACRITICS[c] || c;
117
+ }
118
+ return ret;
119
+ }
120
+
121
+ function indexOf(value, array) {
122
+ var i = 0, l = array.length;
123
+ for (; i < l; i = i + 1) {
124
+ if (equal(value, array[i])) return i;
125
+ }
126
+ return -1;
127
+ }
128
+
129
+ function measureScrollbar () {
130
+ var $template = $( MEASURE_SCROLLBAR_TEMPLATE );
131
+ $template.appendTo('body');
132
+
133
+ var dim = {
134
+ width: $template.width() - $template[0].clientWidth,
135
+ height: $template.height() - $template[0].clientHeight
136
+ };
137
+ $template.remove();
138
+
139
+ return dim;
140
+ }
141
+
142
+ /**
143
+ * Compares equality of a and b
144
+ * @param a
145
+ * @param b
146
+ */
147
+ function equal(a, b) {
148
+ if (a === b) return true;
149
+ if (a === undefined || b === undefined) return false;
150
+ if (a === null || b === null) return false;
151
+ // Check whether 'a' or 'b' is a string (primitive or object).
152
+ // The concatenation of an empty string (+'') converts its argument to a string's primitive.
153
+ if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object
154
+ if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object
155
+ return false;
156
+ }
157
+
158
+ /**
159
+ * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty
160
+ * strings
161
+ * @param string
162
+ * @param separator
163
+ */
164
+ function splitVal(string, separator) {
165
+ var val, i, l;
166
+ if (string === null || string.length < 1) return [];
167
+ val = string.split(separator);
168
+ for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);
169
+ return val;
170
+ }
171
+
172
+ function getSideBorderPadding(element) {
173
+ return element.outerWidth(false) - element.width();
174
+ }
175
+
176
+ function installKeyUpChangeEvent(element) {
177
+ var key="keyup-change-value";
178
+ element.on("keydown", function () {
179
+ if ($.data(element, key) === undefined) {
180
+ $.data(element, key, element.val());
181
+ }
182
+ });
183
+ element.on("keyup", function () {
184
+ var val= $.data(element, key);
185
+ if (val !== undefined && element.val() !== val) {
186
+ $.removeData(element, key);
187
+ element.trigger("keyup-change");
188
+ }
189
+ });
190
+ }
191
+
192
+ $document.on("mousemove", function (e) {
193
+ lastMousePosition.x = e.pageX;
194
+ lastMousePosition.y = e.pageY;
195
+ });
196
+
197
+ /**
198
+ * filters mouse events so an event is fired only if the mouse moved.
199
+ *
200
+ * filters out mouse events that occur when mouse is stationary but
201
+ * the elements under the pointer are scrolled.
202
+ */
203
+ function installFilteredMouseMove(element) {
204
+ element.on("mousemove", function (e) {
205
+ var lastpos = lastMousePosition;
206
+ if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
207
+ $(e.target).trigger("mousemove-filtered", e);
208
+ }
209
+ });
210
+ }
211
+
212
+ /**
213
+ * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made
214
+ * within the last quietMillis milliseconds.
215
+ *
216
+ * @param quietMillis number of milliseconds to wait before invoking fn
217
+ * @param fn function to be debounced
218
+ * @param ctx object to be used as this reference within fn
219
+ * @return debounced version of fn
220
+ */
221
+ function debounce(quietMillis, fn, ctx) {
222
+ ctx = ctx || undefined;
223
+ var timeout;
224
+ return function () {
225
+ var args = arguments;
226
+ window.clearTimeout(timeout);
227
+ timeout = window.setTimeout(function() {
228
+ fn.apply(ctx, args);
229
+ }, quietMillis);
230
+ };
231
+ }
232
+
233
+ /**
234
+ * A simple implementation of a thunk
235
+ * @param formula function used to lazily initialize the thunk
236
+ * @return {Function}
237
+ */
238
+ function thunk(formula) {
239
+ var evaluated = false,
240
+ value;
241
+ return function() {
242
+ if (evaluated === false) { value = formula(); evaluated = true; }
243
+ return value;
244
+ };
245
+ };
246
+
247
+ function installDebouncedScroll(threshold, element) {
248
+ var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);});
249
+ element.on("scroll", function (e) {
250
+ if (indexOf(e.target, element.get()) >= 0) notify(e);
251
+ });
252
+ }
253
+
254
+ function focus($el) {
255
+ if ($el[0] === document.activeElement) return;
256
+
257
+ /* set the focus in a 0 timeout - that way the focus is set after the processing
258
+ of the current event has finished - which seems like the only reliable way
259
+ to set focus */
260
+ window.setTimeout(function() {
261
+ var el=$el[0], pos=$el.val().length, range;
262
+
263
+ $el.focus();
264
+
265
+ /* make sure el received focus so we do not error out when trying to manipulate the caret.
266
+ sometimes modals or others listeners may steal it after its set */
267
+ if ($el.is(":visible") && el === document.activeElement) {
268
+
269
+ /* after the focus is set move the caret to the end, necessary when we val()
270
+ just before setting focus */
271
+ if(el.setSelectionRange)
272
+ {
273
+ el.setSelectionRange(pos, pos);
274
+ }
275
+ else if (el.createTextRange) {
276
+ range = el.createTextRange();
277
+ range.collapse(false);
278
+ range.select();
279
+ }
280
+ }
281
+ }, 0);
282
+ }
283
+
284
+ function getCursorInfo(el) {
285
+ el = $(el)[0];
286
+ var offset = 0;
287
+ var length = 0;
288
+ if ('selectionStart' in el) {
289
+ offset = el.selectionStart;
290
+ length = el.selectionEnd - offset;
291
+ } else if ('selection' in document) {
292
+ el.focus();
293
+ var sel = document.selection.createRange();
294
+ length = document.selection.createRange().text.length;
295
+ sel.moveStart('character', -el.value.length);
296
+ offset = sel.text.length - length;
297
+ }
298
+ return { offset: offset, length: length };
299
+ }
300
+
301
+ function killEvent(event) {
302
+ event.preventDefault();
303
+ event.stopPropagation();
304
+ }
305
+ function killEventImmediately(event) {
306
+ event.preventDefault();
307
+ event.stopImmediatePropagation();
308
+ }
309
+
310
+ function measureTextWidth(e) {
311
+ if (!sizer){
312
+ var style = e[0].currentStyle || window.getComputedStyle(e[0], null);
313
+ sizer = $(document.createElement("div")).css({
314
+ position: "absolute",
315
+ left: "-10000px",
316
+ top: "-10000px",
317
+ display: "none",
318
+ fontSize: style.fontSize,
319
+ fontFamily: style.fontFamily,
320
+ fontStyle: style.fontStyle,
321
+ fontWeight: style.fontWeight,
322
+ letterSpacing: style.letterSpacing,
323
+ textTransform: style.textTransform,
324
+ whiteSpace: "nowrap"
325
+ });
326
+ sizer.attr("class","select2-sizer");
327
+ $("body").append(sizer);
328
+ }
329
+ sizer.text(e.val());
330
+ return sizer.width();
331
+ }
332
+
333
+ function syncCssClasses(dest, src, adapter) {
334
+ var classes, replacements = [], adapted;
335
+
336
+ classes = dest.attr("class");
337
+ if (classes) {
338
+ classes = '' + classes; // for IE which returns object
339
+ $(classes.split(" ")).each2(function() {
340
+ if (this.indexOf("select2-") === 0) {
341
+ replacements.push(this);
342
+ }
343
+ });
344
+ }
345
+ classes = src.attr("class");
346
+ if (classes) {
347
+ classes = '' + classes; // for IE which returns object
348
+ $(classes.split(" ")).each2(function() {
349
+ if (this.indexOf("select2-") !== 0) {
350
+ adapted = adapter(this);
351
+ if (adapted) {
352
+ replacements.push(this);
353
+ }
354
+ }
355
+ });
356
+ }
357
+ dest.attr("class", replacements.join(" "));
358
+ }
359
+
360
+
361
+ function markMatch(text, term, markup, escapeMarkup) {
362
+ var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),
363
+ tl=term.length;
364
+
365
+ if (match<0) {
366
+ markup.push(escapeMarkup(text));
367
+ return;
368
+ }
369
+
370
+ markup.push(escapeMarkup(text.substring(0, match)));
371
+ markup.push("<span class='select2-match'>");
372
+ markup.push(escapeMarkup(text.substring(match, match + tl)));
373
+ markup.push("</span>");
374
+ markup.push(escapeMarkup(text.substring(match + tl, text.length)));
375
+ }
376
+
377
+ function defaultEscapeMarkup(markup) {
378
+ var replace_map = {
379
+ '\\': '&#92;',
380
+ '&': '&amp;',
381
+ '<': '&lt;',
382
+ '>': '&gt;',
383
+ '"': '&quot;',
384
+ "'": '&#39;',
385
+ "/": '&#47;'
386
+ };
387
+
388
+ return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
389
+ return replace_map[match];
390
+ });
391
+ }
392
+
393
+ /**
394
+ * Produces an ajax-based query function
395
+ *
396
+ * @param options object containing configuration paramters
397
+ * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax
398
+ * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax
399
+ * @param options.url url for the data
400
+ * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.
401
+ * @param options.dataType request data type: ajax, jsonp, other datatatypes supported by jQuery's $.ajax function or the transport function if specified
402
+ * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often
403
+ * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.
404
+ * The expected format is an object containing the following keys:
405
+ * results array of objects that will be used as choices
406
+ * more (optional) boolean indicating whether there are more results available
407
+ * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}
408
+ */
409
+ function ajax(options) {
410
+ var timeout, // current scheduled but not yet executed request
411
+ handler = null,
412
+ quietMillis = options.quietMillis || 100,
413
+ ajaxUrl = options.url,
414
+ self = this;
415
+
416
+ return function (query) {
417
+ window.clearTimeout(timeout);
418
+ timeout = window.setTimeout(function () {
419
+ var data = options.data, // ajax data function
420
+ url = ajaxUrl, // ajax url string or function
421
+ transport = options.transport || $.fn.select2.ajaxDefaults.transport,
422
+ // deprecated - to be removed in 4.0 - use params instead
423
+ deprecated = {
424
+ type: options.type || 'GET', // set type of request (GET or POST)
425
+ cache: options.cache || false,
426
+ jsonpCallback: options.jsonpCallback||undefined,
427
+ dataType: options.dataType||"json"
428
+ },
429
+ params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);
430
+
431
+ data = data ? data.call(self, query.term, query.page, query.context) : null;
432
+ url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;
433
+
434
+ if (handler) { handler.abort(); }
435
+
436
+ if (options.params) {
437
+ if ($.isFunction(options.params)) {
438
+ $.extend(params, options.params.call(self));
439
+ } else {
440
+ $.extend(params, options.params);
441
+ }
442
+ }
443
+
444
+ $.extend(params, {
445
+ url: url,
446
+ dataType: options.dataType,
447
+ data: data,
448
+ success: function (data) {
449
+ // TODO - replace query.page with query so users have access to term, page, etc.
450
+ var results = options.results(data, query.page);
451
+ query.callback(results);
452
+ }
453
+ });
454
+ handler = transport.call(self, params);
455
+ }, quietMillis);
456
+ };
457
+ }
458
+
459
+ /**
460
+ * Produces a query function that works with a local array
461
+ *
462
+ * @param options object containing configuration parameters. The options parameter can either be an array or an
463
+ * object.
464
+ *
465
+ * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.
466
+ *
467
+ * If the object form is used ti is assumed that it contains 'data' and 'text' keys. The 'data' key should contain
468
+ * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'
469
+ * key can either be a String in which case it is expected that each element in the 'data' array has a key with the
470
+ * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract
471
+ * the text.
472
+ */
473
+ function local(options) {
474
+ var data = options, // data elements
475
+ dataText,
476
+ tmp,
477
+ text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
478
+
479
+ if ($.isArray(data)) {
480
+ tmp = data;
481
+ data = { results: tmp };
482
+ }
483
+
484
+ if ($.isFunction(data) === false) {
485
+ tmp = data;
486
+ data = function() { return tmp; };
487
+ }
488
+
489
+ var dataItem = data();
490
+ if (dataItem.text) {
491
+ text = dataItem.text;
492
+ // if text is not a function we assume it to be a key name
493
+ if (!$.isFunction(text)) {
494
+ dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available
495
+ text = function (item) { return item[dataText]; };
496
+ }
497
+ }
498
+
499
+ return function (query) {
500
+ var t = query.term, filtered = { results: [] }, process;
501
+ if (t === "") {
502
+ query.callback(data());
503
+ return;
504
+ }
505
+
506
+ process = function(datum, collection) {
507
+ var group, attr;
508
+ datum = datum[0];
509
+ if (datum.children) {
510
+ group = {};
511
+ for (attr in datum) {
512
+ if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];
513
+ }
514
+ group.children=[];
515
+ $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });
516
+ if (group.children.length || query.matcher(t, text(group), datum)) {
517
+ collection.push(group);
518
+ }
519
+ } else {
520
+ if (query.matcher(t, text(datum), datum)) {
521
+ collection.push(datum);
522
+ }
523
+ }
524
+ };
525
+
526
+ $(data().results).each2(function(i, datum) { process(datum, filtered.results); });
527
+ query.callback(filtered);
528
+ };
529
+ }
530
+
531
+ // TODO javadoc
532
+ function tags(data) {
533
+ var isFunc = $.isFunction(data);
534
+ return function (query) {
535
+ var t = query.term, filtered = {results: []};
536
+ $(isFunc ? data() : data).each(function () {
537
+ var isObject = this.text !== undefined,
538
+ text = isObject ? this.text : this;
539
+ if (t === "" || query.matcher(t, text)) {
540
+ filtered.results.push(isObject ? this : {id: this, text: this});
541
+ }
542
+ });
543
+ query.callback(filtered);
544
+ };
545
+ }
546
+
547
+ /**
548
+ * Checks if the formatter function should be used.
549
+ *
550
+ * Throws an error if it is not a function. Returns true if it should be used,
551
+ * false if no formatting should be performed.
552
+ *
553
+ * @param formatter
554
+ */
555
+ function checkFormatter(formatter, formatterName) {
556
+ if ($.isFunction(formatter)) return true;
557
+ if (!formatter) return false;
558
+ throw new Error(formatterName +" must be a function or a falsy value");
559
+ }
560
+
561
+ function evaluate(val) {
562
+ return $.isFunction(val) ? val() : val;
563
+ }
564
+
565
+ function countResults(results) {
566
+ var count = 0;
567
+ $.each(results, function(i, item) {
568
+ if (item.children) {
569
+ count += countResults(item.children);
570
+ } else {
571
+ count++;
572
+ }
573
+ });
574
+ return count;
575
+ }
576
+
577
+ /**
578
+ * Default tokenizer. This function uses breaks the input on substring match of any string from the
579
+ * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those
580
+ * two options have to be defined in order for the tokenizer to work.
581
+ *
582
+ * @param input text user has typed so far or pasted into the search field
583
+ * @param selection currently selected choices
584
+ * @param selectCallback function(choice) callback tho add the choice to selection
585
+ * @param opts select2's opts
586
+ * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value
587
+ */
588
+ function defaultTokenizer(input, selection, selectCallback, opts) {
589
+ var original = input, // store the original so we can compare and know if we need to tell the search to update its text
590
+ dupe = false, // check for whether a token we extracted represents a duplicate selected choice
591
+ token, // token
592
+ index, // position at which the separator was found
593
+ i, l, // looping variables
594
+ separator; // the matched separator
595
+
596
+ if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;
597
+
598
+ while (true) {
599
+ index = -1;
600
+
601
+ for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {
602
+ separator = opts.tokenSeparators[i];
603
+ index = input.indexOf(separator);
604
+ if (index >= 0) break;
605
+ }
606
+
607
+ if (index < 0) break; // did not find any token separator in the input string, bail
608
+
609
+ token = input.substring(0, index);
610
+ input = input.substring(index + separator.length);
611
+
612
+ if (token.length > 0) {
613
+ token = opts.createSearchChoice.call(this, token, selection);
614
+ if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {
615
+ dupe = false;
616
+ for (i = 0, l = selection.length; i < l; i++) {
617
+ if (equal(opts.id(token), opts.id(selection[i]))) {
618
+ dupe = true; break;
619
+ }
620
+ }
621
+
622
+ if (!dupe) selectCallback(token);
623
+ }
624
+ }
625
+ }
626
+
627
+ if (original!==input) return input;
628
+ }
629
+
630
+ /**
631
+ * Creates a new class
632
+ *
633
+ * @param superClass
634
+ * @param methods
635
+ */
636
+ function clazz(SuperClass, methods) {
637
+ var constructor = function () {};
638
+ constructor.prototype = new SuperClass;
639
+ constructor.prototype.constructor = constructor;
640
+ constructor.prototype.parent = SuperClass.prototype;
641
+ constructor.prototype = $.extend(constructor.prototype, methods);
642
+ return constructor;
643
+ }
644
+
645
+ AbstractSelect2 = clazz(Object, {
646
+
647
+ // abstract
648
+ bind: function (func) {
649
+ var self = this;
650
+ return function () {
651
+ func.apply(self, arguments);
652
+ };
653
+ },
654
+
655
+ // abstract
656
+ init: function (opts) {
657
+ var results, search, resultsSelector = ".select2-results", disabled, readonly;
658
+
659
+ // prepare options
660
+ this.opts = opts = this.prepareOpts(opts);
661
+
662
+ this.id=opts.id;
663
+
664
+ // destroy if called on an existing component
665
+ if (opts.element.data("select2") !== undefined &&
666
+ opts.element.data("select2") !== null) {
667
+ opts.element.data("select2").destroy();
668
+ }
669
+
670
+ this.container = this.createContainer();
671
+
672
+ this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid());
673
+ this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
674
+ this.container.attr("id", this.containerId);
675
+
676
+ // cache the body so future lookups are cheap
677
+ this.body = thunk(function() { return opts.element.closest("body"); });
678
+
679
+ syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
680
+
681
+ this.container.attr("style", opts.element.attr("style"));
682
+ this.container.css(evaluate(opts.containerCss));
683
+ this.container.addClass(evaluate(opts.containerCssClass));
684
+
685
+ this.elementTabIndex = this.opts.element.attr("tabindex");
686
+
687
+ // swap container for the element
688
+ this.opts.element
689
+ .data("select2", this)
690
+ .attr("tabindex", "-1")
691
+ .before(this.container)
692
+ .on("click.select2", killEvent); // do not leak click events
693
+
694
+ this.container.data("select2", this);
695
+
696
+ this.dropdown = this.container.find(".select2-drop");
697
+
698
+ syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
699
+
700
+ this.dropdown.addClass(evaluate(opts.dropdownCssClass));
701
+ this.dropdown.data("select2", this);
702
+ this.dropdown.on("click", killEvent);
703
+
704
+ this.results = results = this.container.find(resultsSelector);
705
+ this.search = search = this.container.find("input.select2-input");
706
+
707
+ this.queryCount = 0;
708
+ this.resultsPage = 0;
709
+ this.context = null;
710
+
711
+ // initialize the container
712
+ this.initContainer();
713
+
714
+ this.container.on("click", killEvent);
715
+
716
+ installFilteredMouseMove(this.results);
717
+ this.dropdown.on("mousemove-filtered touchstart touchmove touchend", resultsSelector, this.bind(this.highlightUnderEvent));
718
+
719
+ installDebouncedScroll(80, this.results);
720
+ this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded));
721
+
722
+ // do not propagate change event from the search field out of the component
723
+ $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();});
724
+ $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();});
725
+
726
+ // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel
727
+ if ($.fn.mousewheel) {
728
+ results.mousewheel(function (e, delta, deltaX, deltaY) {
729
+ var top = results.scrollTop(), height;
730
+ if (deltaY > 0 && top - deltaY <= 0) {
731
+ results.scrollTop(0);
732
+ killEvent(e);
733
+ } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {
734
+ results.scrollTop(results.get(0).scrollHeight - results.height());
735
+ killEvent(e);
736
+ }
737
+ });
738
+ }
739
+
740
+ installKeyUpChangeEvent(search);
741
+ search.on("keyup-change input paste", this.bind(this.updateResults));
742
+ search.on("focus", function () { search.addClass("select2-focused"); });
743
+ search.on("blur", function () { search.removeClass("select2-focused");});
744
+
745
+ this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) {
746
+ if ($(e.target).closest(".select2-result-selectable").length > 0) {
747
+ this.highlightUnderEvent(e);
748
+ this.selectHighlighted(e);
749
+ }
750
+ }));
751
+
752
+ // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening
753
+ // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's
754
+ // dom it will trigger the popup close, which is not what we want
755
+ this.dropdown.on("click mouseup mousedown", function (e) { e.stopPropagation(); });
756
+
757
+ if ($.isFunction(this.opts.initSelection)) {
758
+ // initialize selection based on the current value of the source element
759
+ this.initSelection();
760
+
761
+ // if the user has provided a function that can set selection based on the value of the source element
762
+ // we monitor the change event on the element and trigger it, allowing for two way synchronization
763
+ this.monitorSource();
764
+ }
765
+
766
+ if (opts.maximumInputLength !== null) {
767
+ this.search.attr("maxlength", opts.maximumInputLength);
768
+ }
769
+
770
+ var disabled = opts.element.prop("disabled");
771
+ if (disabled === undefined) disabled = false;
772
+ this.enable(!disabled);
773
+
774
+ var readonly = opts.element.prop("readonly");
775
+ if (readonly === undefined) readonly = false;
776
+ this.readonly(readonly);
777
+
778
+ // Calculate size of scrollbar
779
+ scrollBarDimensions = scrollBarDimensions || measureScrollbar();
780
+
781
+ this.autofocus = opts.element.prop("autofocus");
782
+ opts.element.prop("autofocus", false);
783
+ if (this.autofocus) this.focus();
784
+
785
+ this.nextSearchTerm = undefined;
786
+ },
787
+
788
+ // abstract
789
+ destroy: function () {
790
+ var element=this.opts.element, select2 = element.data("select2");
791
+
792
+ this.close();
793
+
794
+ if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
795
+
796
+ if (select2 !== undefined) {
797
+ select2.container.remove();
798
+ select2.dropdown.remove();
799
+ element
800
+ .removeClass("select2-offscreen")
801
+ .removeData("select2")
802
+ .off(".select2")
803
+ .prop("autofocus", this.autofocus || false);
804
+ if (this.elementTabIndex) {
805
+ element.attr({tabindex: this.elementTabIndex});
806
+ } else {
807
+ element.removeAttr("tabindex");
808
+ }
809
+ element.show();
810
+ }
811
+ },
812
+
813
+ // abstract
814
+ optionToData: function(element) {
815
+ if (element.is("option")) {
816
+ return {
817
+ id:element.prop("value"),
818
+ text:element.text(),
819
+ element: element.get(),
820
+ css: element.attr("class"),
821
+ disabled: element.prop("disabled"),
822
+ locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true)
823
+ };
824
+ } else if (element.is("optgroup")) {
825
+ return {
826
+ text:element.attr("label"),
827
+ children:[],
828
+ element: element.get(),
829
+ css: element.attr("class")
830
+ };
831
+ }
832
+ },
833
+
834
+ // abstract
835
+ prepareOpts: function (opts) {
836
+ var element, select, idKey, ajaxUrl, self = this;
837
+
838
+ element = opts.element;
839
+
840
+ if (element.get(0).tagName.toLowerCase() === "select") {
841
+ this.select = select = opts.element;
842
+ }
843
+
844
+ if (select) {
845
+ // these options are not allowed when attached to a select because they are picked up off the element itself
846
+ $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () {
847
+ if (this in opts) {
848
+ throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a <select> element.");
849
+ }
850
+ });
851
+ }
852
+
853
+ opts = $.extend({}, {
854
+ populateResults: function(container, results, query) {
855
+ var populate, data, result, children, id=this.opts.id;
856
+
857
+ populate=function(results, container, depth) {
858
+
859
+ var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;
860
+
861
+ results = opts.sortResults(results, container, query);
862
+
863
+ for (i = 0, l = results.length; i < l; i = i + 1) {
864
+
865
+ result=results[i];
866
+
867
+ disabled = (result.disabled === true);
868
+ selectable = (!disabled) && (id(result) !== undefined);
869
+
870
+ compound=result.children && result.children.length > 0;
871
+
872
+ node=$("<li></li>");
873
+ node.addClass("select2-results-dept-"+depth);
874
+ node.addClass("select2-result");
875
+ node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable");
876
+ if (disabled) { node.addClass("select2-disabled"); }
877
+ if (compound) { node.addClass("select2-result-with-children"); }
878
+ node.addClass(self.opts.formatResultCssClass(result));
879
+
880
+ label=$(document.createElement("div"));
881
+ label.addClass("select2-result-label");
882
+
883
+ formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);
884
+ if (formatted!==undefined) {
885
+ label.html(formatted);
886
+ }
887
+
888
+ node.append(label);
889
+
890
+ if (compound) {
891
+
892
+ innerContainer=$("<ul></ul>");
893
+ innerContainer.addClass("select2-result-sub");
894
+ populate(result.children, innerContainer, depth+1);
895
+ node.append(innerContainer);
896
+ }
897
+
898
+ node.data("select2-data", result);
899
+ container.append(node);
900
+ }
901
+ };
902
+
903
+ populate(results, container, 0);
904
+ }
905
+ }, $.fn.select2.defaults, opts);
906
+
907
+ if (typeof(opts.id) !== "function") {
908
+ idKey = opts.id;
909
+ opts.id = function (e) { return e[idKey]; };
910
+ }
911
+
912
+ if ($.isArray(opts.element.data("select2Tags"))) {
913
+ if ("tags" in opts) {
914
+ throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id");
915
+ }
916
+ opts.tags=opts.element.data("select2Tags");
917
+ }
918
+
919
+ if (select) {
920
+ opts.query = this.bind(function (query) {
921
+ var data = { results: [], more: false },
922
+ term = query.term,
923
+ children, placeholderOption, process;
924
+
925
+ process=function(element, collection) {
926
+ var group;
927
+ if (element.is("option")) {
928
+ if (query.matcher(term, element.text(), element)) {
929
+ collection.push(self.optionToData(element));
930
+ }
931
+ } else if (element.is("optgroup")) {
932
+ group=self.optionToData(element);
933
+ element.children().each2(function(i, elm) { process(elm, group.children); });
934
+ if (group.children.length>0) {
935
+ collection.push(group);
936
+ }
937
+ }
938
+ };
939
+
940
+ children=element.children();
941
+
942
+ // ignore the placeholder option if there is one
943
+ if (this.getPlaceholder() !== undefined && children.length > 0) {
944
+ placeholderOption = this.getPlaceholderOption();
945
+ if (placeholderOption) {
946
+ children=children.not(placeholderOption);
947
+ }
948
+ }
949
+
950
+ children.each2(function(i, elm) { process(elm, data.results); });
951
+
952
+ query.callback(data);
953
+ });
954
+ // this is needed because inside val() we construct choices from options and there id is hardcoded
955
+ opts.id=function(e) { return e.id; };
956
+ opts.formatResultCssClass = function(data) { return data.css; };
957
+ } else {
958
+ if (!("query" in opts)) {
959
+
960
+ if ("ajax" in opts) {
961
+ ajaxUrl = opts.element.data("ajax-url");
962
+ if (ajaxUrl && ajaxUrl.length > 0) {
963
+ opts.ajax.url = ajaxUrl;
964
+ }
965
+ opts.query = ajax.call(opts.element, opts.ajax);
966
+ } else if ("data" in opts) {
967
+ opts.query = local(opts.data);
968
+ } else if ("tags" in opts) {
969
+ opts.query = tags(opts.tags);
970
+ if (opts.createSearchChoice === undefined) {
971
+ opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };
972
+ }
973
+ if (opts.initSelection === undefined) {
974
+ opts.initSelection = function (element, callback) {
975
+ var data = [];
976
+ $(splitVal(element.val(), opts.separator)).each(function () {
977
+ var obj = { id: this, text: this },
978
+ tags = opts.tags;
979
+ if ($.isFunction(tags)) tags=tags();
980
+ $(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });
981
+ data.push(obj);
982
+ });
983
+
984
+ callback(data);
985
+ };
986
+ }
987
+ }
988
+ }
989
+ }
990
+ if (typeof(opts.query) !== "function") {
991
+ throw "query function not defined for Select2 " + opts.element.attr("id");
992
+ }
993
+
994
+ return opts;
995
+ },
996
+
997
+ /**
998
+ * Monitor the original element for changes and update select2 accordingly
999
+ */
1000
+ // abstract
1001
+ monitorSource: function () {
1002
+ var el = this.opts.element, sync;
1003
+
1004
+ el.on("change.select2", this.bind(function (e) {
1005
+ if (this.opts.element.data("select2-change-triggered") !== true) {
1006
+ this.initSelection();
1007
+ }
1008
+ }));
1009
+
1010
+ sync = this.bind(function () {
1011
+
1012
+ var enabled, readonly, self = this;
1013
+
1014
+ // sync enabled state
1015
+ var disabled = el.prop("disabled");
1016
+ if (disabled === undefined) disabled = false;
1017
+ this.enable(!disabled);
1018
+
1019
+ var readonly = el.prop("readonly");
1020
+ if (readonly === undefined) readonly = false;
1021
+ this.readonly(readonly);
1022
+
1023
+ syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
1024
+ this.container.addClass(evaluate(this.opts.containerCssClass));
1025
+
1026
+ syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
1027
+ this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));
1028
+
1029
+ });
1030
+
1031
+ // mozilla and IE
1032
+ el.on("propertychange.select2 DOMAttrModified.select2", sync);
1033
+
1034
+
1035
+ // hold onto a reference of the callback to work around a chromium bug
1036
+ if (this.mutationCallback === undefined) {
1037
+ this.mutationCallback = function (mutations) {
1038
+ mutations.forEach(sync);
1039
+ }
1040
+ }
1041
+
1042
+ // safari and chrome
1043
+ if (typeof WebKitMutationObserver !== "undefined") {
1044
+ if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
1045
+ this.propertyObserver = new WebKitMutationObserver(this.mutationCallback);
1046
+ this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });
1047
+ }
1048
+ },
1049
+
1050
+ // abstract
1051
+ triggerSelect: function(data) {
1052
+ var evt = $.Event("select2-selecting", { val: this.id(data), object: data });
1053
+ this.opts.element.trigger(evt);
1054
+ return !evt.isDefaultPrevented();
1055
+ },
1056
+
1057
+ /**
1058
+ * Triggers the change event on the source element
1059
+ */
1060
+ // abstract
1061
+ triggerChange: function (details) {
1062
+
1063
+ details = details || {};
1064
+ details= $.extend({}, details, { type: "change", val: this.val() });
1065
+ // prevents recursive triggering
1066
+ this.opts.element.data("select2-change-triggered", true);
1067
+ this.opts.element.trigger(details);
1068
+ this.opts.element.data("select2-change-triggered", false);
1069
+
1070
+ // some validation frameworks ignore the change event and listen instead to keyup, click for selects
1071
+ // so here we trigger the click event manually
1072
+ this.opts.element.click();
1073
+
1074
+ // ValidationEngine ignorea the change event and listens instead to blur
1075
+ // so here we trigger the blur event manually if so desired
1076
+ if (this.opts.blurOnChange)
1077
+ this.opts.element.blur();
1078
+ },
1079
+
1080
+ //abstract
1081
+ isInterfaceEnabled: function()
1082
+ {
1083
+ return this.enabledInterface === true;
1084
+ },
1085
+
1086
+ // abstract
1087
+ enableInterface: function() {
1088
+ var enabled = this._enabled && !this._readonly,
1089
+ disabled = !enabled;
1090
+
1091
+ if (enabled === this.enabledInterface) return false;
1092
+
1093
+ this.container.toggleClass("select2-container-disabled", disabled);
1094
+ this.close();
1095
+ this.enabledInterface = enabled;
1096
+
1097
+ return true;
1098
+ },
1099
+
1100
+ // abstract
1101
+ enable: function(enabled) {
1102
+ if (enabled === undefined) enabled = true;
1103
+ if (this._enabled === enabled) return;
1104
+ this._enabled = enabled;
1105
+
1106
+ this.opts.element.prop("disabled", !enabled);
1107
+ this.enableInterface();
1108
+ },
1109
+
1110
+ // abstract
1111
+ disable: function() {
1112
+ this.enable(false);
1113
+ },
1114
+
1115
+ // abstract
1116
+ readonly: function(enabled) {
1117
+ if (enabled === undefined) enabled = false;
1118
+ if (this._readonly === enabled) return false;
1119
+ this._readonly = enabled;
1120
+
1121
+ this.opts.element.prop("readonly", enabled);
1122
+ this.enableInterface();
1123
+ return true;
1124
+ },
1125
+
1126
+ // abstract
1127
+ opened: function () {
1128
+ return this.container.hasClass("select2-dropdown-open");
1129
+ },
1130
+
1131
+ // abstract
1132
+ positionDropdown: function() {
1133
+ var $dropdown = this.dropdown,
1134
+ offset = this.container.offset(),
1135
+ height = this.container.outerHeight(false),
1136
+ width = this.container.outerWidth(false),
1137
+ dropHeight = $dropdown.outerHeight(false),
1138
+ viewPortRight = $(window).scrollLeft() + $(window).width(),
1139
+ viewportBottom = $(window).scrollTop() + $(window).height(),
1140
+ dropTop = offset.top + height,
1141
+ dropLeft = offset.left,
1142
+ enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
1143
+ enoughRoomAbove = (offset.top - dropHeight) >= this.body().scrollTop(),
1144
+ dropWidth = $dropdown.outerWidth(false),
1145
+ enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,
1146
+ aboveNow = $dropdown.hasClass("select2-drop-above"),
1147
+ bodyOffset,
1148
+ above,
1149
+ css,
1150
+ resultsListNode;
1151
+
1152
+ if (this.opts.dropdownAutoWidth) {
1153
+ resultsListNode = $('.select2-results', $dropdown)[0];
1154
+ $dropdown.addClass('select2-drop-auto-width');
1155
+ $dropdown.css('width', '');
1156
+ // Add scrollbar width to dropdown if vertical scrollbar is present
1157
+ dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);
1158
+ dropWidth > width ? width = dropWidth : dropWidth = width;
1159
+ enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
1160
+ }
1161
+ else {
1162
+ this.container.removeClass('select2-drop-auto-width');
1163
+ }
1164
+
1165
+ //console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
1166
+ //console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body().scrollTop(), "enough?", enoughRoomAbove);
1167
+
1168
+ // fix positioning when body has an offset and is not position: static
1169
+ if (this.body().css('position') !== 'static') {
1170
+ bodyOffset = this.body().offset();
1171
+ dropTop -= bodyOffset.top;
1172
+ dropLeft -= bodyOffset.left;
1173
+ }
1174
+
1175
+ // always prefer the current above/below alignment, unless there is not enough room
1176
+ if (aboveNow) {
1177
+ above = true;
1178
+ if (!enoughRoomAbove && enoughRoomBelow) above = false;
1179
+ } else {
1180
+ above = false;
1181
+ if (!enoughRoomBelow && enoughRoomAbove) above = true;
1182
+ }
1183
+
1184
+ if (!enoughRoomOnRight) {
1185
+ dropLeft = offset.left + width - dropWidth;
1186
+ }
1187
+
1188
+ if (above) {
1189
+ dropTop = offset.top - dropHeight;
1190
+ this.container.addClass("select2-drop-above");
1191
+ $dropdown.addClass("select2-drop-above");
1192
+ }
1193
+ else {
1194
+ this.container.removeClass("select2-drop-above");
1195
+ $dropdown.removeClass("select2-drop-above");
1196
+ }
1197
+
1198
+ css = $.extend({
1199
+ top: dropTop,
1200
+ left: dropLeft,
1201
+ width: width
1202
+ }, evaluate(this.opts.dropdownCss));
1203
+
1204
+ $dropdown.css(css);
1205
+ },
1206
+
1207
+ // abstract
1208
+ shouldOpen: function() {
1209
+ var event;
1210
+
1211
+ if (this.opened()) return false;
1212
+
1213
+ if (this._enabled === false || this._readonly === true) return false;
1214
+
1215
+ event = $.Event("select2-opening");
1216
+ this.opts.element.trigger(event);
1217
+ return !event.isDefaultPrevented();
1218
+ },
1219
+
1220
+ // abstract
1221
+ clearDropdownAlignmentPreference: function() {
1222
+ // clear the classes used to figure out the preference of where the dropdown should be opened
1223
+ this.container.removeClass("select2-drop-above");
1224
+ this.dropdown.removeClass("select2-drop-above");
1225
+ },
1226
+
1227
+ /**
1228
+ * Opens the dropdown
1229
+ *
1230
+ * @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,
1231
+ * the dropdown is already open, or if the 'open' event listener on the element called preventDefault().
1232
+ */
1233
+ // abstract
1234
+ open: function () {
1235
+
1236
+ if (!this.shouldOpen()) return false;
1237
+
1238
+ this.opening();
1239
+
1240
+ return true;
1241
+ },
1242
+
1243
+ /**
1244
+ * Performs the opening of the dropdown
1245
+ */
1246
+ // abstract
1247
+ opening: function() {
1248
+ var cid = this.containerId,
1249
+ scroll = "scroll." + cid,
1250
+ resize = "resize."+cid,
1251
+ orient = "orientationchange."+cid,
1252
+ mask, maskCss;
1253
+
1254
+ this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
1255
+
1256
+ this.clearDropdownAlignmentPreference();
1257
+
1258
+ if(this.dropdown[0] !== this.body().children().last()[0]) {
1259
+ this.dropdown.detach().appendTo(this.body());
1260
+ }
1261
+
1262
+ // create the dropdown mask if doesnt already exist
1263
+ mask = $("#select2-drop-mask");
1264
+ if (mask.length == 0) {
1265
+ mask = $(document.createElement("div"));
1266
+ mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask");
1267
+ mask.hide();
1268
+ mask.appendTo(this.body());
1269
+ mask.on("mousedown touchstart click", function (e) {
1270
+ var dropdown = $("#select2-drop"), self;
1271
+ if (dropdown.length > 0) {
1272
+ self=dropdown.data("select2");
1273
+ if (self.opts.selectOnBlur) {
1274
+ self.selectHighlighted({noFocus: true});
1275
+ }
1276
+ self.close({focus:false});
1277
+ e.preventDefault();
1278
+ e.stopPropagation();
1279
+ }
1280
+ });
1281
+ }
1282
+
1283
+ // ensure the mask is always right before the dropdown
1284
+ if (this.dropdown.prev()[0] !== mask[0]) {
1285
+ this.dropdown.before(mask);
1286
+ }
1287
+
1288
+ // move the global id to the correct dropdown
1289
+ $("#select2-drop").removeAttr("id");
1290
+ this.dropdown.attr("id", "select2-drop");
1291
+
1292
+ // show the elements
1293
+ mask.show();
1294
+
1295
+ this.positionDropdown();
1296
+ this.dropdown.show();
1297
+ this.positionDropdown();
1298
+
1299
+ this.dropdown.addClass("select2-drop-active");
1300
+
1301
+ // attach listeners to events that can change the position of the container and thus require
1302
+ // the position of the dropdown to be updated as well so it does not come unglued from the container
1303
+ var that = this;
1304
+ this.container.parents().add(window).each(function () {
1305
+ $(this).on(resize+" "+scroll+" "+orient, function (e) {
1306
+ that.positionDropdown();
1307
+ });
1308
+ });
1309
+
1310
+
1311
+ },
1312
+
1313
+ // abstract
1314
+ close: function () {
1315
+ if (!this.opened()) return;
1316
+
1317
+ var cid = this.containerId,
1318
+ scroll = "scroll." + cid,
1319
+ resize = "resize."+cid,
1320
+ orient = "orientationchange."+cid;
1321
+
1322
+ // unbind event listeners
1323
+ this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });
1324
+
1325
+ this.clearDropdownAlignmentPreference();
1326
+
1327
+ $("#select2-drop-mask").hide();
1328
+ this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id
1329
+ this.dropdown.hide();
1330
+ this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active");
1331
+ this.results.empty();
1332
+
1333
+
1334
+ this.clearSearch();
1335
+ this.search.removeClass("select2-active");
1336
+ this.opts.element.trigger($.Event("select2-close"));
1337
+ },
1338
+
1339
+ /**
1340
+ * Opens control, sets input value, and updates results.
1341
+ */
1342
+ // abstract
1343
+ externalSearch: function (term) {
1344
+ this.open();
1345
+ this.search.val(term);
1346
+ this.updateResults(false);
1347
+ },
1348
+
1349
+ // abstract
1350
+ clearSearch: function () {
1351
+
1352
+ },
1353
+
1354
+ //abstract
1355
+ getMaximumSelectionSize: function() {
1356
+ return evaluate(this.opts.maximumSelectionSize);
1357
+ },
1358
+
1359
+ // abstract
1360
+ ensureHighlightVisible: function () {
1361
+ var results = this.results, children, index, child, hb, rb, y, more;
1362
+
1363
+ index = this.highlight();
1364
+
1365
+ if (index < 0) return;
1366
+
1367
+ if (index == 0) {
1368
+
1369
+ // if the first element is highlighted scroll all the way to the top,
1370
+ // that way any unselectable headers above it will also be scrolled
1371
+ // into view
1372
+
1373
+ results.scrollTop(0);
1374
+ return;
1375
+ }
1376
+
1377
+ children = this.findHighlightableChoices().find('.select2-result-label');
1378
+
1379
+ child = $(children[index]);
1380
+
1381
+ hb = child.offset().top + child.outerHeight(true);
1382
+
1383
+ // if this is the last child lets also make sure select2-more-results is visible
1384
+ if (index === children.length - 1) {
1385
+ more = results.find("li.select2-more-results");
1386
+ if (more.length > 0) {
1387
+ hb = more.offset().top + more.outerHeight(true);
1388
+ }
1389
+ }
1390
+
1391
+ rb = results.offset().top + results.outerHeight(true);
1392
+ if (hb > rb) {
1393
+ results.scrollTop(results.scrollTop() + (hb - rb));
1394
+ }
1395
+ y = child.offset().top - results.offset().top;
1396
+
1397
+ // make sure the top of the element is visible
1398
+ if (y < 0 && child.css('display') != 'none' ) {
1399
+ results.scrollTop(results.scrollTop() + y); // y is negative
1400
+ }
1401
+ },
1402
+
1403
+ // abstract
1404
+ findHighlightableChoices: function() {
1405
+ return this.results.find(".select2-result-selectable:not(.select2-disabled)");
1406
+ },
1407
+
1408
+ // abstract
1409
+ moveHighlight: function (delta) {
1410
+ var choices = this.findHighlightableChoices(),
1411
+ index = this.highlight();
1412
+
1413
+ while (index > -1 && index < choices.length) {
1414
+ index += delta;
1415
+ var choice = $(choices[index]);
1416
+ if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) {
1417
+ this.highlight(index);
1418
+ break;
1419
+ }
1420
+ }
1421
+ },
1422
+
1423
+ // abstract
1424
+ highlight: function (index) {
1425
+ var choices = this.findHighlightableChoices(),
1426
+ choice,
1427
+ data;
1428
+
1429
+ if (arguments.length === 0) {
1430
+ return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
1431
+ }
1432
+
1433
+ if (index >= choices.length) index = choices.length - 1;
1434
+ if (index < 0) index = 0;
1435
+
1436
+ this.removeHighlight();
1437
+
1438
+ choice = $(choices[index]);
1439
+ choice.addClass("select2-highlighted");
1440
+
1441
+ this.ensureHighlightVisible();
1442
+
1443
+ data = choice.data("select2-data");
1444
+ if (data) {
1445
+ this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data });
1446
+ }
1447
+ },
1448
+
1449
+ removeHighlight: function() {
1450
+ this.results.find(".select2-highlighted").removeClass("select2-highlighted");
1451
+ },
1452
+
1453
+ // abstract
1454
+ countSelectableResults: function() {
1455
+ return this.findHighlightableChoices().length;
1456
+ },
1457
+
1458
+ // abstract
1459
+ highlightUnderEvent: function (event) {
1460
+ var el = $(event.target).closest(".select2-result-selectable");
1461
+ if (el.length > 0 && !el.is(".select2-highlighted")) {
1462
+ var choices = this.findHighlightableChoices();
1463
+ this.highlight(choices.index(el));
1464
+ } else if (el.length == 0) {
1465
+ // if we are over an unselectable item remove all highlights
1466
+ this.removeHighlight();
1467
+ }
1468
+ },
1469
+
1470
+ // abstract
1471
+ loadMoreIfNeeded: function () {
1472
+ var results = this.results,
1473
+ more = results.find("li.select2-more-results"),
1474
+ below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible
1475
+ offset = -1, // index of first element without data
1476
+ page = this.resultsPage + 1,
1477
+ self=this,
1478
+ term=this.search.val(),
1479
+ context=this.context;
1480
+
1481
+ if (more.length === 0) return;
1482
+ below = more.offset().top - results.offset().top - results.height();
1483
+
1484
+ if (below <= this.opts.loadMorePadding) {
1485
+ more.addClass("select2-active");
1486
+ this.opts.query({
1487
+ element: this.opts.element,
1488
+ term: term,
1489
+ page: page,
1490
+ context: context,
1491
+ matcher: this.opts.matcher,
1492
+ callback: this.bind(function (data) {
1493
+
1494
+ // ignore a response if the select2 has been closed before it was received
1495
+ if (!self.opened()) return;
1496
+
1497
+
1498
+ self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});
1499
+ self.postprocessResults(data, false, false);
1500
+
1501
+ if (data.more===true) {
1502
+ more.detach().appendTo(results).text(self.opts.formatLoadMore(page+1));
1503
+ window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
1504
+ } else {
1505
+ more.remove();
1506
+ }
1507
+ self.positionDropdown();
1508
+ self.resultsPage = page;
1509
+ self.context = data.context;
1510
+ this.opts.element.trigger({ type: "select2-loaded", items: data });
1511
+ })});
1512
+ }
1513
+ },
1514
+
1515
+ /**
1516
+ * Default tokenizer function which does nothing
1517
+ */
1518
+ tokenize: function() {
1519
+
1520
+ },
1521
+
1522
+ /**
1523
+ * @param initial whether or not this is the call to this method right after the dropdown has been opened
1524
+ */
1525
+ // abstract
1526
+ updateResults: function (initial) {
1527
+ var search = this.search,
1528
+ results = this.results,
1529
+ opts = this.opts,
1530
+ data,
1531
+ self = this,
1532
+ input,
1533
+ term = search.val(),
1534
+ lastTerm = $.data(this.container, "select2-last-term"),
1535
+ // sequence number used to drop out-of-order responses
1536
+ queryNumber;
1537
+
1538
+ // prevent duplicate queries against the same term
1539
+ if (initial !== true && lastTerm && equal(term, lastTerm)) return;
1540
+
1541
+ $.data(this.container, "select2-last-term", term);
1542
+
1543
+ // if the search is currently hidden we do not alter the results
1544
+ if (initial !== true && (this.showSearchInput === false || !this.opened())) {
1545
+ return;
1546
+ }
1547
+
1548
+ function postRender() {
1549
+ search.removeClass("select2-active");
1550
+ self.positionDropdown();
1551
+ }
1552
+
1553
+ function render(html) {
1554
+ results.html(html);
1555
+ postRender();
1556
+ }
1557
+
1558
+ queryNumber = ++this.queryCount;
1559
+
1560
+ var maxSelSize = this.getMaximumSelectionSize();
1561
+ if (maxSelSize >=1) {
1562
+ data = this.data();
1563
+ if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) {
1564
+ render("<li class='select2-selection-limit'>" + opts.formatSelectionTooBig(maxSelSize) + "</li>");
1565
+ return;
1566
+ }
1567
+ }
1568
+
1569
+ if (search.val().length < opts.minimumInputLength) {
1570
+ if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) {
1571
+ render("<li class='select2-no-results'>" + opts.formatInputTooShort(search.val(), opts.minimumInputLength) + "</li>");
1572
+ } else {
1573
+ render("");
1574
+ }
1575
+ if (initial && this.showSearch) this.showSearch(true);
1576
+ return;
1577
+ }
1578
+
1579
+ if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {
1580
+ if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) {
1581
+ render("<li class='select2-no-results'>" + opts.formatInputTooLong(search.val(), opts.maximumInputLength) + "</li>");
1582
+ } else {
1583
+ render("");
1584
+ }
1585
+ return;
1586
+ }
1587
+
1588
+ if (opts.formatSearching && this.findHighlightableChoices().length === 0) {
1589
+ render("<li class='select2-searching'>" + opts.formatSearching() + "</li>");
1590
+ }
1591
+
1592
+ search.addClass("select2-active");
1593
+
1594
+ this.removeHighlight();
1595
+
1596
+ // give the tokenizer a chance to pre-process the input
1597
+ input = this.tokenize();
1598
+ if (input != undefined && input != null) {
1599
+ search.val(input);
1600
+ }
1601
+
1602
+ this.resultsPage = 1;
1603
+
1604
+ opts.query({
1605
+ element: opts.element,
1606
+ term: search.val(),
1607
+ page: this.resultsPage,
1608
+ context: null,
1609
+ matcher: opts.matcher,
1610
+ callback: this.bind(function (data) {
1611
+ var def; // default choice
1612
+
1613
+ // ignore old responses
1614
+ if (queryNumber != this.queryCount) {
1615
+ return;
1616
+ }
1617
+
1618
+ // ignore a response if the select2 has been closed before it was received
1619
+ if (!this.opened()) {
1620
+ this.search.removeClass("select2-active");
1621
+ return;
1622
+ }
1623
+
1624
+ // save context, if any
1625
+ this.context = (data.context===undefined) ? null : data.context;
1626
+ // create a default choice and prepend it to the list
1627
+ if (this.opts.createSearchChoice && search.val() !== "") {
1628
+ def = this.opts.createSearchChoice.call(self, search.val(), data.results);
1629
+ if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {
1630
+ if ($(data.results).filter(
1631
+ function () {
1632
+ return equal(self.id(this), self.id(def));
1633
+ }).length === 0) {
1634
+ data.results.unshift(def);
1635
+ }
1636
+ }
1637
+ }
1638
+
1639
+ if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) {
1640
+ render("<li class='select2-no-results'>" + opts.formatNoMatches(search.val()) + "</li>");
1641
+ return;
1642
+ }
1643
+
1644
+ results.empty();
1645
+ self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});
1646
+
1647
+ if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) {
1648
+ results.append("<li class='select2-more-results'>" + self.opts.escapeMarkup(opts.formatLoadMore(this.resultsPage)) + "</li>");
1649
+ window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
1650
+ }
1651
+
1652
+ this.postprocessResults(data, initial);
1653
+
1654
+ postRender();
1655
+
1656
+ this.opts.element.trigger({ type: "select2-loaded", items: data });
1657
+ })});
1658
+ },
1659
+
1660
+ // abstract
1661
+ cancel: function () {
1662
+ this.close();
1663
+ },
1664
+
1665
+ // abstract
1666
+ blur: function () {
1667
+ // if selectOnBlur == true, select the currently highlighted option
1668
+ if (this.opts.selectOnBlur)
1669
+ this.selectHighlighted({noFocus: true});
1670
+
1671
+ this.close();
1672
+ this.container.removeClass("select2-container-active");
1673
+ // synonymous to .is(':focus'), which is available in jquery >= 1.6
1674
+ if (this.search[0] === document.activeElement) { this.search.blur(); }
1675
+ this.clearSearch();
1676
+ this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
1677
+ },
1678
+
1679
+ // abstract
1680
+ focusSearch: function () {
1681
+ focus(this.search);
1682
+ },
1683
+
1684
+ // abstract
1685
+ selectHighlighted: function (options) {
1686
+ var index=this.highlight(),
1687
+ highlighted=this.results.find(".select2-highlighted"),
1688
+ data = highlighted.closest('.select2-result').data("select2-data");
1689
+
1690
+ if (data) {
1691
+ this.highlight(index);
1692
+ this.onSelect(data, options);
1693
+ } else if (options && options.noFocus) {
1694
+ this.close();
1695
+ }
1696
+ },
1697
+
1698
+ // abstract
1699
+ getPlaceholder: function () {
1700
+ var placeholderOption;
1701
+ return this.opts.element.attr("placeholder") ||
1702
+ this.opts.element.attr("data-placeholder") || // jquery 1.4 compat
1703
+ this.opts.element.data("placeholder") ||
1704
+ this.opts.placeholder ||
1705
+ ((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);
1706
+ },
1707
+
1708
+ // abstract
1709
+ getPlaceholderOption: function() {
1710
+ if (this.select) {
1711
+ var firstOption = this.select.children().first();
1712
+ if (this.opts.placeholderOption !== undefined ) {
1713
+ //Determine the placeholder option based on the specified placeholderOption setting
1714
+ return (this.opts.placeholderOption === "first" && firstOption) ||
1715
+ (typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select));
1716
+ } else if (firstOption.text() === "" && firstOption.val() === "") {
1717
+ //No explicit placeholder option specified, use the first if it's blank
1718
+ return firstOption;
1719
+ }
1720
+ }
1721
+ },
1722
+
1723
+ /**
1724
+ * Get the desired width for the container element. This is
1725
+ * derived first from option `width` passed to select2, then
1726
+ * the inline 'style' on the original element, and finally
1727
+ * falls back to the jQuery calculated element width.
1728
+ */
1729
+ // abstract
1730
+ initContainerWidth: function () {
1731
+ function resolveContainerWidth() {
1732
+ var style, attrs, matches, i, l;
1733
+
1734
+ if (this.opts.width === "off") {
1735
+ return null;
1736
+ } else if (this.opts.width === "element"){
1737
+ return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';
1738
+ } else if (this.opts.width === "copy" || this.opts.width === "resolve") {
1739
+ // check if there is inline style on the element that contains width
1740
+ style = this.opts.element.attr('style');
1741
+ if (style !== undefined) {
1742
+ attrs = style.split(';');
1743
+ for (i = 0, l = attrs.length; i < l; i = i + 1) {
1744
+ matches = attrs[i].replace(/\s/g, '')
1745
+ .match(/[^-]width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);
1746
+ if (matches !== null && matches.length >= 1)
1747
+ return matches[1];
1748
+ }
1749
+ }
1750
+
1751
+ if (this.opts.width === "resolve") {
1752
+ // next check if css('width') can resolve a width that is percent based, this is sometimes possible
1753
+ // when attached to input type=hidden or elements hidden via css
1754
+ style = this.opts.element.css('width');
1755
+ if (style.indexOf("%") > 0) return style;
1756
+
1757
+ // finally, fallback on the calculated width of the element
1758
+ return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');
1759
+ }
1760
+
1761
+ return null;
1762
+ } else if ($.isFunction(this.opts.width)) {
1763
+ return this.opts.width();
1764
+ } else {
1765
+ return this.opts.width;
1766
+ }
1767
+ };
1768
+
1769
+ var width = resolveContainerWidth.call(this);
1770
+ if (width !== null) {
1771
+ this.container.css("width", width);
1772
+ }
1773
+ }
1774
+ });
1775
+
1776
+ SingleSelect2 = clazz(AbstractSelect2, {
1777
+
1778
+ // single
1779
+
1780
+ createContainer: function () {
1781
+ var container = $(document.createElement("div")).attr({
1782
+ "class": "select2-container"
1783
+ }).html([
1784
+ "<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>",
1785
+ " <span class='select2-chosen'>&nbsp;</span><abbr class='select2-search-choice-close'></abbr>",
1786
+ " <span class='select2-arrow'><b></b></span>",
1787
+ "</a>",
1788
+ "<input class='select2-focusser select2-offscreen' type='text'/>",
1789
+ "<div class='select2-drop select2-display-none'>",
1790
+ " <div class='select2-search'>",
1791
+ " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>",
1792
+ " </div>",
1793
+ " <ul class='select2-results'>",
1794
+ " </ul>",
1795
+ "</div>"].join(""));
1796
+ return container;
1797
+ },
1798
+
1799
+ // single
1800
+ enableInterface: function() {
1801
+ if (this.parent.enableInterface.apply(this, arguments)) {
1802
+ this.focusser.prop("disabled", !this.isInterfaceEnabled());
1803
+ }
1804
+ },
1805
+
1806
+ // single
1807
+ opening: function () {
1808
+ var el, range, len;
1809
+
1810
+ if (this.opts.minimumResultsForSearch >= 0) {
1811
+ this.showSearch(true);
1812
+ }
1813
+
1814
+ this.parent.opening.apply(this, arguments);
1815
+
1816
+ if (this.showSearchInput !== false) {
1817
+ // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range
1818
+ // all other browsers handle this just fine
1819
+
1820
+ this.search.val(this.focusser.val());
1821
+ }
1822
+ this.search.focus();
1823
+ // move the cursor to the end after focussing, otherwise it will be at the beginning and
1824
+ // new text will appear *before* focusser.val()
1825
+ el = this.search.get(0);
1826
+ if (el.createTextRange) {
1827
+ range = el.createTextRange();
1828
+ range.collapse(false);
1829
+ range.select();
1830
+ } else if (el.setSelectionRange) {
1831
+ len = this.search.val().length;
1832
+ el.setSelectionRange(len, len);
1833
+ }
1834
+
1835
+ // initializes search's value with nextSearchTerm (if defined by user)
1836
+ // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
1837
+ if(this.search.val() === "") {
1838
+ if(this.nextSearchTerm != undefined){
1839
+ this.search.val(this.nextSearchTerm);
1840
+ this.search.select();
1841
+ }
1842
+ }
1843
+
1844
+ this.focusser.prop("disabled", true).val("");
1845
+ this.updateResults(true);
1846
+ this.opts.element.trigger($.Event("select2-open"));
1847
+ },
1848
+
1849
+ // single
1850
+ close: function (params) {
1851
+ if (!this.opened()) return;
1852
+ this.parent.close.apply(this, arguments);
1853
+
1854
+ params = params || {focus: true};
1855
+ this.focusser.removeAttr("disabled");
1856
+
1857
+ if (params.focus) {
1858
+ this.focusser.focus();
1859
+ }
1860
+ },
1861
+
1862
+ // single
1863
+ focus: function () {
1864
+ if (this.opened()) {
1865
+ this.close();
1866
+ } else {
1867
+ this.focusser.removeAttr("disabled");
1868
+ this.focusser.focus();
1869
+ }
1870
+ },
1871
+
1872
+ // single
1873
+ isFocused: function () {
1874
+ return this.container.hasClass("select2-container-active");
1875
+ },
1876
+
1877
+ // single
1878
+ cancel: function () {
1879
+ this.parent.cancel.apply(this, arguments);
1880
+ this.focusser.removeAttr("disabled");
1881
+ this.focusser.focus();
1882
+ },
1883
+
1884
+ // single
1885
+ destroy: function() {
1886
+ $("label[for='" + this.focusser.attr('id') + "']")
1887
+ .attr('for', this.opts.element.attr("id"));
1888
+ this.parent.destroy.apply(this, arguments);
1889
+ },
1890
+
1891
+ // single
1892
+ initContainer: function () {
1893
+
1894
+ var selection,
1895
+ container = this.container,
1896
+ dropdown = this.dropdown;
1897
+
1898
+ if (this.opts.minimumResultsForSearch < 0) {
1899
+ this.showSearch(false);
1900
+ } else {
1901
+ this.showSearch(true);
1902
+ }
1903
+
1904
+ this.selection = selection = container.find(".select2-choice");
1905
+
1906
+ this.focusser = container.find(".select2-focusser");
1907
+
1908
+ // rewrite labels from original element to focusser
1909
+ this.focusser.attr("id", "s2id_autogen"+nextUid());
1910
+
1911
+ $("label[for='" + this.opts.element.attr("id") + "']")
1912
+ .attr('for', this.focusser.attr('id'));
1913
+
1914
+ this.focusser.attr("tabindex", this.elementTabIndex);
1915
+
1916
+ this.search.on("keydown", this.bind(function (e) {
1917
+ if (!this.isInterfaceEnabled()) return;
1918
+
1919
+ if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
1920
+ // prevent the page from scrolling
1921
+ killEvent(e);
1922
+ return;
1923
+ }
1924
+
1925
+ switch (e.which) {
1926
+ case KEY.UP:
1927
+ case KEY.DOWN:
1928
+ this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
1929
+ killEvent(e);
1930
+ return;
1931
+ case KEY.ENTER:
1932
+ this.selectHighlighted();
1933
+ killEvent(e);
1934
+ return;
1935
+ case KEY.TAB:
1936
+ this.selectHighlighted({noFocus: true});
1937
+ return;
1938
+ case KEY.ESC:
1939
+ this.cancel(e);
1940
+ killEvent(e);
1941
+ return;
1942
+ }
1943
+ }));
1944
+
1945
+ this.search.on("blur", this.bind(function(e) {
1946
+ // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.
1947
+ // without this the search field loses focus which is annoying
1948
+ if (document.activeElement === this.body().get(0)) {
1949
+ window.setTimeout(this.bind(function() {
1950
+ this.search.focus();
1951
+ }), 0);
1952
+ }
1953
+ }));
1954
+
1955
+ this.focusser.on("keydown", this.bind(function (e) {
1956
+ if (!this.isInterfaceEnabled()) return;
1957
+
1958
+ if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
1959
+ return;
1960
+ }
1961
+
1962
+ if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {
1963
+ killEvent(e);
1964
+ return;
1965
+ }
1966
+
1967
+ if (e.which == KEY.DOWN || e.which == KEY.UP
1968
+ || (e.which == KEY.ENTER && this.opts.openOnEnter)) {
1969
+
1970
+ if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;
1971
+
1972
+ this.open();
1973
+ killEvent(e);
1974
+ return;
1975
+ }
1976
+
1977
+ if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {
1978
+ if (this.opts.allowClear) {
1979
+ this.clear();
1980
+ }
1981
+ killEvent(e);
1982
+ return;
1983
+ }
1984
+ }));
1985
+
1986
+
1987
+ installKeyUpChangeEvent(this.focusser);
1988
+ this.focusser.on("keyup-change input", this.bind(function(e) {
1989
+ if (this.opts.minimumResultsForSearch >= 0) {
1990
+ e.stopPropagation();
1991
+ if (this.opened()) return;
1992
+ this.open();
1993
+ }
1994
+ }));
1995
+
1996
+ selection.on("mousedown", "abbr", this.bind(function (e) {
1997
+ if (!this.isInterfaceEnabled()) return;
1998
+ this.clear();
1999
+ killEventImmediately(e);
2000
+ this.close();
2001
+ this.selection.focus();
2002
+ }));
2003
+
2004
+ selection.on("mousedown", this.bind(function (e) {
2005
+
2006
+ if (!this.container.hasClass("select2-container-active")) {
2007
+ this.opts.element.trigger($.Event("select2-focus"));
2008
+ }
2009
+
2010
+ if (this.opened()) {
2011
+ this.close();
2012
+ } else if (this.isInterfaceEnabled()) {
2013
+ this.open();
2014
+ }
2015
+
2016
+ killEvent(e);
2017
+ }));
2018
+
2019
+ dropdown.on("mousedown", this.bind(function() { this.search.focus(); }));
2020
+
2021
+ selection.on("focus", this.bind(function(e) {
2022
+ killEvent(e);
2023
+ }));
2024
+
2025
+ this.focusser.on("focus", this.bind(function(){
2026
+ if (!this.container.hasClass("select2-container-active")) {
2027
+ this.opts.element.trigger($.Event("select2-focus"));
2028
+ }
2029
+ this.container.addClass("select2-container-active");
2030
+ })).on("blur", this.bind(function() {
2031
+ if (!this.opened()) {
2032
+ this.container.removeClass("select2-container-active");
2033
+ this.opts.element.trigger($.Event("select2-blur"));
2034
+ }
2035
+ }));
2036
+ this.search.on("focus", this.bind(function(){
2037
+ if (!this.container.hasClass("select2-container-active")) {
2038
+ this.opts.element.trigger($.Event("select2-focus"));
2039
+ }
2040
+ this.container.addClass("select2-container-active");
2041
+ }));
2042
+
2043
+ this.initContainerWidth();
2044
+ this.opts.element.addClass("select2-offscreen");
2045
+ this.setPlaceholder();
2046
+
2047
+ },
2048
+
2049
+ // single
2050
+ clear: function(triggerChange) {
2051
+ var data=this.selection.data("select2-data");
2052
+ if (data) { // guard against queued quick consecutive clicks
2053
+ var evt = $.Event("select2-clearing");
2054
+ this.opts.element.trigger(evt);
2055
+ if (evt.isDefaultPrevented()) {
2056
+ return;
2057
+ }
2058
+ var placeholderOption = this.getPlaceholderOption();
2059
+ this.opts.element.val(placeholderOption ? placeholderOption.val() : "");
2060
+ this.selection.find(".select2-chosen").empty();
2061
+ this.selection.removeData("select2-data");
2062
+ this.setPlaceholder();
2063
+
2064
+ if (triggerChange !== false){
2065
+ this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
2066
+ this.triggerChange({removed:data});
2067
+ }
2068
+ }
2069
+ },
2070
+
2071
+ /**
2072
+ * Sets selection based on source element's value
2073
+ */
2074
+ // single
2075
+ initSelection: function () {
2076
+ var selected;
2077
+ if (this.isPlaceholderOptionSelected()) {
2078
+ this.updateSelection(null);
2079
+ this.close();
2080
+ this.setPlaceholder();
2081
+ } else {
2082
+ var self = this;
2083
+ this.opts.initSelection.call(null, this.opts.element, function(selected){
2084
+ if (selected !== undefined && selected !== null) {
2085
+ self.updateSelection(selected);
2086
+ self.close();
2087
+ self.setPlaceholder();
2088
+ }
2089
+ });
2090
+ }
2091
+ },
2092
+
2093
+ isPlaceholderOptionSelected: function() {
2094
+ var placeholderOption;
2095
+ if (!this.getPlaceholder()) return false; // no placeholder specified so no option should be considered
2096
+ return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.is(':selected'))
2097
+ || (this.opts.element.val() === "")
2098
+ || (this.opts.element.val() === undefined)
2099
+ || (this.opts.element.val() === null);
2100
+ },
2101
+
2102
+ // single
2103
+ prepareOpts: function () {
2104
+ var opts = this.parent.prepareOpts.apply(this, arguments),
2105
+ self=this;
2106
+
2107
+ if (opts.element.get(0).tagName.toLowerCase() === "select") {
2108
+ // install the selection initializer
2109
+ opts.initSelection = function (element, callback) {
2110
+ var selected = element.find(":selected");
2111
+ // a single select box always has a value, no need to null check 'selected'
2112
+ callback(self.optionToData(selected));
2113
+ };
2114
+ } else if ("data" in opts) {
2115
+ // install default initSelection when applied to hidden input and data is local
2116
+ opts.initSelection = opts.initSelection || function (element, callback) {
2117
+ var id = element.val();
2118
+ //search in data by id, storing the actual matching item
2119
+ var match = null;
2120
+ opts.query({
2121
+ matcher: function(term, text, el){
2122
+ var is_match = equal(id, opts.id(el));
2123
+ if (is_match) {
2124
+ match = el;
2125
+ }
2126
+ return is_match;
2127
+ },
2128
+ callback: !$.isFunction(callback) ? $.noop : function() {
2129
+ callback(match);
2130
+ }
2131
+ });
2132
+ };
2133
+ }
2134
+
2135
+ return opts;
2136
+ },
2137
+
2138
+ // single
2139
+ getPlaceholder: function() {
2140
+ // if a placeholder is specified on a single select without a valid placeholder option ignore it
2141
+ if (this.select) {
2142
+ if (this.getPlaceholderOption() === undefined) {
2143
+ return undefined;
2144
+ }
2145
+ }
2146
+
2147
+ return this.parent.getPlaceholder.apply(this, arguments);
2148
+ },
2149
+
2150
+ // single
2151
+ setPlaceholder: function () {
2152
+ var placeholder = this.getPlaceholder();
2153
+
2154
+ if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {
2155
+
2156
+ // check for a placeholder option if attached to a select
2157
+ if (this.select && this.getPlaceholderOption() === undefined) return;
2158
+
2159
+ this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder));
2160
+
2161
+ this.selection.addClass("select2-default");
2162
+
2163
+ this.container.removeClass("select2-allowclear");
2164
+ }
2165
+ },
2166
+
2167
+ // single
2168
+ postprocessResults: function (data, initial, noHighlightUpdate) {
2169
+ var selected = 0, self = this, showSearchInput = true;
2170
+
2171
+ // find the selected element in the result list
2172
+
2173
+ this.findHighlightableChoices().each2(function (i, elm) {
2174
+ if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
2175
+ selected = i;
2176
+ return false;
2177
+ }
2178
+ });
2179
+
2180
+ // and highlight it
2181
+ if (noHighlightUpdate !== false) {
2182
+ if (initial === true && selected >= 0) {
2183
+ this.highlight(selected);
2184
+ } else {
2185
+ this.highlight(0);
2186
+ }
2187
+ }
2188
+
2189
+ // hide the search box if this is the first we got the results and there are enough of them for search
2190
+
2191
+ if (initial === true) {
2192
+ var min = this.opts.minimumResultsForSearch;
2193
+ if (min >= 0) {
2194
+ this.showSearch(countResults(data.results) >= min);
2195
+ }
2196
+ }
2197
+ },
2198
+
2199
+ // single
2200
+ showSearch: function(showSearchInput) {
2201
+ if (this.showSearchInput === showSearchInput) return;
2202
+
2203
+ this.showSearchInput = showSearchInput;
2204
+
2205
+ this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput);
2206
+ this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput);
2207
+ //add "select2-with-searchbox" to the container if search box is shown
2208
+ $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput);
2209
+ },
2210
+
2211
+ // single
2212
+ onSelect: function (data, options) {
2213
+
2214
+ if (!this.triggerSelect(data)) { return; }
2215
+
2216
+ var old = this.opts.element.val(),
2217
+ oldData = this.data();
2218
+
2219
+ this.opts.element.val(this.id(data));
2220
+ this.updateSelection(data);
2221
+
2222
+ this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data });
2223
+
2224
+ this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
2225
+ this.close();
2226
+
2227
+ if (!options || !options.noFocus)
2228
+ this.focusser.focus();
2229
+
2230
+ if (!equal(old, this.id(data))) { this.triggerChange({added:data,removed:oldData}); }
2231
+ },
2232
+
2233
+ // single
2234
+ updateSelection: function (data) {
2235
+
2236
+ var container=this.selection.find(".select2-chosen"), formatted, cssClass;
2237
+
2238
+ this.selection.data("select2-data", data);
2239
+
2240
+ container.empty();
2241
+ if (data !== null) {
2242
+ formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);
2243
+ }
2244
+ if (formatted !== undefined) {
2245
+ container.append(formatted);
2246
+ }
2247
+ cssClass=this.opts.formatSelectionCssClass(data, container);
2248
+ if (cssClass !== undefined) {
2249
+ container.addClass(cssClass);
2250
+ }
2251
+
2252
+ this.selection.removeClass("select2-default");
2253
+
2254
+ if (this.opts.allowClear && this.getPlaceholder() !== undefined) {
2255
+ this.container.addClass("select2-allowclear");
2256
+ }
2257
+ },
2258
+
2259
+ // single
2260
+ val: function () {
2261
+ var val,
2262
+ triggerChange = false,
2263
+ data = null,
2264
+ self = this,
2265
+ oldData = this.data();
2266
+
2267
+ if (arguments.length === 0) {
2268
+ return this.opts.element.val();
2269
+ }
2270
+
2271
+ val = arguments[0];
2272
+
2273
+ if (arguments.length > 1) {
2274
+ triggerChange = arguments[1];
2275
+ }
2276
+
2277
+ if (this.select) {
2278
+ this.select
2279
+ .val(val)
2280
+ .find(":selected").each2(function (i, elm) {
2281
+ data = self.optionToData(elm);
2282
+ return false;
2283
+ });
2284
+ this.updateSelection(data);
2285
+ this.setPlaceholder();
2286
+ if (triggerChange) {
2287
+ this.triggerChange({added: data, removed:oldData});
2288
+ }
2289
+ } else {
2290
+ // val is an id. !val is true for [undefined,null,'',0] - 0 is legal
2291
+ if (!val && val !== 0) {
2292
+ this.clear(triggerChange);
2293
+ return;
2294
+ }
2295
+ if (this.opts.initSelection === undefined) {
2296
+ throw new Error("cannot call val() if initSelection() is not defined");
2297
+ }
2298
+ this.opts.element.val(val);
2299
+ this.opts.initSelection(this.opts.element, function(data){
2300
+ self.opts.element.val(!data ? "" : self.id(data));
2301
+ self.updateSelection(data);
2302
+ self.setPlaceholder();
2303
+ if (triggerChange) {
2304
+ self.triggerChange({added: data, removed:oldData});
2305
+ }
2306
+ });
2307
+ }
2308
+ },
2309
+
2310
+ // single
2311
+ clearSearch: function () {
2312
+ this.search.val("");
2313
+ this.focusser.val("");
2314
+ },
2315
+
2316
+ // single
2317
+ data: function(value) {
2318
+ var data,
2319
+ triggerChange = false;
2320
+
2321
+ if (arguments.length === 0) {
2322
+ data = this.selection.data("select2-data");
2323
+ if (data == undefined) data = null;
2324
+ return data;
2325
+ } else {
2326
+ if (arguments.length > 1) {
2327
+ triggerChange = arguments[1];
2328
+ }
2329
+ if (!value) {
2330
+ this.clear(triggerChange);
2331
+ } else {
2332
+ data = this.data();
2333
+ this.opts.element.val(!value ? "" : this.id(value));
2334
+ this.updateSelection(value);
2335
+ if (triggerChange) {
2336
+ this.triggerChange({added: value, removed:data});
2337
+ }
2338
+ }
2339
+ }
2340
+ }
2341
+ });
2342
+
2343
+ MultiSelect2 = clazz(AbstractSelect2, {
2344
+
2345
+ // multi
2346
+ createContainer: function () {
2347
+ var container = $(document.createElement("div")).attr({
2348
+ "class": "select2-container select2-container-multi"
2349
+ }).html([
2350
+ "<ul class='select2-choices'>",
2351
+ " <li class='select2-search-field'>",
2352
+ " <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>",
2353
+ " </li>",
2354
+ "</ul>",
2355
+ "<div class='select2-drop select2-drop-multi select2-display-none'>",
2356
+ " <ul class='select2-results'>",
2357
+ " </ul>",
2358
+ "</div>"].join(""));
2359
+ return container;
2360
+ },
2361
+
2362
+ // multi
2363
+ prepareOpts: function () {
2364
+ var opts = this.parent.prepareOpts.apply(this, arguments),
2365
+ self=this;
2366
+
2367
+ // TODO validate placeholder is a string if specified
2368
+
2369
+ if (opts.element.get(0).tagName.toLowerCase() === "select") {
2370
+ // install sthe selection initializer
2371
+ opts.initSelection = function (element, callback) {
2372
+
2373
+ var data = [];
2374
+
2375
+ element.find(":selected").each2(function (i, elm) {
2376
+ data.push(self.optionToData(elm));
2377
+ });
2378
+ callback(data);
2379
+ };
2380
+ } else if ("data" in opts) {
2381
+ // install default initSelection when applied to hidden input and data is local
2382
+ opts.initSelection = opts.initSelection || function (element, callback) {
2383
+ var ids = splitVal(element.val(), opts.separator);
2384
+ //search in data by array of ids, storing matching items in a list
2385
+ var matches = [];
2386
+ opts.query({
2387
+ matcher: function(term, text, el){
2388
+ var is_match = $.grep(ids, function(id) {
2389
+ return equal(id, opts.id(el));
2390
+ }).length;
2391
+ if (is_match) {
2392
+ matches.push(el);
2393
+ }
2394
+ return is_match;
2395
+ },
2396
+ callback: !$.isFunction(callback) ? $.noop : function() {
2397
+ // reorder matches based on the order they appear in the ids array because right now
2398
+ // they are in the order in which they appear in data array
2399
+ var ordered = [];
2400
+ for (var i = 0; i < ids.length; i++) {
2401
+ var id = ids[i];
2402
+ for (var j = 0; j < matches.length; j++) {
2403
+ var match = matches[j];
2404
+ if (equal(id, opts.id(match))) {
2405
+ ordered.push(match);
2406
+ matches.splice(j, 1);
2407
+ break;
2408
+ }
2409
+ }
2410
+ }
2411
+ callback(ordered);
2412
+ }
2413
+ });
2414
+ };
2415
+ }
2416
+
2417
+ return opts;
2418
+ },
2419
+
2420
+ selectChoice: function (choice) {
2421
+
2422
+ var selected = this.container.find(".select2-search-choice-focus");
2423
+ if (selected.length && choice && choice[0] == selected[0]) {
2424
+
2425
+ } else {
2426
+ if (selected.length) {
2427
+ this.opts.element.trigger("choice-deselected", selected);
2428
+ }
2429
+ selected.removeClass("select2-search-choice-focus");
2430
+ if (choice && choice.length) {
2431
+ this.close();
2432
+ choice.addClass("select2-search-choice-focus");
2433
+ this.opts.element.trigger("choice-selected", choice);
2434
+ }
2435
+ }
2436
+ },
2437
+
2438
+ // multi
2439
+ destroy: function() {
2440
+ $("label[for='" + this.search.attr('id') + "']")
2441
+ .attr('for', this.opts.element.attr("id"));
2442
+ this.parent.destroy.apply(this, arguments);
2443
+ },
2444
+
2445
+ // multi
2446
+ initContainer: function () {
2447
+
2448
+ var selector = ".select2-choices", selection;
2449
+
2450
+ this.searchContainer = this.container.find(".select2-search-field");
2451
+ this.selection = selection = this.container.find(selector);
2452
+
2453
+ var _this = this;
2454
+ this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) {
2455
+ //killEvent(e);
2456
+ _this.search[0].focus();
2457
+ _this.selectChoice($(this));
2458
+ });
2459
+
2460
+ // rewrite labels from original element to focusser
2461
+ this.search.attr("id", "s2id_autogen"+nextUid());
2462
+ $("label[for='" + this.opts.element.attr("id") + "']")
2463
+ .attr('for', this.search.attr('id'));
2464
+
2465
+ this.search.on("input paste", this.bind(function() {
2466
+ if (!this.isInterfaceEnabled()) return;
2467
+ if (!this.opened()) {
2468
+ this.open();
2469
+ }
2470
+ }));
2471
+
2472
+ this.search.attr("tabindex", this.elementTabIndex);
2473
+
2474
+ this.keydowns = 0;
2475
+ this.search.on("keydown", this.bind(function (e) {
2476
+ if (!this.isInterfaceEnabled()) return;
2477
+
2478
+ ++this.keydowns;
2479
+ var selected = selection.find(".select2-search-choice-focus");
2480
+ var prev = selected.prev(".select2-search-choice:not(.select2-locked)");
2481
+ var next = selected.next(".select2-search-choice:not(.select2-locked)");
2482
+ var pos = getCursorInfo(this.search);
2483
+
2484
+ if (selected.length &&
2485
+ (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {
2486
+ var selectedChoice = selected;
2487
+ if (e.which == KEY.LEFT && prev.length) {
2488
+ selectedChoice = prev;
2489
+ }
2490
+ else if (e.which == KEY.RIGHT) {
2491
+ selectedChoice = next.length ? next : null;
2492
+ }
2493
+ else if (e.which === KEY.BACKSPACE) {
2494
+ this.unselect(selected.first());
2495
+ this.search.width(10);
2496
+ selectedChoice = prev.length ? prev : next;
2497
+ } else if (e.which == KEY.DELETE) {
2498
+ this.unselect(selected.first());
2499
+ this.search.width(10);
2500
+ selectedChoice = next.length ? next : null;
2501
+ } else if (e.which == KEY.ENTER) {
2502
+ selectedChoice = null;
2503
+ }
2504
+
2505
+ this.selectChoice(selectedChoice);
2506
+ killEvent(e);
2507
+ if (!selectedChoice || !selectedChoice.length) {
2508
+ this.open();
2509
+ }
2510
+ return;
2511
+ } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)
2512
+ || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {
2513
+
2514
+ this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last());
2515
+ killEvent(e);
2516
+ return;
2517
+ } else {
2518
+ this.selectChoice(null);
2519
+ }
2520
+
2521
+ if (this.opened()) {
2522
+ switch (e.which) {
2523
+ case KEY.UP:
2524
+ case KEY.DOWN:
2525
+ this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
2526
+ killEvent(e);
2527
+ return;
2528
+ case KEY.ENTER:
2529
+ this.selectHighlighted();
2530
+ killEvent(e);
2531
+ return;
2532
+ case KEY.TAB:
2533
+ this.selectHighlighted({noFocus:true});
2534
+ this.close();
2535
+ return;
2536
+ case KEY.ESC:
2537
+ this.cancel(e);
2538
+ killEvent(e);
2539
+ return;
2540
+ }
2541
+ }
2542
+
2543
+ if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)
2544
+ || e.which === KEY.BACKSPACE || e.which === KEY.ESC) {
2545
+ return;
2546
+ }
2547
+
2548
+ if (e.which === KEY.ENTER) {
2549
+ if (this.opts.openOnEnter === false) {
2550
+ return;
2551
+ } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
2552
+ return;
2553
+ }
2554
+ }
2555
+
2556
+ this.open();
2557
+
2558
+ if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
2559
+ // prevent the page from scrolling
2560
+ killEvent(e);
2561
+ }
2562
+
2563
+ if (e.which === KEY.ENTER) {
2564
+ // prevent form from being submitted
2565
+ killEvent(e);
2566
+ }
2567
+
2568
+ }));
2569
+
2570
+ this.search.on("keyup", this.bind(function (e) {
2571
+ this.keydowns = 0;
2572
+ this.resizeSearch();
2573
+ })
2574
+ );
2575
+
2576
+ this.search.on("blur", this.bind(function(e) {
2577
+ this.container.removeClass("select2-container-active");
2578
+ this.search.removeClass("select2-focused");
2579
+ this.selectChoice(null);
2580
+ if (!this.opened()) this.clearSearch();
2581
+ e.stopImmediatePropagation();
2582
+ this.opts.element.trigger($.Event("select2-blur"));
2583
+ }));
2584
+
2585
+ this.container.on("click", selector, this.bind(function (e) {
2586
+ if (!this.isInterfaceEnabled()) return;
2587
+ if ($(e.target).closest(".select2-search-choice").length > 0) {
2588
+ // clicked inside a select2 search choice, do not open
2589
+ return;
2590
+ }
2591
+ this.selectChoice(null);
2592
+ this.clearPlaceholder();
2593
+ if (!this.container.hasClass("select2-container-active")) {
2594
+ this.opts.element.trigger($.Event("select2-focus"));
2595
+ }
2596
+ this.open();
2597
+ this.focusSearch();
2598
+ e.preventDefault();
2599
+ }));
2600
+
2601
+ this.container.on("focus", selector, this.bind(function () {
2602
+ if (!this.isInterfaceEnabled()) return;
2603
+ if (!this.container.hasClass("select2-container-active")) {
2604
+ this.opts.element.trigger($.Event("select2-focus"));
2605
+ }
2606
+ this.container.addClass("select2-container-active");
2607
+ this.dropdown.addClass("select2-drop-active");
2608
+ this.clearPlaceholder();
2609
+ }));
2610
+
2611
+ this.initContainerWidth();
2612
+ this.opts.element.addClass("select2-offscreen");
2613
+
2614
+ // set the placeholder if necessary
2615
+ this.clearSearch();
2616
+ },
2617
+
2618
+ // multi
2619
+ enableInterface: function() {
2620
+ if (this.parent.enableInterface.apply(this, arguments)) {
2621
+ this.search.prop("disabled", !this.isInterfaceEnabled());
2622
+ }
2623
+ },
2624
+
2625
+ // multi
2626
+ initSelection: function () {
2627
+ var data;
2628
+ if (this.opts.element.val() === "" && this.opts.element.text() === "") {
2629
+ this.updateSelection([]);
2630
+ this.close();
2631
+ // set the placeholder if necessary
2632
+ this.clearSearch();
2633
+ }
2634
+ if (this.select || this.opts.element.val() !== "") {
2635
+ var self = this;
2636
+ this.opts.initSelection.call(null, this.opts.element, function(data){
2637
+ if (data !== undefined && data !== null) {
2638
+ self.updateSelection(data);
2639
+ self.close();
2640
+ // set the placeholder if necessary
2641
+ self.clearSearch();
2642
+ }
2643
+ });
2644
+ }
2645
+ },
2646
+
2647
+ // multi
2648
+ clearSearch: function () {
2649
+ var placeholder = this.getPlaceholder(),
2650
+ maxWidth = this.getMaxSearchWidth();
2651
+
2652
+ if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) {
2653
+ this.search.val(placeholder).addClass("select2-default");
2654
+ // stretch the search box to full width of the container so as much of the placeholder is visible as possible
2655
+ // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944
2656
+ this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width"));
2657
+ } else {
2658
+ this.search.val("").width(10);
2659
+ }
2660
+ },
2661
+
2662
+ // multi
2663
+ clearPlaceholder: function () {
2664
+ if (this.search.hasClass("select2-default")) {
2665
+ this.search.val("").removeClass("select2-default");
2666
+ }
2667
+ },
2668
+
2669
+ // multi
2670
+ opening: function () {
2671
+ this.clearPlaceholder(); // should be done before super so placeholder is not used to search
2672
+ this.resizeSearch();
2673
+
2674
+ this.parent.opening.apply(this, arguments);
2675
+
2676
+ this.focusSearch();
2677
+
2678
+ this.updateResults(true);
2679
+ this.search.focus();
2680
+ this.opts.element.trigger($.Event("select2-open"));
2681
+ },
2682
+
2683
+ // multi
2684
+ close: function () {
2685
+ if (!this.opened()) return;
2686
+ this.parent.close.apply(this, arguments);
2687
+ },
2688
+
2689
+ // multi
2690
+ focus: function () {
2691
+ this.close();
2692
+ this.search.focus();
2693
+ },
2694
+
2695
+ // multi
2696
+ isFocused: function () {
2697
+ return this.search.hasClass("select2-focused");
2698
+ },
2699
+
2700
+ // multi
2701
+ updateSelection: function (data) {
2702
+ var ids = [], filtered = [], self = this;
2703
+
2704
+ // filter out duplicates
2705
+ $(data).each(function () {
2706
+ if (indexOf(self.id(this), ids) < 0) {
2707
+ ids.push(self.id(this));
2708
+ filtered.push(this);
2709
+ }
2710
+ });
2711
+ data = filtered;
2712
+
2713
+ this.selection.find(".select2-search-choice").remove();
2714
+ $(data).each(function () {
2715
+ self.addSelectedChoice(this);
2716
+ });
2717
+ self.postprocessResults();
2718
+ },
2719
+
2720
+ // multi
2721
+ tokenize: function() {
2722
+ var input = this.search.val();
2723
+ input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);
2724
+ if (input != null && input != undefined) {
2725
+ this.search.val(input);
2726
+ if (input.length > 0) {
2727
+ this.open();
2728
+ }
2729
+ }
2730
+
2731
+ },
2732
+
2733
+ // multi
2734
+ onSelect: function (data, options) {
2735
+
2736
+ if (!this.triggerSelect(data)) { return; }
2737
+
2738
+ this.addSelectedChoice(data);
2739
+
2740
+ this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data });
2741
+
2742
+ if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);
2743
+
2744
+ if (this.opts.closeOnSelect) {
2745
+ this.close();
2746
+ this.search.width(10);
2747
+ } else {
2748
+ if (this.countSelectableResults()>0) {
2749
+ this.search.width(10);
2750
+ this.resizeSearch();
2751
+ if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {
2752
+ // if we reached max selection size repaint the results so choices
2753
+ // are replaced with the max selection reached message
2754
+ this.updateResults(true);
2755
+ }
2756
+ this.positionDropdown();
2757
+ } else {
2758
+ // if nothing left to select close
2759
+ this.close();
2760
+ this.search.width(10);
2761
+ }
2762
+ }
2763
+
2764
+ // since its not possible to select an element that has already been
2765
+ // added we do not need to check if this is a new element before firing change
2766
+ this.triggerChange({ added: data });
2767
+
2768
+ if (!options || !options.noFocus)
2769
+ this.focusSearch();
2770
+ },
2771
+
2772
+ // multi
2773
+ cancel: function () {
2774
+ this.close();
2775
+ this.focusSearch();
2776
+ },
2777
+
2778
+ addSelectedChoice: function (data) {
2779
+ var enableChoice = !data.locked,
2780
+ enabledItem = $(
2781
+ "<li class='select2-search-choice'>" +
2782
+ " <div></div>" +
2783
+ " <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a>" +
2784
+ "</li>"),
2785
+ disabledItem = $(
2786
+ "<li class='select2-search-choice select2-locked'>" +
2787
+ "<div></div>" +
2788
+ "</li>");
2789
+ var choice = enableChoice ? enabledItem : disabledItem,
2790
+ id = this.id(data),
2791
+ val = this.getVal(),
2792
+ formatted,
2793
+ cssClass;
2794
+
2795
+ formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup);
2796
+ if (formatted != undefined) {
2797
+ choice.find("div").replaceWith("<div>"+formatted+"</div>");
2798
+ }
2799
+ cssClass=this.opts.formatSelectionCssClass(data, choice.find("div"));
2800
+ if (cssClass != undefined) {
2801
+ choice.addClass(cssClass);
2802
+ }
2803
+
2804
+ if(enableChoice){
2805
+ choice.find(".select2-search-choice-close")
2806
+ .on("mousedown", killEvent)
2807
+ .on("click dblclick", this.bind(function (e) {
2808
+ if (!this.isInterfaceEnabled()) return;
2809
+
2810
+ $(e.target).closest(".select2-search-choice").fadeOut('fast', this.bind(function(){
2811
+ this.unselect($(e.target));
2812
+ this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
2813
+ this.close();
2814
+ this.focusSearch();
2815
+ })).dequeue();
2816
+ killEvent(e);
2817
+ })).on("focus", this.bind(function () {
2818
+ if (!this.isInterfaceEnabled()) return;
2819
+ this.container.addClass("select2-container-active");
2820
+ this.dropdown.addClass("select2-drop-active");
2821
+ }));
2822
+ }
2823
+
2824
+ choice.data("select2-data", data);
2825
+ choice.insertBefore(this.searchContainer);
2826
+
2827
+ val.push(id);
2828
+ this.setVal(val);
2829
+ },
2830
+
2831
+ // multi
2832
+ unselect: function (selected) {
2833
+ var val = this.getVal(),
2834
+ data,
2835
+ index;
2836
+
2837
+ selected = selected.closest(".select2-search-choice");
2838
+
2839
+ if (selected.length === 0) {
2840
+ throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
2841
+ }
2842
+
2843
+ data = selected.data("select2-data");
2844
+
2845
+ if (!data) {
2846
+ // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
2847
+ // and invoked on an element already removed
2848
+ return;
2849
+ }
2850
+
2851
+ while((index = indexOf(this.id(data), val)) >= 0) {
2852
+ val.splice(index, 1);
2853
+ this.setVal(val);
2854
+ if (this.select) this.postprocessResults();
2855
+ }
2856
+ selected.remove();
2857
+
2858
+ this.opts.element.trigger({ type: "removed", val: this.id(data), choice: data });
2859
+ this.triggerChange({ removed: data });
2860
+ },
2861
+
2862
+ // multi
2863
+ postprocessResults: function (data, initial, noHighlightUpdate) {
2864
+ var val = this.getVal(),
2865
+ choices = this.results.find(".select2-result"),
2866
+ compound = this.results.find(".select2-result-with-children"),
2867
+ self = this;
2868
+
2869
+ choices.each2(function (i, choice) {
2870
+ var id = self.id(choice.data("select2-data"));
2871
+ if (indexOf(id, val) >= 0) {
2872
+ choice.addClass("select2-selected");
2873
+ // mark all children of the selected parent as selected
2874
+ choice.find(".select2-result-selectable").addClass("select2-selected");
2875
+ }
2876
+ });
2877
+
2878
+ compound.each2(function(i, choice) {
2879
+ // hide an optgroup if it doesnt have any selectable children
2880
+ if (!choice.is('.select2-result-selectable')
2881
+ && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) {
2882
+ choice.addClass("select2-selected");
2883
+ }
2884
+ });
2885
+
2886
+ if (this.highlight() == -1 && noHighlightUpdate !== false){
2887
+ self.highlight(0);
2888
+ }
2889
+
2890
+ //If all results are chosen render formatNoMAtches
2891
+ if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){
2892
+ if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) {
2893
+ if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) {
2894
+ this.results.append("<li class='select2-no-results'>" + self.opts.formatNoMatches(self.search.val()) + "</li>");
2895
+ }
2896
+ }
2897
+ }
2898
+
2899
+ },
2900
+
2901
+ // multi
2902
+ getMaxSearchWidth: function() {
2903
+ return this.selection.width() - getSideBorderPadding(this.search);
2904
+ },
2905
+
2906
+ // multi
2907
+ resizeSearch: function () {
2908
+ var minimumWidth, left, maxWidth, containerLeft, searchWidth,
2909
+ sideBorderPadding = getSideBorderPadding(this.search);
2910
+
2911
+ minimumWidth = measureTextWidth(this.search) + 10;
2912
+
2913
+ left = this.search.offset().left;
2914
+
2915
+ maxWidth = this.selection.width();
2916
+ containerLeft = this.selection.offset().left;
2917
+
2918
+ searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;
2919
+
2920
+ if (searchWidth < minimumWidth) {
2921
+ searchWidth = maxWidth - sideBorderPadding;
2922
+ }
2923
+
2924
+ if (searchWidth < 40) {
2925
+ searchWidth = maxWidth - sideBorderPadding;
2926
+ }
2927
+
2928
+ if (searchWidth <= 0) {
2929
+ searchWidth = minimumWidth;
2930
+ }
2931
+
2932
+ this.search.width(Math.floor(searchWidth));
2933
+ },
2934
+
2935
+ // multi
2936
+ getVal: function () {
2937
+ var val;
2938
+ if (this.select) {
2939
+ val = this.select.val();
2940
+ return val === null ? [] : val;
2941
+ } else {
2942
+ val = this.opts.element.val();
2943
+ return splitVal(val, this.opts.separator);
2944
+ }
2945
+ },
2946
+
2947
+ // multi
2948
+ setVal: function (val) {
2949
+ var unique;
2950
+ if (this.select) {
2951
+ this.select.val(val);
2952
+ } else {
2953
+ unique = [];
2954
+ // filter out duplicates
2955
+ $(val).each(function () {
2956
+ if (indexOf(this, unique) < 0) unique.push(this);
2957
+ });
2958
+ this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
2959
+ }
2960
+ },
2961
+
2962
+ // multi
2963
+ buildChangeDetails: function (old, current) {
2964
+ var current = current.slice(0),
2965
+ old = old.slice(0);
2966
+
2967
+ // remove intersection from each array
2968
+ for (var i = 0; i < current.length; i++) {
2969
+ for (var j = 0; j < old.length; j++) {
2970
+ if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {
2971
+ current.splice(i, 1);
2972
+ i--;
2973
+ old.splice(j, 1);
2974
+ j--;
2975
+ }
2976
+ }
2977
+ }
2978
+
2979
+ return {added: current, removed: old};
2980
+ },
2981
+
2982
+
2983
+ // multi
2984
+ val: function (val, triggerChange) {
2985
+ var oldData, self=this, changeDetails;
2986
+
2987
+ if (arguments.length === 0) {
2988
+ return this.getVal();
2989
+ }
2990
+
2991
+ oldData=this.data();
2992
+ if (!oldData.length) oldData=[];
2993
+
2994
+ // val is an id. !val is true for [undefined,null,'',0] - 0 is legal
2995
+ if (!val && val !== 0) {
2996
+ this.opts.element.val("");
2997
+ this.updateSelection([]);
2998
+ this.clearSearch();
2999
+ if (triggerChange) {
3000
+ this.triggerChange({added: this.data(), removed: oldData});
3001
+ }
3002
+ return;
3003
+ }
3004
+
3005
+ // val is a list of ids
3006
+ this.setVal(val);
3007
+
3008
+ if (this.select) {
3009
+ this.opts.initSelection(this.select, this.bind(this.updateSelection));
3010
+ if (triggerChange) {
3011
+ this.triggerChange(this.buildChangeDetails(oldData, this.data()));
3012
+ }
3013
+ } else {
3014
+ if (this.opts.initSelection === undefined) {
3015
+ throw new Error("val() cannot be called if initSelection() is not defined");
3016
+ }
3017
+
3018
+ this.opts.initSelection(this.opts.element, function(data){
3019
+ var ids=$.map(data, self.id);
3020
+ self.setVal(ids);
3021
+ self.updateSelection(data);
3022
+ self.clearSearch();
3023
+ if (triggerChange) {
3024
+ self.triggerChange(self.buildChangeDetails(oldData, this.data()));
3025
+ }
3026
+ });
3027
+ }
3028
+ this.clearSearch();
3029
+ },
3030
+
3031
+ // multi
3032
+ onSortStart: function() {
3033
+ if (this.select) {
3034
+ throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");
3035
+ }
3036
+
3037
+ // collapse search field into 0 width so its container can be collapsed as well
3038
+ this.search.width(0);
3039
+ // hide the container
3040
+ this.searchContainer.hide();
3041
+ },
3042
+
3043
+ // multi
3044
+ onSortEnd:function() {
3045
+
3046
+ var val=[], self=this;
3047
+
3048
+ // show search and move it to the end of the list
3049
+ this.searchContainer.show();
3050
+ // make sure the search container is the last item in the list
3051
+ this.searchContainer.appendTo(this.searchContainer.parent());
3052
+ // since we collapsed the width in dragStarted, we resize it here
3053
+ this.resizeSearch();
3054
+
3055
+ // update selection
3056
+ this.selection.find(".select2-search-choice").each(function() {
3057
+ val.push(self.opts.id($(this).data("select2-data")));
3058
+ });
3059
+ this.setVal(val);
3060
+ this.triggerChange();
3061
+ },
3062
+
3063
+ // multi
3064
+ data: function(values, triggerChange) {
3065
+ var self=this, ids, old;
3066
+ if (arguments.length === 0) {
3067
+ return this.selection
3068
+ .find(".select2-search-choice")
3069
+ .map(function() { return $(this).data("select2-data"); })
3070
+ .get();
3071
+ } else {
3072
+ old = this.data();
3073
+ if (!values) { values = []; }
3074
+ ids = $.map(values, function(e) { return self.opts.id(e); });
3075
+ this.setVal(ids);
3076
+ this.updateSelection(values);
3077
+ this.clearSearch();
3078
+ if (triggerChange) {
3079
+ this.triggerChange(this.buildChangeDetails(old, this.data()));
3080
+ }
3081
+ }
3082
+ }
3083
+ });
3084
+
3085
+ $.fn.select2 = function () {
3086
+
3087
+ var args = Array.prototype.slice.call(arguments, 0),
3088
+ opts,
3089
+ select2,
3090
+ method, value, multiple,
3091
+ allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"],
3092
+ valueMethods = ["opened", "isFocused", "container", "dropdown"],
3093
+ propertyMethods = ["val", "data"],
3094
+ methodsMap = { search: "externalSearch" };
3095
+
3096
+ this.each(function () {
3097
+ if (args.length === 0 || typeof(args[0]) === "object") {
3098
+ opts = args.length === 0 ? {} : $.extend({}, args[0]);
3099
+ opts.element = $(this);
3100
+
3101
+ if (opts.element.get(0).tagName.toLowerCase() === "select") {
3102
+ multiple = opts.element.prop("multiple");
3103
+ } else {
3104
+ multiple = opts.multiple || false;
3105
+ if ("tags" in opts) {opts.multiple = multiple = true;}
3106
+ }
3107
+
3108
+ select2 = multiple ? new MultiSelect2() : new SingleSelect2();
3109
+ select2.init(opts);
3110
+ } else if (typeof(args[0]) === "string") {
3111
+
3112
+ if (indexOf(args[0], allowedMethods) < 0) {
3113
+ throw "Unknown method: " + args[0];
3114
+ }
3115
+
3116
+ value = undefined;
3117
+ select2 = $(this).data("select2");
3118
+ if (select2 === undefined) return;
3119
+
3120
+ method=args[0];
3121
+
3122
+ if (method === "container") {
3123
+ value = select2.container;
3124
+ } else if (method === "dropdown") {
3125
+ value = select2.dropdown;
3126
+ } else {
3127
+ if (methodsMap[method]) method = methodsMap[method];
3128
+
3129
+ value = select2[method].apply(select2, args.slice(1));
3130
+ }
3131
+ if (indexOf(args[0], valueMethods) >= 0
3132
+ || (indexOf(args[0], propertyMethods) && args.length == 1)) {
3133
+ return false; // abort the iteration, ready to return first matched value
3134
+ }
3135
+ } else {
3136
+ throw "Invalid arguments to select2 plugin: " + args;
3137
+ }
3138
+ });
3139
+ return (value === undefined) ? this : value;
3140
+ };
3141
+
3142
+ // plugin defaults, accessible to users
3143
+ $.fn.select2.defaults = {
3144
+ width: "copy",
3145
+ loadMorePadding: 0,
3146
+ closeOnSelect: true,
3147
+ openOnEnter: true,
3148
+ containerCss: {},
3149
+ dropdownCss: {},
3150
+ containerCssClass: "",
3151
+ dropdownCssClass: "",
3152
+ formatResult: function(result, container, query, escapeMarkup) {
3153
+ var markup=[];
3154
+ markMatch(result.text, query.term, markup, escapeMarkup);
3155
+ return markup.join("");
3156
+ },
3157
+ formatSelection: function (data, container, escapeMarkup) {
3158
+ return data ? escapeMarkup(data.text) : undefined;
3159
+ },
3160
+ sortResults: function (results, container, query) {
3161
+ return results;
3162
+ },
3163
+ formatResultCssClass: function(data) {return undefined;},
3164
+ formatSelectionCssClass: function(data, container) {return undefined;},
3165
+ formatNoMatches: function () { return "No matches found"; },
3166
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1? "" : "s"); },
3167
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); },
3168
+ formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
3169
+ formatLoadMore: function (pageNumber) { return "Loading more results..."; },
3170
+ formatSearching: function () { return "Searching..."; },
3171
+ minimumResultsForSearch: 0,
3172
+ minimumInputLength: 0,
3173
+ maximumInputLength: null,
3174
+ maximumSelectionSize: 0,
3175
+ id: function (e) { return e.id; },
3176
+ matcher: function(term, text) {
3177
+ return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;
3178
+ },
3179
+ separator: ",",
3180
+ tokenSeparators: [],
3181
+ tokenizer: defaultTokenizer,
3182
+ escapeMarkup: defaultEscapeMarkup,
3183
+ blurOnChange: false,
3184
+ selectOnBlur: false,
3185
+ adaptContainerCssClass: function(c) { return c; },
3186
+ adaptDropdownCssClass: function(c) { return null; },
3187
+ nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }
3188
+ };
3189
+
3190
+ $.fn.select2.ajaxDefaults = {
3191
+ transport: $.ajax,
3192
+ params: {
3193
+ type: "GET",
3194
+ cache: false,
3195
+ dataType: "json"
3196
+ }
3197
+ };
3198
+
3199
+ // exports
3200
+ window.Select2 = {
3201
+ query: {
3202
+ ajax: ajax,
3203
+ local: local,
3204
+ tags: tags
3205
+ }, util: {
3206
+ debounce: debounce,
3207
+ markMatch: markMatch,
3208
+ escapeMarkup: defaultEscapeMarkup,
3209
+ stripDiacritics: stripDiacritics
3210
+ }, "class": {
3211
+ "abstract": AbstractSelect2,
3212
+ "single": SingleSelect2,
3213
+ "multi": MultiSelect2
3214
+ }
3215
+ };
3216
+
3217
+ }(jQuery));
ReduxCore/assets/js/vendor/select2/select2.min.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Copyright 2012 Igor Vaynberg
3
+
4
+ Version: 3.4.3 Timestamp: Tue Sep 17 06:47:14 PDT 2013
5
+
6
+ This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
7
+ General Public License version 2 (the "GPL License"). You may choose either license to govern your
8
+ use of this software only upon the condition that you accept all of the terms of either the Apache
9
+ License or the GPL License.
10
+
11
+ You may obtain a copy of the Apache License and the GPL License at:
12
+
13
+ http://www.apache.org/licenses/LICENSE-2.0
14
+ http://www.gnu.org/licenses/gpl-2.0.html
15
+
16
+ Unless required by applicable law or agreed to in writing, software distributed under the
17
+ Apache License or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
18
+ CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for
19
+ the specific language governing permissions and limitations under the Apache License and the GPL License.
20
+ */(function(e){typeof e.fn.each2=="undefined"&&e.extend(e.fn,{each2:function(t){var n=e([0]),r=-1,i=this.length;while(++r<i&&(n.context=n[0]=this[r])&&t.call(n[0],r,n)!==!1);return this}})})(jQuery);(function(e,t){"use strict";function p(e){var t,n,r,i;if(!e||e.length<1)return e;t="";for(n=0,r=e.length;n<r;n++){i=e.charAt(n);t+=h[i]||i}return t}function d(e,t){var n=0,r=t.length;for(;n<r;n+=1)if(m(e,t[n]))return n;return-1}function v(){var t=e(c);t.appendTo("body");var n={width:t.width()-t[0].clientWidth,height:t.height()-t[0].clientHeight};t.remove();return n}function m(e,n){return e===n?!0:e===t||n===t?!1:e===null||n===null?!1:e.constructor===String?e+""==n+"":n.constructor===String?n+""==e+"":!1}function g(t,n){var r,i,s;if(t===null||t.length<1)return[];r=t.split(n);for(i=0,s=r.length;i<s;i+=1)r[i]=e.trim(r[i]);return r}function y(e){return e.outerWidth(!1)-e.width()}function b(n){var r="keyup-change-value";n.on("keydown",function(){e.data(n,r)===t&&e.data(n,r,n.val())});n.on("keyup",function(){var i=e.data(n,r);if(i!==t&&n.val()!==i){e.removeData(n,r);n.trigger("keyup-change")}})}function w(n){n.on("mousemove",function(n){var r=a;(r===t||r.x!==n.pageX||r.y!==n.pageY)&&e(n.target).trigger("mousemove-filtered",n)})}function E(e,n,r){r=r||t;var i;return function(){var t=arguments;window.clearTimeout(i);i=window.setTimeout(function(){n.apply(r,t)},e)}}function S(e){var t=!1,n;return function(){if(t===!1){n=e();t=!0}return n}}function x(e,t){var n=E(e,function(e){t.trigger("scroll-debounced",e)});t.on("scroll",function(e){d(e.target,t.get())>=0&&n(e)})}function T(e){if(e[0]===document.activeElement)return;window.setTimeout(function(){var t=e[0],n=e.val().length,r;e.focus();if(e.is(":visible")&&t===document.activeElement)if(t.setSelectionRange)t.setSelectionRange(n,n);else if(t.createTextRange){r=t.createTextRange();r.collapse(!1);r.select()}},0)}function N(t){t=e(t)[0];var n=0,r=0;if("selectionStart"in t){n=t.selectionStart;r=t.selectionEnd-n}else if("selection"in document){t.focus();var i=document.selection.createRange();r=document.selection.createRange().text.length;i.moveStart("character",-t.value.length);n=i.text.length-r}return{offset:n,length:r}}function C(e){e.preventDefault();e.stopPropagation()}function k(e){e.preventDefault();e.stopImmediatePropagation()}function L(t){if(!u){var n=t[0].currentStyle||window.getComputedStyle(t[0],null);u=e(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:n.fontSize,fontFamily:n.fontFamily,fontStyle:n.fontStyle,fontWeight:n.fontWeight,letterSpacing:n.letterSpacing,textTransform:n.textTransform,whiteSpace:"nowrap"});u.attr("class","select2-sizer");e("body").append(u)}u.text(t.val());return u.width()}function A(t,n,r){var i,s=[],o;i=t.attr("class");if(i){i=""+i;e(i.split(" ")).each2(function(){this.indexOf("select2-")===0&&s.push(this)})}i=n.attr("class");if(i){i=""+i;e(i.split(" ")).each2(function(){if(this.indexOf("select2-")!==0){o=r(this);o&&s.push(this)}})}t.attr("class",s.join(" "))}function O(e,t,n,r){var i=p(e.toUpperCase()).indexOf(p(t.toUpperCase())),s=t.length;if(i<0){n.push(r(e));return}n.push(r(e.substring(0,i)));n.push("<span class='select2-match'>");n.push(r(e.substring(i,i+s)));n.push("</span>");n.push(r(e.substring(i+s,e.length)))}function M(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})}function _(n){var r,i=null,s=n.quietMillis||100,o=n.url,u=this;return function(a){window.clearTimeout(r);r=window.setTimeout(function(){var r=n.data,s=o,f=n.transport||e.fn.select2.ajaxDefaults.transport,l={type:n.type||"GET",cache:n.cache||!1,jsonpCallback:n.jsonpCallback||t,dataType:n.dataType||"json"},c=e.extend({},e.fn.select2.ajaxDefaults.params,l);r=r?r.call(u,a.term,a.page,a.context):null;s=typeof s=="function"?s.call(u,a.term,a.page,a.context):s;i&&i.abort();n.params&&(e.isFunction(n.params)?e.extend(c,n.params.call(u)):e.extend(c,n.params));e.extend(c,{url:s,dataType:n.dataType,data:r,success:function(e){var t=n.results(e,a.page);a.callback(t)}});i=f.call(u,c)},s)}}function D(t){var n=t,r,i,s=function(e){return""+e.text};if(e.isArray(n)){i=n;n={results:i}}if(e.isFunction(n)===!1){i=n;n=function(){return i}}var o=n();if(o.text){s=o.text;if(!e.isFunction(s)){r=o.text;s=function(e){return e[r]}}}return function(t){var r=t.term,i={results:[]},o;if(r===""){t.callback(n());return}o=function(n,i){var u,a;n=n[0];if(n.children){u={};for(a in n)n.hasOwnProperty(a)&&(u[a]=n[a]);u.children=[];e(n.children).each2(function(e,t){o(t,u.children)});(u.children.length||t.matcher(r,s(u),n))&&i.push(u)}else t.matcher(r,s(n),n)&&i.push(n)};e(n().results).each2(function(e,t){o(t,i.results)});t.callback(i)}}function P(n){var r=e.isFunction(n);return function(i){var s=i.term,o={results:[]};e(r?n():n).each(function(){var e=this.text!==t,n=e?this.text:this;(s===""||i.matcher(s,n))&&o.results.push(e?this:{id:this,text:this})});i.callback(o)}}function H(t,n){if(e.isFunction(t))return!0;if(!t)return!1;throw new Error(n+" must be a function or a falsy value")}function B(t){return e.isFunction(t)?t():t}function j(t){var n=0;e.each(t,function(e,t){t.children?n+=j(t.children):n++});return n}function F(e,n,r,i){var s=e,o=!1,u,a,f,l,c;if(!i.createSearchChoice||!i.tokenSeparators||i.tokenSeparators.length<1)return t;for(;;){a=-1;for(f=0,l=i.tokenSeparators.length;f<l;f++){c=i.tokenSeparators[f];a=e.indexOf(c);if(a>=0)break}if(a<0)break;u=e.substring(0,a);e=e.substring(a+c.length);if(u.length>0){u=i.createSearchChoice.call(this,u,n);if(u!==t&&u!==null&&i.id(u)!==t&&i.id(u)!==null){o=!1;for(f=0,l=n.length;f<l;f++)if(m(i.id(u),i.id(n[f]))){o=!0;break}o||r(u)}}}if(s!==e)return e}function I(t,n){var r=function(){};r.prototype=new t;r.prototype.constructor=r;r.prototype.parent=t.prototype;r.prototype=e.extend(r.prototype,n);return r}if(window.Select2!==t)return;var n,r,i,s,o,u,a={x:0,y:0},f,l,n={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(e){e=e.which?e.which:e;switch(e){case n.LEFT:case n.RIGHT:case n.UP:case n.DOWN:return!0}return!1},isControl:function(e){var t=e.which;switch(t){case n.SHIFT:case n.CTRL:case n.ALT:return!0}return e.metaKey?!0:!1},isFunctionKey:function(e){e=e.which?e.which:e;return e>=112&&e<=123}},c="<div class='select2-measure-scrollbar'></div>",h={"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z"};f=e(document);o=function(){var e=1;return function(){return e++}}();f.on("mousemove",function(e){a.x=e.pageX;a.y=e.pageY});r=I(Object,{bind:function(e){var t=this;return function(){e.apply(t,arguments)}},init:function(n){var r,i,s=".select2-results",u,a;this.opts=n=this.prepareOpts(n);this.id=n.id;n.element.data("select2")!==t&&n.element.data("select2")!==null&&n.element.data("select2").destroy();this.container=this.createContainer();this.containerId="s2id_"+(n.element.attr("id")||"autogen"+o());this.containerSelector="#"+this.containerId.replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1");this.container.attr("id",this.containerId);this.body=S(function(){return n.element.closest("body")});A(this.container,this.opts.element,this.opts.adaptContainerCssClass);this.container.attr("style",n.element.attr("style"));this.container.css(B(n.containerCss));this.container.addClass(B(n.containerCssClass));this.elementTabIndex=this.opts.element.attr("tabindex");this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",C);this.container.data("select2",this);this.dropdown=this.container.find(".select2-drop");A(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass);this.dropdown.addClass(B(n.dropdownCssClass));this.dropdown.data("select2",this);this.dropdown.on("click",C);this.results=r=this.container.find(s);this.search=i=this.container.find("input.select2-input");this.queryCount=0;this.resultsPage=0;this.context=null;this.initContainer();this.container.on("click",C);w(this.results);this.dropdown.on("mousemove-filtered touchstart touchmove touchend",s,this.bind(this.highlightUnderEvent));x(80,this.results);this.dropdown.on("scroll-debounced",s,this.bind(this.loadMoreIfNeeded));e(this.container).on("change",".select2-input",function(e){e.stopPropagation()});e(this.dropdown).on("change",".select2-input",function(e){e.stopPropagation()});e.fn.mousewheel&&r.mousewheel(function(e,t,n,i){var s=r.scrollTop(),o;if(i>0&&s-i<=0){r.scrollTop(0);C(e)}else if(i<0&&r.get(0).scrollHeight-r.scrollTop()+i<=r.height()){r.scrollTop(r.get(0).scrollHeight-r.height());C(e)}});b(i);i.on("keyup-change input paste",this.bind(this.updateResults));i.on("focus",function(){i.addClass("select2-focused")});i.on("blur",function(){i.removeClass("select2-focused")});this.dropdown.on("mouseup",s,this.bind(function(t){if(e(t.target).closest(".select2-result-selectable").length>0){this.highlightUnderEvent(t);this.selectHighlighted(t)}}));this.dropdown.on("click mouseup mousedown",function(e){e.stopPropagation()});if(e.isFunction(this.opts.initSelection)){this.initSelection();this.monitorSource()}n.maximumInputLength!==null&&this.search.attr("maxlength",n.maximumInputLength);var u=n.element.prop("disabled");u===t&&(u=!1);this.enable(!u);var a=n.element.prop("readonly");a===t&&(a=!1);this.readonly(a);l=l||v();this.autofocus=n.element.prop("autofocus");n.element.prop("autofocus",!1);this.autofocus&&this.focus();this.nextSearchTerm=t},destroy:function(){var e=this.opts.element,n=e.data("select2");this.close();if(this.propertyObserver){delete this.propertyObserver;this.propertyObserver=null}if(n!==t){n.container.remove();n.dropdown.remove();e.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1);this.elementTabIndex?e.attr({tabindex:this.elementTabIndex}):e.removeAttr("tabindex");e.show()}},optionToData:function(e){if(e.is("option"))return{id:e.prop("value"),text:e.text(),element:e.get(),css:e.attr("class"),disabled:e.prop("disabled"),locked:m(e.attr("locked"),"locked")||m(e.data("locked"),!0)};if(e.is("optgroup"))return{text:e.attr("label"),children:[],element:e.get(),css:e.attr("class")}},prepareOpts:function(n){var r,i,s,o,u=this;r=n.element;r.get(0).tagName.toLowerCase()==="select"&&(this.select=i=n.element);i&&e.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in n)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a <select> element.")});n=e.extend({},{populateResults:function(r,i,s){var o,a,f,l,c=this.opts.id;o=function(r,i,a){var f,l,h,p,d,v,m,g,y,b;r=n.sortResults(r,i,s);for(f=0,l=r.length;f<l;f+=1){h=r[f];d=h.disabled===!0;p=!d&&c(h)!==t;v=h.children&&h.children.length>0;m=e("<li></li>");m.addClass("select2-results-dept-"+a);m.addClass("select2-result");m.addClass(p?"select2-result-selectable":"select2-result-unselectable");d&&m.addClass("select2-disabled");v&&m.addClass("select2-result-with-children");m.addClass(u.opts.formatResultCssClass(h));g=e(document.createElement("div"));g.addClass("select2-result-label");b=n.formatResult(h,g,s,u.opts.escapeMarkup);b!==t&&g.html(b);m.append(g);if(v){y=e("<ul></ul>");y.addClass("select2-result-sub");o(h.children,y,a+1);m.append(y)}m.data("select2-data",h);i.append(m)}};o(i,r,0)}},e.fn.select2.defaults,n);if(typeof n.id!="function"){s=n.id;n.id=function(e){return e[s]}}if(e.isArray(n.element.data("select2Tags"))){if("tags"in n)throw"tags specified as both an attribute 'data-select2-tags' and in options of Select2 "+n.element.attr("id");n.tags=n.element.data("select2Tags")}if(i){n.query=this.bind(function(e){var n={results:[],more:!1},i=e.term,s,o,a;a=function(t,n){var r;if(t.is("option"))e.matcher(i,t.text(),t)&&n.push(u.optionToData(t));else if(t.is("optgroup")){r=u.optionToData(t);t.children().each2(function(e,t){a(t,r.children)});r.children.length>0&&n.push(r)}};s=r.children();if(this.getPlaceholder()!==t&&s.length>0){o=this.getPlaceholderOption();o&&(s=s.not(o))}s.each2(function(e,t){a(t,n.results)});e.callback(n)});n.id=function(e){return e.id};n.formatResultCssClass=function(e){return e.css}}else if(!("query"in n))if("ajax"in n){o=n.element.data("ajax-url");o&&o.length>0&&(n.ajax.url=o);n.query=_.call(n.element,n.ajax)}else if("data"in n)n.query=D(n.data);else if("tags"in n){n.query=P(n.tags);n.createSearchChoice===t&&(n.createSearchChoice=function(t){return{id:e.trim(t),text:e.trim(t)}});n.initSelection===t&&(n.initSelection=function(t,r){var i=[];e(g(t.val(),n.separator)).each(function(){var t={id:this,text:this},r=n.tags;e.isFunction(r)&&(r=r());e(r).each(function(){if(m(this.id,t.id)){t=this;return!1}});i.push(t)});r(i)})}if(typeof n.query!="function")throw"query function not defined for Select2 "+n.element.attr("id");return n},monitorSource:function(){var e=this.opts.element,n;e.on("change.select2",this.bind(function(e){this.opts.element.data("select2-change-triggered")!==!0&&this.initSelection()}));n=this.bind(function(){var n,r,i=this,s=e.prop("disabled");s===t&&(s=!1);this.enable(!s);var r=e.prop("readonly");r===t&&(r=!1);this.readonly(r);A(this.container,this.opts.element,this.opts.adaptContainerCssClass);this.container.addClass(B(this.opts.containerCssClass));A(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass);this.dropdown.addClass(B(this.opts.dropdownCssClass))});e.on("propertychange.select2 DOMAttrModified.select2",n);this.mutationCallback===t&&(this.mutationCallback=function(e){e.forEach(n)});if(typeof WebKitMutationObserver!="undefined"){if(this.propertyObserver){delete this.propertyObserver;this.propertyObserver=null}this.propertyObserver=new WebKitMutationObserver(this.mutationCallback);this.propertyObserver.observe(e.get(0),{attributes:!0,subtree:!1})}},triggerSelect:function(t){var n=e.Event("select2-selecting",{val:this.id(t),object:t});this.opts.element.trigger(n);return!n.isDefaultPrevented()},triggerChange:function(t){t=t||{};t=e.extend({},t,{type:"change",val:this.val()});this.opts.element.data("select2-change-triggered",!0);this.opts.element.trigger(t);this.opts.element.data("select2-change-triggered",!1);this.opts.element.click();this.opts.blurOnChange&&this.opts.element.blur()},isInterfaceEnabled:function(){return this.enabledInterface===!0},enableInterface:function(){var e=this._enabled&&!this._readonly,t=!e;if(e===this.enabledInterface)return!1;this.container.toggleClass("select2-container-disabled",t);this.close();this.enabledInterface=e;return!0},enable:function(e){e===t&&(e=!0);if(this._enabled===e)return;this._enabled=e;this.opts.element.prop("disabled",!e);this.enableInterface()},disable:function(){this.enable(!1)},readonly:function(e){e===t&&(e=!1);if(this._readonly===e)return!1;this._readonly=e;this.opts.element.prop("readonly",e);this.enableInterface();return!0},opened:function(){return this.container.hasClass("select2-dropdown-open")},positionDropdown:function(){var t=this.dropdown,n=this.container.offset(),r=this.container.outerHeight(!1),i=this.container.outerWidth(!1),s=t.outerHeight(!1),o=e(window).scrollLeft()+e(window).width(),u=e(window).scrollTop()+e(window).height(),a=n.top+r,f=n.left,c=a+s<=u,h=n.top-s>=this.body().scrollTop(),p=t.outerWidth(!1),d=f+p<=o,v=t.hasClass("select2-drop-above"),m,g,y,b;if(this.opts.dropdownAutoWidth){b=e(".select2-results",t)[0];t.addClass("select2-drop-auto-width");t.css("width","");p=t.outerWidth(!1)+(b.scrollHeight===b.clientHeight?0:l.width);p>i?i=p:p=i;d=f+p<=o}else this.container.removeClass("select2-drop-auto-width");if(this.body().css("position")!=="static"){m=this.body().offset();a-=m.top;f-=m.left}if(v){g=!0;!h&&c&&(g=!1)}else{g=!1;!c&&h&&(g=!0)}d||(f=n.left+i-p);if(g){a=n.top-s;this.container.addClass("select2-drop-above");t.addClass("select2-drop-above")}else{this.container.removeClass("select2-drop-above");t.removeClass("select2-drop-above")}y=e.extend({top:a,left:f,width:i},B(this.opts.dropdownCss));t.css(y)},shouldOpen:function(){var t;if(this.opened())return!1;if(this._enabled===!1||this._readonly===!0)return!1;t=e.Event("select2-opening");this.opts.element.trigger(t);return!t.isDefaultPrevented()},clearDropdownAlignmentPreference:function(){this.container.removeClass("select2-drop-above");this.dropdown.removeClass("select2-drop-above")},open:function(){if(!this.shouldOpen())return!1;this.opening();return!0},opening:function(){var t=this.containerId,n="scroll."+t,r="resize."+t,i="orientationchange."+t,s,o;this.container.addClass("select2-dropdown-open").addClass("select2-container-active");this.clearDropdownAlignmentPreference();this.dropdown[0]!==this.body().children().last()[0]&&this.dropdown.detach().appendTo(this.body());s=e("#select2-drop-mask");if(s.length==0){s=e(document.createElement("div"));s.attr("id","select2-drop-mask").attr("class","select2-drop-mask");s.hide();s.appendTo(this.body());s.on("mousedown touchstart click",function(t){var n=e("#select2-drop"),r;if(n.length>0){r=n.data("select2");r.opts.selectOnBlur&&r.selectHighlighted({noFocus:!0});r.close({focus:!1});t.preventDefault();t.stopPropagation()}})}this.dropdown.prev()[0]!==s[0]&&this.dropdown.before(s);e("#select2-drop").removeAttr("id");this.dropdown.attr("id","select2-drop");s.show();this.positionDropdown();this.dropdown.show();this.positionDropdown();this.dropdown.addClass("select2-drop-active");var u=this;this.container.parents().add(window).each(function(){e(this).on(r+" "+n+" "+i,function(e){u.positionDropdown()})})},close:function(){if(!this.opened())return;var t=this.containerId,n="scroll."+t,r="resize."+t,i="orientationchange."+t;this.container.parents().add(window).each(function(){e(this).off(n).off(r).off(i)});this.clearDropdownAlignmentPreference();e("#select2-drop-mask").hide();this.dropdown.removeAttr("id");this.dropdown.hide();this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active");this.results.empty();this.clearSearch();this.search.removeClass("select2-active");this.opts.element.trigger(e.Event("select2-close"))},externalSearch:function(e){this.open();this.search.val(e);this.updateResults(!1)},clearSearch:function(){},getMaximumSelectionSize:function(){return B(this.opts.maximumSelectionSize)},ensureHighlightVisible:function(){var t=this.results,n,r,i,s,o,u,a;r=this.highlight();if(r<0)return;if(r==0){t.scrollTop(0);return}n=this.findHighlightableChoices().find(".select2-result-label");i=e(n[r]);s=i.offset().top+i.outerHeight(!0);if(r===n.length-1){a=t.find("li.select2-more-results");a.length>0&&(s=a.offset().top+a.outerHeight(!0))}o=t.offset().top+t.outerHeight(!0);s>o&&t.scrollTop(t.scrollTop()+(s-o));u=i.offset().top-t.offset().top;u<0&&i.css("display")!="none"&&t.scrollTop(t.scrollTop()+u)},findHighlightableChoices:function(){return this.results.find(".select2-result-selectable:not(.select2-disabled)")},moveHighlight:function(t){var n=this.findHighlightableChoices(),r=this.highlight();while(r>-1&&r<n.length){r+=t;var i=e(n[r]);if(i.hasClass("select2-result-selectable")&&!i.hasClass("select2-disabled")&&!i.hasClass("select2-selected")){this.highlight(r);break}}},highlight:function(t){var n=this.findHighlightableChoices(),r,i;if(arguments.length===0)return d(n.filter(".select2-highlighted")[0],n.get());t>=n.length&&(t=n.length-1);t<0&&(t=0);this.removeHighlight();r=e(n[t]);r.addClass("select2-highlighted");this.ensureHighlightVisible();i=r.data("select2-data");i&&this.opts.element.trigger({type:"select2-highlight",val:this.id(i),choice:i})},removeHighlight:function(){this.results.find(".select2-highlighted").removeClass("select2-highlighted")},countSelectableResults:function(){return this.findHighlightableChoices().length},highlightUnderEvent:function(t){var n=e(t.target).closest(".select2-result-selectable");if(n.length>0&&!n.is(".select2-highlighted")){var r=this.findHighlightableChoices();this.highlight(r.index(n))}else n.length==0&&this.removeHighlight()},loadMoreIfNeeded:function(){var e=this.results,t=e.find("li.select2-more-results"),n,r=-1,i=this.resultsPage+1,s=this,o=this.search.val(),u=this.context;if(t.length===0)return;n=t.offset().top-e.offset().top-e.height();if(n<=this.opts.loadMorePadding){t.addClass("select2-active");this.opts.query({element:this.opts.element,term:o,page:i,context:u,matcher:this.opts.matcher,callback:this.bind(function(n){if(!s.opened())return;s.opts.populateResults.call(this,e,n.results,{term:o,page:i,context:u});s.postprocessResults(n,!1,!1);if(n.more===!0){t.detach().appendTo(e).text(s.opts.formatLoadMore(i+1));window.setTimeout(function(){s.loadMoreIfNeeded()},10)}else t.remove();s.positionDropdown();s.resultsPage=i;s.context=n.context;this.opts.element.trigger({type:"select2-loaded",items:n})})})}},tokenize:function(){},updateResults:function(n){function h(){r.removeClass("select2-active");u.positionDropdown()}function p(e){i.html(e);h()}var r=this.search,i=this.results,s=this.opts,o,u=this,a,f=r.val(),l=e.data(this.container,"select2-last-term"),c;if(n!==!0&&l&&m(f,l))return;e.data(this.container,"select2-last-term",f);if(n!==!0&&(this.showSearchInput===!1||!this.opened()))return;c=++this.queryCount;var d=this.getMaximumSelectionSize();if(d>=1){o=this.data();if(e.isArray(o)&&o.length>=d&&H(s.formatSelectionTooBig,"formatSelectionTooBig")){p("<li class='select2-selection-limit'>"+s.formatSelectionTooBig(d)+"</li>");return}}if(r.val().length<s.minimumInputLength){H(s.formatInputTooShort,"formatInputTooShort")?p("<li class='select2-no-results'>"+s.formatInputTooShort(r.val(),s.minimumInputLength)+"</li>"):p("");n&&this.showSearch&&this.showSearch(!0);return}if(s.maximumInputLength&&r.val().length>s.maximumInputLength){H(s.formatInputTooLong,"formatInputTooLong")?p("<li class='select2-no-results'>"+s.formatInputTooLong(r.val(),s.maximumInputLength)+"</li>"):p("");return}s.formatSearching&&this.findHighlightableChoices().length===0&&p("<li class='select2-searching'>"+s.formatSearching()+"</li>");r.addClass("select2-active");this.removeHighlight();a=this.tokenize();a!=t&&a!=null&&r.val(a);this.resultsPage=1;s.query({element:s.element,term:r.val(),page:this.resultsPage,context:null,matcher:s.matcher,callback:this.bind(function(o){var a;if(c!=this.queryCount)return;if(!this.opened()){this.search.removeClass("select2-active");return}this.context=o.context===t?null:o.context;if(this.opts.createSearchChoice&&r.val()!==""){a=this.opts.createSearchChoice.call(u,r.val(),o.results);a!==t&&a!==null&&u.id(a)!==t&&u.id(a)!==null&&e(o.results).filter(function(){return m(u.id(this),u.id(a))}).length===0&&o.results.unshift(a)}if(o.results.length===0&&H(s.formatNoMatches,"formatNoMatches")){p("<li class='select2-no-results'>"+s.formatNoMatches(r.val())+"</li>");return}i.empty();u.opts.populateResults.call(this,i,o.results,{term:r.val(),page:this.resultsPage,context:null});if(o.more===!0&&H(s.formatLoadMore,"formatLoadMore")){i.append("<li class='select2-more-results'>"+u.opts.escapeMarkup(s.formatLoadMore(this.resultsPage))+"</li>");window.setTimeout(function(){u.loadMoreIfNeeded()},10)}this.postprocessResults(o,n);h();this.opts.element.trigger({type:"select2-loaded",items:o})})})},cancel:function(){this.close()},blur:function(){this.opts.selectOnBlur&&this.selectHighlighted({noFocus:!0});this.close();this.container.removeClass("select2-container-active");this.search[0]===document.activeElement&&this.search.blur();this.clearSearch();this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus")},focusSearch:function(){T(this.search)},selectHighlighted:function(e){var t=this.highlight(),n=this.results.find(".select2-highlighted"),r=n.closest(".select2-result").data("select2-data");if(r){this.highlight(t);this.onSelect(r,e)}else e&&e.noFocus&&this.close()},getPlaceholder:function(){var e;return this.opts.element.attr("placeholder")||this.opts.element.attr("data-placeholder")||this.opts.element.data("placeholder")||this.opts.placeholder||((e=this.getPlaceholderOption())!==t?e.text():t)},getPlaceholderOption:function(){if(this.select){var e=this.select.children().first();if(this.opts.placeholderOption!==t)return this.opts.placeholderOption==="first"&&e||typeof this.opts.placeholderOption=="function"&&this.opts.placeholderOption(this.select);if(e.text()===""&&e.val()==="")return e}},initContainerWidth:function(){function n(){var n,r,i,s,o;if(this.opts.width==="off")return null;if(this.opts.width==="element")return this.opts.element.outerWidth(!1)===0?"auto":this.opts.element.outerWidth(!1)+"px";if(this.opts.width==="copy"||this.opts.width==="resolve"){n=this.opts.element.attr("style");if(n!==t){r=n.split(";");for(s=0,o=r.length;s<o;s+=1){i=r[s].replace(/\s/g,"").match(/[^-]width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);if(i!==null&&i.length>=1)return i[1]}}if(this.opts.width==="resolve"){n=this.opts.element.css("width");return n.indexOf("%")>0?n:this.opts.element.outerWidth(!1)===0?"auto":this.opts.element.outerWidth(!1)+"px"}return null}return e.isFunction(this.opts.width)?this.opts.width():this.opts.width}var r=n.call(this);r!==null&&this.container.css("width",r)}});i=I(r,{createContainer:function(){var t=e(document.createElement("div")).attr({"class":"select2-container"}).html(["<a href='javascript:void(0)' onclick='return false;' class='select2-choice' tabindex='-1'>"
21
+ ," <span class='select2-chosen'>&nbsp;</span><abbr class='select2-search-choice-close'></abbr>"," <span class='select2-arrow'><b></b></span>","</a>","<input class='select2-focusser select2-offscreen' type='text'/>","<div class='select2-drop select2-display-none'>"," <div class='select2-search'>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'/>"," </div>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return t},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var n,r,i;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0);this.parent.opening.apply(this,arguments);this.showSearchInput!==!1&&this.search.val(this.focusser.val());this.search.focus();n=this.search.get(0);if(n.createTextRange){r=n.createTextRange();r.collapse(!1);r.select()}else if(n.setSelectionRange){i=this.search.val().length;n.setSelectionRange(i,i)}if(this.search.val()===""&&this.nextSearchTerm!=t){this.search.val(this.nextSearchTerm);this.search.select()}this.focusser.prop("disabled",!0).val("");this.updateResults(!0);this.opts.element.trigger(e.Event("select2-open"))},close:function(e){if(!this.opened())return;this.parent.close.apply(this,arguments);e=e||{focus:!0};this.focusser.removeAttr("disabled");e.focus&&this.focusser.focus()},focus:function(){if(this.opened())this.close();else{this.focusser.removeAttr("disabled");this.focusser.focus()}},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments);this.focusser.removeAttr("disabled");this.focusser.focus()},destroy:function(){e("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id"));this.parent.destroy.apply(this,arguments)},initContainer:function(){var t,r=this.container,i=this.dropdown;this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0);this.selection=t=r.find(".select2-choice");this.focusser=r.find(".select2-focusser");this.focusser.attr("id","s2id_autogen"+o());e("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.focusser.attr("id"));this.focusser.attr("tabindex",this.elementTabIndex);this.search.on("keydown",this.bind(function(e){if(!this.isInterfaceEnabled())return;if(e.which===n.PAGE_UP||e.which===n.PAGE_DOWN){C(e);return}switch(e.which){case n.UP:case n.DOWN:this.moveHighlight(e.which===n.UP?-1:1);C(e);return;case n.ENTER:this.selectHighlighted();C(e);return;case n.TAB:this.selectHighlighted({noFocus:!0});return;case n.ESC:this.cancel(e);C(e);return}}));this.search.on("blur",this.bind(function(e){document.activeElement===this.body().get(0)&&window.setTimeout(this.bind(function(){this.search.focus()}),0)}));this.focusser.on("keydown",this.bind(function(e){if(!this.isInterfaceEnabled())return;if(e.which===n.TAB||n.isControl(e)||n.isFunctionKey(e)||e.which===n.ESC)return;if(this.opts.openOnEnter===!1&&e.which===n.ENTER){C(e);return}if(e.which==n.DOWN||e.which==n.UP||e.which==n.ENTER&&this.opts.openOnEnter){if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey)return;this.open();C(e);return}if(e.which==n.DELETE||e.which==n.BACKSPACE){this.opts.allowClear&&this.clear();C(e);return}}));b(this.focusser);this.focusser.on("keyup-change input",this.bind(function(e){if(this.opts.minimumResultsForSearch>=0){e.stopPropagation();if(this.opened())return;this.open()}}));t.on("mousedown","abbr",this.bind(function(e){if(!this.isInterfaceEnabled())return;this.clear();k(e);this.close();this.selection.focus()}));t.on("mousedown",this.bind(function(t){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus"));this.opened()?this.close():this.isInterfaceEnabled()&&this.open();C(t)}));i.on("mousedown",this.bind(function(){this.search.focus()}));t.on("focus",this.bind(function(e){C(e)}));this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus"));this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){if(!this.opened()){this.container.removeClass("select2-container-active");this.opts.element.trigger(e.Event("select2-blur"))}}));this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus"));this.container.addClass("select2-container-active")}));this.initContainerWidth();this.opts.element.addClass("select2-offscreen");this.setPlaceholder()},clear:function(t){var n=this.selection.data("select2-data");if(n){var r=e.Event("select2-clearing");this.opts.element.trigger(r);if(r.isDefaultPrevented())return;var i=this.getPlaceholderOption();this.opts.element.val(i?i.val():"");this.selection.find(".select2-chosen").empty();this.selection.removeData("select2-data");this.setPlaceholder();if(t!==!1){this.opts.element.trigger({type:"select2-removed",val:this.id(n),choice:n});this.triggerChange({removed:n})}}},initSelection:function(){var e;if(this.isPlaceholderOptionSelected()){this.updateSelection(null);this.close();this.setPlaceholder()}else{var n=this;this.opts.initSelection.call(null,this.opts.element,function(e){if(e!==t&&e!==null){n.updateSelection(e);n.close();n.setPlaceholder()}})}},isPlaceholderOptionSelected:function(){var e;return this.getPlaceholder()?(e=this.getPlaceholderOption())!==t&&e.is(":selected")||this.opts.element.val()===""||this.opts.element.val()===t||this.opts.element.val()===null:!1},prepareOpts:function(){var t=this.parent.prepareOpts.apply(this,arguments),n=this;t.element.get(0).tagName.toLowerCase()==="select"?t.initSelection=function(e,t){var r=e.find(":selected");t(n.optionToData(r))}:"data"in t&&(t.initSelection=t.initSelection||function(n,r){var i=n.val(),s=null;t.query({matcher:function(e,n,r){var o=m(i,t.id(r));o&&(s=r);return o},callback:e.isFunction(r)?function(){r(s)}:e.noop})});return t},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===t?t:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var e=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&e!==t){if(this.select&&this.getPlaceholderOption()===t)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(e));this.selection.addClass("select2-default");this.container.removeClass("select2-allowclear")}},postprocessResults:function(e,t,n){var r=0,i=this,s=!0;this.findHighlightableChoices().each2(function(e,t){if(m(i.id(t.data("select2-data")),i.opts.element.val())){r=e;return!1}});n!==!1&&(t===!0&&r>=0?this.highlight(r):this.highlight(0));if(t===!0){var o=this.opts.minimumResultsForSearch;o>=0&&this.showSearch(j(e.results)>=o)}},showSearch:function(t){if(this.showSearchInput===t)return;this.showSearchInput=t;this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!t);this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!t);e(this.dropdown,this.container).toggleClass("select2-with-searchbox",t)},onSelect:function(e,t){if(!this.triggerSelect(e))return;var n=this.opts.element.val(),r=this.data();this.opts.element.val(this.id(e));this.updateSelection(e);this.opts.element.trigger({type:"select2-selected",val:this.id(e),choice:e});this.nextSearchTerm=this.opts.nextSearchTerm(e,this.search.val());this.close();(!t||!t.noFocus)&&this.focusser.focus();m(n,this.id(e))||this.triggerChange({added:e,removed:r})},updateSelection:function(e){var n=this.selection.find(".select2-chosen"),r,i;this.selection.data("select2-data",e);n.empty();e!==null&&(r=this.opts.formatSelection(e,n,this.opts.escapeMarkup));r!==t&&n.append(r);i=this.opts.formatSelectionCssClass(e,n);i!==t&&n.addClass(i);this.selection.removeClass("select2-default");this.opts.allowClear&&this.getPlaceholder()!==t&&this.container.addClass("select2-allowclear")},val:function(){var e,n=!1,r=null,i=this,s=this.data();if(arguments.length===0)return this.opts.element.val();e=arguments[0];arguments.length>1&&(n=arguments[1]);if(this.select){this.select.val(e).find(":selected").each2(function(e,t){r=i.optionToData(t);return!1});this.updateSelection(r);this.setPlaceholder();n&&this.triggerChange({added:r,removed:s})}else{if(!e&&e!==0){this.clear(n);return}if(this.opts.initSelection===t)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(e);this.opts.initSelection(this.opts.element,function(e){i.opts.element.val(e?i.id(e):"");i.updateSelection(e);i.setPlaceholder();n&&i.triggerChange({added:e,removed:s})})}},clearSearch:function(){this.search.val("");this.focusser.val("")},data:function(e){var n,r=!1;if(arguments.length===0){n=this.selection.data("select2-data");n==t&&(n=null);return n}arguments.length>1&&(r=arguments[1]);if(!e)this.clear(r);else{n=this.data();this.opts.element.val(e?this.id(e):"");this.updateSelection(e);r&&this.triggerChange({added:e,removed:n})}}});s=I(r,{createContainer:function(){var t=e(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["<ul class='select2-choices'>"," <li class='select2-search-field'>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>"," </li>","</ul>","<div class='select2-drop select2-drop-multi select2-display-none'>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return t},prepareOpts:function(){var t=this.parent.prepareOpts.apply(this,arguments),n=this;t.element.get(0).tagName.toLowerCase()==="select"?t.initSelection=function(e,t){var r=[];e.find(":selected").each2(function(e,t){r.push(n.optionToData(t))});t(r)}:"data"in t&&(t.initSelection=t.initSelection||function(n,r){var i=g(n.val(),t.separator),s=[];t.query({matcher:function(n,r,o){var u=e.grep(i,function(e){return m(e,t.id(o))}).length;u&&s.push(o);return u},callback:e.isFunction(r)?function(){var e=[];for(var n=0;n<i.length;n++){var o=i[n];for(var u=0;u<s.length;u++){var a=s[u];if(m(o,t.id(a))){e.push(a);s.splice(u,1);break}}}r(e)}:e.noop})});return t},selectChoice:function(e){var t=this.container.find(".select2-search-choice-focus");if(!t.length||!e||e[0]!=t[0]){t.length&&this.opts.element.trigger("choice-deselected",t);t.removeClass("select2-search-choice-focus");if(e&&e.length){this.close();e.addClass("select2-search-choice-focus");this.opts.element.trigger("choice-selected",e)}}},destroy:function(){e("label[for='"+this.search.attr("id")+"']").attr("for",this.opts.element.attr("id"));this.parent.destroy.apply(this,arguments)},initContainer:function(){var t=".select2-choices",r;this.searchContainer=this.container.find(".select2-search-field");this.selection=r=this.container.find(t);var i=this;this.selection.on("click",".select2-search-choice:not(.select2-locked)",function(t){i.search[0].focus();i.selectChoice(e(this))});this.search.attr("id","s2id_autogen"+o());e("label[for='"+this.opts.element.attr("id")+"']").attr("for",this.search.attr("id"));this.search.on("input paste",this.bind(function(){if(!this.isInterfaceEnabled())return;this.opened()||this.open()}));this.search.attr("tabindex",this.elementTabIndex);this.keydowns=0;this.search.on("keydown",this.bind(function(e){if(!this.isInterfaceEnabled())return;++this.keydowns;var t=r.find(".select2-search-choice-focus"),i=t.prev(".select2-search-choice:not(.select2-locked)"),s=t.next(".select2-search-choice:not(.select2-locked)"),o=N(this.search);if(!(!t.length||e.which!=n.LEFT&&e.which!=n.RIGHT&&e.which!=n.BACKSPACE&&e.which!=n.DELETE&&e.which!=n.ENTER)){var u=t;if(e.which==n.LEFT&&i.length)u=i;else if(e.which==n.RIGHT)u=s.length?s:null;else if(e.which===n.BACKSPACE){this.unselect(t.first());this.search.width(10);u=i.length?i:s}else if(e.which==n.DELETE){this.unselect(t.first());this.search.width(10);u=s.length?s:null}else e.which==n.ENTER&&(u=null);this.selectChoice(u);C(e);(!u||!u.length)&&this.open();return}if((e.which===n.BACKSPACE&&this.keydowns==1||e.which==n.LEFT)&&o.offset==0&&!o.length){this.selectChoice(r.find(".select2-search-choice:not(.select2-locked)").last());C(e);return}this.selectChoice(null);if(this.opened())switch(e.which){case n.UP:case n.DOWN:this.moveHighlight(e.which===n.UP?-1:1);C(e);return;case n.ENTER:this.selectHighlighted();C(e);return;case n.TAB:this.selectHighlighted({noFocus:!0});this.close();return;case n.ESC:this.cancel(e);C(e);return}if(e.which===n.TAB||n.isControl(e)||n.isFunctionKey(e)||e.which===n.BACKSPACE||e.which===n.ESC)return;if(e.which===n.ENTER){if(this.opts.openOnEnter===!1)return;if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey)return}this.open();(e.which===n.PAGE_UP||e.which===n.PAGE_DOWN)&&C(e);e.which===n.ENTER&&C(e)}));this.search.on("keyup",this.bind(function(e){this.keydowns=0;this.resizeSearch()}));this.search.on("blur",this.bind(function(t){this.container.removeClass("select2-container-active");this.search.removeClass("select2-focused");this.selectChoice(null);this.opened()||this.clearSearch();t.stopImmediatePropagation();this.opts.element.trigger(e.Event("select2-blur"))}));this.container.on("click",t,this.bind(function(t){if(!this.isInterfaceEnabled())return;if(e(t.target).closest(".select2-search-choice").length>0)return;this.selectChoice(null);this.clearPlaceholder();this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus"));this.open();this.focusSearch();t.preventDefault()}));this.container.on("focus",t,this.bind(function(){if(!this.isInterfaceEnabled())return;this.container.hasClass("select2-container-active")||this.opts.element.trigger(e.Event("select2-focus"));this.container.addClass("select2-container-active");this.dropdown.addClass("select2-drop-active");this.clearPlaceholder()}));this.initContainerWidth();this.opts.element.addClass("select2-offscreen");this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){var e;if(this.opts.element.val()===""&&this.opts.element.text()===""){this.updateSelection([]);this.close();this.clearSearch()}if(this.select||this.opts.element.val()!==""){var n=this;this.opts.initSelection.call(null,this.opts.element,function(e){if(e!==t&&e!==null){n.updateSelection(e);n.close();n.clearSearch()}})}},clearSearch:function(){var e=this.getPlaceholder(),n=this.getMaxSearchWidth();if(e!==t&&this.getVal().length===0&&this.search.hasClass("select2-focused")===!1){this.search.val(e).addClass("select2-default");this.search.width(n>0?n:this.container.css("width"))}else this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder();this.resizeSearch();this.parent.opening.apply(this,arguments);this.focusSearch();this.updateResults(!0);this.search.focus();this.opts.element.trigger(e.Event("select2-open"))},close:function(){if(!this.opened())return;this.parent.close.apply(this,arguments)},focus:function(){this.close();this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(t){var n=[],r=[],i=this;e(t).each(function(){if(d(i.id(this),n)<0){n.push(i.id(this));r.push(this)}});t=r;this.selection.find(".select2-search-choice").remove();e(t).each(function(){i.addSelectedChoice(this)});i.postprocessResults()},tokenize:function(){var e=this.search.val();e=this.opts.tokenizer.call(this,e,this.data(),this.bind(this.onSelect),this.opts);if(e!=null&&e!=t){this.search.val(e);e.length>0&&this.open()}},onSelect:function(e,t){if(!this.triggerSelect(e))return;this.addSelectedChoice(e);this.opts.element.trigger({type:"selected",val:this.id(e),choice:e});(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(e,!1,this.opts.closeOnSelect===!0);if(this.opts.closeOnSelect){this.close();this.search.width(10)}else if(this.countSelectableResults()>0){this.search.width(10);this.resizeSearch();this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()&&this.updateResults(!0);this.positionDropdown()}else{this.close();this.search.width(10)}this.triggerChange({added:e});(!t||!t.noFocus)&&this.focusSearch()},cancel:function(){this.close();this.focusSearch()},addSelectedChoice:function(n){var r=!n.locked,i=e("<li class='select2-search-choice'> <div></div> <a href='#' onclick='return false;' class='select2-search-choice-close' tabindex='-1'></a></li>"),s=e("<li class='select2-search-choice select2-locked'><div></div></li>"),o=r?i:s,u=this.id(n),a=this.getVal(),f,l;f=this.opts.formatSelection(n,o.find("div"),this.opts.escapeMarkup);f!=t&&o.find("div").replaceWith("<div>"+f+"</div>");l=this.opts.formatSelectionCssClass(n,o.find("div"));l!=t&&o.addClass(l);r&&o.find(".select2-search-choice-close").on("mousedown",C).on("click dblclick",this.bind(function(t){if(!this.isInterfaceEnabled())return;e(t.target).closest(".select2-search-choice").fadeOut("fast",this.bind(function(){this.unselect(e(t.target));this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");this.close();this.focusSearch()})).dequeue();C(t)})).on("focus",this.bind(function(){if(!this.isInterfaceEnabled())return;this.container.addClass("select2-container-active");this.dropdown.addClass("select2-drop-active")}));o.data("select2-data",n);o.insertBefore(this.searchContainer);a.push(u);this.setVal(a)},unselect:function(e){var t=this.getVal(),n,r;e=e.closest(".select2-search-choice");if(e.length===0)throw"Invalid argument: "+e+". Must be .select2-search-choice";n=e.data("select2-data");if(!n)return;while((r=d(this.id(n),t))>=0){t.splice(r,1);this.setVal(t);this.select&&this.postprocessResults()}e.remove();this.opts.element.trigger({type:"removed",val:this.id(n),choice:n});this.triggerChange({removed:n})},postprocessResults:function(e,t,n){var r=this.getVal(),i=this.results.find(".select2-result"),s=this.results.find(".select2-result-with-children"),o=this;i.each2(function(e,t){var n=o.id(t.data("select2-data"));if(d(n,r)>=0){t.addClass("select2-selected");t.find(".select2-result-selectable").addClass("select2-selected")}});s.each2(function(e,t){!t.is(".select2-result-selectable")&&t.find(".select2-result-selectable:not(.select2-selected)").length===0&&t.addClass("select2-selected")});this.highlight()==-1&&n!==!1&&o.highlight(0);!this.opts.createSearchChoice&&!i.filter(".select2-result:not(.select2-selected)").length>0&&(!e||e&&!e.more&&this.results.find(".select2-no-results").length===0)&&H(o.opts.formatNoMatches,"formatNoMatches")&&this.results.append("<li class='select2-no-results'>"+o.opts.formatNoMatches(o.search.val())+"</li>")},getMaxSearchWidth:function(){return this.selection.width()-y(this.search)},resizeSearch:function(){var e,t,n,r,i,s=y(this.search);e=L(this.search)+10;t=this.search.offset().left;n=this.selection.width();r=this.selection.offset().left;i=n-(t-r)-s;i<e&&(i=n-s);i<40&&(i=n-s);i<=0&&(i=e);this.search.width(Math.floor(i))},getVal:function(){var e;if(this.select){e=this.select.val();return e===null?[]:e}e=this.opts.element.val();return g(e,this.opts.separator)},setVal:function(t){var n;if(this.select)this.select.val(t);else{n=[];e(t).each(function(){d(this,n)<0&&n.push(this)});this.opts.element.val(n.length===0?"":n.join(this.opts.separator))}},buildChangeDetails:function(e,t){var t=t.slice(0),e=e.slice(0);for(var n=0;n<t.length;n++)for(var r=0;r<e.length;r++)if(m(this.opts.id(t[n]),this.opts.id(e[r]))){t.splice(n,1);n--;e.splice(r,1);r--}return{added:t,removed:e}},val:function(n,r){var i,s=this,o;if(arguments.length===0)return this.getVal();i=this.data();i.length||(i=[]);if(!n&&n!==0){this.opts.element.val("");this.updateSelection([]);this.clearSearch();r&&this.triggerChange({added:this.data(),removed:i});return}this.setVal(n);if(this.select){this.opts.initSelection(this.select,this.bind(this.updateSelection));r&&this.triggerChange(this.buildChangeDetails(i,this.data()))}else{if(this.opts.initSelection===t)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(t){var n=e.map(t,s.id);s.setVal(n);s.updateSelection(t);s.clearSearch();r&&s.triggerChange(s.buildChangeDetails(i,this.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");this.search.width(0);this.searchContainer.hide()},onSortEnd:function(){var t=[],n=this;this.searchContainer.show();this.searchContainer.appendTo(this.searchContainer.parent());this.resizeSearch();this.selection.find(".select2-search-choice").each(function(){t.push(n.opts.id(e(this).data("select2-data")))});this.setVal(t);this.triggerChange()},data:function(t,n){var r=this,i,s;if(arguments.length===0)return this.selection.find(".select2-search-choice").map(function(){return e(this).data("select2-data")}).get();s=this.data();t||(t=[]);i=e.map(t,function(e){return r.opts.id(e)});this.setVal(i);this.updateSelection(t);this.clearSearch();n&&this.triggerChange(this.buildChangeDetails(s,this.data()))}});e.fn.select2=function(){var n=Array.prototype.slice.call(arguments,0),r,o,u,a,f,l=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],c=["opened","isFocused","container","dropdown"],h=["val","data"],p={search:"externalSearch"};this.each(function(){if(n.length===0||typeof n[0]=="object"){r=n.length===0?{}:e.extend({},n[0]);r.element=e(this);if(r.element.get(0).tagName.toLowerCase()==="select")f=r.element.prop("multiple");else{f=r.multiple||!1;"tags"in r&&(r.multiple=f=!0)}o=f?new s:new i;o.init(r)}else{if(typeof n[0]!="string")throw"Invalid arguments to select2 plugin: "+n;if(d(n[0],l)<0)throw"Unknown method: "+n[0];a=t;o=e(this).data("select2");if(o===t)return;u=n[0];if(u==="container")a=o.container;else if(u==="dropdown")a=o.dropdown;else{p[u]&&(u=p[u]);a=o[u].apply(o,n.slice(1))}if(d(n[0],c)>=0||d(n[0],h)&&n.length==1)return!1}});return a===t?this:a};e.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(e,t,n,r){var i=[];O(e.text,n.term,i,r);return i.join("")},formatSelection:function(e,n,r){return e?r(e.text):t},sortResults:function(e,t,n){return e},formatResultCssClass:function(e){return t},formatSelectionCssClass:function(e,n){return t},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(e,t){var n=t-e.length;return"Please enter "+n+" more character"+(n==1?"":"s")},formatInputTooLong:function(e,t){var n=e.length-t;return"Please delete "+n+" character"+(n==1?"":"s")},formatSelectionTooBig:function(e){return"You can only select "+e+" item"+(e==1?"":"s")},formatLoadMore:function(e){return"Loading more results..."},formatSearching:function(){return"Searching..."},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(e){return e.id},matcher:function(e,t){return p(""+t).toUpperCase().indexOf(p(""+e).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:F,escapeMarkup:M,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(e){return e},adaptDropdownCssClass:function(e){return null},nextSearchTerm:function(e,n){return t}};e.fn.select2.ajaxDefaults={transport:e.ajax,params:{type:"GET",cache:!1,dataType:"json"}};window.Select2={query:{ajax:_,local:D,tags:P},util:{debounce:E,markMatch:O,escapeMarkup:M,stripDiacritics:p},"class":{"abstract":r,single:i,multi:s}}})(jQuery);
ReduxCore/assets/js/vendor/select2/select2.png ADDED
Binary file
ReduxCore/assets/js/vendor/select2/select2_locale_ar.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Arabic translation.
3
+ *
4
+ * Author: Your Name <amedhat3@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "لا توجد نتائج"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "من فضلك أدخل " + n + " حروف أكثر"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "من فضلك أحذف " + n + " حروف"; },
13
+ formatSelectionTooBig: function (limit) { return "يمكنك ان تختار " + limit + " أختيارات فقط"; },
14
+ formatLoadMore: function (pageNumber) { return "تحمل المذيد من النتائج ..."; },
15
+ formatSearching: function () { return "جاري البحث ..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_bg.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 <Language> translation.
3
+ *
4
+ * Author: Lubomir Vikev <lubomirvikev@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Няма намерени съвпадения"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n == 1 ? "" : "а"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n == 1? "" : "а"); },
13
+ formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit == 1 ? " избор" : " избора"); },
14
+ formatLoadMore: function (pageNumber) { return "Зареждат се още..."; },
15
+ formatSearching: function () { return "Търсене..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ca.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Catalan translation.
3
+ *
4
+ * Author: David Planella <david.planella@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "No s'ha trobat cap coincidència"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; },
13
+ formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); },
14
+ formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats..."; },
15
+ formatSearching: function () { return "S'està cercant..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_cs.js ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Czech translation.
3
+ *
4
+ * Author: Michal Marek <ahoj@michal-marek.cz>
5
+ * Author - sklonovani: David Vallner <david@vallner.net>
6
+ */
7
+ (function ($) {
8
+ "use strict";
9
+ // use text for the numbers 2 through 4
10
+ var smallNumbers = {
11
+ 2: function(masc) { return (masc ? "dva" : "dvě"); },
12
+ 3: function() { return "tři"; },
13
+ 4: function() { return "čtyři"; }
14
+ }
15
+ $.extend($.fn.select2.defaults, {
16
+ formatNoMatches: function () { return "Nenalezeny žádné položky"; },
17
+ formatInputTooShort: function (input, min) {
18
+ var n = min - input.length;
19
+ if (n == 1) {
20
+ return "Prosím zadejte ještě jeden znak";
21
+ } else if (n <= 4) {
22
+ return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky";
23
+ } else {
24
+ return "Prosím zadejte ještě dalších "+n+" znaků";
25
+ }
26
+ },
27
+ formatInputTooLong: function (input, max) {
28
+ var n = input.length - max;
29
+ if (n == 1) {
30
+ return "Prosím zadejte o jeden znak méně";
31
+ } else if (n <= 4) {
32
+ return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně";
33
+ } else {
34
+ return "Prosím zadejte o "+n+" znaků méně";
35
+ }
36
+ },
37
+ formatSelectionTooBig: function (limit) {
38
+ if (limit == 1) {
39
+ return "Můžete zvolit jen jednu položku";
40
+ } else if (limit <= 4) {
41
+ return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky";
42
+ } else {
43
+ return "Můžete zvolit maximálně "+limit+" položek";
44
+ }
45
+ },
46
+ formatLoadMore: function (pageNumber) { return "Načítají se další výsledky..."; },
47
+ formatSearching: function () { return "Vyhledávání..."; }
48
+ });
49
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_da.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Danish translation.
3
+ *
4
+ * Author: Anders Jenbo <anders@jenbo.dk>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Ingen resultater fundet"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; },
13
+ formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); },
14
+ formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; },
15
+ formatSearching: function () { return "Søger…"; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_de.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 German translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; },
11
+ formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; },
12
+ formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse..."; },
13
+ formatSearching: function () { return "Suche..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_el.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 <Language> translation.
3
+ *
4
+ * Author: Your Name <your@email>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερους χαρακτήρες" + (n == 1 ? "" : "s"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρες" + (n == 1 ? "" : "s"); },
13
+ formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμενο" + (limit == 1 ? "" : "s"); },
14
+ formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων..."; },
15
+ formatSearching: function () { return "Αναζήτηση..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_en.js.template ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 <Language> translation.
3
+ *
4
+ * Author: Your Name <your@email>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "No matches found"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); },
13
+ formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
14
+ formatLoadMore: function (pageNumber) { return "Loading more results..."; },
15
+ formatSearching: function () { return "Searching..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_es.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Spanish translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "No se encontraron resultados"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "á" : "a") + "cter" + (n == 1? "" : "es"); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "á" : "a") + "cter" + (n == 1? "" : "es"); },
11
+ formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
12
+ formatLoadMore: function (pageNumber) { return "Cargando más resultados..."; },
13
+ formatSearching: function () { return "Buscando..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_et.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Estonian translation.
3
+ *
4
+ * Author: Kuldar Kalvik <kuldar@kalvik.ee>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Tulemused puuduvad"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; },
13
+ formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; },
14
+ formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; },
15
+ formatSearching: function () { return "Otsin.."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_eu.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Basque translation.
3
+ *
4
+ * Author: Julen Ruiz Aizpuru <julenx at gmail dot com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () {
11
+ return "Ez da bat datorrenik aurkitu";
12
+ },
13
+ formatInputTooShort: function (input, min) {
14
+ var n = min - input.length;
15
+ if (n === 1) {
16
+ return "Idatzi karaktere bat gehiago";
17
+ } else {
18
+ return "Idatzi " + n + " karaktere gehiago";
19
+ }
20
+ },
21
+ formatInputTooLong: function (input, max) {
22
+ var n = input.length - max;
23
+ if (n === 1) {
24
+ return "Idatzi karaktere bat gutxiago";
25
+ } else {
26
+ return "Idatzi " + n + " karaktere gutxiago";
27
+ }
28
+ },
29
+ formatSelectionTooBig: function (limit) {
30
+ if (limit === 1 ) {
31
+ return "Elementu bakarra hauta dezakezu";
32
+ } else {
33
+ return limit + " elementu hauta ditzakezu soilik";
34
+ }
35
+ },
36
+ formatLoadMore: function (pageNumber) {
37
+ return "Emaitza gehiago kargatzen...";
38
+ },
39
+ formatSearching: function () {
40
+ return "Bilatzen...";
41
+ }
42
+ });
43
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_fa.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 <fa> translation.
3
+ *
4
+ * Author: Ali Choopan <choopan@arsh.co>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return " لطفا بیش از"+n+"کاراکتر وارد نمایید "; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return " لطفا" + n + " کاراکتر را حذف کنید."; },
13
+ formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; },
14
+ formatLoadMore: function (pageNumber) { return "در حال بارگذاری موارد بیشتر ..."; },
15
+ formatSearching: function () { return "در حال جستجو"; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_fi.js ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Finnish translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+ $.extend($.fn.select2.defaults, {
7
+ formatNoMatches: function () {
8
+ return "Ei tuloksia";
9
+ },
10
+ formatInputTooShort: function (input, min) {
11
+ var n = min - input.length;
12
+ return "Ole hyvä ja anna " + n + " merkkiä lisää.";
13
+ },
14
+ formatInputTooLong: function (input, max) {
15
+ var n = input.length - max;
16
+ return "Ole hyvä ja annar " + n + " merkkiä vähemmän.";
17
+ },
18
+ formatSelectionTooBig: function (limit) {
19
+ return "Voit valita ainoastaan " + limit + " kpl";
20
+ },
21
+ formatLoadMore: function (pageNumber) {
22
+ return "Ladataan lisää tuloksia...";
23
+ },
24
+ formatSearching: function () {
25
+ return "Etsitään...";
26
+ }
27
+ });
28
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_fr.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 French translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Aucun résultat trouvé"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1? "" : "s") + " de plus"; },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1? "" : "s"); },
11
+ formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); },
12
+ formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires..."; },
13
+ formatSearching: function () { return "Recherche en cours..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_gl.js ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Galician translation
3
+ *
4
+ * Author: Leandro Regueiro <leandro.regueiro@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () {
11
+ return "Non se atoparon resultados";
12
+ },
13
+ formatInputTooShort: function (input, min) {
14
+ var n = min - input.length;
15
+ if (n === 1) {
16
+ return "Engada un carácter";
17
+ } else {
18
+ return "Engada " + n + " caracteres";
19
+ }
20
+ },
21
+ formatInputTooLong: function (input, max) {
22
+ var n = input.length - max;
23
+ if (n === 1) {
24
+ return "Elimine un carácter";
25
+ } else {
26
+ return "Elimine " + n + " caracteres";
27
+ }
28
+ },
29
+ formatSelectionTooBig: function (limit) {
30
+ if (limit === 1 ) {
31
+ return "Só pode seleccionar un elemento";
32
+ } else {
33
+ return "Só pode seleccionar " + limit + " elementos";
34
+ }
35
+ },
36
+ formatLoadMore: function (pageNumber) {
37
+ return "Cargando máis resultados...";
38
+ },
39
+ formatSearching: function () {
40
+ return "Buscando...";
41
+ }
42
+ });
43
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_he.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Hebrew translation.
3
+ *
4
+ * Author: Yakir Sitbon <http://www.yakirs.net/>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "לא נמצאו התאמות"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; },
13
+ formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; },
14
+ formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות..."; },
15
+ formatSearching: function () { return "מחפש..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_hr.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Croatian translation.
3
+ *
4
+ * Author: Edi Modrić <edi.modric@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ var specialNumbers = {
10
+ 1: function(n) { return (n % 100 != 11 ? "znak" : "znakova"); },
11
+ 2: function(n) { return (n % 100 != 12 ? "znaka" : "znakova"); },
12
+ 3: function(n) { return (n % 100 != 13 ? "znaka" : "znakova"); },
13
+ 4: function(n) { return (n % 100 != 14 ? "znaka" : "znakova"); }
14
+ };
15
+
16
+ $.extend($.fn.select2.defaults, {
17
+ formatNoMatches: function () { return "Nema rezultata"; },
18
+ formatInputTooShort: function (input, min) {
19
+ var n = min - input.length;
20
+ var nMod10 = n % 10;
21
+
22
+ if (nMod10 > 0 && nMod10 < 5) {
23
+ return "Unesite još " + n + " " + specialNumbers[nMod10](n);
24
+ }
25
+
26
+ return "Unesite još " + n + " znakova";
27
+ },
28
+ formatInputTooLong: function (input, max) {
29
+ var n = input.length - max;
30
+ var nMod10 = n % 10;
31
+
32
+ if (nMod10 > 0 && nMod10 < 5) {
33
+ return "Unesite " + n + " " + specialNumbers[nMod10](n) + " manje";
34
+ }
35
+
36
+ return "Unesite " + n + " znakova manje";
37
+ },
38
+ formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; },
39
+ formatLoadMore: function (pageNumber) { return "Učitavanje rezultata..."; },
40
+ formatSearching: function () { return "Pretraga..."; }
41
+ });
42
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_hu.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Hungarian translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Nincs találat."; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " kerekterrel több mint kellene."; },
11
+ formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; },
12
+ formatLoadMore: function (pageNumber) { return "Töltés..."; },
13
+ formatSearching: function () { return "Keresés..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_id.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Indonesian translation.
3
+ *
4
+ * Author: Ibrahim Yusuf <ibrahim7usuf@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Tidak ada data yang sesuai"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); },
13
+ formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); },
14
+ formatLoadMore: function (pageNumber) { return "Mengambil data..."; },
15
+ formatSearching: function () { return "Mencari..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_is.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Icelandic translation.
3
+ *
4
+ */
5
+ (function ($) {
6
+ "use strict";
7
+
8
+ $.extend($.fn.select2.defaults, {
9
+ formatNoMatches: function () { return "Ekkert fannst"; },
10
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n == 1 ? "" : "i") + " í viðbót"; },
11
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n == 1 ? "" : "i"); },
12
+ formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; },
13
+ formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður..."; },
14
+ formatSearching: function () { return "Leita..."; }
15
+ });
16
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_it.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Italian translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Nessuna corrispondenza trovata"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; },
11
+ formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); },
12
+ formatLoadMore: function (pageNumber) { return "Caricamento in corso..."; },
13
+ formatSearching: function () { return "Ricerca..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ja.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Japanese translation.
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "該当なし"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; },
11
+ formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; },
12
+ formatLoadMore: function (pageNumber) { return "読込中・・・"; },
13
+ formatSearching: function () { return "検索中・・・"; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ko.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 <Language> translation.
3
+ *
4
+ * Author: Swen Mun <longfinfunnel@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "결과 없음"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; },
13
+ formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; },
14
+ formatLoadMore: function (pageNumber) { return "불러오는 중…"; },
15
+ formatSearching: function () { return "검색 중…"; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_lt.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 lithuanian translation.
3
+ *
4
+ * Author: CRONUS Karmalakas <cronus dot karmalakas at gmail dot com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Atitikmenų nerasta"; },
11
+ formatInputTooShort: function (input, min) {
12
+ var n = min - input.length,
13
+ suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių');
14
+ return "Įrašykite dar " + n + " simbol" + suffix;
15
+ },
16
+ formatInputTooLong: function (input, max) {
17
+ var n = input.length - max,
18
+ suffix = (n % 10 == 1) && (n % 100 != 11) ? 'į' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'ius' : 'ių');
19
+ return "Pašalinkite " + n + " simbol" + suffix;
20
+ },
21
+ formatSelectionTooBig: function (limit) {
22
+ var n = limit,
23
+ suffix = (n % 10 == 1) && (n % 100 != 11) ? 'ą' : (((n % 10 >= 2) && ((n % 100 < 10) || (n % 100 >= 20))) ? 'us' : 'ų');
24
+ return "Jūs galite pasirinkti tik " + limit + " element" + suffix;
25
+ },
26
+ formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų..."; },
27
+ formatSearching: function () { return "Ieškoma..."; }
28
+ });
29
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_lv.js ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Latvian translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Sakritību nav"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : (/^\d*[1]$/im.test(n)? "u" : "us")); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : (/^\d*[1]$/im.test(n)? "u" : "iem")) + " mazāk"; },
11
+ formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : (/^\d*[1]$/im.test(limit)? "u" : "us")); },
12
+ formatLoadMore: function (pageNumber) { return "Datu ielāde..."; },
13
+ formatSearching: function () { return "Meklēšana..."; }
14
+ });
15
+
16
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_mk.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Macedonian translation.
3
+ *
4
+ * Author: Marko Aleksic <psybaron@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Нема пронајдено совпаѓања"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); },
13
+ formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); },
14
+ formatLoadMore: function (pageNumber) { return "Вчитување резултати..."; },
15
+ formatSearching: function () { return "Пребарување..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ms.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Malay translation.
3
+ *
4
+ * Author: Kepoweran <kepoweran@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Tiada padanan yang ditemui"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; },
13
+ formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; },
14
+ formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan..."; },
15
+ formatSearching: function () { return "Mencari..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_nl.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Dutch translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Geen resultaten gevonden"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; },
11
+ formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; },
12
+ formatLoadMore: function (pageNumber) { return "Meer resultaten laden..."; },
13
+ formatSearching: function () { return "Zoeken..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_no.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Norwegian translation.
3
+ *
4
+ * Author: Torgeir Veimo <torgeir.veimo@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Ingen treff"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; },
13
+ formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; },
14
+ formatLoadMore: function (pageNumber) { return "Laster flere resultater..."; },
15
+ formatSearching: function () { return "Søker..."; }
16
+ });
17
+ })(jQuery);
18
+
ReduxCore/assets/js/vendor/select2/select2_locale_pl.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Polish translation.
3
+ *
4
+ * Author: Jan Kondratowicz <jan@kondratowicz.pl>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ var pl_suffix = function(n) {
10
+ if(n == 1) return "";
11
+ if((n%100 > 1 && n%100 < 5) || (n%100 > 20 && n%10 > 1 && n%10 < 5)) return "i";
12
+ return "ów";
13
+ };
14
+
15
+ $.extend($.fn.select2.defaults, {
16
+ formatNoMatches: function () {
17
+ return "Brak wyników.";
18
+ },
19
+ formatInputTooShort: function (input, min) {
20
+ var n = min - input.length;
21
+ return "Wpisz jeszcze " + n + " znak" + pl_suffix(n) + ".";
22
+ },
23
+ formatInputTooLong: function (input, max) {
24
+ var n = input.length - max;
25
+ return "Wpisana fraza jest za długa o " + n + " znak" + pl_suffix(n) + ".";
26
+ },
27
+ formatSelectionTooBig: function (limit) {
28
+ return "Możesz zaznaczyć najwyżej " + limit + " element" + pl_suffix(limit) + ".";
29
+ },
30
+ formatLoadMore: function (pageNumber) {
31
+ return "Ładowanie wyników...";
32
+ },
33
+ formatSearching: function () {
34
+ return "Szukanie...";
35
+ }
36
+ });
37
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_pt-BR.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Brazilian Portuguese translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Nenhum resultado encontrado"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Informe " + n + " caractere" + (n == 1? "" : "s"); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caractere" + (n == 1? "" : "s"); },
11
+ formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
12
+ formatLoadMore: function (pageNumber) { return "Carregando mais resultados..."; },
13
+ formatSearching: function () { return "Buscando..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_pt-PT.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Portuguese (Portugal) translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Nenhum resultado encontrado"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); },
11
+ formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); },
12
+ formatLoadMore: function (pageNumber) { return "A carregar mais resultados..."; },
13
+ formatSearching: function () { return "A pesquisar..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ro.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Romanian translation.
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Nu a fost găsit nimic"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); },
11
+ formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); },
12
+ formatLoadMore: function (pageNumber) { return "Se încarcă..."; },
13
+ formatSearching: function () { return "Căutare..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ru.js ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Russian translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+
7
+ $.extend($.fn.select2.defaults, {
8
+ formatNoMatches: function () { return "Совпадений не найдено"; },
9
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Пожалуйста, введите еще " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5) ? "а" : "ов")); },
10
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Пожалуйста, введите на " + n + " символ" + (n == 1 ? "" : ((n > 1)&&(n < 5)? "а" : "ов")) + " меньше"; },
11
+ formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit == 1 ? "а" : "ов"); },
12
+ formatLoadMore: function (pageNumber) { return "Загрузка данных..."; },
13
+ formatSearching: function () { return "Поиск..."; }
14
+ });
15
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_sk.js ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Slovak translation.
3
+ *
4
+ * Author: David Vallner <david@vallner.net>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+ // use text for the numbers 2 through 4
9
+ var smallNumbers = {
10
+ 2: function(masc) { return (masc ? "dva" : "dve"); },
11
+ 3: function() { return "tri"; },
12
+ 4: function() { return "štyri"; }
13
+ }
14
+ $.extend($.fn.select2.defaults, {
15
+ formatNoMatches: function () { return "Nenašli sa žiadne položky"; },
16
+ formatInputTooShort: function (input, min) {
17
+ var n = min - input.length;
18
+ if (n == 1) {
19
+ return "Prosím zadajte ešte jeden znak";
20
+ } else if (n <= 4) {
21
+ return "Prosím zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky";
22
+ } else {
23
+ return "Prosím zadajte ešte ďalších "+n+" znakov";
24
+ }
25
+ },
26
+ formatInputTooLong: function (input, max) {
27
+ var n = input.length - max;
28
+ if (n == 1) {
29
+ return "Prosím zadajte o jeden znak menej";
30
+ } else if (n <= 4) {
31
+ return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej";
32
+ } else {
33
+ return "Prosím zadajte o "+n+" znakov menej";
34
+ }
35
+ },
36
+ formatSelectionTooBig: function (limit) {
37
+ if (limit == 1) {
38
+ return "Môžete zvoliť len jednu položku";
39
+ } else if (limit <= 4) {
40
+ return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky";
41
+ } else {
42
+ return "Môžete zvoliť najviac "+limit+" položiek";
43
+ }
44
+ },
45
+ formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky..."; },
46
+ formatSearching: function () { return "Vyhľadávanie..."; }
47
+ });
48
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_sv.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Swedish translation.
3
+ *
4
+ * Author: Jens Rantil <jens.rantil@telavox.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Inga träffar"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; },
13
+ formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; },
14
+ formatLoadMore: function (pageNumber) { return "Laddar fler resultat..."; },
15
+ formatSearching: function () { return "Söker..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_th.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Thai translation.
3
+ *
4
+ * Author: Atsawin Chaowanakritsanakul <joke@nakhon.net>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "ไม่พบข้อมูล"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; },
13
+ formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; },
14
+ formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม..."; },
15
+ formatSearching: function () { return "กำลังค้นข้อมูล..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_tr.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Turkish translation.
3
+ *
4
+ * Author: Salim KAYABAŞI <salim.kayabasi@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Sonuç bulunamadı"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; },
13
+ formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; },
14
+ formatLoadMore: function (pageNumber) { return "Daha fazla..."; },
15
+ formatSearching: function () { return "Aranıyor..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_ua.js ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 <Language> translation.
3
+ *
4
+ * Author: bigmihail <bigmihail@bigmir.net>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Нічого не знайдено"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка ще " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ]; },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max, s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Введіть буль ласка на " + n + " символ" + s[ (n%100>4 && n%100<=20)? 2 : p[Math.min(n%10, 5)] ] + " менше"; },
13
+ formatSelectionTooBig: function (limit) {var s = ["", "и", "ів"], p = [2,0,1,1,1,2]; return "Ви можете вибрати лише " + limit + " елемент" + s[ (limit%100>4 && limit%100<=20)? 2 : p[Math.min(limit%10, 5)] ]; },
14
+ formatLoadMore: function (pageNumber) { return "Завантаження даних..."; },
15
+ formatSearching: function () { return "Пошук..."; }
16
+ });
17
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_vi.js ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Vietnamese translation.
3
+ *
4
+ * Author: Long Nguyen <olragon@gmail.com>
5
+ */
6
+ (function ($) {
7
+ "use strict";
8
+
9
+ $.extend($.fn.select2.defaults, {
10
+ formatNoMatches: function () { return "Không tìm thấy kết quả"; },
11
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); },
12
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); },
13
+ formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); },
14
+ formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả..."; },
15
+ formatSearching: function () { return "Đang tìm..."; }
16
+ });
17
+ })(jQuery);
18
+
ReduxCore/assets/js/vendor/select2/select2_locale_zh-CN.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Chinese translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+ $.extend($.fn.select2.defaults, {
7
+ formatNoMatches: function () { return "没有找到匹配项"; },
8
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";},
9
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";},
10
+ formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; },
11
+ formatLoadMore: function (pageNumber) { return "加载结果中..."; },
12
+ formatSearching: function () { return "搜索中..."; }
13
+ });
14
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2_locale_zh-TW.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Select2 Traditional Chinese translation
3
+ */
4
+ (function ($) {
5
+ "use strict";
6
+ $.extend($.fn.select2.defaults, {
7
+ formatNoMatches: function () { return "沒有找到相符的項目"; },
8
+ formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";},
9
+ formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";},
10
+ formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; },
11
+ formatLoadMore: function (pageNumber) { return "載入中..."; },
12
+ formatSearching: function () { return "搜尋中..."; }
13
+ });
14
+ })(jQuery);
ReduxCore/assets/js/vendor/select2/select2x2.png ADDED
Binary file
ReduxCore/extensions/README.txt ADDED
@@ -0,0 +1 @@
 
1
+ This directory is a placeholder for Redux Framework extensions.
ReduxCore/extensions/customizer/assets/css/customizer.css ADDED
File without changes
ReduxCore/extensions/customizer/extension_customizer.php ADDED
@@ -0,0 +1,434 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Redux Framework is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU General Public License as published by
6
+ * the Free Software Foundation, either version 2 of the License, or
7
+ * any later version.
8
+ *
9
+ * Redux Framework is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
16
+ *
17
+ * @package ReduxFramework
18
+ * @author Dovy Paukstys (dovy)
19
+ * @version 3.0.0
20
+ */
21
+
22
+ // Exit if accessed directly
23
+ if( !defined( 'ABSPATH' ) ) exit;
24
+
25
+ // Don't duplicate me!
26
+ if( !class_exists( 'ReduxFramework_extension_customizer' ) ) {
27
+
28
+
29
+ /**
30
+ * Main ReduxFramework customizer extension class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_extension_customizer extends ReduxFramework {
35
+
36
+ // Protected vars
37
+ protected $redux;
38
+ private $extension_url;
39
+ private $extension_dir;
40
+
41
+ /**
42
+ * Class Constructor. Defines the args for the extions class
43
+ *
44
+ * @since 1.0.0
45
+ * @access public
46
+ * @param array $sections Panel sections.
47
+ * @param array $args Class constructor arguments.
48
+ * @param array $extra_tabs Extra panel tabs.
49
+ * @return void
50
+ */
51
+ public function __construct( $parent ) {
52
+ global $pagenow;
53
+ if ($pagenow !== "customize.php") {
54
+ return;
55
+ }
56
+
57
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
58
+
59
+ // Create defaults array
60
+ $defaults = array();
61
+ /*
62
+ customize_controls_init
63
+ customize_controls_enqueue_scripts
64
+ customize_controls_print_styles
65
+ customize_controls_print_scripts
66
+ customize_controls_print_footer_scripts
67
+
68
+
69
+ */
70
+
71
+ add_action( 'admin_init', array( &$this, '_enqueue' ), 30 );
72
+
73
+ add_action( 'customize_register', array( &$this, '_register_customizer_controls' ) ); // Create controls
74
+
75
+ add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css
76
+ add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript
77
+ add_action( 'customize_save', array( &$this, 'customizer_save_before' ) ); // Before save
78
+ add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save
79
+ if ( empty( $this->extension_dir ) ) {
80
+ $this->extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
81
+ $this->extension_url = site_url( str_replace( trailingslashit( str_replace( '\\', '/', ABSPATH ) ), '', $this->extension_dir ) );
82
+ }
83
+
84
+ }
85
+
86
+
87
+
88
+
89
+ // All sections, settings, and controls will be added here
90
+ public function _register_customizer_controls( $wp_customize ) {
91
+
92
+
93
+ if ( $this->args['customizer'] === false ) {
94
+ return;
95
+ }
96
+
97
+ $order = array(
98
+ 'heading' => -500,
99
+ 'option' => -500,
100
+ );
101
+ $defaults = array(
102
+ 'default-color' => '',
103
+ 'default-image' => '',
104
+ 'wp-head-callback' => '',
105
+ 'admin-head-callback' => '',
106
+ 'admin-preview-callback' => ''
107
+ );
108
+
109
+ foreach( $this->sections as $key => $section ) {
110
+ if ( empty( $section['fields'] ) ) {
111
+ continue;
112
+ }
113
+
114
+
115
+
116
+ if ( empty( $section['desc'] ) && !empty( $section['subtitle'] ) ) {
117
+ $section['desc'] = $section['subtitle'];
118
+ }
119
+
120
+ if ( !isset( $section['desc'] ) ) {
121
+ $section['desc'] = "";
122
+ }
123
+
124
+ if ( empty( $section['id'] ) ) {
125
+ $section['id'] = strtolower( str_replace( " ", "", $section['title'] ) );
126
+ }
127
+
128
+ if (empty($section['priority'])) {
129
+ $section['priority'] = $order['heading'];
130
+ $order['heading']++;
131
+ }
132
+
133
+ $wp_customize->add_section($section['id'], array(
134
+ 'title' => $section['title'],
135
+ 'priority' => $section['priority'],
136
+ 'description' => $section['desc']
137
+ ));
138
+
139
+
140
+ foreach( $section['fields'] as $skey => $option ) {
141
+
142
+ if ( isset( $option['customizer'] ) && $option['customizer'] === false ) {
143
+ //continue;
144
+ }
145
+
146
+ //Change the item priority if not set
147
+ if ( $option['type'] != 'heading' && !isset( $option['priority'] ) ) {
148
+ $option['priority'] = $order['option'];
149
+ $order['option']++;
150
+ }
151
+
152
+ if ( !empty( $this->options_defaults[$option['id']] ) ) {
153
+ $option['default'] = $this->options_defaults['option']['id'];
154
+ }
155
+
156
+ if (!isset($option['default'])) {
157
+ $option['default'] = "";
158
+ }
159
+ if (!isset($option['title'])) {
160
+ $option['title'] = "";
161
+ }
162
+
163
+
164
+ $customSetting = array(
165
+ 'type' => 'option',
166
+ 'capabilities' => 'manage_theme_options',
167
+ 'default' => $option['default']
168
+ );
169
+
170
+
171
+ $option['id'] = $this->args['opt_name'].'['.$option['id'].']';
172
+
173
+ if ($option['type'] != "heading" || !empty($option['type'])) {
174
+
175
+ $wp_customize->add_setting( $option['id'], $customSetting);
176
+ }
177
+
178
+ switch( $option['type'] ) {
179
+ case 'heading':
180
+ // We don't want to put up the section unless it's used by something visible in the customizer
181
+ $section = $option;
182
+ $section['id'] = strtolower( str_replace( " ", "", $option['title'] ) );
183
+ $order['heading']=-500;
184
+ if (!empty( $option['priority'] ) ) {
185
+ $section['priority'] = $option['priority'];
186
+ } else {
187
+ $section['priority'] = $order['heading'];
188
+ $order['heading']++;
189
+ }
190
+ break;
191
+
192
+ case 'text':
193
+ $wp_customize->add_control( $option['id'], array(
194
+ 'label' => $option['title'],
195
+ 'section' => $section['id'],
196
+ 'settings'=> $option['id'],
197
+ 'priority'=> $option['priority'],
198
+ 'type' => 'text',
199
+ ) );
200
+ break;
201
+
202
+ case 'select':
203
+ $wp_customize->add_control( $option['id'], array(
204
+ 'label' => $option['title'],
205
+ 'section' => $section['id'],
206
+ 'settings'=> $option['id'],
207
+ 'priority'=> $option['priority'],
208
+ 'type' => 'select',
209
+ 'choices' => $option['options']
210
+ ) );
211
+ break;
212
+
213
+ case 'radio':
214
+ $wp_customize->add_control( $option['id'], array(
215
+ 'label' => $option['title'],
216
+ 'section' => $section['id'],
217
+ 'settings'=> $option['id'],
218
+ 'priority'=> $option['priority'],
219
+ 'type' => 'radio',
220
+ 'choices' => $option['options']
221
+ ) );
222
+ break;
223
+
224
+ case 'checkbox':
225
+ $wp_customize->add_control( $option['id'], array(
226
+ 'label' => $option['title'],
227
+ 'section' => $section['id'],
228
+ 'settings'=> $option['id'],
229
+ 'priority'=> $option['priority'],
230
+ 'type' => 'checkbox',
231
+ ) );
232
+ break;
233
+
234
+ case 'media':
235
+ $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, $option['id'], array(
236
+ 'label' => $option['title'],
237
+ 'section' => $section['id'],
238
+ 'settings'=> $option['id'],
239
+ 'priority'=> $option['priority']
240
+ ) ) );
241
+ break;
242
+
243
+ case 'color':
244
+ $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $option['id'], array(
245
+ 'label' => $option['title'],
246
+ 'section' => $section['id'],
247
+ 'settings'=> $option['id'],
248
+ 'priority'=> $option['priority']
249
+ ) ) );
250
+ break;
251
+
252
+ case 'switch':
253
+ $wp_customize->add_control( $option['id'], array(
254
+ 'label' => $option['title'],
255
+ 'section' => $section['id'],
256
+ 'settings'=> $option['id'],
257
+ 'priority'=> $option['priority'],
258
+ 'type' => 'checkbox',
259
+ ) );
260
+ break;
261
+
262
+ default:
263
+ break;
264
+ }
265
+
266
+ }
267
+ }
268
+
269
+
270
+
271
+
272
+ /*
273
+ title_tagline - Site Title & Tagline
274
+ colors - Colors
275
+ header_image - Header Image
276
+ background_image - Background Image
277
+ nav - Navigation
278
+ static_front_page - Static Front Page
279
+ */
280
+
281
+
282
+ }
283
+
284
+ public function customizer_save_before($wp_customize) {
285
+ //echo "there";
286
+ // print_r($wp_customize);
287
+ //exit();
288
+
289
+ }
290
+
291
+ public function customizer_save_after($wp_customize) {
292
+ //echo "there";
293
+ // print_r($wp_customize);
294
+ //exit();
295
+
296
+ }
297
+
298
+ /**
299
+ * Enqueue CSS/JS for preview pane
300
+ *
301
+ * @since 1.0.0
302
+ * @access public
303
+ * @global $wp_styles
304
+ * @return void
305
+ */
306
+ public function _enqueue_previewer() {
307
+ wp_enqueue_script( 'redux-extension-previewer-js', $this->extension_url . 'assets/js/preview.js' );
308
+ $localize = array(
309
+ 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ),
310
+ 'reset_confirm' => __( 'Are you sure? Resetting will loose all custom values.', 'redux-framework' ),
311
+ 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ),
312
+ 'opt_name' => $this->args['opt_name'],
313
+ 'folds' => $this->folds,
314
+ 'options' => $this->options,
315
+ 'defaults' => $this->options_defaults,
316
+ );
317
+ wp_localize_script( 'redux-extension-previewer-js', 'reduxPost', $localize);
318
+ }
319
+
320
+ /**
321
+ * Enqueue CSS/JS for the customizer controls
322
+ *
323
+ * @since 1.0.0
324
+ * @access public
325
+ * @global $wp_styles
326
+ * @return void
327
+ */
328
+ public function _enqueue() {
329
+ global $wp_styles;
330
+
331
+ wp_enqueue_style( 'wp-pointer' );
332
+ wp_enqueue_script( 'wp-pointer' );
333
+ // Remove when code is in place!
334
+ wp_enqueue_script('redux-extension-customizer-js', $this->extension_url . 'assets/js/customizer.js');
335
+ // Get styles
336
+ wp_enqueue_style('redux-extension-customizer-css', $this->extension_url . 'assets/css/customizer.css');
337
+
338
+
339
+ $localize = array(
340
+ 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ),
341
+ 'reset_confirm' => __( 'Are you sure? Resetting will loose all custom values.', 'redux-framework' ),
342
+ 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ),
343
+ 'opt_name' => $this->args['opt_name'],
344
+ 'folds' => $this->folds,
345
+ 'options' => $this->options,
346
+ 'defaults' => $this->options_defaults,
347
+ );
348
+
349
+ // Values used by the javascript
350
+ wp_localize_script(
351
+ 'redux-js',
352
+ 'redux_opts',
353
+ $localize
354
+ );
355
+
356
+ do_action( 'redux-enqueue-' . $this->args['opt_name'] );
357
+
358
+ foreach( $this->sections as $section ) {
359
+ if( isset( $section['fields'] ) ) {
360
+ foreach( $section['fields'] as $field ) {
361
+ if( isset( $field['type'] ) ) {
362
+ $field_class = 'ReduxFramework_' . $field['type'];
363
+ if( !class_exists( $field_class ) ) {
364
+ $class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
365
+ if( $class_file ) {
366
+ /** @noinspection PhpIncludeInspection */
367
+ require_once( $class_file );
368
+ }
369
+ }
370
+ if( class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) {
371
+ $enqueue = new $field_class( '', '', $this );
372
+ $enqueue->enqueue();
373
+ }
374
+ }
375
+ }
376
+ }
377
+ }
378
+ }
379
+
380
+ /**
381
+ * Register Option for use
382
+ *
383
+ * @since 1.0.0
384
+ * @access public
385
+ * @return void
386
+ */
387
+ public function _register_setting() {
388
+
389
+
390
+ }
391
+
392
+ /**
393
+ * Validate the Options options before insertion
394
+ *
395
+ * @since 3.0.0
396
+ * @access public
397
+ * @param array $plugin_options The options array
398
+ * @return
399
+ */
400
+ public function _validate_options( $plugin_options ) {
401
+
402
+ return $plugin_options;
403
+ }
404
+
405
+ /**
406
+ * Validate values from options form (used in settings api validate function)
407
+ * calls the custom validation class for the field so authors can override with custom classes
408
+ *
409
+ * @since 1.0.0
410
+ * @access public
411
+ * @param array $plugin_options
412
+ * @param array $options
413
+ * @return array $plugin_options
414
+ */
415
+ public function _validate_values( $plugin_options, $options ) {
416
+
417
+
418
+ return $plugin_options;
419
+ }
420
+
421
+ /**
422
+ * HTML OUTPUT.
423
+ *
424
+ * @since 1.0.0
425
+ * @access public
426
+ * @return void
427
+ */
428
+ public function _customizer_html_output() {
429
+
430
+
431
+ }
432
+
433
+ } // class
434
+ } // if
ReduxCore/framework.php ADDED
@@ -0,0 +1,1918 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Redux Framework is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU General Public License as published by
6
+ * the Free Software Foundation, either version 2 of the License, or
7
+ * any later version.
8
+ *
9
+ * Redux Framework is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
16
+ *
17
+ * @package ReduxFramework
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework' ) ) {
28
+
29
+ define('REDUX_VERSION', '3.0.0');
30
+
31
+ // Windows-proof constants: replace backward by forward slashes
32
+ // Thanks to: https://github.com/peterbouwmeester
33
+ /** @noinspection PhpUndefinedFunctionInspection */
34
+ $fslashed_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
35
+ $fslashed_abs = trailingslashit( str_replace( '\\', '/', ABSPATH ) );
36
+ // Fix for when Wordpress is not in the wp-content directory
37
+ if (strpos($fslashed_dir,$fslashed_abs) === false) {
38
+ $parts = explode('/', $fslashed_abs);
39
+ $test = str_replace('/'.max($parts), '', $fslashed_abs);
40
+ if (strpos($fslashed_dir,$test) !== false) {
41
+ $fslashed_abs = $test;
42
+ }
43
+ }
44
+
45
+ // Framework base directory
46
+ if( !defined( 'REDUX_DIR') )
47
+ define( 'REDUX_DIR', $fslashed_dir );
48
+
49
+ // Framework base URL
50
+ if( !defined( 'REDUX_URL' ) )
51
+ define( 'REDUX_URL', site_url( str_replace( $fslashed_abs, '', $fslashed_dir ) ) );
52
+
53
+ /**
54
+ * Main ReduxFramework class
55
+ *
56
+ * @since 1.0.0
57
+ */
58
+ class ReduxFramework {
59
+
60
+ // Protected vars
61
+ // These two are actually really unnecessary and should be deprecated
62
+ protected $framework_url = 'http://www.reduxframework.com/';
63
+ protected $framework_version = REDUX_VERSION;
64
+
65
+ public $instance = null;
66
+
67
+ // Public vars
68
+ public $page = '';
69
+ public $args = array();
70
+ public $sections = array();
71
+ public $extra_tabs = array();
72
+ public $errors = array();
73
+ public $warnings = array();
74
+ public $options = array();
75
+ public $options_defaults = null;
76
+ public $folds = array();
77
+ public $url = '';
78
+ public $path = '';
79
+ public $output = array(); // Fields with CSS output selectors
80
+
81
+ public $fieldsValues = array(); //all fields values in an id=>value array so we can check dependencies
82
+ public $fieldsHidden = array(); //all fields that didnt pass the dependency test and are hidden
83
+
84
+ /**
85
+ * Class Constructor. Defines the args for the theme options class
86
+ *
87
+ * @since 1.0.0
88
+ * @access public
89
+ * @param array $sections Panel sections.
90
+ * @param array $args Class constructor arguments.
91
+ * @param array $extra_tabs Extra panel tabs.
92
+ * @return void
93
+ */
94
+ public function __construct( $sections = array(), $args = array(), $extra_tabs = array() ) {
95
+ // Create defaults array
96
+ $defaults = array();
97
+
98
+ $defaults['opt_name'] = ''; // Must be defined by theme/plugin
99
+ $defaults['google_api_key'] = ''; // Must be defined to add google fonts to the typography module
100
+ $defaults['last_tab'] = '0';
101
+ $defaults['menu_icon'] = REDUX_URL . 'assets/img/menu_icon.png';
102
+ if (defined('MP6')) {
103
+ $defaults['menu_icon'] = '';
104
+ }
105
+ $defaults['menu_title'] = __( 'Options', 'redux-framework' );
106
+ $defaults['page_icon'] = 'icon-themes';
107
+ $defaults['page_title'] = __( 'Options', 'redux-framework' );
108
+ $defaults['page_slug'] = '_options';
109
+ $defaults['page_cap'] = 'manage_options';
110
+ $defaults['page_type'] = 'menu';
111
+ $defaults['page_parent'] = 'themes.php';
112
+ $defaults['page_position'] = null;
113
+ $defaults['enqueue'] = true;
114
+ $defaults['allow_sub_menu'] = true;
115
+ $defaults['show_import_export'] = true;
116
+ $defaults['dev_mode'] = false;
117
+ $defaults['system_info'] = false;
118
+ $defaults['admin_stylesheet'] = 'standard';
119
+ $defaults['footer_credit'] = '<span id="footer-thankyou">' . __( 'Options panel created using', 'redux-framework') . '<a href="' . $this->framework_url . '" target="_blank">' . __('Redux Framework', 'redux-framework') . '</a> v' . $this->framework_version . '</span>';
120
+ $defaults['help_tabs'] = array();
121
+ $defaults['help_sidebar'] = ''; // __( '', 'redux-framework' );
122
+ $defaults['database'] = ''; // possible: options, theme_mods, theme_mods_expanded, transient
123
+ $defaults['customizer'] = true; // setting to true forces get_theme_mod_expanded
124
+ $defaults['global_variable'] = '';
125
+ $defaults['output'] = true; // Dynamically generate CSS
126
+ /** @noinspection PhpUndefinedConstantInspection */
127
+ $defaults['transient_time'] = 60 * MINUTE_IN_SECONDS;
128
+
129
+ // The defaults are set so it will preserve the old behavior.
130
+ $defaults['default_show'] = false; // If true, it shows the default value
131
+ $defaults['default_mark'] = ''; // What to print by the field's title if the value shown is default
132
+
133
+ // Set values
134
+ $this->args = wp_parse_args( $args, $defaults );
135
+
136
+ if ( empty( $this->path ) ) {
137
+ $this->path = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) );
138
+ $this->url = site_url( str_replace( trailingslashit( str_replace( '\\', '/', ABSPATH ) ), '', $this->path ) );
139
+ }
140
+
141
+ if ( $this->args['global_variable'] !== false ) {
142
+ if ( $this->args['global_variable'] == "" ) {
143
+ $this->args['global_variable'] = str_replace('-', '_', $this->args['opt_name']);
144
+ }
145
+ $variable = $this->args['global_variable'];
146
+ global $$variable;
147
+ if ( empty( $$variable ) ) {
148
+ $this->options = $this->get_options();
149
+ }
150
+ }
151
+
152
+ $this->sections = apply_filters('redux-sections',$sections);
153
+
154
+ $this->extra_tabs = $extra_tabs;
155
+
156
+ // Set option with defaults
157
+ add_action( 'init', array( &$this, '_set_default_options' ) );
158
+
159
+ // Options page
160
+ add_action( 'admin_menu', array( &$this, '_options_page' ) );
161
+
162
+ // Register setting
163
+ add_action( 'admin_init', array( &$this, '_register_setting' ) );
164
+
165
+ // Register extensions
166
+ add_action( 'init', array( &$this, '_register_extensions' ), 2 );
167
+
168
+ // Any dynamic CSS output, let's run
169
+ add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_output' ), 100 );
170
+
171
+ // Hook into the WP feeds for downloading exported settings
172
+ add_action( 'do_feed_reduxopts-' . $this->args['opt_name'], array( &$this, '_download_options' ), 1, 1 );
173
+
174
+ }
175
+
176
+ public function get_instance() {
177
+ return $this->instance;
178
+ }
179
+
180
+ /**
181
+ * ->_get_default(); This is used to return the default value if default_show is set
182
+ *
183
+ * @since 1.0.1
184
+ * @access public
185
+ * @param string $opt_name The option name to return
186
+ * @param mixed $default (null) The value to return if default not set
187
+ * @return mixed $default
188
+ */
189
+ public function _get_default( $opt_name, $default = null ) {
190
+ if( $this->args['default_show'] == true ) {
191
+
192
+ if( is_null( $this->options_defaults ) ) {
193
+ $this->_default_values(); // fill cache
194
+ }
195
+
196
+ $default = array_key_exists( $opt_name, $this->options_defaults ) ? $this->options_defaults[$opt_name] : $default;
197
+ }
198
+ return $default;
199
+ }
200
+
201
+ /**
202
+ * ->get(); This is used to return and option value from the options array
203
+ *
204
+ * @since 1.0.0
205
+ * @access public
206
+ * @param string $opt_name The option name to return
207
+ * @param mixed $default (null) The value to return if option not set
208
+ * @return mixed
209
+ */
210
+ public function get( $opt_name, $default = null ) {
211
+ return ( !empty( $this->options[$opt_name] ) ) ? $this->options[$opt_name] : $this->_get_default( $opt_name, $default );
212
+ }
213
+
214
+ /**
215
+ * ->set(); This is used to set an arbitrary option in the options array
216
+ *
217
+ * @since 1.0.0
218
+ * @access public
219
+ * @param string $opt_name The name of the option being added
220
+ * @param mixed $value The value of the option being added
221
+ * @return void
222
+ */
223
+ public function set( $opt_name = '', $value = '' ) {
224
+ if( $opt_name != '' ) {
225
+ $this->options[$opt_name] = $value;
226
+ $this->set_options( $this->options );
227
+ }
228
+ }
229
+
230
+
231
+ /**
232
+ * ->set_options(); This is used to set an arbitrary option in the options array
233
+ *
234
+ * @since ReduxFramework 3.0.0
235
+ * @param mixed $value the value of the option being added
236
+ */
237
+ function set_options( $value = '' ) {
238
+ $value['REDUX_last_saved'] = time();
239
+ if( !empty($value) ) {
240
+ if ( $this->args['database'] === 'transient' ) {
241
+ set_transient( $this->args['opt_name'] . '-transient', $value, $this->args['transient_time'] );
242
+ } else if ( $this->args['database'] === 'theme_mods' ) {
243
+ set_theme_mod( $this->args['opt_name'] . '-mods', $value );
244
+ } else if ( $this->args['database'] === 'theme_mods_expanded' ) {
245
+ foreach ( $value as $k=>$v ) {
246
+ set_theme_mod( $k, $v );
247
+ }
248
+ } else {
249
+ update_option( $this->args['opt_name'], $value );
250
+ }
251
+ // Set a global variable by the global_variable agument.
252
+ if ( $this->args['global_variable'] ) {
253
+ $options = $this->args['global_variable'];
254
+ global $$options;
255
+ $$options = $value;
256
+ }
257
+ do_action( 'redux-saved-' . $this->args['opt_name'] , $value );
258
+ }
259
+ }
260
+
261
+ /**
262
+ * ->get_options(); This is used to get options from the database
263
+ *
264
+ * @since ReduxFramework 3.0.0
265
+ */
266
+ function get_options() {
267
+ $defaults = false;
268
+ if ( !empty( $this->defaults ) ) {
269
+ $defaults = $this->defaults;
270
+ }
271
+
272
+ if ( $this->args['database'] === "transient" ) {
273
+ $result = get_transient( $this->args['opt_name'] . '-transient' );
274
+ } else if ($this->args['database'] === "theme_mods" ) {
275
+ $result = get_theme_mod( $this->args['opt_name'] . '-mods' );
276
+ } else if ( $this->args['database'] === 'theme_mods_expanded' ) {
277
+ $result = get_theme_mods();
278
+ } else {
279
+ $result = get_option( $this->args['opt_name']);
280
+ }
281
+ if ( empty( $result ) && !empty( $defaults ) ) {
282
+ $results = $defaults;
283
+ $this->set_options($results);
284
+ }
285
+ // Set a global variable by the global_variable agument.
286
+ if ( $this->args['global_variable'] ) {
287
+ $options = $this->args['global_variable'];
288
+ global $$options;
289
+ $$options = $result;
290
+ }
291
+ //print_r($result);
292
+ return $result;
293
+ }
294
+
295
+ /**
296
+ * ->get_options(); This is used to get options from the database
297
+ *
298
+ * @since ReduxFramework 3.0.0
299
+ */
300
+ function get_wordpress_data($type = false, $args = array()) {
301
+ $data = "";
302
+ if ( !empty($type) ) {
303
+
304
+ /**
305
+ Use data from Wordpress to populate options array
306
+ **/
307
+ if (!empty($type) && empty($data)) {
308
+ if (empty($args)) {
309
+ $args = array();
310
+ }
311
+ $data = array();
312
+ $args = wp_parse_args($args, array());
313
+ if ($type == "categories" || $type == "category") {
314
+ $cats = get_categories($args);
315
+ if (!empty($cats)) {
316
+ foreach ( $cats as $cat ) {
317
+ $data[$cat->term_id] = $cat->name;
318
+ }//foreach
319
+ } // If
320
+ } else if ($type == "menus" || $type == "menu") {
321
+ $menus = wp_get_nav_menus($args);
322
+ if(!empty($menus)) {
323
+ foreach ($menus as $item) {
324
+ $data[$item->term_id] = $item->name;
325
+ }//foreach
326
+ }//if
327
+ } else if ($type == "pages" || $type == "page") {
328
+ $pages = get_pages($args);
329
+ if (!empty($pages)) {
330
+ foreach ( $pages as $page ) {
331
+ $data[$page->ID] = $page->post_title;
332
+ }//foreach
333
+ }//if
334
+ } else if ($type == "posts" || $type == "post") {
335
+ $posts = get_posts($args);
336
+ if (!empty($posts)) {
337
+ foreach ( $posts as $post ) {
338
+ $data[$post->ID] = $post->post_title;
339
+ }//foreach
340
+ }//if
341
+ } else if ($type == "post_type" || $type == "post_types") {
342
+ $post_types = get_post_types($args, 'object');
343
+ if (!empty($post_types)) {
344
+ foreach ( $post_types as $k => $post_type ) {
345
+ $data[$k] = $post_type->labels->name;
346
+ }//foreach
347
+ }//if
348
+ } else if ($type == "tags" || $type == "tag") {
349
+ $tags = get_tags($args);
350
+ if (!empty($tags)) {
351
+ foreach ( $tags as $tag ) {
352
+ $data[$tag->term_id] = $tag->name;
353
+ }//foreach
354
+ }//if
355
+ } else if ($type == "menu_location" || $type == "menu_locations") {
356
+ global $_wp_registered_nav_menus;
357
+ foreach($_wp_registered_nav_menus as $k => $v) {
358
+ $data[$k] = $v;
359
+ }
360
+ }//if
361
+ else if ($type == "elusive-icons" || $type == "elusive-icon" || $type == "elusive" ||
362
+ $type == "font-icon" || $type == "font-icons" || $type == "icons") {
363
+ $font_icons = apply_filters('redux-font-icons',array());
364
+ foreach($font_icons as $k) {
365
+ $data[$k] = $k;
366
+ }
367
+ }else if ($type == "callback") {
368
+ $data = call_user_func($args[0]);
369
+ }//if
370
+ }//if
371
+ }//if
372
+
373
+ return $data;
374
+ }
375
+
376
+ /**
377
+ * ->show(); This is used to echo and option value from the options array
378
+ *
379
+ * @since 1.0.0
380
+ * @access public
381
+ * @param string $opt_name The name of the option being shown
382
+ * @param mixed $default The value to show if $opt_name isn't set
383
+ * @return void
384
+ */
385
+ public function show( $opt_name, $default = '' ) {
386
+ $option = $this->get( $opt_name );
387
+ if( !is_array( $option ) && $option != '' ) {
388
+ echo $option;
389
+ } elseif( $default != '' ) {
390
+ echo $this->_get_default( $opt_name, $default );
391
+ }
392
+ }
393
+
394
+ /**
395
+ * Get default options into an array suitable for the settings API
396
+ *
397
+ * @since 1.0.0
398
+ * @access public
399
+ * @return array $this->options_defaults
400
+ */
401
+ public function _default_values() {
402
+ if( !is_null( $this->sections ) && is_null( $this->options_defaults ) ) {
403
+ // fill the cache
404
+ foreach( $this->sections as $section ) {
405
+ if( isset( $section['fields'] ) ) {
406
+ foreach( $section['fields'] as $field ) {
407
+ if( isset( $field['default'] ) ) {
408
+ $this->options_defaults[$field['id']] = $field['default'];
409
+ }
410
+ }
411
+ }
412
+ }
413
+ }
414
+ return $this->options_defaults;
415
+ }
416
+
417
+
418
+ /**
419
+ * Get fold values into an array suitable for setting folds
420
+ *
421
+ * @since ReduxFramework 1.0.0
422
+ */
423
+ function _fold_values() {
424
+ /*
425
+ Folds work by setting the folds value like so
426
+ $this->folds['parentID']['parentValue'][] = 'childId'
427
+ */
428
+ $folds = array();
429
+ if( !is_null( $this->sections ) && is_null( $this->options_defaults ) ) {
430
+ foreach( $this->sections as $section ) {
431
+ if( isset( $section['fields'] ) ) {
432
+ foreach( $section['fields'] as $field ) {
433
+ //if we have required option in group field
434
+ if(isset($field['subfields']) && is_array($field['subfields'])){
435
+ foreach ($field['subfields'] as $subfield) {
436
+ if(isset($subfield['required']))
437
+ $this->get_fold($subfield);
438
+ }
439
+ }
440
+ if( isset( $field['required'] ) ) {
441
+ $this->get_fold($field);
442
+ }
443
+ }
444
+ }
445
+ }
446
+ }
447
+ /*
448
+ $parents = array();
449
+ $toHide = array();
450
+ foreach ($folds as $k=>$fold) { // ParentFolds WITHOUT parents
451
+ if ( empty( $fold['children'] ) || !empty( $fold['children']['parents'] ) ) {
452
+ continue;
453
+ }
454
+ $fold['value'] = $this->options[$k];
455
+ foreach ($fold['children'] as $key =>$value) {
456
+ if ($key == $fold['value']) {
457
+ unset($fold['children'][$key]);
458
+ }
459
+ }
460
+ if (empty($fold['children'])) {
461
+ continue;
462
+ }
463
+ foreach ($fold['children'] as $key => $value) {
464
+ foreach ($value as $k=> $hidden) {
465
+ $toHide[$hidden]=true;
466
+
467
+ }
468
+ }
469
+ $parents[] = $fold;
470
+ }
471
+
472
+
473
+
474
+ print_r($parents);
475
+ print_r($toHide);
476
+ */
477
+ return $this->folds;
478
+
479
+ }
480
+
481
+ function get_fold($field){
482
+ if ( !is_array( $field['required'] ) ) {
483
+ /*
484
+ Example variable:
485
+ $var = array(
486
+ 'fold' => 'id'
487
+ );
488
+ */
489
+ $this->folds[$field['required']]['children'][1][] = $field['id'];
490
+ $this->folds[$field['id']]['parent'] = $field['required'];
491
+ } else {
492
+ $parent = $foldk = $field['required'][0];
493
+ $comparison = $field['required'][1];
494
+ $value = $foldv = $field['required'][2];
495
+ //foreach( $field['required'] as $foldk=>$foldv ) {
496
+
497
+
498
+ if ( is_array( $value ) ) {
499
+ /*
500
+ Example variable:
501
+ $var = array(
502
+ 'fold' => array( 'id' , '=', array(1, 5) )
503
+ );
504
+ */
505
+
506
+ foreach ($value as $foldvValue) {
507
+ //echo 'id: '.$field['id']." key: ".$foldk.' f-val-'.print_r($foldv)." foldvValue".$foldvValue;
508
+ $this->folds[$foldk]['children'][$foldvValue][] = $field['id'];
509
+ $this->folds[$field['id']]['parent'] = $foldk;
510
+ }
511
+ } else {
512
+
513
+ //!DOVY If there's a problem, this is where it's at. These two cases.
514
+ //This may be able to solve this issue if these don't work
515
+ //if (count($field['fold']) == count($field['fold'], COUNT_RECURSIVE)) {
516
+ //}
517
+
518
+ if (count($field['required']) === 1 && is_numeric($foldk)) {
519
+ /*
520
+ Example variable:
521
+ $var = array(
522
+ 'fold' => array( 'id' )
523
+ );
524
+ */
525
+ $this->folds[$field['id']]['parent'] = $foldk;
526
+ $this->folds[$foldk]['children'][1][] = $field['id'];
527
+ } else {
528
+ /*
529
+ Example variable:
530
+ $var = array(
531
+ 'fold' => array( 'id' => 1 )
532
+ );
533
+ */
534
+ if (empty($foldv)) {
535
+ $foldv = 0;
536
+ }
537
+ $this->folds[$field['id']]['parent'] = $foldk;
538
+ $this->folds[$foldk]['children'][$foldv][] = $field['id'];
539
+ }
540
+ }
541
+ //}
542
+ }
543
+ return $this->folds;
544
+ }
545
+
546
+ /**
547
+ * Set default options on admin_init if option doesn't exist
548
+ *
549
+ * @since 1.0.0
550
+ * @access public
551
+ * @return void
552
+ */
553
+ public function _set_default_options() {
554
+
555
+ $this->instance = $this;
556
+
557
+ // Get args
558
+ $this->args = apply_filters( 'redux-args-'.$this->args['opt_name'], $this->args );
559
+
560
+ // Fix the global variable name
561
+ if ( $this->args['global_variable'] == "" && $this->args['global_variable'] !== false ) {
562
+ $this->args['global_variable'] = str_replace('-', '_', $this->args['opt_name']);
563
+ }
564
+
565
+ // Get sections
566
+ $this->sections = apply_filters( 'redux-sections-' . $this->args['opt_name'], $this->sections );
567
+
568
+ // Get extra tabs
569
+ $this->extra_tabs = apply_filters( 'redux-extra-tabs-' . $this->args['opt_name'], $this->extra_tabs );
570
+
571
+ // Grab database values
572
+ $this->options = $this->get_options();
573
+
574
+ // Get the fold values
575
+ $this->folds = $this->_fold_values();
576
+
577
+ // Set defaults if empty
578
+ if( empty( $this->options ) && !empty( $this->sections ) ) {
579
+ $defaults = $this->_default_values();
580
+ $this->set_options( $defaults );
581
+ $this->options = $defaults;
582
+ }
583
+
584
+ }
585
+
586
+ /**
587
+ * Class Options Page Function, creates main options page.
588
+ *
589
+ * @since 1.0.0
590
+ * @access public
591
+ * @return
592
+ */
593
+ function _options_page() {
594
+ if( $this->args['page_type'] == 'submenu' ) {
595
+ $this->page = add_submenu_page(
596
+ $this->args['page_parent'],
597
+ $this->args['page_title'],
598
+ $this->args['menu_title'],
599
+ $this->args['page_cap'],
600
+ $this->args['page_slug'],
601
+ array( &$this, '_options_page_html' )
602
+ );
603
+ } else {
604
+ $this->page = add_menu_page(
605
+ $this->args['page_title'],
606
+ $this->args['menu_title'],
607
+ $this->args['page_cap'],
608
+ $this->args['page_slug'],
609
+ array( &$this, '_options_page_html' ),
610
+ $this->args['menu_icon'],
611
+ $this->args['page_position']
612
+ );
613
+
614
+ if( true === $this->args['allow_sub_menu'] ) {
615
+ if( !isset( $section['type'] ) || $section['type'] != 'divide' ) {
616
+
617
+ foreach( $this->sections as $k => $section ) {
618
+ if ( !isset( $section['title'] ) )
619
+ continue;
620
+
621
+ if ( isset( $section['submenu'] ) && $section['submenu'] == false )
622
+ continue;
623
+
624
+ add_submenu_page(
625
+ $this->args['page_slug'],
626
+ $section['title'],
627
+ $section['title'],
628
+ $this->args['page_cap'],
629
+ $this->args['page_slug'] . '&tab=' . $k,
630
+ create_function( '$a', "return null;" )
631
+ );
632
+ }
633
+
634
+ // Remove parent submenu item instead of adding null item.
635
+ remove_submenu_page( $this->args['page_slug'], $this->args['page_slug'] );
636
+ }
637
+
638
+ if( true === $this->args['show_import_export'] ) {
639
+ add_submenu_page(
640
+ $this->args['page_slug'],
641
+ __( 'Import / Export', 'redux-framework' ),
642
+ __( 'Import / Export', 'redux-framework' ),
643
+ $this->args['page_cap'],
644
+ $this->args['page_slug'] . '&tab=import_export_default',
645
+ create_function( '$a', "return null;" )
646
+ );
647
+ }
648
+
649
+ foreach( $this->extra_tabs as $k => $tab ) {
650
+ add_submenu_page(
651
+ $this->args['page_slug'],
652
+ $tab['title'],
653
+ $tab['title'],
654
+ $this->args['page_cap'],
655
+ $this->args['page_slug'] . '&tab=' . $k,
656
+ create_function( '$a', "return null;" )
657
+ );
658
+ }
659
+
660
+ if( true === $this->args['dev_mode'] ) {
661
+ add_submenu_page(
662
+ $this->args['page_slug'],
663
+ __( 'Options Object', 'redux-framework' ),
664
+ __( 'Options Object', 'redux-framework' ),
665
+ $this->args['page_cap'],
666
+ $this->args['page_slug'] . '&tab=dev_mode_default',
667
+ create_function('$a', "return null;")
668
+ );
669
+ }
670
+
671
+ if( true === $this->args['system_info'] ) {
672
+ add_submenu_page(
673
+ $this->args['page_slug'],
674
+ __( 'System Info', 'redux-framework' ),
675
+ __( 'System Info', 'redux-framework' ),
676
+ $this->args['page_cap'],
677
+ $this->args['page_slug'] . '&tab=system_info_default',
678
+ create_function( '$a', "return null;" )
679
+ );
680
+ }
681
+ }
682
+ }
683
+
684
+ add_action( 'admin_print_styles-' . $this->page, array( &$this, '_enqueue' ) );
685
+
686
+ add_action( 'load-' . $this->page, array( &$this, '_load_page' ) );
687
+ }
688
+
689
+ /**
690
+ * Enqueue CSS/JS for options page
691
+ *
692
+ * @since 1.0.0
693
+ * @access public
694
+ * @global $wp_styles
695
+ * @return void
696
+ */
697
+ public function _enqueue_output() {
698
+ foreach( $this->sections as $k => $section ) {
699
+ if( isset($section['type'] ) && $section['type'] == 'divide' ) {
700
+ continue;
701
+ }
702
+ if( isset( $section['fields'] ) ) {
703
+ foreach( $section['fields'] as $fieldk => $field ) {
704
+ if( isset( $field['type'] ) ) {
705
+ $field_class = 'ReduxFramework_' . $field['type'];
706
+ if( !class_exists( $field_class ) ) {
707
+ $class_file = apply_filters( 'redux-typeclass-load', REDUX_DIR . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
708
+ if( $class_file ) {
709
+ /** @noinspection PhpIncludeInspection */
710
+ require_once( $class_file );
711
+ }
712
+ }
713
+
714
+ if( !empty( $this->options[$field['id']] ) && class_exists( $field_class ) && method_exists( $field_class, 'output' ) ) {
715
+ if ( !empty($field['output']) && !is_array( $field['output'] ) ) {
716
+ $field['output'] = array( $field['output'] );
717
+ }
718
+ $value = isset($this->options[$field['id']])?$this->options[$field['id']]:'';
719
+ $enqueue = new $field_class( $field, $value, $this );
720
+ $enqueue->output();
721
+ }
722
+ }
723
+ }
724
+ }
725
+ }
726
+ }
727
+
728
+ /**
729
+ * Enqueue CSS/JS for options page
730
+ *
731
+ * @since 1.0.0
732
+ * @access public
733
+ * @global $wp_styles
734
+ * @return void
735
+ */
736
+ public function _enqueue() {
737
+ global $wp_styles;
738
+
739
+ wp_enqueue_script('jquery');
740
+ wp_enqueue_script('jquery-ui-core');
741
+ wp_enqueue_style( 'jquery-ui-css' );
742
+
743
+ wp_register_style(
744
+ 'redux-css',
745
+ REDUX_URL . 'assets/css/style.css',
746
+ array( 'farbtastic' ),
747
+ time(),
748
+ 'all'
749
+ );
750
+
751
+ wp_register_style(
752
+ 'redux-elusive-icon',
753
+ REDUX_URL . 'assets/css/vendor/elusive-icons/elusive-webfont.css',
754
+ array(),
755
+ time(),
756
+ 'all'
757
+ );
758
+
759
+ wp_register_style(
760
+ 'redux-elusive-icon-ie7',
761
+ REDUX_URL . 'assets/css/vendor/elusive-icons/elusive-webfont-ie7.css',
762
+ array(),
763
+ time(),
764
+ 'all'
765
+ );
766
+
767
+ wp_register_style(
768
+ 'select2-css',
769
+ REDUX_URL . 'assets/js/vendor/select2/select2.css',
770
+ array(),
771
+ time(),
772
+ 'all'
773
+ );
774
+
775
+ $wp_styles->add_data( 'redux-elusive-icon-ie7', 'conditional', 'lte IE 7' );
776
+
777
+ wp_register_style(
778
+ 'jquery-ui-css',
779
+ apply_filters( 'redux-ui-theme', REDUX_URL . 'assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css' ),
780
+ '',
781
+ time(),
782
+ 'all'
783
+ );
784
+
785
+ wp_enqueue_style( 'redux-lte-ie8' );
786
+
787
+ if( $this->args['admin_stylesheet'] == 'standard' ) {
788
+ wp_enqueue_style( 'redux-css' );
789
+ } elseif( $this->args['admin_stylesheet'] == 'custom' ) {
790
+ wp_enqueue_style( 'redux-custom-css' );
791
+ }
792
+
793
+ wp_enqueue_style( 'redux-elusive-icon' );
794
+ wp_enqueue_style( 'redux-elusive-icon-ie7' );
795
+
796
+ if ( $this->args['dev_mode'] === true) { // Pretty object output
797
+ wp_enqueue_script(
798
+ 'json-view-js',
799
+ REDUX_URL . 'assets/js/vendor/jsonview.min.js',
800
+ array( 'jquery' ),
801
+ time(),
802
+ true
803
+ );
804
+ }
805
+
806
+ wp_enqueue_script(
807
+ 'redux-js',
808
+ //REDUX_URL . 'assets/js/admin.js',// DEBUG ONLY
809
+ REDUX_URL . 'assets/js/admin.min.js',
810
+ array( 'jquery','jquery-cookie' ),
811
+ time(),
812
+ true
813
+ );
814
+
815
+ wp_enqueue_script(
816
+ 'jquery-cookie',
817
+ REDUX_URL . 'assets/js/vendor/cookie.js',
818
+ array( 'jquery' ),
819
+ time(),
820
+ true
821
+ );
822
+
823
+ wp_register_script(
824
+ 'select2-js',
825
+ REDUX_URL . 'assets/js/vendor/select2/select2.min.js',
826
+ array( 'jquery' ),
827
+ time(),
828
+ true
829
+ );
830
+
831
+ wp_register_script(
832
+ 'jquery-tipsy',
833
+ REDUX_URL . 'assets/js/vendor/jquery.tipsy.js',
834
+ array( 'jquery' ),
835
+ time(),
836
+ true
837
+ );
838
+
839
+ wp_register_script(
840
+ 'jquery-numeric',
841
+ REDUX_URL . 'assets/js/vendor/jquery.numeric.js ',
842
+ array( 'jquery' ),
843
+ time(),
844
+ true
845
+ );
846
+
847
+ $localize = array(
848
+ 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ),
849
+ 'reset_confirm' => __( 'Are you sure? Resetting will loose all custom values.', 'redux-framework' ),
850
+ 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ),
851
+ 'opt_name' => $this->args['opt_name'],
852
+ 'folds' => $this->folds,
853
+ 'options' => $this->options,
854
+ 'defaults' => $this->options_defaults,
855
+ );
856
+
857
+ // Construct the errors array.
858
+ $errors = get_transient( 'redux-errors-' . $this->args['opt_name'] );
859
+ if( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] == 'true' && !empty( $errors ) ) {
860
+ $theTotal = 0;
861
+ $theErrors = array();
862
+ foreach($errors as $error) {
863
+ $theErrors[$error['section_id']]['errors'][] = $error;
864
+ if (!isset($theErrors[$error['section_id']]['total'])) {
865
+ $theErrors[$error['section_id']]['total'] = 0;
866
+ }
867
+ $theErrors[$error['section_id']]['total']++;
868
+ $theTotal++;
869
+ }
870
+ delete_transient( 'redux-errors-' . $this->args['opt_name'] );
871
+ $localize['errors'] = array('total'=>$theTotal, 'errors'=>$theErrors);
872
+ }
873
+
874
+ // Construct the errors array.
875
+ $warnings = get_transient( 'redux-warnings-' . $this->args['opt_name'] );
876
+ if( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] == 'true' && !empty( $warnings ) ) {
877
+ $theTotal = 0;
878
+ $theWarnings = array();
879
+ foreach($warnings as $warning) {
880
+ $theWarnings[$warning['section_id']]['warnings'][] = $warning;
881
+ if (!isset($theWarnings[$warning['section_id']]['total'])) {
882
+ $theWarnings[$warning['section_id']]['total'] = 0;
883
+ }
884
+ $theWarnings[$warning['section_id']]['total']++;
885
+ $theTotal++;
886
+ }
887
+ delete_transient( 'redux-warnings-' . $this->args['opt_name'] );
888
+ $localize['warnings'] = array('total'=>$theTotal, 'warnings'=>$theWarnings);
889
+ }
890
+
891
+ // Values used by the javascript
892
+ wp_localize_script(
893
+ 'redux-js',
894
+ 'redux_opts',
895
+ $localize
896
+ );
897
+
898
+ do_action( 'redux-enqueue-' . $this->args['opt_name'] );
899
+
900
+ foreach( $this->sections as $section ) {
901
+ if( isset( $section['fields'] ) ) {
902
+ foreach( $section['fields'] as $field ) {
903
+ if( isset( $field['type'] ) ) {
904
+ $field_class = 'ReduxFramework_' . $field['type'];
905
+
906
+ if( !class_exists( $field_class ) ) {
907
+ $class_file = apply_filters( 'redux-typeclass-load', REDUX_DIR . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
908
+
909
+ if( $class_file ) {
910
+ /** @noinspection PhpIncludeInspection */
911
+ require_once( $class_file );
912
+ }
913
+
914
+ }
915
+
916
+ if( class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) {
917
+ $enqueue = new $field_class( '', '', $this );
918
+ $enqueue->enqueue();
919
+ }
920
+ }
921
+ }
922
+ }
923
+ }
924
+ }
925
+
926
+ /**
927
+ * Download the options file, or display it
928
+ *
929
+ * @since 3.0.0
930
+ * @access public
931
+ * @return void
932
+ */
933
+ public function _download_options(){
934
+ /** @noinspection PhpUndefinedConstantInspection */
935
+ if( !isset( $_GET['secret'] ) || $_GET['secret'] != md5( AUTH_KEY . SECURE_AUTH_KEY ) ) {
936
+ wp_die( 'Invalid Secret for options use' );
937
+ exit;
938
+ }
939
+
940
+ if( !isset( $_GET['feed'] ) ){
941
+ wp_die( 'No Feed Defined' );
942
+ exit;
943
+ }
944
+
945
+ $backup_options = $this->get_options( str_replace( 'redux-', '', $_GET['feed'] ) );
946
+ $backup_options['redux-backup'] = '1';
947
+ $content = json_encode( $backup_options );
948
+
949
+ if( isset( $_GET['action'] ) && $_GET['action'] == 'download_options' ) {
950
+ header( 'Content-Description: File Transfer' );
951
+ header( 'Content-type: application/txt' );
952
+ header( 'Content-Disposition: attachment; filename="' . str_replace( 'redux-', '', $_GET['feed'] ) . '_backup_' . date( 'd-m-Y' ) . '.json"' );
953
+ header( 'Content-Transfer-Encoding: binary' );
954
+ header( 'Expires: 0' );
955
+ header( 'Cache-Control: must-revalidate' );
956
+ header( 'Pragma: public' );
957
+ echo $content;
958
+ exit;
959
+ } else {
960
+ header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
961
+ header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT");
962
+ header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' );
963
+ header( 'Cache-Control: no-store, no-cache, must-revalidate' );
964
+ header( 'Cache-Control: post-check=0, pre-check=0', false );
965
+ header( 'Pragma: no-cache' );
966
+
967
+ // Can't include the type. Thanks old Firefox and IE. BAH.
968
+ //header("Content-type: application/json");
969
+ echo $content;
970
+ exit;
971
+ }
972
+ }
973
+
974
+ /**
975
+ * Show page help
976
+ *
977
+ * @since 1.0.0
978
+ * @access public
979
+ * @return void
980
+ */
981
+ public function _load_page() {
982
+
983
+ // Do admin head action for this page
984
+ add_action( 'admin_head', array( &$this, 'admin_head' ) );
985
+
986
+ // Do admin footer text hook
987
+ add_filter( 'admin_footer_text', array( &$this, 'admin_footer_text' ) );
988
+
989
+ $screen = get_current_screen();
990
+
991
+ if( is_array( $this->args['help_tabs'] ) ) {
992
+ foreach( $this->args['help_tabs'] as $tab ) {
993
+ $screen->add_help_tab( $tab );
994
+ }
995
+ }
996
+
997
+ if( $this->args['help_sidebar'] != '' )
998
+ $screen->set_help_sidebar( $this->args['help_sidebar'] );
999
+
1000
+ do_action( 'redux-load-page-' . $this->args['opt_name'], $screen );
1001
+ }
1002
+
1003
+ /**
1004
+ * Do action redux-admin-head for options page
1005
+ *
1006
+ * @since 1.0.0
1007
+ * @access public
1008
+ * @return void
1009
+ */
1010
+ public function admin_head() {
1011
+ do_action( 'redux-admin-head-' . $this->args['opt_name'], $this );
1012
+ }
1013
+
1014
+ /**
1015
+ * Return footer text
1016
+ *
1017
+ * @since 2.0.0
1018
+ * @access public
1019
+ * @return string $this->args['footer_credit']
1020
+ */
1021
+ public function admin_footer_text( ) {
1022
+ return $this->args['footer_credit'];
1023
+ }
1024
+
1025
+ /**
1026
+ * Register Option for use
1027
+ *
1028
+ * @since 1.0.0
1029
+ * @access public
1030
+ * @return void
1031
+ */
1032
+ public function _register_setting() {
1033
+
1034
+ register_setting( $this->args['opt_name'] . '_group', $this->args['opt_name'], array( &$this,'_validate_options' ) );
1035
+
1036
+ if( is_null( $this->sections ) ) return;
1037
+
1038
+ $runUpdate = false;
1039
+
1040
+ foreach( $this->sections as $k => $section ) {
1041
+ if( isset($section['type'] ) && $section['type'] == 'divide' ) {
1042
+ continue;
1043
+ }
1044
+
1045
+ if ( empty( $section['id'] ) ) {
1046
+ $section['id'] = strtolower( str_replace( " ", "", $section['title'] ) );
1047
+ }
1048
+
1049
+ // DOVY! Replace $k with $section['id'] when ready
1050
+ $section = apply_filters( 'redux-section-' . $k . '-modifier-' . $this->args['opt_name'], $section );
1051
+
1052
+ add_settings_section( $this->args['opt_name'] . $k . '_section', $section['title'], array( &$this, '_section_desc' ), $this->args['opt_name'] . $k . '_section_group' );
1053
+
1054
+ if( isset( $section['fields'] ) ) {
1055
+ foreach( $section['fields'] as $fieldk => $field ) {
1056
+
1057
+ $th = "";
1058
+ if( isset( $field['title'] ) && isset( $field['type'] ) && $field['type'] !== "info" ) {
1059
+ $default_mark = ( !empty($field['default']) && isset($this->options[$field['id']]) && $this->options[$field['id']] == $field['default'] && !empty( $this->args['default_mark'] ) && isset( $field['default'] ) ) ? $this->args['default_mark'] : '';
1060
+ if (!empty($field['title'])) {
1061
+ if ( $field['type'] == 'text' ) {
1062
+ $th = '<label for="'. $field['id'] .'-'. $field['type'] .'">'. $field['title'] . $default_mark .'</label>';
1063
+ } else {
1064
+ $th = $field['title'] . $default_mark;
1065
+ }
1066
+ }
1067
+ if( isset( $field['subtitle'] ) ) {
1068
+ $th .= '<span class="description">' . $field['subtitle'] . '</span>';
1069
+ }
1070
+ }
1071
+ if (!isset($field['id'])) {
1072
+ print_r($field);
1073
+ }
1074
+ // Set the default if it's a new field
1075
+ if (!isset($this->options[$field['id']])) {
1076
+ if( is_null( $this->options_defaults ) ) {
1077
+ $this->_default_values(); // fill cache
1078
+ }
1079
+ if ( !empty( $this->options_defaults ) ) {
1080
+ $this->options[$field['id']] = array_key_exists( $field['id'], $this->options_defaults ) ? $this->options_defaults[$field['id']] : '';
1081
+ }
1082
+ $runUpdate = true;
1083
+ }
1084
+
1085
+ if ( $this->args['default_show'] === true && isset( $field['default'] ) && isset($this->options[$field['id']]) && $this->options[$field['id']] != $field['default'] && $field['type'] !== "info" ) {
1086
+ $default_output = "";
1087
+ if (!is_array($field['default'])) {
1088
+ if ( !empty( $field['options'][$field['default']] ) ) {
1089
+ if (!empty($field['options'][$field['default']]['alt'])) {
1090
+ $default_output .= $field['options'][$field['default']]['alt'] . ', ';
1091
+ } else {
1092
+ // TODO: This serialize fix may not be the best solution. Look into it. PHP 5.4 error without serialize
1093
+ $default_output .= serialize($field['options'][$field['default']]).", ";
1094
+ }
1095
+ } else if ( !empty( $field['options'][$field['default']] ) ) {
1096
+ $default_output .= $field['options'][$field['default']].", ";
1097
+ } else if ( !empty( $field['default'] ) ) {
1098
+ $default_output .= $field['default'] . ', ';
1099
+ }
1100
+ } else {
1101
+ foreach( $field['default'] as $defaultk => $defaultv ) {
1102
+ if (!empty($field['options'][$defaultv]['alt'])) {
1103
+ $default_output .= $field['options'][$defaultv]['alt'] . ', ';
1104
+ } else if ( !empty( $field['options'][$defaultv] ) ) {
1105
+ $default_output .= $field['options'][$defaultv].", ";
1106
+ } else if ( !empty( $field['options'][$defaultk] ) ) {
1107
+ $default_output .= $field['options'][$defaultk].", ";
1108
+ } else if ( !empty( $defaultv ) ) {
1109
+ $default_output .= $defaultv.', ';
1110
+ }
1111
+ }
1112
+ }
1113
+ if ( !empty( $default_output ) ) {
1114
+ $default_output = __( 'Default', 'redux-framework' ) . ": " . substr($default_output, 0, -2);
1115
+ }
1116
+ $th .= '<span class="showDefaults">'.$default_output.'</span>';
1117
+ }
1118
+ if (!isset($field['class'])) { // No errors please
1119
+ $field['class'] = "";
1120
+ }
1121
+ $field = apply_filters( 'redux-field-' . $field['id'] . 'modifier-' . $this->args['opt_name'], $field );
1122
+ if ( !empty( $this->folds[$field['id']]['parent'] ) ) { // This has some fold items, hide it by default
1123
+ $field['class'] .= " fold";
1124
+ }
1125
+ if ( !empty( $this->folds[$field['id']]['children'] ) ) { // Sets the values you shoe fold children on
1126
+ $field['class'] .= " foldParent";
1127
+ }
1128
+
1129
+ if ( !empty( $field['compiler'] ) ) {
1130
+ $field['class'] .= " compiler";
1131
+ }
1132
+ $this->sections[$k]['fields'][$fieldk] = $field;
1133
+
1134
+ add_settings_field( $fieldk . '_field', $th, array( &$this, '_field_input' ), $this->args['opt_name'] . $k . '_section_group', $this->args['opt_name'] . $k . '_section', $field ); // checkbox
1135
+ }
1136
+ }
1137
+ }
1138
+
1139
+ do_action( 'redux-register-settings-' . $this->args['opt_name'] );
1140
+
1141
+ if ($runUpdate) { // Always update the DB with new fields
1142
+ $this->set_options( $this->options );
1143
+ }
1144
+
1145
+ if (get_transient( 'redux-compiler-' . $this->args['opt_name'] ) ) {
1146
+ delete_transient( 'redux-compiler-' . $this->args['opt_name'] );
1147
+ do_action('redux-compiler-' . $this->args['opt_name'], $this->options );
1148
+ }
1149
+
1150
+ }
1151
+
1152
+ /**
1153
+ * Register Extensions for use
1154
+ *
1155
+ * @since 3.0.0
1156
+ * @access public
1157
+ * @return void
1158
+ */
1159
+ public function _register_extensions() {
1160
+
1161
+ $path = dirname( __FILE__ ) . '/extensions';
1162
+ $folders = scandir( $path, 1 );
1163
+
1164
+ foreach($folders as $folder){
1165
+
1166
+ if ($folder === '.' or $folder === '..' or !is_dir($path . '/' . $folder) ) {
1167
+ continue;
1168
+ }
1169
+ $extension_class = 'ReduxFramework_Extension_' . $folder;
1170
+
1171
+ if( !class_exists( $extension_class ) ) {
1172
+ $class_file = apply_filters( 'redux-extensionclass-load', $this->path . 'extensions/' . $folder . '/extension_' . $folder . '.php', $extension_class );
1173
+
1174
+ if( $class_file ) {
1175
+ /** @noinspection PhpIncludeInspection */
1176
+ require_once( $class_file );
1177
+ $extension = new $extension_class( $this );
1178
+ }
1179
+ }
1180
+
1181
+ }
1182
+
1183
+ do_action( 'redux-register-extensions-' . $this->args['opt_name'], $this );
1184
+
1185
+ }
1186
+
1187
+ /**
1188
+ * Validate the Options options before insertion
1189
+ *
1190
+ * @since 3.0.0
1191
+ * @access public
1192
+ * @param array $plugin_options The options array
1193
+ * @return
1194
+ */
1195
+ public function _validate_options( $plugin_options ) {
1196
+
1197
+ set_transient( 'redux-saved-' . $this->args['opt_name'], '1', 1000 );
1198
+
1199
+ if( !empty( $plugin_options['import'] ) ) {
1200
+ if( $plugin_options['import_code'] != '' ) {
1201
+ $import = $plugin_options['import_code'];
1202
+ } elseif( $plugin_options['import_link'] != '' ) {
1203
+ $import = wp_remote_retrieve_body( wp_remote_get( $plugin_options['import_link'] ) );
1204
+ }
1205
+
1206
+ if ( !empty( $import ) ) {
1207
+ $imported_options = json_decode( htmlspecialchars_decode( $import ), true );
1208
+ }
1209
+
1210
+ if( !empty( $imported_options ) && is_array( $imported_options ) && isset( $imported_options['redux-backup'] ) && $imported_options['redux-backup'] == '1' ) {
1211
+ $plugin_options['REDUX_imported'] = 1;
1212
+ foreach($imported_options as $key => $value) {
1213
+ $plugin_options[$key] = $value;
1214
+ }
1215
+
1216
+ // Remove the import/export tab cookie.
1217
+ if( $_COOKIE['redux_current_tab'] == 'import_export_default' ) {
1218
+ setcookie( 'redux_current_tab', '', 1, '/' );
1219
+ }
1220
+
1221
+ set_transient( 'redux-compiler-' . $this->args['opt_name'], '1', 1000 );
1222
+ $plugin_options['REDUX_COMPILER'] = time();
1223
+ unset( $plugin_options['defaults'], $plugin_options['compiler'], $plugin_options['import'], $plugin_options['import_code'] );
1224
+ if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' ) {
1225
+ $this->set_options( $plugin_options );
1226
+ return $this->options;
1227
+ }
1228
+ return $plugin_options;
1229
+ }
1230
+ } else {
1231
+ $plugin_options['REDUX_imported'] = false;
1232
+ }
1233
+
1234
+ if( !empty( $plugin_options['defaults'] ) ) {
1235
+ $plugin_options = $this->_default_values();
1236
+ set_transient( 'redux-compiler-' . $this->args['opt_name'], '1', 1000 );
1237
+ $plugin_options['REDUX_COMPILER'] = time();
1238
+ unset( $plugin_options['defaults'], $plugin_options['compiler'], $plugin_options['import'], $plugin_options['import_code'] );
1239
+ if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' ) {
1240
+ $this->set_options( $plugin_options );
1241
+ return $this->options;
1242
+ }
1243
+ return $plugin_options;
1244
+ }
1245
+
1246
+ // Validate fields (if needed)
1247
+ $plugin_options = $this->_validate_values( $plugin_options, $this->options );
1248
+
1249
+ if( $this->errors ) {
1250
+ set_transient( 'redux-errors-' . $this->args['opt_name'], $this->errors, 1000 );
1251
+ }
1252
+
1253
+ if( $this->warnings ) {
1254
+ set_transient( 'redux-warnings-' . $this->args['opt_name'], $this->warnings, 1000 );
1255
+ }
1256
+
1257
+ do_action( 'redux-validate-' . $this->args['opt_name'], $plugin_options, $this->options );
1258
+
1259
+ if( !empty( $plugin_options['compiler'] ) ) {
1260
+ $plugin_options['REDUX_COMPILER'] = time();
1261
+ set_transient( 'redux-compiler-' . $this->args['opt_name'], '1', 2000 );
1262
+ }
1263
+
1264
+ unset( $plugin_options['defaults'] );
1265
+ unset( $plugin_options['import'] );
1266
+ unset( $plugin_options['import_code'] );
1267
+ unset( $plugin_options['import_link'] );
1268
+ unset( $plugin_options['compiler'] );
1269
+ if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' ) {
1270
+ $this->set_options( $plugin_options );
1271
+ return $this->options;
1272
+ }
1273
+ return $plugin_options;
1274
+ }
1275
+
1276
+ /**
1277
+ * Validate values from options form (used in settings api validate function)
1278
+ * calls the custom validation class for the field so authors can override with custom classes
1279
+ *
1280
+ * @since 1.0.0
1281
+ * @access public
1282
+ * @param array $plugin_options
1283
+ * @param array $options
1284
+ * @return array $plugin_options
1285
+ */
1286
+ public function _validate_values( $plugin_options, $options ) {
1287
+ foreach( $this->sections as $k => $section ) {
1288
+ if( isset( $section['fields'] ) ) {
1289
+ foreach( $section['fields'] as $field ) {
1290
+ $field['section_id'] = $k;
1291
+
1292
+ if( isset( $field['type'] ) && ( $field['type'] == 'checkbox' || $field['type'] == 'checkbox_hide_below' || $field['type'] == 'checkbox_hide_all' ) ) {
1293
+ if( !isset( $plugin_options[$field['id']] ) )
1294
+ $plugin_options[$field['id']] = 0;
1295
+ }
1296
+
1297
+ if( isset( $field['type'] ) && $field['type'] == 'multi_text' ) continue; // We can't validate this yet
1298
+
1299
+ if( !isset( $plugin_options[$field['id']] ) || $plugin_options[$field['id']] == '' ) continue;
1300
+
1301
+ // Force validate of custom field types
1302
+ if( isset( $field['type'] ) && !isset( $field['validate'] ) ) {
1303
+ if( $field['type'] == 'color' || $field['type'] == 'color_gradient' ) {
1304
+ $field['validate'] = 'color';
1305
+ } elseif( $field['type'] == 'date' ) {
1306
+ $field['validate'] = 'date';
1307
+ }
1308
+ }
1309
+
1310
+ if( isset( $field['validate'] ) ) {
1311
+ $validate = 'Redux_Validation_' . $field['validate'];
1312
+
1313
+ if( !class_exists( $validate ) ) {
1314
+ $class_file = apply_filters( 'redux-validateclass-load', REDUX_DIR . 'inc/validation/' . $field['validate'] . '/validation_' . $field['validate'] . '.php', $validate );
1315
+
1316
+ if( $class_file ) {
1317
+ /** @noinspection PhpIncludeInspection */
1318
+ require_once( $class_file );
1319
+ }
1320
+
1321
+ }
1322
+
1323
+ if( class_exists( $validate ) ) {
1324
+ //!DOVY - DB saving stuff. Is this right?
1325
+ if ( empty ( $options[$field['id']] ) ) {
1326
+ $options[$field['id']] = '';
1327
+ }
1328
+
1329
+ $validation = new $validate( $field, $plugin_options[$field['id']], $options[$field['id']] );
1330
+ $plugin_options[$field['id']] = $validation->value;
1331
+
1332
+ if( isset( $validation->error ) )
1333
+ $this->errors[] = $validation->error;
1334
+
1335
+ if( isset( $validation->warning) )
1336
+ $this->warnings[] = $validation->warning;
1337
+
1338
+ continue;
1339
+ }
1340
+ }
1341
+
1342
+ if( isset( $field['validate_callback'] ) && function_exists( $field['validate_callback'] ) ) {
1343
+ $callbackvalues = call_user_func( $field['validate_callback'], $field, $plugin_options[$field['id']], $options[$field['id']] );
1344
+ $plugin_options[$field['id']] = $callbackvalues['value'];
1345
+
1346
+ if( isset( $callbackvalues['error'] ) )
1347
+ $this->errors[] = $callbackvalues['error'];
1348
+
1349
+ if( isset( $callbackvalues['warning'] ) )
1350
+ $this->warnings[] = $callbackvalues['warning'];
1351
+ }
1352
+ }
1353
+ }
1354
+ }
1355
+
1356
+ return $plugin_options;
1357
+ }
1358
+
1359
+ /**
1360
+ * HTML OUTPUT.
1361
+ *
1362
+ * @since 1.0.0
1363
+ * @access public
1364
+ * @return void
1365
+ */
1366
+ public function _options_page_html() {
1367
+
1368
+ $saved = get_transient( 'redux-saved-' . $this->args['opt_name'] );
1369
+ if ( $saved ) {
1370
+ delete_transient( 'redux-saved-' . $this->args['opt_name'] );
1371
+ }
1372
+
1373
+ echo '<div class="clear"></div>';
1374
+ echo '<div class="wrap">';
1375
+
1376
+ // Do we support JS?
1377
+ echo '<noscript><div class="no-js">' . __( 'Warning- This options panel will not work properly without javascript!', 'redux-framework' ) . '</div></noscript>';
1378
+
1379
+ // Security is vital!
1380
+ echo '<input type="hidden" id="ajaxsecurity" name="security" value="' . wp_create_nonce( 'of_ajax_nonce' ) . '" />';
1381
+
1382
+ do_action( 'redux-page-before-form-' . $this->args['opt_name'] );
1383
+
1384
+ // Main container
1385
+ echo '<div id="redux-container">';
1386
+ echo '<form method="post" action="./options.php" enctype="multipart/form-data" id="redux-form-wrapper">';
1387
+
1388
+ echo '<input type="hidden" id="redux-compiler-hook" name="' . $this->args['opt_name'] . '[compiler]" value="" />';
1389
+
1390
+ settings_fields( $this->args['opt_name'] . '_group' );
1391
+
1392
+ // Last tab?
1393
+ if( empty( $this->options['last_tab'] ) )
1394
+ $this->options['last_tab'] = '';
1395
+
1396
+ $this->options['last_tab'] = ( isset( $_GET['tab'] ) && !$saved ) ? $_GET['tab'] : $this->options['last_tab'];
1397
+
1398
+ echo '<input type="hidden" id="last_tab" name="' . $this->args['opt_name'] . '[last_tab]" value="' . $this->options['last_tab'] . '" />';
1399
+
1400
+ // Header area
1401
+ echo '<div id="redux-header">';
1402
+
1403
+ if( !empty( $this->args['display_name'] ) ) {
1404
+ echo '<div class="logo">';
1405
+ echo '<h2>' . $this->args['display_name'] . '</h2>';
1406
+
1407
+ if( !empty( $this->args['display_version'] ) )
1408
+ echo '<span>' . $this->args['display_version'] . '</span>';
1409
+
1410
+ echo '</div>';
1411
+ }
1412
+
1413
+ // Page icon
1414
+ // DOVY!
1415
+ echo '<div id="' . $this->args['page_icon'] . '" class="icon32"></div>';
1416
+
1417
+ echo '<div class="clear"></div>';
1418
+ echo '</div>';
1419
+
1420
+ // Intro text
1421
+ if( isset( $this->args['intro_text'] ) ) {
1422
+ echo '<div id="redux-intro-text">';
1423
+ echo $this->args['intro_text'];
1424
+ echo '</div>';
1425
+ }
1426
+
1427
+ // Stickybar
1428
+ echo '<div id="redux-sticky">';
1429
+ echo '<div id="info_bar">';
1430
+ echo '<a href="javascript:void(0);" id="expand_options">' . __( 'Expand', 'redux-framework' ) . '</a>';
1431
+ echo '<div class="redux-action_bar">';
1432
+ submit_button( '', 'primary', 'redux_save', false );
1433
+ echo '&nbsp;';
1434
+ submit_button( __( 'Reset to Defaults', 'redux-framework' ), 'secondary', $this->args['opt_name'] . '[defaults]', false );
1435
+ echo '</div>';
1436
+
1437
+ echo '<div class="redux-ajax-loading" alt="' . __( 'Working...', 'redux-framework' ) . '">&nbsp;</div>';
1438
+ echo '<div class="clear"></div>';
1439
+ echo '</div>';
1440
+
1441
+ // Warning bar
1442
+ if( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] == 'true' && $saved == '1' ) {
1443
+ if( isset( $this->options['REDUX_imported'] ) && $this->options['REDUX_imported'] === 1 ) {
1444
+ echo '<div id="redux-imported">' . apply_filters( 'redux-imported-text-' . $this->args['opt_name'], '<strong>' . __( 'Settings Imported!', 'redux-framework' ) ) . '</strong></div>';
1445
+ } else {
1446
+ echo '<div id="redux-save">' . apply_filters( 'redux-saved-text-' . $this->args['opt_name'], '<strong>'.__( 'Settings Saved!', 'redux-framework' ) ) . '</strong></div>';
1447
+ }
1448
+ }
1449
+
1450
+ echo '<div id="redux-save-warn">' . apply_filters( 'redux-changed-text-' . $this->args['opt_name'], '<strong>'.__( 'Settings have changed, you should save them!', 'redux-framework' ) ) . '</strong></div>';
1451
+ echo '<div id="redux-field-errors"><strong><span></span> ' . __( 'error(s) were found!', 'redux-framework' ) . '</strong></div>';
1452
+ echo '<div id="redux-field-warnings"><strong><span></span> ' . __( 'warning(s) were found!', 'redux-framework' ) . '</strong></div>';
1453
+
1454
+ echo '</div>';
1455
+
1456
+ echo '<div class="clear"></div>';
1457
+
1458
+ // Sidebar
1459
+ echo '<div id="redux-sidebar">';
1460
+ echo '<ul id="redux-group-menu">';
1461
+ foreach( $this->sections as $k => $section ) {
1462
+ if( (isset($this->args['icon_type']) && $this->args['icon_type'] == 'image') || (isset($section['icon_type']) && $section['icon_type'] == 'image')) {
1463
+ //if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
1464
+ $icon = ( !isset( $section['icon'] ) ) ? '' : '<img class="image_icon_type" src="' . $section['icon'] . '" /> ';
1465
+ } else {
1466
+ $icon_class = ( !isset( $section['icon_class'] ) ) ? '' : ' ' . $section['icon_class'];
1467
+ $icon = ( !isset( $section['icon'] ) ) ? '<i class="icon-cog' . $icon_class . '"></i> ' : '<i class="icon-' . $section['icon'] . $icon_class . '"></i> ';
1468
+ }
1469
+
1470
+ if (isset($section['type']) && $section['type'] == "divide") {
1471
+ echo '<li class="divide">&nbsp;</li>';
1472
+ } else {
1473
+ // DOVY! REPLACE $k with $section['ID'] when used properly.
1474
+ echo '<li id="' . $k . '_section_group_li" class="redux-group-tab-link-li">';
1475
+ echo '<a href="javascript:void(0);" id="' . $k . '_section_group_li_a" class="redux-group-tab-link-a" data-rel="' . $k . '">' . $icon . '<span class="group_title">' . $section['title'] . '</span></a>';
1476
+ if ( !empty( $section['sections'] ) ) {
1477
+ echo '<ul id="' . $k . '_section_group_li_subsections" class="sub">';
1478
+ foreach ($section['sections'] as $k2 => $subsection) {
1479
+ echo '<li id="' . $k . '_section_group_li" class="redux-group-tab-link-li">';
1480
+ echo '<a href="javascript:void(0);" id="' . $k . '_section_group_subsection_li_a" class="redux-group-tab-link-a" data-rel="' . $k .'sub-'.$k2.'"><span class="group_title">' . $subsection['title'] . '</span></a>';
1481
+ echo '</li>';
1482
+ }
1483
+ echo '</ul>';
1484
+ }
1485
+ echo '</li>';
1486
+ }
1487
+ }
1488
+
1489
+ echo '<li class="divide">&nbsp;</li>';
1490
+
1491
+ do_action( 'redux-page-after-sections-menu-' . $this->args['opt_name'], $this );
1492
+
1493
+ if( $this->args['show_import_export'] === true ) {
1494
+ echo '<li id="import_export_default_section_group_li" class="redux-group-tab-link-li">';
1495
+
1496
+ if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
1497
+ $icon = ( !isset( $this->args['import_icon'] ) ) ? '' : '<img src="' . $this->args['import_icon'] . '" /> ';
1498
+ } else {
1499
+ $icon_class = ( !isset( $this->args['import_icon_class'] ) ) ? '' : ' ' . $this->args['import_icon_class'];
1500
+ $icon = ( !isset( $this->args['import_icon'] ) ) ? '<i class="icon-refresh' . $icon_class . '"></i>' : '<i class="icon-' . $this->args['import_icon'] . $icon_class . '"></i> ';
1501
+ }
1502
+
1503
+ echo '<a href="javascript:void(0);" id="import_export_default_section_group_li_a" class="redux-group-tab-link-a" data-rel="import_export_default">' . $icon . ' <span class="group_title">' . __( 'Import / Export', 'redux-framework' ) . '</span></a>';
1504
+ echo '</li>';
1505
+
1506
+ echo '<li class="divide">&nbsp;</li>';
1507
+ }
1508
+
1509
+ if( is_array( $this->extra_tabs ) ) {
1510
+ foreach( $this->extra_tabs as $k => $tab ) {
1511
+ if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
1512
+ $icon = ( !isset( $tab['icon'] ) ) ? '' : '<img src="' . $tab['icon'] . '" /> ';
1513
+ } else {
1514
+ $icon_class = ( !isset( $tab['icon_class'] ) ) ? '' : ' ' . $tab['icon_class'];
1515
+ $icon = ( !isset( $tab['icon'] ) ) ? '<i class="icon-cog' . $icon_class . '"></i> ' : '<i class="icon-' . $tab['icon'] . $icon_class . '"></i> ';
1516
+ }
1517
+ echo '<li id="' . $k . '_section_group_li" class="redux-group-tab-link-li">';
1518
+ echo '<a href="javascript:void(0);" id="' . $k . '_section_group_li_a" class="redux-group-tab-link-a custom-tab" data-rel="' . $k . '">' . $icon . '<span class="group_title">' . $tab['title'] . '</span></a>';
1519
+ echo '</li>';
1520
+ }
1521
+ }
1522
+
1523
+ if( $this->args['dev_mode'] === true ) {
1524
+ echo '<li id="dev_mode_default_section_group_li" class="redux-group-tab-link-li">';
1525
+
1526
+ if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
1527
+ $icon = ( !isset( $this->args['dev_mode_icon'] ) ) ? '' : '<img src="' . $this->args['dev_mode_icon'] . '" /> ';
1528
+ } else {
1529
+ $icon_class = ( !isset( $this->args['dev_mode_icon_class'] ) ) ? '' : ' ' . $this->args['dev_mode_icon_class'];
1530
+ $icon = ( !isset( $this->args['dev_mode_icon'] ) ) ? '<i class="icon-info-sign' . $icon_class . '"></i>' : '<i class="icon-' . $this->args['dev_mode_icon'] . $icon_class . '"></i> ';
1531
+ }
1532
+
1533
+ echo '<a href="javascript:void(0);" id="dev_mode_default_section_group_li_a" class="redux-group-tab-link-a custom-tab" data-rel="dev_mode_default">' . $icon . ' <span class="group_title">' . __( 'Options Object', 'redux-framework' ) . '</span></a>';
1534
+ echo '</li>';
1535
+ }
1536
+
1537
+ if( $this->args['system_info'] === true ) {
1538
+ echo '<li id="system_info_default_section_group_li" class="redux-group-tab-link-li">';
1539
+
1540
+ if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) {
1541
+ $icon = ( !isset( $this->args['system_info_icon'] ) ) ? '' : '<img src="' . $this->args['system_info_icon'] . '" /> ';
1542
+ } else {
1543
+ $icon_class = ( !isset( $this->args['system_info_icon_class'] ) ) ? '' : ' ' . $this->args['system_info_icon_class'];
1544
+ $icon = ( !isset( $this->args['system_info_icon'] ) ) ? '<i class="icon-info-sign' . $icon_class . '"></i>' : '<i class="icon-' . $this->args['system_info_icon'] . $icon_class . '"></i> ';
1545
+ }
1546
+
1547
+ echo '<a href="javascript:void(0);" id="system_info_default_section_group_li_a" class="redux-group-tab-link-a custom-tab" data-rel="system_info_default">' . $icon . ' <span class="group_title">' . __( 'System Info', 'redux-framework' ) . '</span></a>';
1548
+ echo '</li>';
1549
+ }
1550
+
1551
+ echo '</ul>';
1552
+ echo '</div>';
1553
+
1554
+ echo '<div id="redux-main">';
1555
+
1556
+ foreach( $this->sections as $k => $section ) {
1557
+ echo '<div id="' . $k . '_section_group' . '" class="redux-group-tab">';
1558
+ if ( !empty( $section['sections'] ) ) {
1559
+ //$tabs = "";
1560
+ echo '<div id="' . $k . '_section_tabs' . '" class="redux-section-tabs">';
1561
+ echo '<ul>';
1562
+ foreach ($section['sections'] as $subkey => $subsection) {
1563
+ echo '<li><a href="#'.$k.'_section-tab-'.$subkey.'">'.$subsection['title'].'</a></li>';
1564
+ }
1565
+ echo '</ul>';
1566
+ foreach ($section['sections'] as $subkey => $subsection) {
1567
+ echo '<div id="' . $k .'sub-'.$subkey. '_section_group' . '" class="redux-group-tab">';
1568
+ echo '<div id="'.$k.'_section-tab-'.$subkey.'">';
1569
+ echo "hello".$subkey;
1570
+ do_settings_sections( $this->args['opt_name'] . $k . '_tab_'.$subkey.'_section_group' );
1571
+ echo "</div>";
1572
+ }
1573
+ echo "</div>";
1574
+ } else {
1575
+ do_settings_sections( $this->args['opt_name'] . $k . '_section_group' );
1576
+ }
1577
+
1578
+ echo '</div>';
1579
+ }
1580
+
1581
+ if( $this->args['show_import_export'] === true ) {
1582
+ echo '<div id="import_export_default_section_group' . '" class="redux-group-tab">';
1583
+
1584
+ echo '<h3>' . __( 'Import / Export Options', 'redux-framework' ) . '</h3>';
1585
+ echo '<h4>' . __( 'Import Options', 'redux-framework' ) . '</h4>';
1586
+ echo '<p><a href="javascript:void(0);" id="redux-import-code-button" class="button-secondary">' . __( 'Import from file', 'redux-framework' ) . '</a> <a href="javascript:void(0);" id="redux-import-link-button" class="button-secondary">' . __( 'Import from URL', 'redux-framework' ) . '</a></p>';
1587
+
1588
+ echo '<div id="redux-import-code-wrapper">';
1589
+
1590
+ echo '<div class="redux-section-desc">';
1591
+ echo '<p class="description" id="import-code-description">' . apply_filters( 'redux-import-file-description', __( 'Input your backup file below and hit Import to restore your sites options from a backup.', 'redux-framework' ) ) . '</p>';
1592
+ echo '</div>';
1593
+
1594
+ echo '<textarea id="import-code-value" name="' . $this->args['opt_name'] . '[import_code]" class="large-text noUpdate" rows="8"></textarea>';
1595
+
1596
+ echo '</div>';
1597
+
1598
+ echo '<div id="redux-import-link-wrapper">';
1599
+
1600
+ echo '<div class="redux-section-desc">';
1601
+ echo '<p class="description" id="import-link-description">' . apply_filters( 'redux-import-link-description', __( 'Input the URL to another sites options set and hit Import to load the options from that site.', 'redux-framework' ) ) . '</p>';
1602
+ echo '</div>';
1603
+
1604
+ echo '<input type="text" id="import-link-value" name="' . $this->args['opt_name'] . '[import_link]" class="large-text noUpdate" value="" />';
1605
+
1606
+ echo '</div>';
1607
+
1608
+ echo '<p id="redux-import-action"><input type="submit" id="redux-import" name="' . $this->args['opt_name'] . '[import]" class="button-primary" value="' . __( 'Import', 'redux-framework' ) . '">&nbsp;&nbsp;<span>' . apply_filters( 'redux-import-warning', __( 'WARNING! This will overwrite all existing option values, please proceed with caution!', 'redux-framework' ) ) . '</span></p>';
1609
+ echo '<div class="hr"/><div class="inner"><span>&nbsp;</span></div></div>';
1610
+
1611
+ echo '<h4>' . __( 'Export Options', 'redux-framework' ) . '</h4>';
1612
+ echo '<div class="redux-section-desc">';
1613
+ echo '<p class="description">' . apply_filters( 'redux-backup-description', __( 'Here you can copy/download your current option settings. Keep this safe as you can use it as a backup should anything go wrong, or you can use it to restore your settings on this site (or any other site).', 'redux-framework' ) ) . '</p>';
1614
+ echo '</div>';
1615
+
1616
+ /** @noinspection PhpUndefinedConstantInspection */
1617
+ echo '<p><a href="javascript:void(0);" id="redux-export-code-copy" class="button-secondary">' . __( 'Copy', 'redux-framework' ) . '</a> <a href="' . add_query_arg( array( 'feed' => 'reduxopts-' . $this->args['opt_name'], 'action' => 'download_options', 'secret' => md5( AUTH_KEY . SECURE_AUTH_KEY ) ), site_url() ) . '" id="redux-export-code-dl" class="button-primary">' . __( 'Download', 'redux-framework' ) . '</a> <a href="javascript:void(0);" id="redux-export-link" class="button-secondary">' . __( 'Copy Link', 'redux-framework' ) . '</a></p>';
1618
+ $backup_options = $this->options;
1619
+ $backup_options['redux-backup'] = '1';
1620
+ echo '<textarea class="large-text noUpdate" id="redux-export-code" rows="8">';
1621
+ print_r( json_encode( $backup_options ) );
1622
+ echo '</textarea>';
1623
+ /** @noinspection PhpUndefinedConstantInspection */
1624
+ echo '<input type="text" class="large-text noUpdate" id="redux-export-link-value" value="' . add_query_arg( array( 'feed' => 'reduxopts-' . $this->args['opt_name'], 'secret' => md5( AUTH_KEY.SECURE_AUTH_KEY ) ), site_url() ) . '" />';
1625
+
1626
+ echo '</div>';
1627
+ }
1628
+
1629
+ if( is_array( $this->extra_tabs ) ) {
1630
+ foreach( $this->extra_tabs as $k => $tab ) {
1631
+ echo '<div id="' . $k . '_section_group' . '" class="redux-group-tab">';
1632
+ echo '<h3>' . $tab['title'] . '</h3>';
1633
+ echo $tab['content'];
1634
+ echo '</div>';
1635
+ }
1636
+ }
1637
+
1638
+ if( $this->args['dev_mode'] === true ) {
1639
+ echo '<div id="dev_mode_default_section_group' . '" class="redux-group-tab">';
1640
+ echo '<h3>' . __( 'Options Object', 'redux-framework' ) . '</h3>';
1641
+ echo '<div class="redux-section-desc">';
1642
+
1643
+ echo '<div id="redux-object-browser"></div>';
1644
+
1645
+ echo '</div>';
1646
+
1647
+ echo '<div id="redux-object-json" class="hide">'.json_encode($this->options).'</div>';
1648
+
1649
+ echo '<a href="#" id="consolePrintObject" class="button">' . __( 'Show Object in Javascript Console Object', 'redux-framework' ) . '</a>';
1650
+ // END Javascript object debug
1651
+
1652
+ echo '</div>';
1653
+ }
1654
+
1655
+ if( $this->args['system_info'] === true ) {
1656
+ require_once 'inc/sysinfo.php';
1657
+ $system_info = new Simple_System_Info();
1658
+
1659
+ echo '<div id="system_info_default_section_group' . '" class="redux-group-tab">';
1660
+ echo '<h3>' . __( 'System Info', 'redux-framework' ) . '</h3>';
1661
+
1662
+ echo '<div id="redux-system-info">';
1663
+ echo $system_info->get( true );
1664
+ echo '</div>';
1665
+
1666
+ echo '</div>';
1667
+ }
1668
+
1669
+ do_action( 'redux-page-after-sections-' . $this->args['opt_name'], $this );
1670
+
1671
+ echo '<div class="clear"></div>';
1672
+ echo '</div>';
1673
+ echo '<div class="clear"></div>';
1674
+
1675
+ echo '<div id="redux-sticky-padder" style="display: none;">&nbsp;</div>';
1676
+ echo '<div id="redux-footer-sticky"><div id="redux-footer">';
1677
+
1678
+ if( isset( $this->args['share_icons'] ) ) {
1679
+ echo '<div id="redux-share">';
1680
+
1681
+ foreach( $this->args['share_icons'] as $link ) {
1682
+ echo '<a href="' . $link['link'] . '" title="' . $link['title'] . '" target="_blank"><img src="' . $link['img'] . '"/></a>';
1683
+ }
1684
+
1685
+ echo '</div>';
1686
+ }
1687
+
1688
+ echo '<div class="redux-action_bar">';
1689
+ submit_button( '', 'primary', 'redux_save', false );
1690
+ echo '&nbsp;';
1691
+ submit_button( __( 'Reset to Defaults', 'redux-framework'), 'secondary', $this->args['opt_name'] . '[defaults]', false );
1692
+ echo '</div>';
1693
+
1694
+ echo '<div class="redux-ajax-loading" alt="' . __( 'Working...', 'redux-framework') . '">&nbsp;</div>';
1695
+ echo '<div class="clear"></div>';
1696
+
1697
+ echo '</div>';
1698
+ echo '</form>';
1699
+ echo '</div></div>';
1700
+
1701
+ echo ( isset( $this->args['footer_text'] ) ) ? '<div id="redux-sub-footer">' . $this->args['footer_text'] . '</div>' : '';
1702
+
1703
+ do_action( 'redux-page-after-form-' . $this->args['opt_name'] );
1704
+
1705
+ echo '<div class="clear"></div>';
1706
+
1707
+ echo '</div><!--wrap-->';
1708
+
1709
+ if ( $this->args['dev_mode'] === true ) {
1710
+
1711
+ echo '<br /><div class="redux-timer">' . get_num_queries() . ' queries in ' . timer_stop(0) . ' seconds</div>';
1712
+
1713
+ if ( defined('SAVEQUERIES') && SAVEQUERIES ) {
1714
+ global $wpdb;
1715
+ echo '<!--\n';
1716
+ print_r($wpdb->queries);
1717
+ echo '\n--!>';
1718
+ }
1719
+
1720
+ }
1721
+
1722
+
1723
+ }
1724
+
1725
+ /**
1726
+ * Section HTML OUTPUT.
1727
+ *
1728
+ * @since 1.0.0
1729
+ * @access public
1730
+ * @param array $section
1731
+ * @return void
1732
+ */
1733
+ public function _section_desc( $section ) {
1734
+ $id = trim( rtrim( $section['id'], '_section' ), $this->args['opt_name'] );
1735
+
1736
+ if( isset( $this->sections[$id]['desc'] ) && !empty( $this->sections[$id]['desc'] ) ) {
1737
+ echo '<div class="redux-section-desc">' . $this->sections[$id]['desc'] . '</div>';
1738
+ }
1739
+ }
1740
+
1741
+ /**
1742
+ * Field HTML OUTPUT.
1743
+ *
1744
+ * Gets option from options array, then calls the specific field type class - allows extending by other devs
1745
+ *
1746
+ * @since 1.0.0
1747
+ * @access public
1748
+ * @param array $fields
1749
+ * @return void
1750
+ */
1751
+ public function _field_input( $field, $v = "" ) {
1752
+
1753
+ if( isset( $field['callback'] ) && function_exists( $field['callback'] ) ) {
1754
+ $value = ( isset( $this->options[$field['id']] ) ) ? $this->options[$field['id']] : '';
1755
+ do_action( 'redux-before-field-' . $this->args['opt_name'], $field, $value );
1756
+ call_user_func( $field['callback'], $field, $value );
1757
+ do_action( 'redux-after-field-' . $this->args['opt_name'], $field, $value );
1758
+ return;
1759
+ }
1760
+
1761
+ if( isset( $field['type'] ) ) {
1762
+ $field_class = 'ReduxFramework_' . $field['type'];
1763
+
1764
+ if( !class_exists( $field_class ) ) {
1765
+ $class_file = apply_filters( 'redux-typeclass-load', REDUX_DIR . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class );
1766
+
1767
+ if( $class_file ) {
1768
+ /** @noinspection PhpIncludeInspection */
1769
+ require_once($class_file);
1770
+ }
1771
+
1772
+ }
1773
+
1774
+ if( class_exists( $field_class ) ) {
1775
+ $value = isset($this->options[$field['id']])?$this->options[$field['id']]:'';
1776
+ if ($v != "") {
1777
+ $value = $v;
1778
+ }
1779
+ do_action( 'redux-before-field-' . $this->args['opt_name'], $field, $value );
1780
+ $render = new $field_class( $field, $value, $this );
1781
+
1782
+ ob_start();
1783
+ $render->render();
1784
+ $_render = apply_filters('redux-field-'.$this->args['opt_name'],ob_get_contents(),$field);
1785
+ ob_end_clean();
1786
+
1787
+ //save the values into a unique array in case we need it for dependencies
1788
+ $this->fieldsValues[$field['id']] = (isset($value['url']) && is_array($value) )?$value['url']:$value;
1789
+ //create default data und class string and checks the dependencies of an object
1790
+ extract($this->check_dependencies($field));
1791
+
1792
+ echo '<fieldset id="'.$this->args['opt_name'].'-'.$field['id'].'" class="redux-field redux-container-'.$field['type'].' '.$class_string.'" data-id="'.$field['id'].'" '.$data_string.'>';
1793
+ echo $_render;
1794
+
1795
+ if (!empty($field['desc'])) {
1796
+ $field['description'] = $field['desc'];
1797
+ }
1798
+
1799
+ echo ( isset( $field['description'] ) && $field['type'] != "info" && !empty( $field['description'] ) ) ? '<div class="description field-desc">' . $field['description'] . '</div>' : '';
1800
+
1801
+ echo '</fieldset>';
1802
+
1803
+ do_action( 'redux-after-field-' . $this->args['opt_name'], $field, $value );
1804
+ }
1805
+ }
1806
+ } // function
1807
+
1808
+ /**
1809
+ * Checks dependencies between objects based on the $field['required'] array
1810
+ *
1811
+ * If the array is set it needs to have exactly 3 entries.
1812
+ * The first entry describes which field should be monitored by the current field. eg: "content"
1813
+ * The second entry describes the comparison parameter. eg: "equals, not, is_larger, is_smaller ,contains"
1814
+ * The third entry describes the value that we are comparing against.
1815
+ *
1816
+ * Example: if the required array is set to array('content','equals','Hello World'); then the current
1817
+ * field will only be displayed if the field with id "content" has exactly the value "Hello World"
1818
+ *
1819
+ * @param array $field
1820
+ * @return array $params
1821
+ */
1822
+ public function check_dependencies($field) {
1823
+ $params = array('data_string' => "", 'class_string' => "");
1824
+
1825
+ if (!empty($field['required'])) {
1826
+ $data['check-field'] = $field['required'][0];
1827
+ $data['check-comparison'] = $field['required'][1];
1828
+ $data['check-value'] = $field['required'][2];
1829
+ $params['data_string'] = $this->create_data_string($data);
1830
+ $return = false;
1831
+ //required field must not be hidden. otherwise hide this one by default
1832
+ if (!isset($this->fieldsHidden[$data['check-field']])) {
1833
+ if (isset($this->fieldsValues[$data['check-field']])) {
1834
+ //$value1 = isset($this->fieldsValues[$data['check-field']]['url'])?isset($this->fieldsValues[$data['check-field']]['url']):$this->fieldsValues[$data['check-field']];
1835
+ $value1 = $this->fieldsValues[$data['check-field']];
1836
+ $value2 = $data['check-value'];
1837
+ switch ($data['check-comparison']) {
1838
+ case '=':
1839
+ case 'equals':
1840
+ if(is_array($value2)){
1841
+ if(in_array($value1, $value2))
1842
+ $return = true;
1843
+ }else{
1844
+ if ($value1 == $value2)
1845
+ $return = true;
1846
+ }
1847
+ break;
1848
+ case '!=':
1849
+ case 'not':
1850
+ if(is_array($value2)){
1851
+ if(!in_array($value1, $value2))
1852
+ $return = true;
1853
+ }else{
1854
+ if ($value1 != $value2)
1855
+ $return = true;
1856
+ }
1857
+ break;
1858
+ case '>':
1859
+ case 'greater':
1860
+ case 'is_larger':
1861
+ if ($value1 > $value2)
1862
+ $return = true;
1863
+ break;
1864
+ case '<':
1865
+ case 'less':
1866
+ case 'is_smaller':
1867
+ if ($value1 < $value2)
1868
+ $return = true;
1869
+ break;
1870
+ case 'contains':
1871
+ if (strpos($value1, $value2) !== false)
1872
+ $return = true;
1873
+ break;
1874
+ case 'doesnt_contain':
1875
+ if (strpos($value1, $value2) === false)
1876
+ $return = true;
1877
+ break;
1878
+ case 'is_empty_or':
1879
+ if (empty($value1) || $value1 == $value2)
1880
+ $return = true;
1881
+ break;
1882
+ case 'not_empty_and':
1883
+ if (!empty($value1) && $value1 != $value2)
1884
+ $return = true;
1885
+ break;
1886
+ }
1887
+ }
1888
+ }
1889
+
1890
+ if (!$return) {
1891
+ $params['class_string'] = ' hiddenFold ';
1892
+ $this->fieldsHidden[$field['id']] = true;
1893
+ }else{
1894
+ $params['class_string'] = ' showFold ';
1895
+ }
1896
+ }
1897
+ return $params;
1898
+ }
1899
+
1900
+ /**
1901
+ * converts an array into a html data string
1902
+ *
1903
+ * @param array $data example input: array('id'=>'true')
1904
+ * @return string $data_string example output: data-id='true'
1905
+ */
1906
+ public function create_data_string($data = array()){
1907
+ $data_string = "";
1908
+
1909
+ foreach($data as $key=>$value){
1910
+ if(is_array($value)) $value = implode("|",$value);
1911
+ $data_string .= " data-$key='$value' ";
1912
+ }
1913
+
1914
+ return $data_string;
1915
+ }
1916
+ } // class
1917
+ } // if
1918
+
ReduxCore/inc/browser.php ADDED
@@ -0,0 +1,1110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Browser detection class
4
+ *
5
+ * @author Original Author: Chris Schuld (http://chrisschuld.com/)
6
+ * @author Modifications for EDD: Chris Christoff
7
+ * @version 1.9
8
+ *
9
+ * Usage:
10
+ * $browser = new Browser();
11
+ * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
12
+ * echo 'You have Firefox version 2 or greater';
13
+ * }
14
+ *
15
+ * User agents sampled from: http://www.useragentstring.com/
16
+ * Based on original work from Gary White (http://apptools.com/phptools/browser/
17
+ *
18
+ * CHANGELOG:
19
+ *
20
+ * 2012-12-26 (v1.9c by Chris Christoff):
21
+ * + Changed vars to publics
22
+ *
23
+ * 2012-12-23 (v1.9b by Chris Christoff):
24
+ * + Removed the browser string return and added spacing.
25
+ * + Also removed return HTML formatting.
26
+ *
27
+ * 2012-12-23 (v1.9a by Chris Christoff):
28
+ * + Split user string and add formatting so we can print a nicely
29
+ * formatted user agent string
30
+ *
31
+ * 2010-08-20 (v1.9):
32
+ * + Added MSN Explorer Browser (legacy)
33
+ * + Added Bing/MSN Robot (Thanks Rob MacDonald)
34
+ * + Added the Android Platform (PLATFORM_ANDROID)
35
+ * + Fixed issue with Android 1.6/2.2 (Thanks Tom Hirashima)
36
+ *
37
+ * 2010-04-27 (v1.8):
38
+ * + Added iPad Support
39
+ *
40
+ * 2010-03-07 (v1.7):
41
+ * + *MAJOR* Rebuild (preg_match and other "slow" routine removal(s))
42
+ * + Almost allof Gary's original code has been replaced
43
+ * + Large PHPUNIT testing environment created to validate new releases and additions
44
+ * + Added FreeBSD Platform
45
+ * + Added OpenBSD Platform
46
+ * + Added NetBSD Platform
47
+ * + Added SunOS Platform
48
+ * + Added OpenSolaris Platform
49
+ * + Added support of the Iceweazel Browser
50
+ * + Added isChromeFrame() call to check if chromeframe is in use
51
+ * + Moved the Opera check in front of the Firefox check due to legacy Opera User Agents
52
+ * + Added the __toString() method (Thanks Deano)
53
+ *
54
+ * 2009-11-15:
55
+ * + Updated the checkes for Firefox
56
+ * + Added the NOKIA platform
57
+ * + Added Checks for the NOKIA brower(s)
58
+ *
59
+ * 2009-11-08:
60
+ * + PHP 5.3 Support
61
+ * + Added support for BlackBerry OS and BlackBerry browser
62
+ * + Added support for the Opera Mini browser
63
+ * + Added additional documenation
64
+ * + Added support for isRobot() and isMobile()
65
+ * + Added support for Opera version 10
66
+ * + Added support for deprecated Netscape Navigator version 9
67
+ * + Added support for IceCat
68
+ * + Added support for Shiretoko
69
+ *
70
+ * 2010-04-27 (v1.8):
71
+ * + Added iPad Support
72
+ *
73
+ * 2009-08-18:
74
+ * + Updated to support PHP 5.3 - removed all deprecated function calls
75
+ * + Updated to remove all double quotes (") -- converted to single quotes (')
76
+ *
77
+ * 2009-04-27:
78
+ * + Updated the IE check to remove a typo and bug (thanks John)
79
+ *
80
+ * 2009-04-22:
81
+ * + Added detection for GoogleBot
82
+ * + Added detection for the W3C Validator.
83
+ * + Added detection for Yahoo! Slurp
84
+ *
85
+ * 2009-03-14:
86
+ * + Added detection for iPods.
87
+ * + Added Platform detection for iPhones
88
+ * + Added Platform detection for iPods
89
+ *
90
+ * 2009-02-16: (Rick Hale)
91
+ * + Added version detection for Android phones.
92
+ *
93
+ * 2008-12-09:
94
+ * + Removed unused constant
95
+ *
96
+ * 2008-11-07:
97
+ * + Added Google's Chrome to the detection list
98
+ * + Added isBrowser(string) to the list of functions special thanks to
99
+ * Daniel 'mavrick' Lang for the function concept (http://mavrick.id.au)
100
+ *
101
+ *
102
+ * Gary White noted: "Since browser detection is so unreliable, I am
103
+ * no longer maintaining this script. You are free to use and or
104
+ * modify/update it as you want, however the author assumes no
105
+ * responsibility for the accuracy of the detected values."
106
+ *
107
+ * Anyone experienced with Gary's script might be interested in these notes:
108
+ *
109
+ * Added class constants
110
+ * Added detection and version detection for Google's Chrome
111
+ * Updated the version detection for Amaya
112
+ * Updated the version detection for Firefox
113
+ * Updated the version detection for Lynx
114
+ * Updated the version detection for WebTV
115
+ * Updated the version detection for NetPositive
116
+ * Updated the version detection for IE
117
+ * Updated the version detection for OmniWeb
118
+ * Updated the version detection for iCab
119
+ * Updated the version detection for Safari
120
+ * Updated Safari to remove mobile devices (iPhone)
121
+ * Added detection for iPhone
122
+ * Added detection for robots
123
+ * Added detection for mobile devices
124
+ * Added detection for BlackBerry
125
+ * Removed Netscape checks (matches heavily with firefox & mozilla)
126
+ */
127
+
128
+
129
+ // Exit if accessed directly
130
+ if( !defined( 'ABSPATH' ) ) exit;
131
+
132
+ if( !class_exists( 'Browser' ) ) {
133
+
134
+ /**
135
+ * Browser detection class
136
+ *
137
+ * @author Chris Schuld
138
+ * @since 1.0
139
+ */
140
+ class Browser {
141
+ public $_agent = '';
142
+ public $_browser_name = '';
143
+ public $_version = '';
144
+ public $_platform = '';
145
+ public $_os = '';
146
+ public $_is_aol = false;
147
+ public $_is_mobile = false;
148
+ public $_is_robot = false;
149
+ public $_aol_version = '';
150
+
151
+ public $BROWSER_UNKNOWN = 'unknown';
152
+ public $VERSION_UNKNOWN = 'unknown';
153
+
154
+ public $BROWSER_OPERA = 'Opera'; // Http://www.opera.com/
155
+ public $BROWSER_OPERA_MINI = 'Opera Mini'; // Http://www.opera.com/mini/
156
+ public $BROWSER_WEBTV = 'WebTV'; // Http://www.webtv.net/pc/
157
+ public $BROWSER_IE = 'Internet Explorer'; // Http://www.microsoft.com/ie/
158
+ public $BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // Http://en.wikipedia.org/wiki/Internet_Explorer_Mobile
159
+ public $BROWSER_KONQUEROR = 'Konqueror'; // Http://www.konqueror.org/
160
+ public $BROWSER_ICAB = 'iCab'; // Http://www.icab.de/
161
+ public $BROWSER_OMNIWEB = 'OmniWeb'; // Http://www.omnigroup.com/applications/omniweb/
162
+ public $BROWSER_FIREBIRD = 'Firebird'; // Http://www.ibphoenix.com/
163
+ public $BROWSER_FIREFOX = 'Firefox'; // Http://www.mozilla.com/en-US/firefox/firefox.html
164
+ public $BROWSER_ICEWEASEL = 'Iceweasel'; // Http://www.geticeweasel.org/
165
+ public $BROWSER_SHIRETOKO = 'Shiretoko'; // Http://wiki.mozilla.org/Projects/shiretoko
166
+ public $BROWSER_MOZILLA = 'Mozilla'; // Http://www.mozilla.com/en-US/
167
+ public $BROWSER_AMAYA = 'Amaya'; // Http://www.w3.org/Amaya/
168
+ public $BROWSER_LYNX = 'Lynx'; // Http://en.wikipedia.org/wiki/Lynx
169
+ public $BROWSER_SAFARI = 'Safari'; // Http://apple.com
170
+ public $BROWSER_IPHONE = 'iPhone'; // Http://apple.com
171
+ public $BROWSER_IPOD = 'iPod'; // Http://apple.com
172
+ public $BROWSER_IPAD = 'iPad'; // Http://apple.com
173
+ public $BROWSER_CHROME = 'Chrome'; // Http://www.google.com/chrome
174
+ public $BROWSER_ANDROID = 'Android'; // Http://www.android.com/
175
+ public $BROWSER_GOOGLEBOT = 'GoogleBot'; // Http://en.wikipedia.org/wiki/Googlebot
176
+ public $BROWSER_SLURP = 'Yahoo! Slurp'; // Http://en.wikipedia.org/wiki/Yahoo!_Slurp
177
+ public $BROWSER_W3CVALIDATOR= 'W3C Validator'; // Http://validator.w3.org/
178
+ public $BROWSER_BLACKBERRY = 'BlackBerry'; // Http://www.blackberry.com/
179
+ public $BROWSER_ICECAT = 'IceCat'; // Http://en.wikipedia.org/wiki/GNU_IceCat
180
+ public $BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // Http://en.wikipedia.org/wiki/Web_Browser_for_S60
181
+ public $BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform
182
+ public $BROWSER_MSN = 'MSN Browser'; // Http://explorer.msn.com/
183
+ public $BROWSER_MSNBOT = 'MSN Bot'; // Http://search.msn.com/msnbot.htm
184
+ // Http://en.wikipedia.org/wiki/Msnbot (used for Bing as well)
185
+
186
+ public $BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // Http://browser.netscape.com/ (DEPRECATED)
187
+ public $BROWSER_GALEON = 'Galeon'; // Http://galeon.sourceforge.net/ (DEPRECATED)
188
+ public $BROWSER_NETPOSITIVE = 'NetPositive'; // Http://en.wikipedia.org/wiki/NetPositive (DEPRECATED)
189
+ public $BROWSER_PHOENIX = 'Phoenix'; // Http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED)
190
+
191
+ public $PLATFORM_UNKNOWN = 'unknown';
192
+ public $PLATFORM_WINDOWS = 'Windows';
193
+ public $PLATFORM_WINDOWS_CE = 'Windows CE';
194
+ public $PLATFORM_APPLE = 'Apple';
195
+ public $PLATFORM_LINUX = 'Linux';
196
+ public $PLATFORM_OS2 = 'OS/2';
197
+ public $PLATFORM_BEOS = 'BeOS';
198
+ public $PLATFORM_IPHONE = 'iPhone';
199
+ public $PLATFORM_IPOD = 'iPod';
200
+ public $PLATFORM_IPAD = 'iPad';
201
+ public $PLATFORM_BLACKBERRY = 'BlackBerry';
202
+ public $PLATFORM_NOKIA = 'Nokia';
203
+ public $PLATFORM_FREEBSD = 'FreeBSD';
204
+ public $PLATFORM_OPENBSD = 'OpenBSD';
205
+ public $PLATFORM_NETBSD = 'NetBSD';
206
+ public $PLATFORM_SUNOS = 'SunOS';
207
+ public $PLATFORM_OPENSOLARIS= 'OpenSolaris';
208
+ public $PLATFORM_ANDROID = 'Android';
209
+
210
+ public $OPERATING_SYSTEM_UNKNOWN = 'unknown';
211
+
212
+ function Browser( $useragent = '' ) {
213
+ $this->reset();
214
+
215
+ if( $useragent != '' ) {
216
+ $this->setUserAgent( $useragent );
217
+ } else {
218
+ $this->determine();
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Reset all properties
224
+ */
225
+ function reset() {
226
+ $this->_agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '';
227
+ $this->_browser_name= $this->BROWSER_UNKNOWN;
228
+ $this->_version = $this->VERSION_UNKNOWN;
229
+ $this->_platform = $this->PLATFORM_UNKNOWN;
230
+ $this->_os = $this->OPERATING_SYSTEM_UNKNOWN;
231
+ $this->_is_aol = false;
232
+ $this->_is_mobile = false;
233
+ $this->_is_robot = false;
234
+ $this->_aol_version = $this->VERSION_UNKNOWN;
235
+ }
236
+
237
+ /**
238
+ * Check to see if the specific browser is valid
239
+ *
240
+ * @param string $browserName
241
+ * @return True if the browser is the specified browser
242
+ */
243
+ function isBrowser( $browserName ) { return( 0 == strcasecmp( $this->_browser_name, trim( $browserName ) ) ); }
244
+
245
+ /**
246
+ * The name of the browser. All return types are from the class contants
247
+ *
248
+ * @return string Name of the browser
249
+ */
250
+ function getBrowser() { return $this->_browser_name; }
251
+
252
+ /**
253
+ * Set the name of the browser
254
+ *
255
+ * @param $browser The name of the Browser
256
+ */
257
+ function setBrowser( $browser ) { return $this->_browser_name = $browser; }
258
+
259
+ /**
260
+ * The name of the platform. All return types are from the class contants
261
+ *
262
+ * @return string Name of the browser
263
+ */
264
+ function getPlatform() { return $this->_platform; }
265
+
266
+ /**
267
+ * Set the name of the platform
268
+ *
269
+ * @param $platform The name of the Platform
270
+ */
271
+ function setPlatform( $platform ) { return $this->_platform = $platform; }
272
+
273
+ /**
274
+ * The version of the browser.
275
+ *
276
+ * @return string Version of the browser (will only contain alpha-numeric characters and a period)
277
+ */
278
+ function getVersion() { return $this->_version; }
279
+
280
+ /**
281
+ * Set the version of the browser
282
+ *
283
+ * @param $version The version of the Browser
284
+ */
285
+ function setVersion( $version ) { $this->_version = preg_replace( '/[^0-9,.,a-z,A-Z-]/', '', $version ); }
286
+
287
+ /**
288
+ * The version of AOL.
289
+ *
290
+ * @return string Version of AOL (will only contain alpha-numeric characters and a period)
291
+ */
292
+ function getAolVersion() { return $this->_aol_version; }
293
+
294
+ /**
295
+ * Set the version of AOL
296
+ *
297
+ * @param $version The version of AOL
298
+ */
299
+ function setAolVersion( $version ) { $this->_aol_version = preg_replace( '/[^0-9,.,a-z,A-Z]/', '', $version ); }
300
+
301
+ /**
302
+ * Is the browser from AOL?
303
+ *
304
+ * @return boolean True if the browser is from AOL otherwise false
305
+ */
306
+ function isAol() { return $this->_is_aol; }
307
+
308
+ /**
309
+ * Is the browser from a mobile device?
310
+ *
311
+ * @return boolean True if the browser is from a mobile device otherwise false
312
+ */
313
+ function isMobile() { return $this->_is_mobile; }
314
+
315
+ /**
316
+ * Is the browser from a robot (ex Slurp,GoogleBot)?
317
+ *
318
+ * @return boolean True if the browser is from a robot otherwise false
319
+ */
320
+ function isRobot() { return $this->_is_robot; }
321
+
322
+ /**
323
+ * Set the browser to be from AOL
324
+ *
325
+ * @param $isAol
326
+ */
327
+ function setAol( $isAol ) { $this->_is_aol = $isAol; }
328
+
329
+ /**
330
+ * Set the Browser to be mobile
331
+ *
332
+ * @param boolean $value is the browser a mobile brower or not
333
+ */
334
+ function setMobile( $value = true ) { $this->_is_mobile = $value; }
335
+
336
+ /**
337
+ * Set the Browser to be a robot
338
+ *
339
+ * @param boolean $value is the browser a robot or not
340
+ */
341
+ function setRobot( $value = true ) { $this->_is_robot = $value; }
342
+
343
+ /**
344
+ * Get the user agent value in use to determine the browser
345
+ *
346
+ * @return string The user agent from the HTTP header
347
+ */
348
+ function getUserAgent() { return $this->_agent; }
349
+
350
+ /**
351
+ * Set the user agent value (the construction will use the HTTP header value - this will overwrite it)
352
+ *
353
+ * @param $agent_string The value for the User Agent
354
+ */
355
+ function setUserAgent( $agent_string ) {
356
+ $this->reset();
357
+ $this->_agent = $agent_string;
358
+ $this->determine();
359
+ }
360
+
361
+ /**
362
+ * Used to determine if the browser is actually "chromeframe"
363
+ *
364
+ * @since 1.7
365
+ * @return boolean True if the browser is using chromeframe
366
+ */
367
+ function isChromeFrame() {
368
+ return( strpos( $this->_agent, 'chromeframe' ) !== false );
369
+ }
370
+
371
+ /**
372
+ * Returns a formatted string with a summary of the details of the browser.
373
+ *
374
+ * @return string formatted string with a summary of the browser
375
+ */
376
+ function __toString() {
377
+ $text1 = $this->getUserAgent(); // Grabs the UA string
378
+ $UAline1 = substr( $text1, 0, 32 ); // The first line we print should only be the first 32 characters of the UA string
379
+ $text2 = $this->getUserAgent(); // Now we grab it again and save it to a string
380
+ $towrapUA = str_replace( $UAline1, '', $text2 ); // The rest of the printoff (other than first line) is equivalent
381
+ // to the whole string minus the part we printed off. IE
382
+ // User Agent: thefirst32charactersfromUAline1
383
+ // the rest of it is now stored in
384
+ // $text2 to be printed off
385
+ // But we need to add spaces before each line that is split other than line 1
386
+ $space = '';
387
+ for( $i = 0; $i < 25; $i++ ) { $space .= ' '; }
388
+
389
+ // Now we split the remaining string of UA ($text2) into lines that are prefixed by spaces for formatting
390
+ $wordwrapped = chunk_split( $towrapUA, 32, "\n $space" );
391
+
392
+ return "Platform: {$this->getPlatform()} \n".
393
+ "Browser Name: {$this->getBrowser()} \n" .
394
+ "Browser Version: {$this->getVersion()} \n" .
395
+ "User Agent String: $UAline1 \n\t\t\t " .
396
+ "$wordwrapped";
397
+ }
398
+
399
+ /**
400
+ * Protected routine to calculate and determine what the browser is in use (including platform)
401
+ */
402
+ function determine() {
403
+ $this->checkPlatform();
404
+ $this->checkBrowsers();
405
+ $this->checkForAol();
406
+ }
407
+
408
+ /**
409
+ * Protected routine to determine the browser type
410
+ *
411
+ * @return boolean True if the browser was detected otherwise false
412
+ */
413
+ function checkBrowsers() {
414
+ return (
415
+ // Well-known, well-used
416
+ // Special Notes:
417
+ // (1) Opera must be checked before FireFox due to the odd
418
+ // user agents used in some older versions of Opera
419
+ // (2) WebTV is strapped onto Internet Explorer so we must
420
+ // check for WebTV before IE
421
+ // (3) (deprecated) Galeon is based on Firefox and needs to be
422
+ // tested before Firefox is tested
423
+ // (4) OmniWeb is based on Safari so OmniWeb check must occur
424
+ // before Safari
425
+ // (5) Netscape 9+ is based on Firefox so Netscape checks
426
+ // before FireFox are necessary
427
+ $this->checkBrowserWebTv() ||
428
+ $this->checkBrowserInternetExplorer() ||
429
+ $this->checkBrowserOpera() ||
430
+ $this->checkBrowserGaleon() ||
431
+ $this->checkBrowserNetscapeNavigator9Plus() ||
432
+ $this->checkBrowserFirefox() ||
433
+ $this->checkBrowserChrome() ||
434
+ $this->checkBrowserOmniWeb() ||
435
+
436
+ // Common mobile
437
+ $this->checkBrowserAndroid() ||
438
+ $this->checkBrowseriPad() ||
439
+ $this->checkBrowseriPod() ||
440
+ $this->checkBrowseriPhone() ||
441
+ $this->checkBrowserBlackBerry() ||
442
+ $this->checkBrowserNokia() ||
443
+
444
+ // Common bots
445
+ $this->checkBrowserGoogleBot() ||
446
+ $this->checkBrowserMSNBot() ||
447
+ $this->checkBrowserSlurp() ||
448
+
449
+ // WebKit base check (post mobile and others)
450
+ $this->checkBrowserSafari() ||
451
+
452
+ // Everyone else
453
+ $this->checkBrowserNetPositive() ||
454
+ $this->checkBrowserFirebird() ||
455
+ $this->checkBrowserKonqueror() ||
456
+ $this->checkBrowserIcab() ||
457
+ $this->checkBrowserPhoenix() ||
458
+ $this->checkBrowserAmaya() ||
459
+ $this->checkBrowserLynx() ||
460
+
461
+ $this->checkBrowserShiretoko() ||
462
+ $this->checkBrowserIceCat() ||
463
+ $this->checkBrowserW3CValidator() ||
464
+ $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */
465
+ );
466
+ }
467
+
468
+ /**
469
+ * Determine if the user is using a BlackBerry (last updated 1.7)
470
+ *
471
+ * @return boolean True if the browser is the BlackBerry browser otherwise false
472
+ */
473
+ function checkBrowserBlackBerry() {
474
+ if( stripos( $this->_agent,'blackberry' ) !== false ) {
475
+ $aresult = explode( "/", stristr( $this->_agent, "BlackBerry" ) );
476
+ $aversion = explode( ' ', $aresult[1] );
477
+ $this->setVersion( $aversion[0] );
478
+ $this->_browser_name = $this->BROWSER_BLACKBERRY;
479
+ $this->setMobile( true );
480
+ return true;
481
+ }
482
+ return false;
483
+ }
484
+
485
+ /**
486
+ * Determine if the user is using an AOL User Agent (last updated 1.7)
487
+ *
488
+ * @return boolean True if the browser is from AOL otherwise false
489
+ */
490
+ function checkForAol() {
491
+ $this->setAol( false );
492
+ $this->setAolVersion( $this->VERSION_UNKNOWN );
493
+
494
+ if( stripos( $this->_agent,'aol' ) !== false ) {
495
+ $aversion = explode( ' ',stristr( $this->_agent, 'AOL' ) );
496
+ $this->setAol( true );
497
+ $this->setAolVersion( preg_replace( '/[^0-9\.a-z]/i', '', $aversion[1] ) );
498
+ return true;
499
+ }
500
+ return false;
501
+ }
502
+
503
+ /**
504
+ * Determine if the browser is the GoogleBot or not (last updated 1.7)
505
+ *
506
+ * @return boolean True if the browser is the GoogletBot otherwise false
507
+ */
508
+ function checkBrowserGoogleBot() {
509
+ if( stripos( $this->_agent, 'googlebot' ) !== false ) {
510
+ $aresult = explode( '/', stristr( $this->_agent, 'googlebot' ) );
511
+ $aversion = explode( ' ', $aresult[1] );
512
+ $this->setVersion( str_replace( ';', '', $aversion[0] ) );
513
+ $this->_browser_name = $this->BROWSER_GOOGLEBOT;
514
+ $this->setRobot( true );
515
+ return true;
516
+ }
517
+ return false;
518
+ }
519
+
520
+ /**
521
+ * Determine if the browser is the MSNBot or not (last updated 1.9)
522
+ *
523
+ * @return boolean True if the browser is the MSNBot otherwise false
524
+ */
525
+ function checkBrowserMSNBot() {
526
+ if( stripos( $this->_agent, "msnbot" ) !== false ) {
527
+ $aresult = explode( "/", stristr( $this->_agent, "msnbot" ) );
528
+ $aversion = explode( " ",$aresult[1] );
529
+ $this->setVersion( str_replace( ";","",$aversion[0] ) );
530
+ $this->_browser_name = $this->BROWSER_MSNBOT;
531
+ $this->setRobot( true );
532
+ return true;
533
+ }
534
+ return false;
535
+ }
536
+
537
+ /**
538
+ * Determine if the browser is the W3C Validator or not (last updated 1.7)
539
+ *
540
+ * @return boolean True if the browser is the W3C Validator otherwise false
541
+ */
542
+ function checkBrowserW3CValidator() {
543
+ if( stripos( $this->_agent, 'W3C-checklink' ) !== false ) {
544
+ $aresult = explode( '/', stristr( $this->_agent, 'W3C-checklink' ) );
545
+ $aversion = explode( ' ', $aresult[1] );
546
+ $this->setVersion( $aversion[0] );
547
+ $this->_browser_name = $this->BROWSER_W3CVALIDATOR;
548
+ return true;
549
+ } else if( stripos( $this->_agent, 'W3C_Validator' ) !== false ) {
550
+ // Some of the Validator versions do not delineate w/ a slash - add it back in
551
+ $ua = str_replace( "W3C_Validator ", "W3C_Validator/", $this->_agent );
552
+ $aresult = explode( '/', stristr( $ua, 'W3C_Validator' ) );
553
+ $aversion = explode( ' ', $aresult[1] );
554
+ $this->setVersion( $aversion[0] );
555
+ $this->_browser_name = $this->BROWSER_W3CVALIDATOR;
556
+ return true;
557
+ }
558
+ return false;
559
+ }
560
+
561
+ /**
562
+ * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7)
563
+ *
564
+ * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false
565
+ */
566
+ function checkBrowserSlurp() {
567
+ if( stripos( $this->_agent, 'slurp' ) !== false ) {
568
+ $aresult = explode( '/', stristr( $this->_agent, 'Slurp' ) );
569
+ $aversion = explode( ' ', $aresult[1] );
570
+ $this->setVersion( $aversion[0] );
571
+ $this->_browser_name = $this->BROWSER_SLURP;
572
+ $this->setRobot( true );
573
+ $this->setMobile( false );
574
+ return true;
575
+ }
576
+ return false;
577
+ }
578
+
579
+ /**
580
+ * Determine if the browser is Internet Explorer or not (last updated 1.7)
581
+ *
582
+ * @return boolean True if the browser is Internet Explorer otherwise false
583
+ */
584
+ function checkBrowserInternetExplorer() {
585
+
586
+ // Test for v1 - v1.5 IE
587
+ if( stripos( $this->_agent,'microsoft internet explorer' ) !== false ) {
588
+ $this->setBrowser( $this->BROWSER_IE );
589
+ $this->setVersion( '1.0' );
590
+ $aresult = stristr( $this->_agent, '/' );
591
+ if( preg_match( '/308|425|426|474|0b1/i', $aresult ) ) {
592
+ $this->setVersion( '1.5' );
593
+ }
594
+ return true;
595
+ // Test for versions > 1.5
596
+ } else if( stripos( $this->_agent, 'msie' ) !== false && stripos( $this->_agent, 'opera' ) === false ) {
597
+ // See if the browser is the odd MSN Explorer
598
+ if( stripos( $this->_agent, 'msnb' ) !== false ) {
599
+ $aresult = explode( ' ', stristr( str_replace( ';', '; ', $this->_agent ), 'MSN' ) );
600
+ $this->setBrowser( $this->BROWSER_MSN );
601
+ $this->setVersion( str_replace( array( '(', ')', ';' ), '', $aresult[1] ) );
602
+ return true;
603
+ }
604
+ $aresult = explode( ' ', stristr( str_replace( ';', '; ', $this->_agent ), 'msie' ) );
605
+ $this->setBrowser( $this->BROWSER_IE );
606
+ $this->setVersion( str_replace( array( '(', ')', ';' ), '', $aresult[1] ) );
607
+ return true;
608
+ // Test for Pocket IE
609
+ } else if( stripos( $this->_agent, 'mspie' ) !== false || stripos( $this->_agent, 'pocket' ) !== false ) {
610
+ $aresult = explode( ' ', stristr( $this->_agent, 'mspie' ) );
611
+ $this->setPlatform( $this->PLATFORM_WINDOWS_CE );
612
+ $this->setBrowser( $this->BROWSER_POCKET_IE );
613
+ $this->setMobile( true );
614
+
615
+ if( stripos( $this->_agent, 'mspie' ) !== false ) {
616
+ $this->setVersion( $aresult[1] );
617
+ } else {
618
+ $aversion = explode( '/', $this->_agent );
619
+ $this->setVersion( $aversion[1] );
620
+ }
621
+ return true;
622
+ }
623
+ return false;
624
+ }
625
+
626
+ /**
627
+ * Determine if the browser is Opera or not (last updated 1.7)
628
+ *
629
+ * @return boolean True if the browser is Opera otherwise false
630
+ */
631
+ function checkBrowserOpera() {
632
+ if( stripos( $this->_agent, 'opera mini' ) !== false ) {
633
+ $resultant = stristr( $this->_agent, 'opera mini' );
634
+ if( preg_match( '/\//', $resultant ) ) {
635
+ $aresult = explode( '/', $resultant );
636
+ $aversion = explode( ' ', $aresult[1] );
637
+ $this->setVersion( $aversion[0] );
638
+ } else {
639
+ $aversion = explode( ' ',stristr( $resultant, 'opera mini' ) );
640
+ $this->setVersion( $aversion[1] );
641
+ }
642
+ $this->_browser_name = $this->BROWSER_OPERA_MINI;
643
+ $this->setMobile( true );
644
+ return true;
645
+ } else if( stripos( $this->_agent, 'opera' ) !== false ) {
646
+ $resultant = stristr( $this->_agent, 'opera' );
647
+ if( preg_match( '/Version\/(10.*)$/', $resultant, $matches ) ) {
648
+ $this->setVersion( $matches[1] );
649
+ } else if( preg_match( '/\//', $resultant ) ) {
650
+ $aresult = explode( '/', str_replace( "(", " ", $resultant ) );
651
+ $aversion = explode( ' ', $aresult[1] );
652
+ $this->setVersion( $aversion[0] );
653
+ } else {
654
+ $aversion = explode( ' ', stristr( $resultant, 'opera' ) );
655
+ $this->setVersion( isset( $aversion[1] ) ? $aversion[1] : "" );
656
+ }
657
+ $this->_browser_name = $this->BROWSER_OPERA;
658
+ return true;
659
+ }
660
+ return false;
661
+ }
662
+
663
+ /**
664
+ * Determine if the browser is Chrome or not (last updated 1.7)
665
+ *
666
+ * @return boolean True if the browser is Chrome otherwise false
667
+ */
668
+ function checkBrowserChrome() {
669
+ if( stripos( $this->_agent, 'Chrome' ) !== false ) {
670
+ $aresult = explode( '/', stristr( $this->_agent, 'Chrome' ) );
671
+ $aversion = explode( ' ', $aresult[1] );
672
+ $this->setVersion( $aversion[0] );
673
+ $this->setBrowser( $this->BROWSER_CHROME );
674
+ return true;
675
+ }
676
+ return false;
677
+ }
678
+
679
+
680
+ /**
681
+ * Determine if the browser is WebTv or not (last updated 1.7)
682
+ *
683
+ * @return boolean True if the browser is WebTv otherwise false
684
+ */
685
+ function checkBrowserWebTv() {
686
+ if( stripos( $this->_agent, 'webtv' ) !== false ) {
687
+ $aresult = explode( '/', stristr( $this->_agent, 'webtv' ) );
688
+ $aversion = explode( ' ', $aresult[1] );
689
+ $this->setVersion( $aversion[0] );
690
+ $this->setBrowser( $this->BROWSER_WEBTV );
691
+ return true;
692
+ }
693
+ return false;
694
+ }
695
+
696
+ /**
697
+ * Determine if the browser is NetPositive or not (last updated 1.7)
698
+ *
699
+ * @return boolean True if the browser is NetPositive otherwise false
700
+ */
701
+ function checkBrowserNetPositive() {
702
+ if( stripos( $this->_agent, 'NetPositive' ) !== false ) {
703
+ $aresult = explode( '/', stristr( $this->_agent, 'NetPositive' ) );
704
+ $aversion = explode( ' ', $aresult[1] );
705
+ $this->setVersion( str_replace( array( '(', ')', ';' ), '', $aversion[0] ) );
706
+ $this->setBrowser( $this->BROWSER_NETPOSITIVE );
707
+ return true;
708
+ }
709
+ return false;
710
+ }
711
+
712
+ /**
713
+ * Determine if the browser is Galeon or not (last updated 1.7)
714
+ *
715
+ * @return boolean True if the browser is Galeon otherwise false
716
+ */
717
+ function checkBrowserGaleon() {
718
+ if( stripos( $this->_agent, 'galeon' ) !== false ) {
719
+ $aresult = explode( ' ', stristr( $this->_agent, 'galeon' ) );
720
+ $aversion = explode( '/', $aresult[0] );
721
+ $this->setVersion( $aversion[1] );
722
+ $this->setBrowser( $this->BROWSER_GALEON );
723
+ return true;
724
+ }
725
+ return false;
726
+ }
727
+
728
+ /**
729
+ * Determine if the browser is Konqueror or not (last updated 1.7)
730
+ *
731
+ * @return boolean True if the browser is Konqueror otherwise false
732
+ */
733
+ function checkBrowserKonqueror() {
734
+ if( stripos( $this->_agent, 'Konqueror' ) !== false ) {
735
+ $aresult = explode( ' ', stristr( $this->_agent, 'Konqueror' ) );
736
+ $aversion = explode( '/', $aresult[0] );
737
+ $this->setVersion( $aversion[1] );
738
+ $this->setBrowser( $this->BROWSER_KONQUEROR );
739
+ return true;
740
+ }
741
+ return false;
742
+ }
743
+
744
+ /**
745
+ * Determine if the browser is iCab or not (last updated 1.7)
746
+ *
747
+ * @return boolean True if the browser is iCab otherwise false
748
+ */
749
+ function checkBrowserIcab() {
750
+ if( stripos( $this->_agent, 'icab' ) !== false ) {
751
+ $aversion = explode( ' ', stristr( str_replace( '/', ' ', $this->_agent ), 'icab' ) );
752
+ $this->setVersion( $aversion[1] );
753
+ $this->setBrowser( $this->BROWSER_ICAB );
754
+ return true;
755
+ }
756
+ return false;
757
+ }
758
+
759
+ /**
760
+ * Determine if the browser is OmniWeb or not (last updated 1.7)
761
+ *
762
+ * @return boolean True if the browser is OmniWeb otherwise false
763
+ */
764
+ function checkBrowserOmniWeb() {
765
+ if( stripos( $this->_agent, 'omniweb' ) !== false ) {
766
+ $aresult = explode( '/', stristr( $this->_agent, 'omniweb' ) );
767
+ $aversion = explode( ' ', isset( $aresult[1] ) ? $aresult[1] : "" );
768
+ $this->setVersion( $aversion[0] );
769
+ $this->setBrowser( $this->BROWSER_OMNIWEB );
770
+ return true;
771
+ }
772
+ return false;
773
+ }
774
+
775
+ /**
776
+ * Determine if the browser is Phoenix or not (last updated 1.7)
777
+ *
778
+ * @return boolean True if the browser is Phoenix otherwise false
779
+ */
780
+ function checkBrowserPhoenix() {
781
+ if( stripos( $this->_agent, 'Phoenix' ) !== false ) {
782
+ $aversion = explode( '/', stristr( $this->_agent, 'Phoenix' ) );
783
+ $this->setVersion( $aversion[1] );
784
+ $this->setBrowser( $this->BROWSER_PHOENIX );
785
+ return true;
786
+ }
787
+ return false;
788
+ }
789
+
790
+ /**
791
+ * Determine if the browser is Firebird or not (last updated 1.7)
792
+ *
793
+ * @return boolean True if the browser is Firebird otherwise false
794
+ */
795
+ function checkBrowserFirebird() {
796
+ if( stripos( $this->_agent, 'Firebird' ) !== false ) {
797
+ $aversion = explode( '/', stristr( $this->_agent, 'Firebird' ) );
798
+ $this->setVersion( $aversion[1] );
799
+ $this->setBrowser( $this->BROWSER_FIREBIRD );
800
+ return true;
801
+ }
802
+ return false;
803
+ }
804
+
805
+ /**
806
+ * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7)
807
+ * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008)
808
+ *
809
+ * @return boolean True if the browser is Netscape Navigator 9+ otherwise false
810
+ */
811
+ function checkBrowserNetscapeNavigator9Plus() {
812
+ if( stripos( $this->_agent, 'Firefox' ) !== false && preg_match( '/Navigator\/([^ ]*)/i', $this->_agent, $matches ) ) {
813
+ $this->setVersion( $matches[1] );
814
+ $this->setBrowser( $this->BROWSER_NETSCAPE_NAVIGATOR );
815
+ return true;
816
+ } else if( stripos( $this->_agent, 'Firefox' ) === false && preg_match( '/Netscape6?\/([^ ]*)/i', $this->_agent, $matches ) ) {
817
+ $this->setVersion( $matches[1] );
818
+ $this->setBrowser( $this->BROWSER_NETSCAPE_NAVIGATOR );
819
+ return true;
820
+ }
821
+ return false;
822
+ }
823
+
824
+ /**
825
+ * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7)
826
+ *
827
+ * @return boolean True if the browser is Shiretoko otherwise false
828
+ */
829
+ function checkBrowserShiretoko() {
830
+ if( stripos( $this->_agent, 'Mozilla' ) !== false && preg_match( '/Shiretoko\/([^ ]*)/i', $this->_agent, $matches ) ) {
831
+ $this->setVersion( $matches[1] );
832
+ $this->setBrowser( $this->BROWSER_SHIRETOKO );
833
+ return true;
834
+ }
835
+ return false;
836
+ }
837
+
838
+ /**
839
+ * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7)
840
+ *
841
+ * @return boolean True if the browser is Ice Cat otherwise false
842
+ */
843
+ function checkBrowserIceCat() {
844
+ if( stripos( $this->_agent, 'Mozilla' ) !== false && preg_match( '/IceCat\/([^ ]*)/i', $this->_agent, $matches ) ) {
845
+ $this->setVersion( $matches[1] );
846
+ $this->setBrowser( $this->BROWSER_ICECAT );
847
+ return true;
848
+ }
849
+ return false;
850
+ }
851
+
852
+ /**
853
+ * Determine if the browser is Nokia or not (last updated 1.7)
854
+ *
855
+ * @return boolean True if the browser is Nokia otherwise false
856
+ */
857
+ function checkBrowserNokia() {
858
+ if( preg_match( "/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches ) ) {
859
+ $this->setVersion( $matches[2] );
860
+ if( stripos( $this->_agent, 'Series60' ) !== false || strpos( $this->_agent,'S60' ) !== false ) {
861
+ $this->setBrowser( $this->BROWSER_NOKIA_S60 );
862
+ } else {
863
+ $this->setBrowser( $this->BROWSER_NOKIA );
864
+ }
865
+ $this->setMobile( true );
866
+ return true;
867
+ }
868
+ return false;
869
+ }
870
+
871
+ /**
872
+ * Determine if the browser is Firefox or not (last updated 1.7)
873
+ *
874
+ * @return boolean True if the browser is Firefox otherwise false
875
+ */
876
+ function checkBrowserFirefox() {
877
+ if( stripos( $this->_agent, 'safari' ) === false ) {
878
+ if( preg_match( "/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches ) ) {
879
+ $this->setVersion( $matches[1] );
880
+ $this->setBrowser( $this->BROWSER_FIREFOX );
881
+ return true;
882
+ } else if( preg_match( "/Firefox$/i", $this->_agent, $matches) ) {
883
+ $this->setVersion( "" );
884
+ $this->setBrowser( $this->BROWSER_FIREFOX );
885
+ return true;
886
+ }
887
+ }
888
+ return false;
889
+ }
890
+
891
+ /**
892
+ * Determine if the browser is Firefox or not (last updated 1.7)
893
+ *
894
+ * @return boolean True if the browser is Firefox otherwise false
895
+ */
896
+ function checkBrowserIceweasel() {
897
+ if( stripos( $this->_agent, 'Iceweasel' ) !== false ) {
898
+ $aresult = explode( '/', stristr( $this->_agent, 'Iceweasel' ) );
899
+ $aversion = explode( ' ',$aresult[1] );
900
+ $this->setVersion( $aversion[0] );
901
+ $this->setBrowser( $this->BROWSER_ICEWEASEL );
902
+ return true;
903
+ }
904
+ return false;
905
+ }
906
+
907
+ /**
908
+ * Determine if the browser is Mozilla or not (last updated 1.7)
909
+ *
910
+ * @return boolean True if the browser is Mozilla otherwise false
911
+ */
912
+ function checkBrowserMozilla() {
913
+ if( stripos( $this->_agent, 'mozilla' ) !== false && preg_match( '/rv:[0-9].[0-9][a-b]?/i', $this->_agent ) && stripos( $this->_agent, 'netscape' ) === false ) {
914
+ $aversion = explode( ' ', stristr( $this->_agent, 'rv:' ) );
915
+ preg_match( '/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion );
916
+ $this->setVersion( str_replace('rv:', '', $aversion[0] ) );
917
+ $this->setBrowser( $this->BROWSER_MOZILLA );
918
+ return true;
919
+ } else if( stripos( $this->_agent, 'mozilla' ) !== false && preg_match( '/rv:[0-9]\.[0-9]/i', $this->_agent ) && stripos( $this->_agent, 'netscape' ) === false ) {
920
+ $aversion = explode( '', stristr( $this->_agent, 'rv:' ) );
921
+ $this->setVersion( str_replace( 'rv:', '', $aversion[0] ) );
922
+ $this->setBrowser( $this->BROWSER_MOZILLA );
923
+ return true;
924
+ } else if( stripos( $this->_agent, 'mozilla' ) !== false && preg_match( '/mozilla\/([^ ]*)/i', $this->_agent, $matches ) && stripos( $this->_agent, 'netscape' ) === false ) {
925
+ $this->setVersion( $matches[1] );
926
+ $this->setBrowser( $this->BROWSER_MOZILLA );
927
+ return true;
928
+ }
929
+ return false;
930
+ }
931
+
932
+ /**
933
+ * Determine if the browser is Lynx or not (last updated 1.7)
934
+ *
935
+ * @return boolean True if the browser is Lynx otherwise false
936
+ */
937
+ function checkBrowserLynx() {
938
+ if( stripos( $this->_agent, 'lynx' ) !== false ) {
939
+ $aresult = explode( '/', stristr( $this->_agent, 'Lynx' ) );
940
+ $aversion = explode( ' ', ( isset( $aresult[1] ) ? $aresult[1] : "" ) );
941
+ $this->setVersion( $aversion[0] );
942
+ $this->setBrowser( $this->BROWSER_LYNX );
943
+ return true;
944
+ }
945
+ return false;
946
+ }
947
+
948
+ /**
949
+ * Determine if the browser is Amaya or not (last updated 1.7)
950
+ *
951
+ * @return boolean True if the browser is Amaya otherwise false
952
+ */
953
+ function checkBrowserAmaya() {
954
+ if( stripos( $this->_agent, 'amaya' ) !== false ) {
955
+ $aresult = explode( '/', stristr( $this->_agent, 'Amaya' ) );
956
+ $aversion = explode( ' ', $aresult[1] );
957
+ $this->setVersion( $aversion[0] );
958
+ $this->setBrowser( $this->BROWSER_AMAYA );
959
+ return true;
960
+ }
961
+ return false;
962
+ }
963
+
964
+ /**
965
+ * Determine if the browser is Safari or not (last updated 1.7)
966
+ *
967
+ * @return boolean True if the browser is Safari otherwise false
968
+ */
969
+ function checkBrowserSafari() {
970
+ if( stripos( $this->_agent, 'Safari' ) !== false && stripos( $this->_agent, 'iPhone' ) === false && stripos( $this->_agent, 'iPod' ) === false ) {
971
+ $aresult = explode( '/', stristr( $this->_agent, 'Version' ) );
972
+ if( isset( $aresult[1] ) ) {
973
+ $aversion = explode( ' ', $aresult[1] );
974
+ $this->setVersion( $aversion[0] );
975
+ } else {
976
+ $this->setVersion( $this->VERSION_UNKNOWN );
977
+ }
978
+ $this->setBrowser( $this->BROWSER_SAFARI );
979
+ return true;
980
+ }
981
+ return false;
982
+ }
983
+
984
+ /**
985
+ * Determine if the browser is iPhone or not (last updated 1.7)
986
+ *
987
+ * @return boolean True if the browser is iPhone otherwise false
988
+ */
989
+ function checkBrowseriPhone() {
990
+ if( stripos( $this->_agent, 'iPhone' ) !== false ) {
991
+ $aresult = explode( '/', stristr( $this->_agent, 'Version' ) );
992
+ if( isset( $aresult[1] ) ) {
993
+ $aversion = explode( ' ', $aresult[1] );
994
+ $this->setVersion( $aversion[0] );
995
+ } else {
996
+ $this->setVersion( $this->VERSION_UNKNOWN );
997
+ }
998
+ $this->setMobile( true );
999
+ $this->setBrowser( $this->BROWSER_IPHONE );
1000
+ return true;
1001
+ }
1002
+ return false;
1003
+ }
1004
+
1005
+ /**
1006
+ * Determine if the browser is iPod or not (last updated 1.7)
1007
+ *
1008
+ * @return boolean True if the browser is iPod otherwise false
1009
+ */
1010
+ function checkBrowseriPad() {
1011
+ if( stripos( $this->_agent, 'iPad' ) !== false ) {
1012
+ $aresult = explode( '/', stristr( $this->_agent, 'Version' ) );
1013
+ if( isset( $aresult[1] ) ) {
1014
+ $aversion = explode( ' ', $aresult[1] );
1015
+ $this->setVersion( $aversion[0] );
1016
+ } else {
1017
+ $this->setVersion( $this->VERSION_UNKNOWN );
1018
+ }
1019
+ $this->setMobile( true );
1020
+ $this->setBrowser( $this->BROWSER_IPAD );
1021
+ return true;
1022
+ }
1023
+ return false;
1024
+ }
1025
+
1026
+ /**
1027
+ * Determine if the browser is iPod or not (last updated 1.7)
1028
+ *
1029
+ * @return boolean True if the browser is iPod otherwise false
1030
+ */
1031
+ function checkBrowseriPod() {
1032
+ if( stripos( $this->_agent, 'iPod' ) !== false ) {
1033
+ $aresult = explode( '/', stristr( $this->_agent, 'Version' ) );
1034
+ if( isset( $aresult[1] ) ) {
1035
+ $aversion = explode( ' ', $aresult[1] );
1036
+ $this->setVersion( $aversion[0] );
1037
+ } else {
1038
+ $this->setVersion( $this->VERSION_UNKNOWN );
1039
+ }
1040
+ $this->setMobile( true );
1041
+ $this->setBrowser( $this->BROWSER_IPOD );
1042
+ return true;
1043
+ }
1044
+ return false;
1045
+ }
1046
+
1047
+ /**
1048
+ * Determine if the browser is Android or not (last updated 1.7)
1049
+ *
1050
+ * @return boolean True if the browser is Android otherwise false
1051
+ */
1052
+ function checkBrowserAndroid() {
1053
+ if( stripos( $this->_agent, 'Android' ) !== false ) {
1054
+ $aresult = explode( ' ', stristr( $this->_agent, 'Android' ) );
1055
+ if( isset( $aresult[1] ) ) {
1056
+ $aversion = explode( ' ', $aresult[1] );
1057
+ $this->setVersion( $aversion[0] );
1058
+ } else {
1059
+ $this->setVersion( $this->VERSION_UNKNOWN );
1060
+ }
1061
+ $this->setMobile( true );
1062
+ $this->setBrowser( $this->BROWSER_ANDROID );
1063
+ return true;
1064
+ }
1065
+ return false;
1066
+ }
1067
+
1068
+ /**
1069
+ * Determine the user's platform (last updated 1.7)
1070
+ */
1071
+ function checkPlatform() {
1072
+ if( stripos( $this->_agent, 'windows' ) !== false ) {
1073
+ $this->_platform = $this->PLATFORM_WINDOWS;
1074
+ } elseif( stripos( $this->_agent, 'iPad' ) !== false ) {
1075
+ $this->_platform = $this->PLATFORM_IPAD;
1076
+ } elseif( stripos( $this->_agent, 'iPod' ) !== false ) {
1077
+ $this->_platform = $this->PLATFORM_IPOD;
1078
+ } elseif( stripos( $this->_agent, 'iPhone' ) !== false ) {
1079
+ $this->_platform = $this->PLATFORM_IPHONE;
1080
+ } elseif( stripos( $this->_agent, 'mac' ) !== false ) {
1081
+ $this->_platform = $this->PLATFORM_APPLE;
1082
+ } elseif( stripos( $this->_agent, 'android' ) !== false ) {
1083
+ $this->_platform = $this->PLATFORM_ANDROID;
1084
+ } elseif( stripos( $this->_agent, 'linux' ) !== false ) {
1085
+ $this->_platform = $this->PLATFORM_LINUX;
1086
+ } elseif( stripos( $this->_agent, 'Nokia' ) !== false ) {
1087
+ $this->_platform = $this->PLATFORM_NOKIA;
1088
+ } elseif( stripos( $this->_agent, 'BlackBerry' ) !== false ) {
1089
+ $this->_platform = $this->PLATFORM_BLACKBERRY;
1090
+ } elseif( stripos( $this->_agent,'FreeBSD' ) !== false ) {
1091
+ $this->_platform = $this->PLATFORM_FREEBSD;
1092
+ } elseif( stripos( $this->_agent,'OpenBSD' ) !== false ) {
1093
+ $this->_platform = $this->PLATFORM_OPENBSD;
1094
+ } elseif( stripos( $this->_agent,'NetBSD' ) !== false ) {
1095
+ $this->_platform = $this->PLATFORM_NETBSD;
1096
+ } elseif( stripos( $this->_agent, 'OpenSolaris' ) !== false ) {
1097
+ $this->_platform = $this->PLATFORM_OPENSOLARIS;
1098
+ } elseif( stripos( $this->_agent, 'SunOS' ) !== false ) {
1099
+ $this->_platform = $this->PLATFORM_SUNOS;
1100
+ } elseif( stripos( $this->_agent, 'OS\/2' ) !== false ) {
1101
+ $this->_platform = $this->PLATFORM_OS2;
1102
+ } elseif( stripos( $this->_agent, 'BeOS' ) !== false ) {
1103
+ $this->_platform = $this->PLATFORM_BEOS;
1104
+ } elseif( stripos( $this->_agent, 'win' ) !== false ) {
1105
+ $this->_platform = $this->PLATFORM_WINDOWS;
1106
+ }
1107
+ }
1108
+ }
1109
+ }
1110
+ ?>
ReduxCore/inc/fields/border/field_border.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ #redux-main .redux-border-style{width:100px}
2
+ #redux-main .redux-border select{margin-right:5px}
ReduxCore/inc/fields/border/field_border.less ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ #redux-main {
2
+ .redux-border-style {
3
+ width: 100px;
4
+ }
5
+ .redux-border select {
6
+ margin-right: 5px;
7
+ }
8
+ }
ReduxCore/inc/fields/border/field_border.php ADDED
@@ -0,0 +1,182 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Border
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys (dovy)
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_border' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_border class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_border extends ReduxFramework{
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @param array $field
44
+ * @param array $value
45
+ * @param array $parent
46
+ * @return void
47
+ */
48
+ public function __construct( $field = array(), $value = '', $parent ) {
49
+
50
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
51
+
52
+ $this->field = $field;
53
+ $this->value = $value;
54
+ }
55
+
56
+
57
+ /**
58
+ * Field Render Function.
59
+ *
60
+ * Takes the vars and outputs the HTML for the field in the settings
61
+ *
62
+ * @since ReduxFramework 1.0.0
63
+ * @access public
64
+ * @return void
65
+ */
66
+ public function render() {
67
+
68
+ // No errors please
69
+ $defaults = array(
70
+ 'border-color' => '',
71
+ 'border-style' => '',
72
+ 'border-width' => '',
73
+ 'units' => 'px'
74
+ );
75
+ $this->field = wp_parse_args( $this->field, $defaults );
76
+ $this->value = wp_parse_args( $this->value, $defaults );
77
+
78
+ if ( empty( $this->value['units'] ) || ( !in_array($this->value['units'], array( '%, in, cm, mm, em, ex, pt, pc, px' ) ) ) ) {
79
+ if ( empty( $this->field['units'] ) || ( !in_array($this->field['units'], array( '%, in, cm, mm, em, ex, pt, pc, px' ) ) ) ) {
80
+ $this->field['units'] = "px";
81
+ }
82
+ $this->value['units'] = $this->field['units'];
83
+ }
84
+
85
+ if( empty( $this->field['min'] ) )
86
+ $this->field['min'] = 0;
87
+
88
+ if( empty( $this->field['max'] ) )
89
+ $this->field['max'] = 10;
90
+
91
+
92
+
93
+ $options = array(
94
+ '' => 'None',
95
+ 'solid' => 'Solid',
96
+ 'dashed' => 'Dashed',
97
+ 'dotted' => 'Dotted'
98
+ );
99
+
100
+ echo '<div class="redux-border">';
101
+
102
+ echo '<select original-title="' . __( 'Border size', 'redux-framework' ) . '" id="' . $this->field['id'] . '[border-width]" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][border-width]" class="tips redux-border-size mini' . $this->field['class'] . '" rows="6" data-id="'.$this->field['id'].'">';
103
+
104
+ for( $k = $this->field['min']; $k <= $this->field['max']; $k++ ) {
105
+ echo '<option value="' . $k.$this->field['units'] . '"' . selected( $this->value['border-width'], $k.$this->field['units'], false) . '>' . $k . '</option>';
106
+ }
107
+
108
+ echo '</select>';
109
+
110
+ echo '<select original-title="' . __( 'Border style', 'redux-framework' ) . '" id="' . $this->field['id'] . '[border-style]" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][border-style]" class="tips redux-border-style' . $this->field['class'] . '" rows="6" data-id="'.$this->field['id'].'">';
111
+
112
+ foreach( $options as $k => $v ) {
113
+ echo '<option value="' . $k . '"' . selected( $this->value['border-style'], $k, false ) . '>' . $v . '</option>';
114
+ }
115
+
116
+ echo '</select>';
117
+
118
+ echo '<input name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][border-color]" id="' . $this->field['id'] . '-border" class="redux-border-color redux-color redux-color-init ' . $this->field['class'] . '" type="text" value="' . $this->value['border-color'] . '" data-default-color="' . $this->field['border-color'] . '" data-id="'.$this->field['id'].'" />';
119
+
120
+
121
+
122
+ echo '</div>';
123
+ }
124
+
125
+ /**
126
+ * Enqueue Function.
127
+ *
128
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
129
+ *
130
+ * @since 1.0.0
131
+ * @access public
132
+ * @return void
133
+ */
134
+ public function enqueue(){
135
+
136
+ wp_enqueue_script(
137
+ 'redux-field-color-js',
138
+ REDUX_URL . 'inc/fields/color/field_color.min.js',
139
+ array( 'jquery', 'wp-color-picker' ),
140
+ time(),
141
+ true
142
+ );
143
+
144
+ wp_enqueue_style(
145
+ 'redux-field-color-css',
146
+ REDUX_URL . 'inc/fields/color/field_color.css',
147
+ time(),
148
+ true
149
+ );
150
+
151
+ wp_enqueue_style(
152
+ 'redux-field-border-css',
153
+ REDUX_URL . 'inc/fields/border/field_border.css',
154
+ time(),
155
+ true
156
+ );
157
+
158
+ }
159
+
160
+ public function output() {
161
+ if ( !isset($this->field['output']) || empty( $this->field['output'] ) ) {
162
+ return;
163
+ }
164
+
165
+ $keys = implode(",", $this->field['output']);
166
+
167
+ $style = '<style type="text/css" class="redux-'.$this->field['type'].'">';
168
+ $style .= $keys."{";
169
+ foreach($this->value as $key=>$value) {
170
+ if (empty($value)) {
171
+ $value = 0;
172
+ }
173
+ $style .= $key.':'.$value.';';
174
+ }
175
+ $style .= '}';
176
+ $style .= '</style>';
177
+ echo $style;
178
+
179
+ }
180
+
181
+ }
182
+ }
ReduxCore/inc/fields/button_set/field_button_set.js ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /*global jQuery, document*/
2
+
3
+ jQuery(document).ready(function () {
4
+
5
+ jQuery('.buttonset').buttonset();
6
+
7
+ });
ReduxCore/inc/fields/button_set/field_button_set.min.js ADDED
@@ -0,0 +1 @@
 
1
+ /*global jQuery, document*/jQuery(document).ready(function(){jQuery(".buttonset").buttonset()});
ReduxCore/inc/fields/button_set/field_button_set.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Button_Set
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_button_set' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_button_set class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_button_set extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+
55
+ /**
56
+ * Field Render Function.
57
+ *
58
+ * Takes the vars and outputs the HTML for the field in the settings
59
+ *
60
+ * @since 1.0.0
61
+ * @access public
62
+ * @return void
63
+ */
64
+ public function render() {
65
+
66
+ echo '<div class="buttonset ui-buttonset">';
67
+
68
+ foreach( $this->field['options'] as $k => $v ) {
69
+
70
+ echo '<input data-id="'.$this->field['id'].'" type="radio" id="'.$this->field['id'].'-buttonset'.$k.'" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . ']" class="' . $this->field['class'] . '" value="' . $k . '" ' . checked( $this->value, $k, false ) . '/>';
71
+ echo '<label for="'.$this->field['id'].'-buttonset'.$k.'">' . $v . '</label>';
72
+
73
+ }
74
+
75
+ echo '</div>';
76
+
77
+ }
78
+
79
+
80
+ /**
81
+ * Enqueue Function.
82
+ *
83
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
84
+ *
85
+ * @since 1.0.0
86
+ * @access public
87
+ * @return void
88
+ */
89
+ public function enqueue() {
90
+
91
+ wp_enqueue_style( 'jquery-ui-css' );
92
+
93
+ wp_enqueue_script(
94
+ 'redux-field-button-set-js',
95
+ REDUX_URL . 'inc/fields/button_set/field_button_set.min.js',
96
+ array( 'jquery', 'jquery-ui-core', 'jquery-ui-dialog' ),
97
+ time(),
98
+ true
99
+ );
100
+
101
+ }
102
+
103
+ }
104
+ }
ReduxCore/inc/fields/checkbox/field_checkbox.php ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Checkbox
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_checkbox' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_checkbox class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_checkbox extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ if( !empty( $this->field['data'] ) && empty( $this->field['options'] ) ) {
53
+ if (empty($this->field['args'])) {
54
+ $this->field['args'] = array();
55
+ }
56
+ $this->field['options'] = $parent->get_wordpress_data($this->field['data'], $this->field['args']);
57
+ }
58
+
59
+ }
60
+
61
+
62
+ /**
63
+ * Field Render Function.
64
+ *
65
+ * Takes the vars and outputs the HTML for the field in the settings
66
+ *
67
+ * @since 1.0.0
68
+ * @access public
69
+ * @return void
70
+ */
71
+ public function render() {
72
+
73
+ if( !empty( $this->field['options'] ) && ( is_array( $this->field['options'] ) || is_array( $this->field['default'] ) ) ) {
74
+ echo '<ul>';
75
+ if ( !isset( $this->value ) ) {
76
+ $this->value = array();
77
+ }
78
+ if (!is_array($this->value)) {
79
+ $this->value = array();
80
+ }
81
+
82
+ foreach( $this->field['options'] as $k => $v ) {
83
+
84
+ if (empty($this->value[$k])) {
85
+ $this->value[$k] = "";
86
+ }
87
+
88
+ echo '<li>';
89
+ echo '<label for="' . strtr($this->args['opt_name'] . '[' . $this->field['id'] . '][' . $k . ']', array('[' => '_', ']' => '')) . '_' . array_search( $k, array_keys( $this->field['options'] ) ) . '">';
90
+ echo '<input type="checkbox" class="checkbox ' . $this->field['class'] . '" id="' . strtr($this->args['opt_name'] . '[' . $this->field['id'] . '][' . $k . ']', array('[' => '_', ']' => '')) . '_' . array_search( $k, array_keys( $this->field['options'] ) ) . '" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][' . $k . ']" value="1" ' . checked( $this->value[$k], '1', false ) . '/>';
91
+ echo ' ' . $v . '</label>';
92
+ echo '</li>';
93
+
94
+ }
95
+
96
+ echo '</ul>';
97
+
98
+ } else {
99
+
100
+ echo ( $this->field['desc'] != '' ) ? ' <label for="' . strtr($this->args['opt_name'] . '[' . $this->field['id'] . ']', array('[' => '_', ']' => '')) . '">' : '';
101
+
102
+ echo '<input type="checkbox" id="' . strtr($this->args['opt_name'] . '[' . $this->field['id'] . ']', array('[' => '_', ']' => '')) . '" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . ']" value="1" class="checkbox ' . $this->field['class'] . '" ' . checked( $this->value, '1', false ) . '/>';
103
+
104
+ }
105
+
106
+ }
107
+ }
108
+ }
ReduxCore/inc/fields/color/field_color.css ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*-------------------------------------------------------------------------------------------*/
2
+ /* Color picker overwrite
3
+ /*-------------------------------------------------------------------------------------------*/
4
+ #redux-main input.redux-color {
5
+ float: left;
6
+ width: 70px;
7
+ margin-left: 5px;
8
+ }
9
+ #redux-main .wp-color-result.wp-picker-open {
10
+ t2op: -3px;
11
+ }
12
+ #redux-main #content .section-color .controls {
13
+ width: 345px;
14
+ }
15
+ #redux-main #content .section-color .explain {
16
+ width: 225px;
17
+ }
18
+ #redux-main .iris-picker .iris-strip .ui-slider-handle {
19
+ position: absolute;
20
+ background: none!important;
21
+ right: -3px;
22
+ left: -3px;
23
+ border: 4px solid #aaa!important;
24
+ border-width: 4px 3px;
25
+ width: auto;
26
+ border-radius: 4px;
27
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
28
+ opacity: .9;
29
+ z-index: 5;
30
+ cursor: ns-resize;
31
+ }
32
+ #redux-main .iris-picker .iris-slider-offset {
33
+ position: absolute;
34
+ top: 0px;
35
+ left: 0;
36
+ right: 0;
37
+ bottom: 12px;
38
+ width: 28px;
39
+ background: none!important;
40
+ border: 0!important;
41
+ height: auto;
42
+ }
43
+ #redux-main .wp-picker-container .wp-color-result {
44
+ outline: 0;
45
+ margin: 0;
46
+ }
47
+ #redux-main .redux-color-gradient {
48
+ line-height: 24px;
49
+ }
50
+ #redux-main .wp-picker-container input {
51
+ margin-bottom: inherit;
52
+ margin-top: inherit;
53
+ padding: 2px;
54
+ }
55
+ #redux-main .wp-picker-container .wp-picker-default {
56
+ padding: 0 10px 1px;
57
+ }
58
+ #redux-main input.color-transparency {
59
+ margin-left: 10px;
60
+ margin-right: 3px;
61
+ }
62
+ #redux-main input.wp-color-picker {
63
+ width: 80px;
64
+ }
ReduxCore/inc/fields/color/field_color.js ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*global jQuery, document, redux_change */
2
+ (function($){
3
+ 'use strict';
4
+
5
+ $.redux = $.redux || {};
6
+
7
+ var tcolour;
8
+
9
+ $(document).ready(function(){
10
+ $.redux.color();
11
+ });
12
+
13
+ $.redux.color = function(){
14
+ $('.redux-color-init').wpColorPicker({
15
+ change: function(u) {
16
+ redux_change($(this));
17
+ $('#' + u.target.id + '-transparency').removeAttr('checked');
18
+ }
19
+ });
20
+
21
+ $('.redux-color').on('focus', function() {
22
+ $(this).data('oldcolor', $(this).val());
23
+ });
24
+
25
+ $('.redux-color').on('keyup', function() {
26
+ var value = $(this).val();
27
+ var color = redux_color_validate(this);
28
+ var id = '#' + $(this).attr('id');
29
+ if (value === "transparent") {
30
+ $(this).parent().parent().find('.wp-color-result').css('background-color', 'transparent');
31
+ $(id + '-transparency').attr('checked', 'checked');
32
+ } else {
33
+ $(id + '-transparency').removeAttr('checked');
34
+ if (color && color !== $(this).val()) {
35
+ $(this).val(color);
36
+ }
37
+ }
38
+ });
39
+
40
+ // Replace and validate field on blur
41
+ $('.redux-color').on('blur', function() {
42
+ var value = $(this).val();
43
+ var id = '#' + $(this).attr('id');
44
+ if (value === "transparent") {
45
+ $(this).parent().parent().find('.wp-color-result').css('background-color', 'transparent');
46
+ $(id + '-transparency').attr('checked', 'checked');
47
+ } else {
48
+ if (redux_color_validate(this) === value) {
49
+ if (value.indexOf("#") !== 0) {
50
+ $(this).val($(this).data('oldcolor'));
51
+ }
52
+ }
53
+ $(id + '-transparency').removeAttr('checked');
54
+ }
55
+ });
56
+
57
+ // Store the old valid color on keydown
58
+ $('.redux-color').on('keydown', function() {
59
+ $(this).data('oldkeypress', $(this).val());
60
+ });
61
+
62
+ // When transparency checkbox is clicked
63
+ $('.color-transparency').on('click', function() {
64
+ if ($(this).is(":checked")) {
65
+ $('#' + $(this).data('id')).val('transparent');
66
+ $('#' + $(this).data('id')).parent().parent().find('.wp-color-result').css('background-color', 'transparent');
67
+ } else {
68
+ if ($('#' + $(this).data('id')).val() === 'transparent') {
69
+ $('#' + $(this).data('id')).val('');
70
+ }
71
+ }
72
+ });
73
+ }
74
+
75
+ })(jQuery);
76
+
77
+
78
+ // Name check, converts name to hex
79
+ function colourNameToHex(colour) {
80
+ tcolour = colour.replace(/^\s\s*/, '').replace(/\s\s*$/, '').replace("#", "");
81
+ var colours = {
82
+ "aliceblue": "#f0f8ff",
83
+ "antiquewhite": "#faebd7",
84
+ "aqua": "#00ffff",
85
+ "aquamarine": "#7fffd4",
86
+ "azure": "#f0ffff",
87
+ "beige": "#f5f5dc",
88
+ "bisque": "#ffe4c4",
89
+ "black": "#000000",
90
+ "blanchedalmond": "#ffebcd",
91
+ "blue": "#0000ff",
92
+ "blueviolet": "#8a2be2",
93
+ "brown": "#a52a2a",
94
+ "burlywood": "#deb887",
95
+ "cadetblue": "#5f9ea0",
96
+ "chartreuse": "#7fff00",
97
+ "chocolate": "#d2691e",
98
+ "coral": "#ff7f50",
99
+ "cornflowerblue": "#6495ed",
100
+ "cornsilk": "#fff8dc",
101
+ "crimson": "#dc143c",
102
+ "cyan": "#00ffff",
103
+ "darkblue": "#00008b",
104
+ "darkcyan": "#008b8b",
105
+ "darkgoldenrod": "#b8860b",
106
+ "darkgray": "#a9a9a9",
107
+ "darkgreen": "#006400",
108
+ "darkkhaki": "#bdb76b",
109
+ "darkmagenta": "#8b008b",
110
+ "darkolivegreen": "#556b2f",
111
+ "darkorange": "#ff8c00",
112
+ "darkorchid": "#9932cc",
113
+ "darkred": "#8b0000",
114
+ "darksalmon": "#e9967a",
115
+ "darkseagreen": "#8fbc8f",
116
+ "darkslateblue": "#483d8b",
117
+ "darkslategray": "#2f4f4f",
118
+ "darkturquoise": "#00ced1",
119
+ "darkviolet": "#9400d3",
120
+ "deeppink": "#ff1493",
121
+ "deepskyblue": "#00bfff",
122
+ "dimgray": "#696969",
123
+ "dodgerblue": "#1e90ff",
124
+ "firebrick": "#b22222",
125
+ "floralwhite": "#fffaf0",
126
+ "forestgreen": "#228b22",
127
+ "fuchsia": "#ff00ff",
128
+ "gainsboro": "#dcdcdc",
129
+ "ghostwhite": "#f8f8ff",
130
+ "gold": "#ffd700",
131
+ "goldenrod": "#daa520",
132
+ "gray": "#808080",
133
+ "green": "#008000",
134
+ "greenyellow": "#adff2f",
135
+ "honeydew": "#f0fff0",
136
+ "hotpink": "#ff69b4",
137
+ "indianred ": "#cd5c5c",
138
+ "indigo ": "#4b0082",
139
+ "ivory": "#fffff0",
140
+ "khaki": "#f0e68c",
141
+ "lavender": "#e6e6fa",
142
+ "lavenderblush": "#fff0f5",
143
+ "lawngreen": "#7cfc00",
144
+ "lemonchiffon": "#fffacd",
145
+ "lightblue": "#add8e6",
146
+ "lightcoral": "#f08080",
147
+ "lightcyan": "#e0ffff",
148
+ "lightgoldenrodyellow": "#fafad2",
149
+ "lightgrey": "#d3d3d3",
150
+ "lightgreen": "#90ee90",
151
+ "lightpink": "#ffb6c1",
152
+ "lightsalmon": "#ffa07a",
153
+ "lightseagreen": "#20b2aa",
154
+ "lightskyblue": "#87cefa",
155
+ "lightslategray": "#778899",
156
+ "lightsteelblue": "#b0c4de",
157
+ "lightyellow": "#ffffe0",
158
+ "lime": "#00ff00",
159
+ "limegreen": "#32cd32",
160
+ "linen": "#faf0e6",
161
+ "magenta": "#ff00ff",
162
+ "maroon": "#800000",
163
+ "mediumaquamarine": "#66cdaa",
164
+ "mediumblue": "#0000cd",
165
+ "mediumorchid": "#ba55d3",
166
+ "mediumpurple": "#9370d8",
167
+ "mediumseagreen": "#3cb371",
168
+ "mediumslateblue": "#7b68ee",
169
+ "mediumspringgreen": "#00fa9a",
170
+ "mediumturquoise": "#48d1cc",
171
+ "mediumvioletred": "#c71585",
172
+ "midnightblue": "#191970",
173
+ "mintcream": "#f5fffa",
174
+ "mistyrose": "#ffe4e1",
175
+ "moccasin": "#ffe4b5",
176
+ "navajowhite": "#ffdead",
177
+ "navy": "#000080",
178
+ "oldlace": "#fdf5e6",
179
+ "olive": "#808000",
180
+ "olivedrab": "#6b8e23",
181
+ "orange": "#ffa500",
182
+ "orangered": "#ff4500",
183
+ "orchid": "#da70d6",
184
+ "palegoldenrod": "#eee8aa",
185
+ "palegreen": "#98fb98",
186
+ "paleturquoise": "#afeeee",
187
+ "palevioletred": "#d87093",
188
+ "papayawhip": "#ffefd5",
189
+ "peachpuff": "#ffdab9",
190
+ "peru": "#cd853f",
191
+ "pink": "#ffc0cb",
192
+ "plum": "#dda0dd",
193
+ "powderblue": "#b0e0e6",
194
+ "purple": "#800080",
195
+ "red": "#ff0000",
196
+ "redux": "#01a3e3",
197
+ "rosybrown": "#bc8f8f",
198
+ "royalblue": "#4169e1",
199
+ "saddlebrown": "#8b4513",
200
+ "salmon": "#fa8072",
201
+ "sandybrown": "#f4a460",
202
+ "seagreen": "#2e8b57",
203
+ "seashell": "#fff5ee",
204
+ "sienna": "#a0522d",
205
+ "silver": "#c0c0c0",
206
+ "skyblue": "#87ceeb",
207
+ "slateblue": "#6a5acd",
208
+ "slategray": "#708090",
209
+ "snow": "#fffafa",
210
+ "springgreen": "#00ff7f",
211
+ "steelblue": "#4682b4",
212
+ "tan": "#d2b48c",
213
+ "teal": "#008080",
214
+ "thistle": "#d8bfd8",
215
+ "tomato": "#ff6347",
216
+ "turquoise": "#40e0d0",
217
+ "violet": "#ee82ee",
218
+ "wheat": "#f5deb3",
219
+ "white": "#ffffff",
220
+ "whitesmoke": "#f5f5f5",
221
+ "yellow": "#ffff00",
222
+ "yellowgreen": "#9acd32"
223
+ };
224
+ if (colours[tcolour.toLowerCase()] !== 'undefined') {
225
+ return colours[tcolour.toLowerCase()];
226
+ }
227
+ return colour;
228
+ }
229
+
230
+
231
+
232
+ // Run the validation
233
+ function redux_color_validate(field) {
234
+ var value = jQuery(field).val();
235
+ if (colourNameToHex(value) !== value.replace('#', '')) {
236
+ return colourNameToHex(value);
237
+ }
238
+ return value;
239
+ }
ReduxCore/inc/fields/color/field_color.less ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ /*-------------------------------------------------------------------------------------------*/
3
+ /* Color picker overwrite
4
+ /*-------------------------------------------------------------------------------------------*/
5
+ #redux-main input.redux-color {
6
+ float: left;
7
+ width: 70px;
8
+ margin-left: 5px;
9
+ }
10
+ #redux-main .wp-color-result.wp-picker-open {
11
+ t2op: -3px;
12
+ }
13
+ #redux-main #content .section-color .controls {
14
+ width: 345px;
15
+ }
16
+ #redux-main #content .section-color .explain {
17
+ width: 225px;
18
+ }
19
+ #redux-main .iris-picker .iris-strip .ui-slider-handle {
20
+ position: absolute;
21
+ background: none!important;
22
+ right: -3px;
23
+ left: -3px;
24
+ border: 4px solid #aaa!important;
25
+ border-width: 4px 3px;
26
+ width: auto;
27
+ border-radius: 4px;
28
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
29
+ opacity: .9;
30
+ z-index: 5;
31
+ cursor: ns-resize;
32
+ }
33
+ #redux-main .iris-picker .iris-slider-offset {
34
+ position: absolute;
35
+ top: 0px;
36
+ left: 0;
37
+ right: 0;
38
+ bottom: 12px;
39
+ width: 28px;
40
+ background: none!important;
41
+ border: 0!important;
42
+ height: auto;
43
+ }
44
+ #redux-main {
45
+ .wp-picker-container {
46
+ .wp-color-result {
47
+ outline: 0;
48
+ margin: 0;
49
+ }
50
+ }
51
+ .redux-color-gradient {
52
+ line-height: 24px;
53
+ }
54
+ }
55
+
56
+ #redux-main .wp-picker-container input {
57
+ margin-bottom: inherit;
58
+ margin-top: inherit;
59
+ padding: 2px;
60
+ }
61
+ #redux-main .wp-picker-container .wp-picker-default {
62
+ padding: 0 10px 1px;
63
+ }
64
+ #redux-main input.color-transparency {
65
+ margin-left: 10px;
66
+ margin-right: 3px;
67
+ }
68
+
69
+ #redux-main input.wp-color-picker {
70
+ width: 80px;
71
+ }
ReduxCore/inc/fields/color/field_color.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function colourNameToHex(e){tcolour=e.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#","");var a={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",redux:"#01a3e3",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!==a[tcolour.toLowerCase()]?a[tcolour.toLowerCase()]:e}function redux_color_validate(e){var a=jQuery(e).val();return colourNameToHex(a)!==a.replace("#","")?colourNameToHex(a):a}!function(e){"use strict";e.redux=e.redux||{},e(document).ready(function(){e.redux.color()}),e.redux.color=function(){e(".redux-color-init").wpColorPicker({change:function(a){redux_change(e(this)),e("#"+a.target.id+"-transparency").removeAttr("checked")}}),e(".redux-color").on("focus",function(){e(this).data("oldcolor",e(this).val())}),e(".redux-color").on("keyup",function(){var a=e(this).val(),r=redux_color_validate(this),f="#"+e(this).attr("id");"transparent"===a?(e(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),e(f+"-transparency").attr("checked","checked")):(e(f+"-transparency").removeAttr("checked"),r&&r!==e(this).val()&&e(this).val(r))}),e(".redux-color").on("blur",function(){var a=e(this).val(),r="#"+e(this).attr("id");"transparent"===a?(e(this).parent().parent().find(".wp-color-result").css("background-color","transparent"),e(r+"-transparency").attr("checked","checked")):(redux_color_validate(this)===a&&0!==a.indexOf("#")&&e(this).val(e(this).data("oldcolor")),e(r+"-transparency").removeAttr("checked"))}),e(".redux-color").on("keydown",function(){e(this).data("oldkeypress",e(this).val())}),e(".color-transparency").on("click",function(){e(this).is(":checked")?(e("#"+e(this).data("id")).val("transparent"),e("#"+e(this).data("id")).parent().parent().find(".wp-color-result").css("background-color","transparent")):"transparent"===e("#"+e(this).data("id")).val()&&e("#"+e(this).data("id")).val("")})}}(jQuery);
ReduxCore/inc/fields/color/field_color.php ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Color
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_color' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_color class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_color extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ echo '<input data-id="'.$this->field['id'].'" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . ']" id="' . $this->field['id'] . '-color" class="redux-color redux-color-init ' . $this->field['class'] . '" type="text" value="' . $this->value . '" data-default-color="' . $this->field['default'] . '" />';
66
+
67
+ if ( !isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) {
68
+ $tChecked = "";
69
+ if ( $this->value == "transparent" ) {
70
+ $tChecked = ' checked="checked"';
71
+ }
72
+ echo '<label for="' . $this->field['id'] . '-transparency" class="color-transparency-check"><input type="checkbox" class="checkbox color-transparency ' . $this->field['class'] . '" id="' . $this->field['id'] . '-transparency" data-id="'.$this->field['id'] . '-color" value="1"'.$tChecked.'> Transparent</label>';
73
+ }
74
+
75
+ }
76
+
77
+ /**
78
+ * Enqueue Function.
79
+ *
80
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
81
+ *
82
+ * @since 1.0.0
83
+ * @access public
84
+ * @return void
85
+ */
86
+ public function enqueue() {
87
+
88
+ wp_enqueue_style( 'wp-color-picker' );
89
+
90
+ wp_enqueue_script(
91
+ 'redux-field-color-js',
92
+ REDUX_URL . 'inc/fields/color/field_color.min.js',
93
+ array( 'jquery', 'wp-color-picker' ),
94
+ time(),
95
+ true
96
+ );
97
+
98
+ wp_enqueue_style(
99
+ 'redux-field-color-css',
100
+ REDUX_URL . 'inc/fields/color/field_color.css',
101
+ time(),
102
+ true
103
+ );
104
+
105
+ }
106
+
107
+ }
108
+ }
ReduxCore/inc/fields/color_gradient/field_color_gradient.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Color_Gradient
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_color_gradient' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_color_gradient class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_color_gradient extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ // No errors please
66
+ $defaults = array(
67
+ 'from' => '',
68
+ 'to' => ''
69
+ );
70
+
71
+ $this->value = wp_parse_args( $this->value, $defaults );
72
+
73
+ echo '<strong>' . __( 'From ', 'redux-framework' ) . '</strong>&nbsp;';
74
+ echo '<input data-id="'.$this->field['id'].'" id="' . $this->field['id'] . '-from" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][from]" value="'.$this->value['from'].'" class="redux-color redux-color-init ' . $this->field['class'] . '" type="text" data-default-color="' . $this->field['default']['from'] . '" />';
75
+
76
+ if ( !isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) {
77
+ $tChecked = "";
78
+ if ( $this->value['from'] == "transparent" ) {
79
+ $tChecked = ' checked="checked"';
80
+ }
81
+ echo '<label for="' . $this->field['id'] . '-from-transparency" class="color-transparency-check"><input type="checkbox" class="checkbox color-transparency ' . $this->field['class'] . '" id="' . $this->field['id'] . '-from-transparency" data-id="' . $this->field['id'] . '-from" value="1"'.$tChecked.'> Transparent</label>';
82
+ }
83
+
84
+ echo '&nbsp;&nbsp;&nbsp;&nbsp;<strong>' . __( 'To ', 'redux-framework' ) . '</strong>&nbsp;<input data-id="'.$this->field['id'].'" id="' . $this->field['id'] . '-to" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][to]" value="' . $this->value['to'] . '" class="redux-color redux-color-init ' . $this->field['class'] . '" type="text" data-default-color="' . $this->field['default']['to'] . '" />';
85
+
86
+ if ( !isset( $this->field['transparent'] ) || $this->field['transparent'] !== false ) {
87
+ $tChecked = "";
88
+ if ( $this->value['from'] == "transparent" ) {
89
+ $tChecked = ' checked="checked"';
90
+ }
91
+ echo '<label for="' . $this->field['id'] . '-to-transparency" class="color-transparency-check"><input type="checkbox" class="checkbox color-transparency" id="' . $this->field['id'] . '-to-transparency" data-id="' . $this->field['id'] . '-to" value="1"'.$tChecked.'> Transparent</label>';
92
+ }
93
+
94
+ }
95
+
96
+ /**
97
+ * Enqueue Function.
98
+ *
99
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
100
+ *
101
+ * @since 1.0.0
102
+ * @access public
103
+ * @return void
104
+ */
105
+ public function enqueue() {
106
+
107
+ wp_enqueue_script(
108
+ 'redux-field-color-js',
109
+ REDUX_URL . 'inc/fields/color/field_color.min.js',
110
+ array( 'jquery', 'wp-color-picker' ),
111
+ time(),
112
+ true
113
+ );
114
+
115
+ wp_enqueue_style(
116
+ 'redux-field-color-js',
117
+ REDUX_URL . 'inc/fields/color/field_color.css',
118
+ time(),
119
+ true
120
+ );
121
+
122
+ wp_enqueue_style(
123
+ 'redux-field-color-css',
124
+ REDUX_URL . 'inc/fields/color/field_color.css',
125
+ time(),
126
+ true
127
+ );
128
+
129
+ }
130
+ }
131
+ }
ReduxCore/inc/fields/date/field_date.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ /*global jQuery*/
2
+
3
+ jQuery(document).ready(function () {
4
+ jQuery('.redux-datepicker').datepicker();
5
+ });
ReduxCore/inc/fields/date/field_date.min.js ADDED
@@ -0,0 +1 @@
 
1
+ /*global jQuery*/jQuery(document).ready(function(){jQuery(".redux-datepicker").datepicker()});
ReduxCore/inc/fields/date/field_date.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Date
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_date' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_date class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_date extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ echo '<input data-id="'.$this->field['id'].'" type="text" id="'. $this->field['id'] .'-date" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . ']" value="' . $this->value . '" class="redux-datepicker ' . $this->field['class'] . '" />';
66
+
67
+ }
68
+
69
+ /**
70
+ * Enqueue Function.
71
+ *
72
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
73
+ *
74
+ * @since 1.0.0
75
+ * @access public
76
+ * @return void
77
+ */
78
+ public function enqueue() {
79
+ wp_enqueue_script(
80
+ 'redux-field-date-js',
81
+ REDUX_URL . 'inc/fields/date/field_date.min.js',
82
+ array( 'jquery', 'jquery-ui-core', 'jquery-ui-datepicker' ),
83
+ time(),
84
+ true
85
+ );
86
+ }
87
+ }
88
+ }
ReduxCore/inc/fields/dimensions/field_dimensions.css ADDED
@@ -0,0 +1,2 @@
 
 
1
+ #redux-main .redux-dimensions-container .select_wrapper{float:left;width:inherit}#redux-main .redux-dimensions-container .select_wrapper select{width:80px;float:left}
2
+ #redux-main .redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}
ReduxCore/inc/fields/dimensions/field_dimensions.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function() {
2
+
3
+ jQuery(".redux-dimensions-height, .redux-dimensions-width").numeric();
4
+
5
+ jQuery(".redux-dimensions-units").select2({
6
+ width: 'resolve',
7
+ triggerChange: true,
8
+ allowClear: true
9
+ });
10
+
11
+ jQuery('.redux-dimensions-input').on('change', function() {
12
+ var units = jQuery(this).parents('.redux-field:first').find('.redux-dimensions-units option:selected').val();
13
+ var id = jQuery(this).attr('rel');
14
+ jQuery('#'+id).val(jQuery(this).val()+units);
15
+ });
16
+
17
+ jQuery('.redux-dimensions-units').on('change', function() {
18
+ jQuery(this).parents('.redux-field:first').find('.redux-dimensions-input').change();
19
+ });
20
+
21
+ });
ReduxCore/inc/fields/dimensions/field_dimensions.less ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #redux-main .redux-dimensions-container {
2
+ .select_wrapper {
3
+ float: left;
4
+ select {
5
+ width: 80px;
6
+ float: left;
7
+ }
8
+ width: inherit;
9
+ }
10
+
11
+ .field-dimensions-input {
12
+ margin-right: 10px;
13
+ margin-bottom: 7px;
14
+ }
15
+
16
+ }
ReduxCore/inc/fields/dimensions/field_dimensions.min.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(document).ready(function(){jQuery(".redux-dimensions-height, .redux-dimensions-width").numeric();jQuery(".redux-dimensions-units").select2({width:"resolve",triggerChange:!0,allowClear:!0});jQuery(".redux-dimensions-input").on("change",function(){var e=jQuery(this).parents(".redux-field:first").find(".redux-dimensions-units option:selected").val(),t=jQuery(this).attr("rel");jQuery("#"+t).val(jQuery(this).val()+e)});jQuery(".redux-dimensions-units").on("change",function(){jQuery(this).parents(".redux-field:first").find(".redux-dimensions-input").change()})});
ReduxCore/inc/fields/dimensions/field_dimensions.php ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class ReduxFramework_dimensions extends ReduxFramework{
3
+
4
+ /**
5
+ * Field Constructor.
6
+ *
7
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
8
+ *
9
+ * @since ReduxFramework 1.0.0
10
+ */
11
+ function __construct($field = array(), $value ='', $parent){
12
+
13
+ parent::__construct($parent->sections, $parent->args, $parent->extra_tabs);
14
+ $this->field = $field;
15
+ $this->value = $value;
16
+ //$this->render();
17
+
18
+ }//function
19
+
20
+
21
+
22
+ /**
23
+ * Field Render Function.
24
+ *
25
+ * Takes the vars and outputs the HTML for the field in the settings
26
+ *
27
+ * @since ReduxFramework 1.0.0
28
+ */
29
+ function render(){
30
+
31
+ // No errors please
32
+ $defaults = array(
33
+ 'units' => '',
34
+ 'width' => true,
35
+ 'height' => true,
36
+ 'units_extended' => false,
37
+ );
38
+ $this->field = wp_parse_args( $this->field, $defaults );
39
+
40
+ if ( !empty( $this->field['units'] ) ) {
41
+ $this->value['units'] = $this->field['units'];
42
+ }
43
+
44
+ if ( !in_array($this->value['units'], array( '%', 'in', 'cm', 'mm', 'em', 'ex', 'pt', 'pc', 'px' ) ) ) {
45
+ if ( !empty( $this->field['units'] ) && in_array($this->value['units'], array( '%', 'in', 'cm', 'mm', 'em', 'ex', 'pt', 'pc', 'px' ) ) ) {
46
+ $this->value['units'] = $this->field['units'];
47
+ }
48
+ }
49
+
50
+ $defaults = array(
51
+ 'width'=>'',
52
+ 'height'=>'',
53
+ 'units'=>'px',
54
+ );
55
+
56
+ $this->value = wp_parse_args( $this->value, $defaults );
57
+
58
+ echo '<fieldset id="'.$this->field['id'].'" class="redux-dimensions-container" data-id="'.$this->field['id'].'">';
59
+
60
+ /**
61
+ Width
62
+ **/
63
+ if ($this->field['width'] === true):
64
+ if ( !empty($this->value['width'] ) && strpos( $this->value['width'], $this->value['units'] ) === false ) {
65
+ $this->value['width'] = filter_var($this->value['width'], FILTER_SANITIZE_NUMBER_INT);
66
+ $this->value['width'] = $this->value['width'].$this->value['units'];
67
+ }
68
+ echo '<div class="field-dimensions-input input-prepend">';
69
+ echo '<span class="add-on"><i class="icon-resize-horizontal icon-large"></i></span>';
70
+ echo '<input type="text" class="redux-dimensions-input redux-dimensions-width mini'.$this->field['class'].'" placeholder="'.__('Width','redux-framework').'" rel="'.$this->field['id'].'-width" value="'.filter_var($this->value['width'], FILTER_SANITIZE_NUMBER_INT).'">';
71
+ echo '<input data-id="'.$this->field['id'].'" type="hidden" id="'.$this->field['id'].'-width" name="'.$this->args['opt_name'].'['.$this->field['id'].'][width]" value="'.$this->value['width'].'"></div>';
72
+ endif;
73
+
74
+ /**
75
+ Height
76
+ **/
77
+ if ($this->field['height'] === true):
78
+ if ( !empty($this->value['height'] ) && strpos( $this->value['height'], $this->value['units'] ) === false ) {
79
+ $this->value['height'] = filter_var($this->value['height'], FILTER_SANITIZE_NUMBER_INT);
80
+ $this->value['height'] = $this->value['height'].$this->value['units'];
81
+ }
82
+ echo '<div class="field-dimensions-input input-prepend">';
83
+ echo '<span class="add-on"><i class="icon-resize-vertical icon-large"></i></span>';
84
+ echo '<input type="text" class="redux-dimensions-input redux-dimensions-height mini'.$this->field['class'].'" placeholder="'.__('height','redux-framework').'" rel="'.$this->field['id'].'-height" value="'.filter_var($this->value['height'], FILTER_SANITIZE_NUMBER_INT).'">';
85
+ echo '<input data-id="'.$this->field['id'].'" type="hidden" id="'.$this->field['id'].'-height" name="'.$this->args['opt_name'].'['.$this->field['id'].'][height]" value="'.$this->value['height'].'"></div>';
86
+ endif;
87
+
88
+ /**
89
+ Units
90
+ **/
91
+
92
+ //if ( $this->field['units'] !== false ):
93
+
94
+ echo '<div class="select_wrapper dimensions-units" original-title="'.__('Units','redux-framework').'">';
95
+ echo '<select data-id="'.$this->field['id'].'" data-placeholder="'.__('Units','redux-framework').'" class="redux-dimensions redux-dimensions-units select'.$this->field['class'].'" original-title="'.__('Units','redux-framework').'" name="'.$this->args['opt_name'].'['.$this->field['id'].'][units]" id="'. $this->field['id'].'_units">';
96
+
97
+ if ( $this->field['units_extended'] ) {
98
+ $testUnits = array('px', 'em', '%', 'in', 'cm', 'mm', 'ex', 'pt', 'pc');
99
+ } else {
100
+ $testUnits = array('px', 'em', '%');
101
+ }
102
+
103
+ if ( in_array($this->field['units'], $testUnits) ) {
104
+ echo '<option value="'.$this->field['units'].'" selected="selected">'.$this->field['units'].'</option>';
105
+ } else {
106
+ foreach($testUnits as $aUnit) {
107
+ echo '<option value="'.$aUnit.'" '.selected($this->value['units'], $aUnit, false).'>'.$aUnit.'</option>';
108
+ }
109
+
110
+ }
111
+
112
+ echo '</select></div>';
113
+
114
+ //endif;
115
+
116
+ echo "</fieldset>";
117
+
118
+ }//function
119
+
120
+
121
+ /**
122
+ * Enqueue Function.
123
+ *
124
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
125
+ *
126
+ * @since ReduxFramework 1.0.0
127
+ */
128
+ function enqueue(){
129
+ wp_enqueue_script( 'select2-js' );
130
+ wp_enqueue_style( 'select2-css' );
131
+
132
+ wp_enqueue_script(
133
+ 'redux-field-dimensions-js',
134
+ REDUX_URL.'inc/fields/dimensions/field_dimensions.min.js',
135
+ array('jquery', 'select2-js', 'jquery-numeric'),
136
+ time(),
137
+ true
138
+ );
139
+
140
+ wp_enqueue_style(
141
+ 'redux-field-dimensions-css',
142
+ REDUX_URL.'inc/fields/dimensions/field_dimensions.css',
143
+ time(),
144
+ true
145
+ );
146
+
147
+ }//function
148
+
149
+ }//class
ReduxCore/inc/fields/divide/field_divide.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Divide
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_divide' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_divide class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_divide extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ echo '</td></tr></table>';
66
+ echo '<div data-id="'.$this->field['id'].'" id="'.$this->field['id'].'-divide" class="hr ' . $this->field['class'] . '"/><div class="inner"><span>&nbsp;</span></div></div>';
67
+ echo '<table class="form-table no-border"><tbody><tr><th></th><td>';
68
+
69
+ }
70
+ }
71
+ }
ReduxCore/inc/fields/editor/field_editor.css ADDED
@@ -0,0 +1 @@
 
1
+ #redux-main .mceLayout td{padding:0}
ReduxCore/inc/fields/editor/field_editor.js ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($){
2
+ "use strict";
3
+
4
+ $.redux = $.redux || {};
5
+
6
+ $(document).ready(function () {
7
+ $.redux.editor();
8
+ });
9
+
10
+ $.redux.editor = function(){
11
+ jQuery("textarea#redux-editor").each(function(){
12
+
13
+ var el_id = this.id,
14
+ current = jQuery(this),
15
+ parent = current.parents('.wp-editor-wrap:eq(0)'),
16
+ textarea = parent.find('textarea#redux-editor'),
17
+ switch_btn = parent.find('.wp-switch-editor').removeAttr("onclick"),
18
+ settings = {
19
+ id: this.id ,
20
+ buttons: "strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close"
21
+ };
22
+
23
+ // add quicktags for text editor
24
+ quicktags(settings);
25
+ QTags._buttonsInit(); //workaround since dom ready was triggered already and there would be no initialization
26
+
27
+ // modify behavior for html editor
28
+ switch_btn.bind('click', function(){
29
+ var button = jQuery(this);
30
+
31
+ if(button.is('.switch-tmce')){
32
+ parent.removeClass('html-active').addClass('tmce-active');
33
+ window.tinyMCE.execCommand("mceAddControl", true, el_id);
34
+ window.tinyMCE.get(el_id).setContent(window.switchEditors.wpautop(textarea.val()), {
35
+ format:'raw'
36
+ });
37
+ }
38
+ else
39
+ {
40
+ parent.removeClass('tmce-active').addClass('html-active');
41
+ window.tinyMCE.execCommand("mceRemoveControl", true, el_id);
42
+ }
43
+ }).trigger('click');
44
+
45
+ //make sure that when the save button is pressed the textarea gets updated and sent to the editor
46
+ $("#dialog").find('.ui-button').bind('click', function(){
47
+ switch_btn.filter('.switch-html').trigger('click');
48
+ });
49
+
50
+ });
51
+ }
52
+ })(jQuery);
ReduxCore/inc/fields/editor/field_editor.less ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ #redux-main .mceLayout td {
2
+ padding: 0;
3
+ }
ReduxCore/inc/fields/editor/field_editor.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(t){"use strict";t.redux=t.redux||{},t(document).ready(function(){t.redux.editor()}),t.redux.editor=function(){jQuery("textarea#redux-editor").each(function(){var e=this.id,i=jQuery(this),o=i.parents(".wp-editor-wrap:eq(0)"),n=o.find("textarea#redux-editor"),r=o.find(".wp-switch-editor").removeAttr("onclick"),c={id:this.id,buttons:"strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close"};quicktags(c),QTags._buttonsInit(),r.bind("click",function(){var t=jQuery(this);t.is(".switch-tmce")?(o.removeClass("html-active").addClass("tmce-active"),window.tinyMCE.execCommand("mceAddControl",!0,e),window.tinyMCE.get(e).setContent(window.switchEditors.wpautop(n.val()),{format:"raw"})):(o.removeClass("tmce-active").addClass("html-active"),window.tinyMCE.execCommand("mceRemoveControl",!0,e))}).trigger("click"),t("#dialog").find(".ui-button").bind("click",function(){r.filter(".switch-html").trigger("click")})})}}(jQuery);
ReduxCore/inc/fields/editor/field_editor.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Editor
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_editor' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_editor class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_editor extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ $settings = array(
66
+ 'textarea_name' => $this->args['opt_name'] . '[' . $this->field['id'] . ']',
67
+ 'editor_class' => $this->field['class']
68
+ );
69
+
70
+ wp_editor( $this->value, 'redux-editor', $settings );
71
+
72
+ }
73
+
74
+
75
+ /**
76
+ * Enqueue Function.
77
+ *
78
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
79
+ *
80
+ * @since 1.0.0
81
+ * @access public
82
+ * @return void
83
+ */
84
+ public function enqueue() {
85
+
86
+ wp_enqueue_style(
87
+ 'redux-field-editor-css',
88
+ REDUX_URL . 'inc/fields/editor/field_editor.css',
89
+ time(),
90
+ true
91
+ );
92
+
93
+ }
94
+
95
+ }
96
+ }
ReduxCore/inc/fields/gallery/field_gallery.js ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global redux_change, wp */
2
+ (function($){
3
+ "use strict";
4
+
5
+ $.gallery = $.gallery || {};
6
+
7
+ $(document).ready(function () {
8
+ //gallery insert functionality
9
+ $.gallery();
10
+ });
11
+
12
+ $.gallery = function(){
13
+ // When the user clicks on the Add/Edit gallery button, we need to display the gallery editing
14
+ $('body').on({
15
+ click: function(event){
16
+ var current_gallery = $(this).closest('td');
17
+
18
+ if (event.currentTarget.id === 'clear-gallery') {
19
+ //remove value from input
20
+
21
+ var rmVal = current_gallery.find('.gallery_values').val('');
22
+
23
+ //remove preview images
24
+ current_gallery.find(".screenshot").html("");
25
+
26
+ return;
27
+
28
+ }
29
+
30
+ // Make sure the media gallery API exists
31
+ if ( typeof wp === 'undefined' || ! wp.media || ! wp.media.gallery ) {
32
+ return;
33
+ }
34
+ event.preventDefault();
35
+
36
+ // Activate the media editor
37
+ var $$ = $(this);
38
+
39
+ var val = current_gallery.find('.gallery_values').val();
40
+ var final;
41
+ if (!val) {
42
+ final = '[gallery ids="0"]';
43
+ } else {
44
+ final = '[gallery ids="' + val + '"]';
45
+ }
46
+
47
+ var frame = wp.media.gallery.edit(final);
48
+
49
+
50
+ // When the gallery-edit state is updated, copy the attachment ids across
51
+ frame.state('gallery-edit').on( 'update', function( selection ) {
52
+
53
+ //clear screenshot div so we can append new selected images
54
+ current_gallery.find(".screenshot").html("");
55
+
56
+ var element, preview_html= "", preview_img;
57
+ var ids = selection.models.map(function(e){
58
+ element = e.toJSON();
59
+ preview_img = typeof element.sizes.thumbnail !== 'undefined' ? element.sizes.thumbnail.url : element.url ;
60
+ preview_html = "<a class='of-uploaded-image' href='"+preview_img+"'><img class='redux-option-image' src='"+preview_img+"' alt='' /></a>";
61
+ current_gallery.find(".screenshot").append(preview_html);
62
+ return e.id;
63
+ });
64
+ current_gallery.find('.gallery_values').val(ids.join(','));
65
+
66
+ });
67
+
68
+
69
+ return false;
70
+ }
71
+ }, '.gallery-attachments');
72
+ };
73
+ })(jQuery);
ReduxCore/inc/fields/gallery/field_gallery.min.js ADDED
@@ -0,0 +1 @@
 
1
+ /* global redux_change, wp */(function(e){"use strict";e.gallery=e.gallery||{};e(document).ready(function(){e.gallery()});e.gallery=function(){e("body").on({click:function(t){var n=e(this).closest("td");if(t.currentTarget.id==="clear-gallery"){var r=n.find(".gallery_values").val("");n.find(".screenshot").html("");return}if(typeof wp=="undefined"||!wp.media||!wp.media.gallery)return;t.preventDefault();var i=e(this),s=n.find(".gallery_values").val(),o;s?o='[gallery ids="'+s+'"]':o='[gallery ids="0"]';var u=wp.media.gallery.edit(o);u.state("gallery-edit").on("update",function(e){n.find(".screenshot").html("");var t,r="",i,s=e.models.map(function(e){t=e.toJSON();i=typeof t.sizes.thumbnail!="undefined"?t.sizes.thumbnail.url:t.url;r="<a class='of-uploaded-image' href='"+i+"'><img class='redux-option-image' src='"+i+"' alt='' /></a>";n.find(".screenshot").append(r);return e.id});n.find(".gallery_values").val(s.join(","))});return!1}},".gallery-attachments")}})(jQuery);
ReduxCore/inc/fields/gallery/field_gallery.php ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Redux Framework is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU General Public License as published by
6
+ * the Free Software Foundation, either version 2 of the License, or
7
+ * any later version.
8
+ *
9
+ * Redux Framework is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
16
+ *
17
+ * @package ReduxFramework
18
+ * @subpackage Field_Gallery
19
+ * @author Abdullah Almesbahi (cadr-sa)
20
+ * @version 3.0.0
21
+ */
22
+ // Exit if accessed directly
23
+ if (!defined('ABSPATH'))
24
+ exit;
25
+
26
+ // Don't duplicate me!
27
+ if (!class_exists('ReduxFramework_gallery')) {
28
+
29
+ /**
30
+ * Main ReduxFramework_gallery class
31
+ *
32
+ * @since 3.0.0
33
+ */
34
+ class ReduxFramework_gallery extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct($field = array(), $value = '', $parent) {
46
+
47
+ parent::__construct($parent->sections, $parent->args, $parent->extra_tabs);
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+ }
52
+
53
+ /**
54
+ * Field Render Function.
55
+ *
56
+ * Takes the vars and outputs the HTML for the field in the settings
57
+ *
58
+ * @since 1.0.0
59
+ * @access public
60
+ * @return void
61
+ */
62
+ public function render() {
63
+
64
+
65
+ echo '<div class="screenshot">';
66
+ if (!empty($this->value)) :
67
+ $ids = explode(',', $this->value);
68
+ foreach ($ids as $attachment_id) {
69
+ $img = wp_get_attachment_image_src($attachment_id, 'thumbnail');
70
+ echo '<a class="of-uploaded-image" href="' . $img[0] . '">';
71
+ echo '<img class="redux-option-image" id="image_' . $this->field['id'] .'_'.$attachment_id. '" src="' . $img[0] . '" alt="" />';
72
+ echo '</a>';
73
+ }
74
+ endif;
75
+ echo '</div>';
76
+ echo '<a href="#" onclick="return false;" id="edit-gallery" class="gallery-attachments button button-primary">' . __('Add/Edit Gallery', 'so-panels') . '</a> ';
77
+ echo '<a href="#" onclick="return false;" id="clear-gallery" class="gallery-attachments button">' . __('Clear Gallery', 'so-panels') . '</a>'; echo '<input type="hidden" class="gallery_values ' . $this->field['class'] . '" value="' . esc_attr($this->value) . '" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . ']" />';
78
+
79
+
80
+ }
81
+
82
+ /**
83
+ * Enqueue Function.
84
+ *
85
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
86
+ *
87
+ * @since 1.0.0
88
+ * @access public
89
+ * @return void
90
+ */
91
+ public function enqueue() {
92
+
93
+ if (function_exists('wp_enqueue_media')) {
94
+ wp_enqueue_media();
95
+ } else {
96
+ wp_enqueue_script('media-upload');
97
+ wp_enqueue_script('thickbox');
98
+ wp_enqueue_style('thickbox');
99
+ }
100
+
101
+ wp_enqueue_script(
102
+ 'redux-field-gallery-js', REDUX_URL . 'inc/fields/gallery/field_gallery.js', array('jquery', 'wp-color-picker'), time(), true
103
+ );
104
+
105
+ }
106
+
107
+ }
108
+
109
+ }
ReduxCore/inc/fields/group/field_group.css ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #redux-main .redux-group {
2
+ /*background: #eee;*/
3
+ padding: 15px 20px;
4
+ margin-bottom: 7px;
5
+ padding-top: 0;
6
+ }
7
+ #redux-main .redux-group h4 {
8
+ margin: 5px 0px 0px 0px;
9
+ }
10
+ #redux-main .redux-group h4:first-child {
11
+ margin-top: 0px;
12
+ }
13
+ #redux-main .redux-group .description {
14
+ margin: 5px 0 5px 0px;
15
+ }
16
+ #redux-main .redux-group #redux-groups-accordion {
17
+ width: 100%;
18
+ }
19
+ #redux-main .redux-group .redux-groups-accordion-group {
20
+ margin-bottom: 10px;
21
+ }
22
+ #redux-main .redux-group .redux-groups-accordion-group > div {
23
+ border: 1px solid #dfdfdf !important;
24
+ border-radius: 3px !important;
25
+ margin-top: 0px !important;
26
+ padding: 10px;
27
+ }
28
+ #redux-main .redux-group .redux-groups-accordion-group h3 {
29
+ border: 1px solid #dfdfdf;
30
+ cursor: move;
31
+ font-weight: bold;
32
+ padding: 0 10px;
33
+ margin-bottom: 10px;
34
+ height: 40px;
35
+ line-height: 40px;
36
+ background-color: #f1f1f1;
37
+ background-image: -ms-linear-gradient(top, #f9f9f9, #ececec);
38
+ background-image: -moz-linear-gradient(top, #f9f9f9, #ececec);
39
+ background-image: -o-linear-gradient(top, #f9f9f9, #ececec);
40
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));
41
+ background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec);
42
+ background-image: linear-gradient(top, #f9f9f9, #ececec);
43
+ overflow: hidden;
44
+ -webkit-border-radius: 3px;
45
+ -moz-border-radius: 3px;
46
+ border-radius: 3px;
47
+ -moz-box-shadow: inset 0 1px 0 #fff;
48
+ -webkit-box-shadow: inset 0 1px 0 #fff;
49
+ box-shadow: inset 0 1px 0 #fff;
50
+ text-align: center;
51
+ }
52
+ #redux-main .redux-group .redux-groups-add {
53
+ float: right;
54
+ }
55
+ #redux-main .redux-group .redux-groups-add:after {
56
+ clear: both;
57
+ }
58
+ #redux-main .redux-group .redux-groups-remove {
59
+ color: #ef521d !important;
60
+ float: right;
61
+ margin-top: 10px;
62
+ }
63
+ #redux-main .redux-group .redux-groups-remove:after {
64
+ clear: both;
65
+ }
66
+ #redux-main .redux-group .redux-groups-header {
67
+ font-weight: bold;
68
+ }
69
+ #redux-main .redux-group .redux_groups_add_remove {
70
+ margin-bottom: 10px;
71
+ }
ReduxCore/inc/fields/group/field_group.js ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global redux_change */
2
+ (function($){
3
+ "use strict";
4
+
5
+ $.redux.group = $.group || {};
6
+
7
+ $(document).ready(function () {
8
+ //Group functionality
9
+ $.redux.group();
10
+ });
11
+
12
+ $.redux.group = function(){
13
+ $("#redux-groups-accordion")
14
+ .accordion({
15
+ header: "> div > h3",
16
+ collapsible: true,
17
+ active: false,
18
+ heightStyle: "content",
19
+ icons: {
20
+ "header": "ui-icon-plus",
21
+ "activeHeader": "ui-icon-minus"
22
+ }
23
+ })
24
+ .sortable({
25
+ axis: "y",
26
+ handle: "h3",
27
+ stop: function (event, ui) {
28
+ // IE doesn't register the blur when sorting
29
+ // so trigger focusout handlers to remove .ui-state-focus
30
+ ui.item.children("h3").triggerHandler("focusout");
31
+ var inputs = $('input.slide-sort');
32
+ inputs.each(function(idx) {
33
+ $(this).val(idx);
34
+ });
35
+ }
36
+ });
37
+
38
+ $('.redux-groups-accordion-group input[type=text]').on('keyup',function(event) {
39
+ $(this).parents('.redux-groups-accordion-group:first').find('.redux-groups-header').text(event.target.value);
40
+ $(this).parents('.redux-groups-accordion-group:first').find('.slide-title').val(event.target.value);
41
+ });
42
+
43
+ $('.redux-groups-remove').live('click', function () {
44
+ redux_change($(this));
45
+ $(this).parent().find('input[type="text"]').val('');
46
+ $(this).parent().find('input[type="hidden"]').val('');
47
+ $(this).parent().parent().slideUp('medium', function () {
48
+ $(this).remove();
49
+ });
50
+ });
51
+
52
+ $('.redux-groups-add').click(function () {
53
+
54
+ var newSlide = $(this).prev().find('.redux-groups-accordion-group:last').clone(true);
55
+ var slideCount = $(newSlide).find('input[type="text"]').attr("name").match(/\d+(?!.*\d+)/);
56
+ var slideCount1 = slideCount*1 + 1;
57
+
58
+ $(newSlide).find('h3').text('').append('<span class="redux-groups-header">New Group</span><span class="ui-accordion-header-icon ui-icon ui-icon-plus"></span>');
59
+ $(this).prev().append(newSlide);
60
+
61
+ //we need to add slideCount1 data-id in fieldset , to make it work with fold
62
+ $(newSlide).find('fieldset').each(function(){
63
+ var fieldset = $(this),
64
+ data_id = fieldset.data('id'),
65
+ tr = fieldset.parents('tr:eq(0)');
66
+ if (typeof data_id !== 'undefined' && data_id !== false){
67
+ //fieldset.attr("data-id", data_id.replace(/\d+/, slideCount1) );
68
+ //tr.attr('data-check-id' , data_id.replace(/\d+/, slideCount1) );
69
+ //console.log(tr.attr('data-check-field'));
70
+ //alert("eee");
71
+ //tr.attr('data-check-field' , tr.attr('data-check-field')+'-'+slideCount1 );
72
+ }
73
+ //console.log($(this).attr("data-id"));
74
+ //$(this).attr("data-id", $(this).data('id').replace(/\d+/, slideCount1) );
75
+ });
76
+ $(newSlide).find('input[type="text"], input[type="hidden"], textarea , select').each(function(){
77
+ var attr_name = $(this).attr('name');
78
+ var attr_id = $(this).attr('id');
79
+
80
+ // For some browsers, `attr` is undefined; for others,
81
+ // `attr` is false. Check for both.
82
+ if (typeof attr_id !== 'undefined' && attr_id !== false)
83
+ $(this).attr("id", $(this).attr("id").replace(/\d+(?!.*\d+)/, slideCount1) );
84
+ if (typeof attr_name !== 'undefined' && attr_name !== false)
85
+ $(this).attr("name", $(this).attr("name").replace(/\d+(?!.*\d+)/, slideCount1) );
86
+
87
+ if($(this).prop("tagName") == 'SELECT'){
88
+ //we clean select2 first
89
+ $(newSlide).find('.select2-container').remove();
90
+ $(newSlide).find('select').removeClass('select2-offscreen');
91
+
92
+ //we rebind the select2
93
+ //$(newSlide).find('.redux-select-item').addClass('xxxxxxxxxxxxxxxx');
94
+
95
+ //$.redux.select();
96
+ }
97
+ //$(this).attr("name", $(this).attr("name").replace(/\d+/, slideCount1) ).attr("id", $(this).attr("id").replace(/\d+/, slideCount1) );
98
+ $(this).val('');
99
+ if ($(this).hasClass('slide-sort')){
100
+ $(this).val(slideCount1);
101
+ }
102
+ });
103
+
104
+
105
+ });
106
+ }
107
+ })(jQuery);
ReduxCore/inc/fields/group/field_group.less ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #redux-main .redux-group {
2
+ /*background: #eee;*/
3
+ padding: 15px 20px;
4
+ margin-bottom: 7px;
5
+ padding-top: 0;
6
+ h4{
7
+ margin:5px 0px 0px 0px;
8
+ &:first-child{
9
+ margin-top: 0px;
10
+ }
11
+ }
12
+ .description{
13
+ margin:5px 0 5px 0px;
14
+ }
15
+ #redux-groups-accordion{
16
+ width:100%;
17
+ }
18
+ .redux-groups-accordion-group{
19
+ margin-bottom: 10px;
20
+ }
21
+ .redux-groups-accordion-group > div{
22
+ border: 1px solid #dfdfdf !important;
23
+ border-radius: 3px !important;
24
+ margin-top:0px !important;
25
+ padding: 10px;
26
+ }
27
+ .redux-groups-accordion-group h3{
28
+ border: 1px solid #dfdfdf;
29
+ cursor: move;
30
+ font-weight: bold;
31
+ padding: 0 10px;
32
+ margin-bottom: 10px;
33
+ height: 40px;
34
+ line-height: 40px;
35
+ background-color: #f1f1f1;
36
+ background-image: -ms-linear-gradient(top, #f9f9f9, #ececec);
37
+ background-image: -moz-linear-gradient(top, #f9f9f9, #ececec);
38
+ background-image: -o-linear-gradient(top, #f9f9f9, #ececec);
39
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec));
40
+ background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec);
41
+ background-image: linear-gradient(top, #f9f9f9, #ececec);
42
+ overflow: hidden;
43
+ -webkit-border-radius: 3px;
44
+ -moz-border-radius: 3px;
45
+ border-radius: 3px;
46
+ -moz-box-shadow: inset 0 1px 0 #fff;
47
+ -webkit-box-shadow: inset 0 1px 0 #fff;
48
+ box-shadow: inset 0 1px 0 #fff;
49
+ text-align: center;
50
+ }
51
+
52
+ .redux-groups-add{
53
+ float:right;
54
+ &:after{
55
+ clear:both;
56
+ }
57
+ }
58
+ .redux-groups-remove{
59
+ color: #ef521d !important;
60
+ float:right;
61
+ margin-top: 10px;
62
+ &:after{
63
+ clear:both;
64
+ }
65
+ }
66
+ .redux-groups-header{
67
+ font-weight: bold;
68
+ }
69
+ .redux_groups_add_remove{
70
+ margin-bottom: 10px;
71
+ }
72
+ }
73
+
ReduxCore/inc/fields/group/field_group.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e){"use strict";e.redux.group=e.group||{},e(document).ready(function(){e.redux.group()}),e.redux.group=function(){e("#redux-groups-accordion").accordion({header:"> div > h3",collapsible:!0,active:!1,heightStyle:"content",icons:{header:"ui-icon-plus",activeHeader:"ui-icon-minus"}}).sortable({axis:"y",handle:"h3",stop:function(t,i){i.item.children("h3").triggerHandler("focusout");var n=e("input.slide-sort");n.each(function(t){e(this).val(t)})}}),e(".redux-groups-accordion-group input[type=text]").on("keyup",function(t){e(this).parents(".redux-groups-accordion-group:first").find(".redux-groups-header").text(t.target.value),e(this).parents(".redux-groups-accordion-group:first").find(".slide-title").val(t.target.value)}),e(".redux-groups-remove").live("click",function(){redux_change(e(this)),e(this).parent().find('input[type="text"]').val(""),e(this).parent().find('input[type="hidden"]').val(""),e(this).parent().parent().slideUp("medium",function(){e(this).remove()})}),e(".redux-groups-add").click(function(){var t=e(this).prev().find(".redux-groups-accordion-group:last").clone(!0),i=e(t).find('input[type="text"]').attr("name").match(/\d+(?!.*\d+)/),n=1*i+1;e(t).find("h3").text("").append('<span class="redux-groups-header">New Group</span><span class="ui-accordion-header-icon ui-icon ui-icon-plus"></span>'),e(this).prev().append(t),e(t).find("fieldset").each(function(){{var t=e(this);t.data("id")}t.parents("tr:eq(0)")}),e(t).find('input[type="text"], input[type="hidden"], textarea , select').each(function(){var i=e(this).attr("name"),r=e(this).attr("id");"undefined"!=typeof r&&r!==!1&&e(this).attr("id",e(this).attr("id").replace(/\d+(?!.*\d+)/,n)),"undefined"!=typeof i&&i!==!1&&e(this).attr("name",e(this).attr("name").replace(/\d+(?!.*\d+)/,n)),"SELECT"==e(this).prop("tagName")&&(e(t).find(".select2-container").remove(),e(t).find("select").removeClass("select2-offscreen")),e(this).val(""),e(this).hasClass("slide-sort")&&e(this).val(n)})})}}(jQuery);
ReduxCore/inc/fields/group/field_group.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Redux Framework is free software: you can redistribute it and/or modify
5
+ * it under the terms of the GNU General Public License as published by
6
+ * the Free Software Foundation, either version 2 of the License, or
7
+ * any later version.
8
+ *
9
+ * Redux Framework is distributed in the hope that it will be useful,
10
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ * GNU General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU General Public License
15
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
16
+ *
17
+ * @package ReduxFramework
18
+ * @subpackage Field_Info
19
+ * @author Daniel J Griffiths (Ghost1227)
20
+ * @author Dovy Paukstys
21
+ * @author Abdullah Almesbahi
22
+ * @version 3.0.0
23
+ */
24
+ // Exit if accessed directly
25
+ if (!defined('ABSPATH'))
26
+ exit;
27
+
28
+ // Don't duplicate me!
29
+ if (!class_exists('ReduxFramework_group')) {
30
+
31
+ /**
32
+ * Main ReduxFramework_info class
33
+ *
34
+ * @since 1.0.0
35
+ */
36
+ class ReduxFramework_group extends ReduxFramework {
37
+
38
+ /**
39
+ * Field Constructor.
40
+ *
41
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
42
+ *
43
+ * @since 1.0.0
44
+ * @access public
45
+ * @return void
46
+ */
47
+ public function __construct($field = array(), $value = '', $parent) {
48
+
49
+ parent::__construct($parent->sections, $parent->args, $parent->extra_tabs);
50
+
51
+ $this->field = $field;
52
+ $this->value = $value;
53
+ $this->parent = $parent;
54
+
55
+ }
56
+
57
+ /**
58
+ * Field Render Function.
59
+ *
60
+ * Takes the vars and outputs the HTML for the field in the settings
61
+ *
62
+ * @since 1.0.0
63
+ * @access public
64
+ * @return void
65
+ */
66
+ public function render() {
67
+
68
+ if (empty($this->value) || !is_array($this->value)) {
69
+ $this->value = array(
70
+ array(
71
+ 'slide_title' => __('New', 'redux-framework').' '.$this->field['groupname'],
72
+ 'slide_sort' => '0',
73
+ )
74
+ );
75
+ }
76
+
77
+ echo '<div class="redux-group">';
78
+ echo '<div id="redux-groups-accordion">';
79
+ $x = 0;
80
+
81
+ $groups = $this->value;
82
+ foreach ($groups as $group) {
83
+
84
+ echo '<div class="redux-groups-accordion-group"><h3><span class="redux-groups-header">' . $group['slide_title'] . '</span></h3>';
85
+ echo '<div>';//according content open
86
+
87
+ echo '<table style="margin-top: 0;" class="redux-groups-accordion redux-group form-table no-border">';
88
+
89
+ //echo '<h4>' . __('Group Title', 'redux-framework') . '</h4>';
90
+ echo '<fieldset><input type="hidden" id="' . $this->field['id'] . '-slide_title_' . $x . '" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][' . $x . '][slide_title]" value="' . esc_attr($group['slide_title']) . '" class="regular-text slide-title" /></fieldset>';
91
+ echo '<input type="hidden" class="slide-sort" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][' . $x . '][slide_sort]" id="' . $this->field['id'] . '-slide_sort_' . $x . '" value="' . $group['slide_sort'] . '" />';
92
+ foreach ($this->field['subfields'] as $field) {
93
+ //we will enqueue all CSS/JS for sub fields if it wasn't enqueued
94
+ $this->enqueue_dependencies($field['type']);
95
+
96
+ echo '<tr><td>';
97
+ if(isset($field['class']))
98
+ $field['class'] .= " group";
99
+ else
100
+ $field['class'] = " group";
101
+
102
+ if (!empty($field['title']))
103
+ echo '<h4>' . $field['title'] . '</h4>';
104
+ if (!empty($field['subtitle']))
105
+ echo '<span class="description">' . $field['subtitle'] . '</span>';
106
+ $value = empty($this->parent->options[$field['id']][$x]) ? " " : $this->parent->options[$field['id']][$x];
107
+
108
+ ob_start();
109
+ $this->parent->_field_input($field, $value);
110
+ $content = ob_get_contents();
111
+
112
+ //adding sorting number to the name of each fields in group
113
+ $name = $this->parent->args['opt_name'] . '[' . $field['id'] . ']';
114
+ $content = str_replace($name, $name . '[' . $x . ']', $content);
115
+
116
+ //we should add $sort to id to fix problem with select field
117
+ $content = str_replace(' id="'.$field['id'].'-select"', ' id="'.$field['id'].'-select-'.$sort.'"', $content);
118
+
119
+ $_field = apply_filters('redux-support-group',$content, $field, $x);
120
+ ob_end_clean();
121
+ echo $_field;
122
+
123
+ echo '</td></tr>';
124
+ }
125
+ echo '</table>';
126
+ echo '<a href="javascript:void(0);" class="button deletion redux-groups-remove">' . __('Delete', 'redux-framework').' '.$this->field['groupname']. '</a>';
127
+ echo '</div></div>';
128
+ $x++;
129
+ }
130
+
131
+ echo '</div><a href="javascript:void(0);" class="button redux-groups-add button-primary" rel-id="' . $this->field['id'] . '-ul" rel-name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][slide_title][]">' . __('Add', 'redux-framework') .' '.$this->field['groupname']. '</a><br/>';
132
+
133
+ echo '</div>';
134
+
135
+ }
136
+
137
+ function support_multi($content, $field, $sort) {
138
+ //convert name
139
+ $name = $this->parent->args['opt_name'] . '[' . $field['id'] . ']';
140
+ $content = str_replace($name, $name . '[' . $sort . ']', $content);
141
+ //we should add $sort to id to fix problem with select field
142
+ $content = str_replace(' id="'.$field['id'].'-select"', ' id="'.$field['id'].'-select-'.$sort.'"', $content);
143
+ return $content;
144
+ }
145
+
146
+ /**
147
+ * Enqueue Function.
148
+ *
149
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
150
+ *
151
+ * @since 1.0.0
152
+ * @access public
153
+ * @return void
154
+ */
155
+ public function enqueue() {
156
+ wp_enqueue_script(
157
+ 'redux-field-group-js', REDUX_URL . 'inc/fields/group/field_group.min.js', array('jquery', 'jquery-ui-core', 'jquery-ui-accordion', 'wp-color-picker'), time(), true
158
+ );
159
+
160
+ wp_enqueue_style(
161
+ 'redux-field-group-css', REDUX_URL . 'inc/fields/group/field_group.css', time(), true
162
+ );
163
+ }
164
+
165
+ public function enqueue_dependencies($field_type) {
166
+ $field_class = 'ReduxFramework_' . $field_type;
167
+
168
+ if (!class_exists($field_class)) {
169
+ $class_file = apply_filters('redux-typeclass-load', REDUX_DIR . 'inc/fields/' . $field_type . '/field_' . $field_type . '.php', $field_class);
170
+
171
+ if ($class_file) {
172
+ /** @noinspection PhpIncludeInspection */
173
+ require_once( $class_file );
174
+ }
175
+ }
176
+
177
+ if (class_exists($field_class) && method_exists($field_class, 'enqueue')) {
178
+ $enqueue = new $field_class('', '', $this);
179
+ $enqueue->enqueue();
180
+ }
181
+ }
182
+
183
+ }
184
+
185
+ }
ReduxCore/inc/fields/image_select/field_image_select.css ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ .redux-image-select input[type='radio']{display:none}
2
+ .redux-image-select{margin:3px 10px;display:inline-block;padding:10px;padding-left:0}
3
+ .redux-image-select-selected{background-color:#f9f9f9}
4
+ .redux-image-select img,.redux-image-select-selected img,.redux-image-select .tiles,.redux-image-select-selected .tiles{border-width:4px;border-style:solid}
5
+ .redux-image-select img,.redux-image-select .tiles{border-color:#d9d9d9}
6
+ .redux-image-select-selected img,.redux-image-select-selected .tiles{border-color:#4a4a4a}
7
+ .redux-image-select{margin:0 !important}
8
+ .redux-image-select .tiles{display:block;background-color:#fff;background-repeat:repeat;width:40px;height:40px}
9
+ #tilesFullView{font-size:0;line-height:0;position:absolute;border:1px solid #222;background:#444;padding:5px;margin:0;display:none;color:#fff}#tilesFullView img{margin:0;padding:0}
ReduxCore/inc/fields/image_select/field_image_select.js ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global confirm, redux_opts */
2
+
3
+ jQuery(document).ready(function() {
4
+
5
+ // On label click, change the input and class
6
+ jQuery('.redux-image-select label img, .redux-image-select label .tiles').click(function(e) {
7
+ var id = jQuery(this).closest('label').attr('for');
8
+ jQuery(this).parents("td:first").find('.redux-image-select-selected').removeClass('redux-image-select-selected');
9
+ jQuery(this).closest('label').find('input[type="radio"]').prop('checked');
10
+ if (jQuery(this).closest('label').hasClass('redux-image-select-presets')) { // If they clicked on a preset, import!
11
+ e.preventDefault();
12
+ var presets = jQuery(this).closest('label').find('input');
13
+ var data = presets.data('presets');
14
+ if (presets !== undefined && presets !== null) {
15
+ var answer = confirm(redux_opts.preset_confirm);
16
+ if (answer) {
17
+ jQuery('label[for="' + id + '"]').addClass('redux-image-select-selected');
18
+ window.onbeforeunload = null;
19
+ jQuery('#import-code-value').val(JSON.stringify(data));
20
+ jQuery('#redux-import').click();
21
+ }
22
+ } else {}
23
+ return false;
24
+ } else {
25
+ redux_change(jQuery(this).closest('label').find('input[type="radio"]'));
26
+ jQuery('label[for="' + id + '"]').addClass('redux-image-select-selected');
27
+ }
28
+ });
29
+
30
+ // Used to display a full image preview of a tile/pattern
31
+ jQuery('.tiles').tipsy({
32
+ gravity: jQuery.fn.tipsy.autoWE,
33
+ fade: true,
34
+ html: true,
35
+ title : function(){
36
+ return "<img src='" + jQuery(this).attr('rel') + "' style='max-width:150px;' alt='' />";
37
+ },
38
+ opacity: 1,
39
+ });
40
+ /*var xOffset = 10; // these 2 variable determine the popup's distance from the cursor
41
+ var yOffset = 30;
42
+ jQuery(".tiles").hover(function(e) {
43
+ jQuery("body").append("<div id='tilesFullView'><img src='" + jQuery(this).attr('rel') + "' alt='' /></div>");
44
+ jQuery("#tilesFullView").css("top", (e.pageY - xOffset) + "px").css("left", (e.pageX + yOffset) + "px").fadeIn("fast");
45
+ }, function() {
46
+ jQuery("#tilesFullView").remove();
47
+ });
48
+
49
+ jQuery(".tiles").mousemove(function(e) {
50
+ jQuery("#tilesFullView").css("top", (e.pageY - xOffset) + "px").css("left", (e.pageX + yOffset) + "px");
51
+ });*/
52
+
53
+
54
+ });
ReduxCore/inc/fields/image_select/field_image_select.less ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .redux-image-select input[type='radio']{
3
+ display:none;
4
+ }
5
+ .redux-image-select {
6
+ margin:3px 10px;
7
+ display:inline-block;
8
+ padding:10px;
9
+ padding-left: 0;
10
+ }
11
+ .redux-image-select-selected{
12
+ background-color:#f9f9f9;
13
+ }
14
+ .redux-image-select img,
15
+ .redux-image-select-selected img,
16
+ .redux-image-select .tiles,
17
+ .redux-image-select-selected .tiles {
18
+ border-width:4px;
19
+ border-style: solid;
20
+ }
21
+ .redux-image-select img, .redux-image-select .tiles{
22
+ border-color:#d9d9d9;
23
+ }
24
+ .redux-image-select-selected img, .redux-image-select-selected .tiles {
25
+ border-color:#4a4a4a;
26
+ }
27
+
28
+ .redux-image-select {
29
+ margin: 0 !important;
30
+ }
31
+ .redux-image-select .tiles {
32
+ display: block;
33
+ background-color: #FFF;
34
+ background-repeat: repeat;
35
+ width: 40px;
36
+ height: 40px;
37
+ }
38
+
39
+ #tilesFullView{
40
+ font-size: 0;
41
+ line-height: 0;
42
+ position:absolute;
43
+ border:1px solid #222;
44
+ background:#444;
45
+ padding:5px;
46
+ margin: 0;
47
+ display:none;
48
+ color:#fff;
49
+ img {
50
+ margin: 0; padding: 0;
51
+ }
52
+ }
ReduxCore/inc/fields/image_select/field_image_select.min.js ADDED
@@ -0,0 +1 @@
 
1
+ /* global confirm, redux_opts */jQuery(document).ready(function(){jQuery(".redux-image-select label img, .redux-image-select label .tiles").click(function(e){var t=jQuery(this).closest("label").attr("for");jQuery(this).parents("td:first").find(".redux-image-select-selected").removeClass("redux-image-select-selected");jQuery(this).closest("label").find('input[type="radio"]').prop("checked");if(jQuery(this).closest("label").hasClass("redux-image-select-presets")){e.preventDefault();var n=jQuery(this).closest("label").find("input"),r=n.data("presets");if(n!==undefined&&n!==null){var i=confirm(redux_opts.preset_confirm);if(i){jQuery('label[for="'+t+'"]').addClass("redux-image-select-selected");window.onbeforeunload=null;jQuery("#import-code-value").val(JSON.stringify(r));jQuery("#redux-import").click()}}return!1}redux_change(jQuery(this).closest("label").find('input[type="radio"]'));jQuery('label[for="'+t+'"]').addClass("redux-image-select-selected")});jQuery(".tiles").tipsy({gravity:jQuery.fn.tipsy.autoWE,fade:!0,html:!0,title:function(){return"<img src='"+jQuery(this).attr("rel")+"' style='max-width:150px;' alt='' />"},opacity:1})});
ReduxCore/inc/fields/image_select/field_image_select.php ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Images
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_image_select' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_image_select class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_image_select extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value = '', $parent = '' ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ if( !empty( $this->field['options'] ) ) {
66
+
67
+ echo '<ul class="redux-image-select">';
68
+
69
+ foreach( $this->field['options'] as $k => $v ) {
70
+
71
+ if( !is_array( $v ) )
72
+ $v = array( 'img' => $v );
73
+
74
+ if( !isset( $v['title'] ) )
75
+ $v['title'] = '';
76
+
77
+ if( !isset( $v['alt'] ) )
78
+ $v['alt'] = $v['title'];
79
+
80
+ $style = '';
81
+
82
+ if( !empty( $this->field['width'] ) ) {
83
+ $style .= 'width: ' . $this->field['width'];
84
+
85
+ if( is_numeric( $this->field['width'] ) )
86
+ $style .= 'px';
87
+
88
+ $style .= ';';
89
+ }
90
+
91
+ if( !empty( $this->field['height'] ) ) {
92
+ $style .= 'height: ' . $this->field['height'];
93
+
94
+ if( is_numeric( $this->field['height'] ) )
95
+ $style .= 'px';
96
+
97
+ $style .= ';';
98
+ }
99
+ $style .= " max-width: 100%; ";
100
+
101
+ $theValue = $k;
102
+ if( !empty( $this->field['tiles'] ) && $this->field['tiles'] == true ) {
103
+ $theValue = $v['img'];
104
+ }
105
+
106
+ $selected = ( checked( $this->value, $theValue, false ) != '' ) ? ' redux-image-select-selected' : '';
107
+
108
+ $presets = '';
109
+ $this->field['class'] .= ' noUpdate ';
110
+ if( !empty( $this->field['presets'] ) && $this->field['presets'] && !empty( $v['presets'] ) ) {
111
+
112
+ if( !is_array( $v['presets'] ) )
113
+ $v['presets'] = json_decode( $v['presets'], true );
114
+
115
+ $v['presets']['redux-backup'] = 1;
116
+
117
+ $presets = ' data-presets="' . htmlspecialchars( json_encode( $v['presets'] ), ENT_QUOTES, 'UTF-8' ) . '"';
118
+ $selected = '';
119
+ $this->field['class'] .= 'redux-presets';
120
+ }
121
+
122
+ echo '<li class="redux-image-select">';
123
+ echo '<label class="' . $selected . ' redux-image-select-' . $this->field['id'] . '" for="' . $this->field['id'] . '_' . (array_search( $k, array_keys( $this->field['options'] ) ) + 1) . '">';
124
+
125
+ echo '<input type="radio" class="' . $this->field['class'] . '" id="' . $this->field['id'] . '_' . (array_search( $k, array_keys( $this->field['options'] ) ) + 1) . '" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . ']" value="' . $theValue . '" ' . checked( $this->value, $theValue, false ) . $presets . '/>';
126
+
127
+ if( !empty( $this->field['tiles'] ) && $this->field['tiles'] == true ) {
128
+ echo '<span class="tiles" style="background-image: url(' . $v['img'] . ');" rel="'.$v['img'].'"">&nbsp;</span>';
129
+ } else {
130
+ echo '<img src="' . $v['img'] . '" alt="' . $v['alt'] . '" style="' . $style . '"' . $presets . ' />';
131
+ }
132
+
133
+ if ( $v['title'] != '' )
134
+ echo '<br /><span>' . $v['title'] . '</span>';
135
+
136
+ echo '</label>';
137
+ echo '</li>';
138
+ }
139
+
140
+ echo '</ul>';
141
+
142
+ }
143
+
144
+
145
+ }
146
+
147
+ /**
148
+ * Enqueue Function.
149
+ *
150
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
151
+ *
152
+ * @since 1.0.0
153
+ * @access public
154
+ * @return void
155
+ */
156
+ public function enqueue() {
157
+
158
+ wp_enqueue_script(
159
+ 'redux-field-image-select-js',
160
+ REDUX_URL . 'inc/fields/image_select/field_image_select.min.js',
161
+ array( 'jquery' ),
162
+ time(),
163
+ true
164
+ );
165
+
166
+ wp_enqueue_script('jquery-tipsy');
167
+
168
+ wp_enqueue_style(
169
+ 'redux-field-image-select-css',
170
+ REDUX_URL . 'inc/fields/image_select/field_image_select.css',
171
+ time(),
172
+ true
173
+ );
174
+
175
+ }
176
+ }
177
+ }
ReduxCore/inc/fields/info/field_info.css ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+
2
+ .redux-info-field{min-height:20px;padding:5px 19px;margin-top:20px;margin-bottom:15px;border-radius:4px;border:1px solid;position:relative}.redux-info-field h3{color:#777}
3
+ .redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}
4
+ .redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}
5
+ .redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}
6
+ .redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}
7
+ .redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}
8
+ .redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}
9
+ .redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}
ReduxCore/inc/fields/info/field_info.less ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .redux-info {
2
+
3
+ }
4
+ .redux-info-field {
5
+ min-height: 20px;
6
+ padding: 5px 19px;
7
+ margin-top: 20px;
8
+ margin-bottom: 15px;
9
+ border: 1px solid;
10
+ border-radius: 4px;
11
+ border: 1px solid;
12
+ position: relative;
13
+
14
+ h3 {
15
+ color: #777;
16
+ }
17
+
18
+ .redux-info-icon {
19
+ display: inline-block;
20
+ margin-right: 15px;
21
+
22
+ i {
23
+ font-size: 2em;
24
+ }
25
+ }
26
+
27
+ .redux-info-desc {
28
+ display: inline-block;
29
+ vertical-align: top;
30
+ }
31
+ }
32
+ .redux-info-field.redux-normal {
33
+ background-color: #eeeeee;
34
+ border-color: #cccccc;
35
+ color: #666666;
36
+
37
+ i {
38
+ color: #c5c5c5;
39
+ }
40
+ }
41
+ .redux-info-field.redux-warning {
42
+ background-color: #fbeba4;
43
+ border-color: #d7c281;
44
+ color: #958234;
45
+
46
+ i {
47
+ color: #dcca81;
48
+ }
49
+ }
50
+ .redux-info-field.redux-success {
51
+ background-color: #c4ee91;
52
+ border-color: #71af5d;
53
+ color: #4d7615;
54
+
55
+ i {
56
+ color: #a0ca6c;
57
+ }
58
+ }
59
+ .redux-info-field.redux-critical {
60
+ background-color: #fba1a3;
61
+ border-color: #b84f5b;
62
+ color: #981225;
63
+
64
+ i {
65
+ color: #dd767d;
66
+ }
67
+ }
68
+ .redux-info-field.redux-info {
69
+ background-color: #d3e4f4;
70
+ border-color: #a9b6c2;
71
+ color: #5c80a1;
72
+
73
+ i {
74
+ color: #afc6da;
75
+ }
76
+ }
ReduxCore/inc/fields/info/field_info.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Info
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_info' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_info class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_info extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ if ( !isset( $this->field['style'] ) ) {
66
+ $this->field['style'] = "";
67
+ }
68
+
69
+ if( empty( $this->field['desc'] ) && !empty( $this->field['default'] ) ) {
70
+ $this->field['desc'] = $this->field['default'];
71
+ unset($this->field['default']);
72
+ }
73
+
74
+ if( empty( $this->field['desc'] ) && !empty( $this->field['subtitle'] ) ) {
75
+ $this->field['desc'] = $this->field['subtitle'];
76
+ unset($this->field['subtitle']);
77
+ }
78
+
79
+ if ( empty( $this->field['desc'] ) ) {
80
+ $this->field['desc'] = "";
81
+ }
82
+
83
+ if( empty( $this->field['raw_html'] ) ) {
84
+ $this->field['class'] .= ' redux-info-field';
85
+
86
+ if( empty( $this->field['style'] ) ) {
87
+ $this->field['style'] = 'normal';
88
+ }
89
+
90
+ $this->field['style'] = 'redux-' . $this->field['style'].' ';
91
+ }
92
+
93
+ echo '</td></tr></table><div id="' . $this->field['id'] . '" class="' . $this->field['style'] . $this->field['class'] . '">';
94
+
95
+ if ( !empty($this->field['raw_html']) && $this->field['raw_html'] ) {
96
+ echo $this->field['desc'];
97
+ } else {
98
+ if( !empty( $this->field['title'] ) ) {
99
+ $this->field['title'] = '<b>' . $this->field['title'] . '</b><br/>';
100
+ } else {
101
+ $this->field['title'] = '';
102
+ }
103
+
104
+ if( isset( $this->field['icon'] ) && !empty( $this->field['icon'] ) && $this->field['icon'] !== true ) {
105
+ echo '<p class="redux-info-icon"><i class="icon-' . $this->field['icon'] . ' icon-large"></i></p>';
106
+ }
107
+
108
+ echo '<p class="redux-info-desc">' . $this->field['title'] . $this->field['desc'] . '</p>';
109
+
110
+ }
111
+
112
+ echo '</div><table class="form-table no-border" style="margin-top: 0;"><tbody><tr><th></th><td>';
113
+
114
+ }
115
+
116
+
117
+ /**
118
+ * Enqueue Function.
119
+ *
120
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
121
+ *
122
+ * @since 1.0.0
123
+ * @access public
124
+ * @return void
125
+ */
126
+ public function enqueue() {
127
+
128
+ wp_enqueue_style(
129
+ 'redux-field-info-css',
130
+ REDUX_URL . 'inc/fields/info/field_info.css',
131
+ time(),
132
+ true
133
+ );
134
+
135
+ }
136
+
137
+ }
138
+ }
ReduxCore/inc/fields/link_color/field_link_color.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Color_Gradient
18
+ * @author Luciano "WebCaos" Ubertini
19
+ * @author Daniel J Griffiths (Ghost1227)
20
+ * @author Dovy Paukstys
21
+ * @version 3.0.0
22
+ */
23
+
24
+ // Exit if accessed directly
25
+ if( !defined( 'ABSPATH' ) ) exit;
26
+
27
+ // Don't duplicate me!
28
+ if( !class_exists( 'ReduxFramework_link_color' ) ) {
29
+
30
+ /**
31
+ * Main ReduxFramework_link_color class
32
+ *
33
+ * @since 1.0.0
34
+ */
35
+ class ReduxFramework_link_color extends ReduxFramework {
36
+
37
+ /**
38
+ * Field Constructor.
39
+ *
40
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
41
+ *
42
+ * @since 1.0.0
43
+ * @access public
44
+ * @return void
45
+ */
46
+ public function __construct( $field = array(), $value ='', $parent ) {
47
+
48
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
49
+
50
+ $this->field = $field;
51
+ $this->value = $value;
52
+
53
+ }
54
+
55
+ /**
56
+ * Field Render Function.
57
+ *
58
+ * Takes the vars and outputs the HTML for the field in the settings
59
+ *
60
+ * @since 1.0.0
61
+ * @access public
62
+ * @return void
63
+ */
64
+ public function render() {
65
+
66
+ $defaults = array(
67
+ 'show_regular' => true,
68
+ 'show_hover' => true,
69
+ 'show_active' => true
70
+ );
71
+ $this->field = wp_parse_args( $this->field, $defaults );
72
+
73
+ $defaults = array(
74
+ 'regular' => '',
75
+ 'hover' => '',
76
+ 'active' => ''
77
+ );
78
+
79
+ $this->value = wp_parse_args( $this->value, $defaults );
80
+ $this->field['default'] = wp_parse_args( $this->field['default'], $defaults );
81
+
82
+ if ($this->field['show_regular'] === true):
83
+
84
+ echo '<strong>' . __( 'Regular', 'redux-framework' ) . '</strong>&nbsp;<input id="' . $this->field['id'] . '-regular" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][regular]" value="'.$this->value['regular'].'" class="redux-color redux-color-init ' . $this->field['class'] . '" type="text" data-default-color="' . $this->field['default']['regular'] . '" />&nbsp;&nbsp;&nbsp;&nbsp;';
85
+
86
+ endif;
87
+
88
+ if ($this->field['show_hover'] === true):
89
+
90
+ echo '<strong>' . __( 'Hover', 'redux-framework' ) . '</strong>&nbsp;<input id="' . $this->field['id'] . '-hover" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][hover]" value="' . $this->value['hover'] . '" class="redux-color redux-color-init ' . $this->field['class'] . '" type="text" data-default-color="' . $this->field['default']['hover'] . '" />&nbsp;&nbsp;&nbsp;&nbsp;';
91
+
92
+ endif;
93
+
94
+ if ($this->field['show_active'] === true):
95
+
96
+ echo '<strong>' . __( 'Active', 'redux-framework' ) . '</strong>&nbsp;<input id="' . $this->field['id'] . '-active" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][active]" value="' . $this->value['active'] . '" class="redux-color redux-color-init ' . $this->field['class'] . '" type="text" data-default-color="' . $this->field['default']['active'] . '" />';
97
+
98
+ endif;
99
+
100
+ }
101
+
102
+ /**
103
+ * Enqueue Function.
104
+ *
105
+ * If this field requires any scripts, or css define this function and register/enqueue the scripts/css
106
+ *
107
+ * @since 1.0.0
108
+ * @access public
109
+ * @return void
110
+ */
111
+ public function enqueue() {
112
+
113
+ wp_enqueue_script(
114
+ 'redux-field-color-js',
115
+ REDUX_URL . 'inc/fields/color/field_color.min.js',
116
+ array( 'jquery', 'wp-color-picker' ),
117
+ time(),
118
+ true
119
+ );
120
+
121
+ wp_enqueue_style(
122
+ 'redux-field-color-js',
123
+ REDUX_URL . 'inc/fields/color/field_color.css',
124
+ time(),
125
+ true
126
+ );
127
+
128
+ wp_enqueue_style(
129
+ 'redux-field-color-css',
130
+ REDUX_URL . 'inc/fields/color/field_color.css',
131
+ time(),
132
+ true
133
+ );
134
+
135
+ }
136
+ }
137
+ }
138
+ ?>
ReduxCore/inc/fields/media/field_media.css ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ .button.remove-image{margin-left:10px;color:#ef521d}
2
+ .button.remove-image:hover{color:#f00}
3
+ .upload_button_div{margin-bottom:5px}
4
+ .upload-error{float:left;color:#666;font-size:10px;font-weight:bold;text-decoration:none;text-shadow:1px 1px 0 #fff;margin:0 10px 0 0;padding:3px 10px;background:#ffdfec;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}
5
+ .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}
6
+ .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}
ReduxCore/inc/fields/media/field_media.js ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* global redux_change, wp */
2
+ (function($){
3
+ "use strict";
4
+
5
+ $.redux = $.redux || {};
6
+
7
+ $(document).ready(function () {
8
+ $.redux.media();
9
+ });
10
+
11
+ /**
12
+ * Media Uploader
13
+ * Dependencies : jquery, wp media uploader
14
+ * Feature added by : Smartik - http://smartik.ws/
15
+ * Date : 05.28.2013
16
+ */
17
+ $.redux.media = function(){
18
+ // Remove the image button
19
+ $('.remove-image, .remove-file').unbind('click').on('click', function() {
20
+ redux_remove_file( $(this).closest('td') );
21
+ redux_change($(this).closest('td:first').find('.upload'));
22
+ });
23
+
24
+ // Upload media button
25
+ $('.media_upload_button').unbind().on('click', function( event ) {
26
+ redux_add_file(event, $(this).closest('td'));
27
+ redux_change($(this).closest('td:first').find('.upload'));
28
+ });
29
+ }
30
+
31
+ })(jQuery);
32
+
33
+ // Add a file via the wp.media function
34
+ function redux_add_file(event, selector) {
35
+
36
+ event.preventDefault();
37
+
38
+ var frame;
39
+ var jQueryel = jQuery(this);
40
+
41
+
42
+
43
+ // If the media frame already exists, reopen it.
44
+ if ( frame ) {
45
+ frame.open();
46
+ return;
47
+ }
48
+
49
+ // Create the media frame.
50
+ frame = wp.media({
51
+ multiple: false,
52
+ library: {
53
+ type: 'image' //Only allow images
54
+ },
55
+ // Set the title of the modal.
56
+ title: jQueryel.data('choose'),
57
+
58
+ // Customize the submit button.
59
+ button: {
60
+ // Set the text of the button.
61
+ text: jQueryel.data('update')
62
+ // Tell the button not to close the modal, since we're
63
+ // going to refresh the page when the image is selected.
64
+
65
+ }
66
+ });
67
+
68
+ // When an image is selected, run a callback.
69
+ frame.on( 'select', function() {
70
+
71
+ // Grab the selected attachment.
72
+ var attachment = frame.state().get('selection').first();
73
+ frame.close();
74
+ if (attachment.attributes.type !== "image") {
75
+ return;
76
+ }
77
+
78
+ selector.find('.upload').val(attachment.attributes.url).trigger('check_dependencies',selector.find('.upload'));
79
+ selector.find('.upload-id').val(attachment.attributes.id);
80
+ selector.find('.upload-height').val(attachment.attributes.height);
81
+ selector.find('.upload-width').val(attachment.attributes.width);
82
+ if ( attachment.attributes.type === 'image' && !selector.find('.upload').hasClass('noPreview') ) {
83
+ selector.find('.screenshot').empty().hide().append('<img class="redux-option-image" src="' + attachment.attributes.url + '">').slideDown('fast');
84
+ }
85
+ //selector.find('.media_upload_button').unbind();
86
+ selector.find('.remove-image').removeClass('hide');//show "Remove" button
87
+ selector.find('.redux-background-properties').slideDown();
88
+ });
89
+
90
+ // Finally, open the modal.
91
+ frame.open();
92
+ }
93
+
94
+
95
+ // Function to remove the image on click. Still requires a save
96
+ function redux_remove_file(selector) {
97
+
98
+ // This shouldn't have been run...
99
+ if (!selector.find('.remove-image').addClass('hide')) {
100
+ return;
101
+ }
102
+
103
+ redux_change(jQuery('#'+selector.attr('rel')));
104
+ selector.find('.remove-image').addClass('hide');//hide "Remove" button
105
+ selector.find('.upload').val('').trigger('check_dependencies',selector.find('.upload'));
106
+ selector.find('.upload-id').val('');
107
+ selector.find('.upload-height').val('');
108
+ selector.find('.upload-width').val('');
109
+ selector.find('.redux-background-properties').hide();
110
+ var screenshot = selector.find('.screenshot');
111
+
112
+ // Hide the screenshot
113
+ screenshot.slideUp();
114
+
115
+ selector.find('.remove-file').unbind();
116
+ // We don't display the upload button if .upload-notice is present
117
+ // This means the user doesn't have the WordPress 3.5 Media Library Support
118
+ if ( jQuery('.section-upload .upload-notice').length > 0 ) {
119
+ jQuery('.media_upload_button').remove();
120
+ }
121
+
122
+ }
ReduxCore/inc/fields/media/field_media.less ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .button.remove-image {
2
+ margin-left:10px;
3
+ color:#ef521d;
4
+ }
5
+
6
+ .button.remove-image:hover {
7
+ color:red;
8
+ }
9
+
10
+ .upload_button_div {
11
+ margin-bottom: 5px;
12
+ }
13
+
14
+ .upload-error {
15
+ float:left;
16
+ color:#666;
17
+ font-size:10px;
18
+ font-weight:bold;
19
+ text-decoration:none;
20
+ text-shadow:1px 1px 0 #FFFFFF;
21
+ margin: 0 10px 0 0;
22
+ padding:3px 10px;
23
+ background:#FFDFEC;
24
+ -webkit-border-radius: 4px;
25
+ -moz-border-radius: 4px;
26
+ border-radius: 4px;
27
+ }
28
+ .reset-button {
29
+ font-family:Arial,Verdana,sans-serif;
30
+ float:left;
31
+ margin:0 ;
32
+ color: #ef521d;
33
+ border-color: #bbb;
34
+ }
35
+
36
+ .redux-option-image {
37
+ max-height: 340px;
38
+ max-width:340px;
39
+ padding: 5px;
40
+ margin-top: 10px;
41
+ border:1px solid #e3e3e3;
42
+ background:#f7f7f7;
43
+ -moz-border-radius: 3px;
44
+ -khtml-border-radius: 3px;
45
+ -webkit-border-radius: 3px;
46
+ border-radius: 3px;
47
+ }
ReduxCore/inc/fields/media/field_media.min.js ADDED
@@ -0,0 +1 @@
 
1
+ function redux_add_file(e,i){e.preventDefault();var d,t=jQuery(this);return d?(d.open(),void 0):(d=wp.media({multiple:!1,library:{type:"image"},title:t.data("choose"),button:{text:t.data("update")}}),d.on("select",function(){var e=d.state().get("selection").first();d.close(),"image"===e.attributes.type&&(i.find(".upload").val(e.attributes.url).trigger("check_dependencies",i.find(".upload")),i.find(".upload-id").val(e.attributes.id),i.find(".upload-height").val(e.attributes.height),i.find(".upload-width").val(e.attributes.width),"image"!==e.attributes.type||i.find(".upload").hasClass("noPreview")||i.find(".screenshot").empty().hide().append('<img class="redux-option-image" src="'+e.attributes.url+'">').slideDown("fast"),i.find(".remove-image").removeClass("hide"),i.find(".redux-background-properties").slideDown())}),d.open(),void 0)}function redux_remove_file(e){if(e.find(".remove-image").addClass("hide")){redux_change(jQuery("#"+e.attr("rel"))),e.find(".remove-image").addClass("hide"),e.find(".upload").val("").trigger("check_dependencies",e.find(".upload")),e.find(".upload-id").val(""),e.find(".upload-height").val(""),e.find(".upload-width").val(""),e.find(".redux-background-properties").hide();var i=e.find(".screenshot");i.slideUp(),e.find(".remove-file").unbind(),jQuery(".section-upload .upload-notice").length>0&&jQuery(".media_upload_button").remove()}}!function(e){"use strict";e.redux=e.redux||{},e(document).ready(function(){e.redux.media()}),e.redux.media=function(){e(".remove-image, .remove-file").unbind("click").on("click",function(){redux_remove_file(e(this).closest("td")),redux_change(e(this).closest("td:first").find(".upload"))}),e(".media_upload_button").unbind().on("click",function(i){redux_add_file(i,e(this).closest("td")),redux_change(e(this).closest("td:first").find(".upload"))})}}(jQuery);
ReduxCore/inc/fields/media/field_media.php ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redux Framework is free software: you can redistribute it and/or modify
4
+ * it under the terms of the GNU General Public License as published by
5
+ * the Free Software Foundation, either version 2 of the License, or
6
+ * any later version.
7
+ *
8
+ * Redux Framework is distributed in the hope that it will be useful,
9
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ * GNU General Public License for more details.
12
+ *
13
+ * You should have received a copy of the GNU General Public License
14
+ * along with Redux Framework. If not, see <http://www.gnu.org/licenses/>.
15
+ *
16
+ * @package ReduxFramework
17
+ * @subpackage Field_Media
18
+ * @author Daniel J Griffiths (Ghost1227)
19
+ * @author Dovy Paukstys
20
+ * @version 3.0.0
21
+ */
22
+
23
+ // Exit if accessed directly
24
+ if( !defined( 'ABSPATH' ) ) exit;
25
+
26
+ // Don't duplicate me!
27
+ if( !class_exists( 'ReduxFramework_media' ) ) {
28
+
29
+ /**
30
+ * Main ReduxFramework_media class
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ class ReduxFramework_media extends ReduxFramework {
35
+
36
+ /**
37
+ * Field Constructor.
38
+ *
39
+ * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ * @return void
44
+ */
45
+ public function __construct( $field = array(), $value ='', $parent ) {
46
+
47
+ parent::__construct( $parent->sections, $parent->args, $parent->extra_tabs );
48
+
49
+ $this->field = $field;
50
+ $this->value = $value;
51
+
52
+ }
53
+
54
+ /**
55
+ * Field Render Function.
56
+ *
57
+ * Takes the vars and outputs the HTML for the field in the settings
58
+ *
59
+ * @since 1.0.0
60
+ * @access public
61
+ * @return void
62
+ */
63
+ public function render() {
64
+
65
+ // No errors please
66
+ $defaults = array(
67
+ 'id' => '',
68
+ 'url' => '',
69
+ 'width' => '',
70
+ 'height'=> '',
71
+ );
72
+
73
+ $this->value = wp_parse_args( $this->value, $defaults );
74
+
75
+ if( empty( $this->value ) && !empty( $this->field['default'] ) ) { // If there are standard values and value is empty
76
+ if( is_array( $this->field['default'] ) ) {
77
+ if( !empty( $this->field['default']['id'] ) ) {
78
+ $this->value['id'] = $this->field['default']['id'];
79
+ }
80
+
81
+ if( !empty( $this->field['default']['url'] ) ) {
82
+ $this->value['url'] = $this->field['default']['url'];
83
+ }
84
+ } else {
85
+ if( is_numeric( $this->field['default'] ) ) { // Check if it's an attachment ID
86
+ $this->value['id'] = $this->field['default'];
87
+ } else { // Must be a URL
88
+ $this->value['url'] = $this->field['default'];
89
+ }
90
+ }
91
+ }
92
+
93
+
94
+ if( empty( $this->value['url'] ) && !empty( $this->value['id'] ) ) {
95
+ $img = wp_get_attachment_image_src( $this->value['id'], 'full' );
96
+ $this->value['url'] = $img[0];
97
+ $this->value['width'] = $img[1];
98
+ $this->value['height'] = $img[2];
99
+ }
100
+
101
+ $hide = 'hide ';
102
+
103
+ if( (isset( $this->field['preview'] ) && $this->field['preview'] === false) ) {
104
+ $this->field['class'] .= " noPreview";
105
+ }
106
+
107
+ if( ( !empty( $this->field['url'] ) && $this->field['url'] === true ) || isset( $this->field['preview'] ) && $this->field['preview'] === false ) {
108
+ $hide = '';
109
+ }
110
+
111
+ echo '<input class="' . $hide . 'upload ' . $this->field['class'] . '" name="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][url]" id="' . $this->args['opt_name'] . '[' . $this->field['id'] . '][url]" value="' . $this->value['url'] . '" readonly="readonly" />';
112
+ echo '<input type="hidden" class="upload-id '