Coming Soon, Under Construction & Maintenance Page - Version 3.0.0

Version Description

  • 30 Aug 2022 =
  • Major code refactoring
  • Few bug fixes
Download this release

Release Info

Developer wpconcern
Plugin Icon 128x128 Coming Soon, Under Construction & Maintenance Page
Version 3.0.0
Comparing to
See all releases

Code changes from version 2.0.3 to 3.0.0

Files changed (35) hide show
  1. admin/assets/css/ot-admin-rtl.css +0 -635
  2. admin/assets/css/ot-admin.css +0 -4089
  3. admin/assets/fonts/option-tree-font.eot +0 -0
  4. admin/assets/fonts/option-tree-font.svg +0 -379
  5. admin/assets/fonts/option-tree-font.ttf +0 -0
  6. admin/assets/fonts/option-tree-font.woff +0 -0
  7. admin/assets/images/icon.png +0 -0
  8. admin/assets/images/layout/dual-sidebar.png +0 -0
  9. admin/assets/images/layout/full-width.png +0 -0
  10. admin/assets/images/layout/left-dual-sidebar.png +0 -0
  11. admin/assets/images/layout/left-sidebar.png +0 -0
  12. admin/assets/images/layout/right-dual-sidebar.png +0 -0
  13. admin/assets/images/layout/right-sidebar.png +0 -0
  14. admin/assets/images/nx-icon.png +0 -0
  15. admin/assets/images/nx-logo.png +0 -0
  16. admin/assets/images/ot-pre-bg.gif +0 -0
  17. admin/assets/images/ot-select-hover-rtl.png +0 -0
  18. admin/assets/images/ot-select-hover.png +0 -0
  19. admin/assets/images/ot-select-rtl.png +0 -0
  20. admin/assets/images/ot-select.png +0 -0
  21. admin/assets/images/weforms-logo-white.png +0 -0
  22. admin/assets/js/ot-admin.js +0 -1335
  23. admin/assets/js/ot-postformats.js +0 -119
  24. admin/assets/js/vendor/jquery/jquery-ui-timepicker.js +0 -5
  25. admin/includes/class-ot-cleanup.php +0 -306
  26. admin/includes/class-ot-meta-box.php +0 -375
  27. admin/includes/class-ot-post-formats.php +0 -122
  28. admin/includes/class-ot-settings.php +0 -1014
  29. admin/includes/google-fonts.php +0 -5961
  30. admin/includes/ot-cleanup-api.php +0 -295
  31. admin/includes/ot-functions-admin.php +0 -6111
  32. admin/includes/ot-functions-compat.php +0 -366
  33. admin/includes/ot-functions-deprecated.php +0 -94
  34. admin/includes/ot-functions-docs-page.php +0 -1020
  35. admin/includes/ot-functions-option-types.php +0 -2900
admin/assets/css/ot-admin-rtl.css DELETED
@@ -1,635 +0,0 @@
1
- /* --------------------------------------------------
2
- :: OptionTree Font
3
- ---------------------------------------------------*/
4
- .ui-tabs li > a [class^="ot-icon-"],
5
- .ui-tabs li > a [class*=" ot-icon-"] {
6
- display: block;
7
- height: 14px;
8
- float: right;
9
- padding: 2px 0px 0 9px;
10
- }
11
-
12
- /* --------------------------------------------------
13
- :: Messages
14
- ---------------------------------------------------*/
15
- .wrap.settings-wrap div.error,
16
- .wrap.settings-wrap div.updated {
17
- margin: 9px 2px 0px 5px !important;
18
- }
19
-
20
- /* --------------------------------------------------
21
- :: OptionTree Wrappers
22
- ---------------------------------------------------*/
23
- #option-tree-settings-api > .ui-tabs {
24
- margin: 0px 2px 0 5px;
25
- -webkit-box-shadow: inset -146px 0 0 #f1f1f1, inset -147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05);
26
- -moz-box-shadow: inset -146px 0 0 #f1f1f1, inset -147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05);
27
- box-shadow: inset -146px 0 0 #f1f1f1, inset -147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05);
28
- }
29
-
30
- /* --------------------------------------------------
31
- :: Header
32
- ---------------------------------------------------*/
33
- #option-tree-header {
34
- margin: 11px 2px 0 5px;
35
- }
36
- #option-tree-header li {
37
- float: right;
38
- }
39
- #option-tree-header #option-tree-logo a {
40
- border-right: 0;
41
- border-left: 1px solid #333;
42
- float: right;
43
- padding: 3px 13px 3px 12px;
44
- }
45
- #option-tree-header li#option-tree-logo:hover {
46
- -webkit-border-top-right-radius: 2px;
47
- -moz-border-radius-topright: 2px;
48
- border-top-right-radius: 2px;
49
- }
50
- #option-tree-header #option-tree-version span,
51
- #option-tree-header #theme-version span {
52
- border-left: 0;
53
- border-right: 1px solid #555;
54
- float: left;
55
- }
56
- #option-tree-header #theme-version:before {
57
- border-right: 0;
58
- border-left: 1px solid #333;
59
- float: right;
60
- }
61
- /* light */
62
- .admin-color-light #option-tree-header #option-tree-logo a,
63
- .admin-color-light #option-tree-header #theme-version:before {
64
- border-left-color: #3c3c3c;
65
- }
66
- .admin-color-light #option-tree-header li#option-tree-logo:hover a {
67
- border-left-color: #3c3c3c;
68
- }
69
- .admin-color-light #option-tree-header #option-tree-version span,
70
- .admin-color-light #option-tree-header #theme-version span {
71
- border-right-color: #999;
72
- }
73
- /* blue */
74
- .admin-color-blue #option-tree-header #option-tree-logo a,
75
- .admin-color-blue #option-tree-header #theme-version:before {
76
- border-left-color: #002b39;
77
- }
78
- .admin-color-blue #option-tree-header li#option-tree-logo:hover a {
79
- border-left-color: #002b39;
80
- }
81
- .admin-color-blue #option-tree-header #option-tree-version span,
82
- .admin-color-blue #option-tree-header #theme-version span {
83
- border-right-color: #5dc2e6;
84
- }
85
- /* coffee */
86
- .admin-color-coffee #option-tree-header #option-tree-logo a,
87
- .admin-color-coffee #option-tree-header #theme-version:before {
88
- border-left-color: #0f0e0d;
89
- }
90
- .admin-color-coffee #option-tree-header li#option-tree-logo:hover a {
91
- border-left-color: #0f0e0d;
92
- }
93
- .admin-color-coffee #option-tree-header #option-tree-version span,
94
- .admin-color-coffee #option-tree-header #theme-version span {
95
- border-right-color: #675f58;
96
- }
97
- /* ectoplasm */
98
- .admin-color-ectoplasm #option-tree-header #option-tree-logo a,
99
- .admin-color-ectoplasm #option-tree-header #theme-version:before {
100
- border-left-color: #181220;
101
- }
102
- .admin-color-ectoplasm #option-tree-header li#option-tree-logo:hover a {
103
- border-left-color: #181220;
104
- }
105
- .admin-color-ectoplasm #option-tree-header #option-tree-version span,
106
- .admin-color-ectoplasm #option-tree-header #theme-version span {
107
- border-right-color: #644d85;
108
- }
109
- /* midnight */
110
- .admin-color-midnight #option-tree-header #option-tree-logo a,
111
- .admin-color-midnight #option-tree-header #theme-version:before {
112
- border-left-color: #090a0b;
113
- }
114
- .admin-color-midnight #option-tree-header li#option-tree-logo:hover a {
115
- border-left-color: #090a0b;
116
- }
117
- .admin-color-midnight #option-tree-header #option-tree-version span,
118
- .admin-color-midnight #option-tree-header #theme-version span {
119
- border-right-color: #4c5359;
120
- }
121
- /* ocean */
122
- .admin-color-ocean #option-tree-header #option-tree-logo a,
123
- .admin-color-ocean #option-tree-header #theme-version:before {
124
- border-left-color: #39464a;
125
- }
126
- .admin-color-ocean #option-tree-header li#option-tree-logo:hover a {
127
- border-left-color: #39464a;
128
- }
129
- .admin-color-ocean #option-tree-header #option-tree-version span,
130
- .admin-color-ocean #option-tree-header #theme-version span {
131
- border-right-color: #87a6af;
132
- }
133
- /* sunrise */
134
- .admin-color-sunrise #option-tree-header #option-tree-logo a,
135
- .admin-color-sunrise #option-tree-header #theme-version:before {
136
- border-left-color: #8a322a;
137
- }
138
- .admin-color-sunrise #option-tree-header li#option-tree-logo:hover a {
139
- border-left-color: #8a322a;
140
- }
141
- .admin-color-sunrise #option-tree-header #option-tree-version span,
142
- .admin-color-sunrise #option-tree-header #theme-version span {
143
- border-right-color: #e75546;
144
- }
145
-
146
- /* --------------------------------------------------
147
- :: Sub Header
148
- ---------------------------------------------------*/
149
- #option-tree-sub-header {
150
- margin: 0 2px 0 5px;
151
- }
152
-
153
- /* --------------------------------------------------
154
- :: Tabs
155
- ---------------------------------------------------*/
156
- .wrap.settings-wrap .ui-tabs-nav {
157
- float: right;
158
- margin: 0 -4px 0 0;
159
- }
160
- .wrap.settings-wrap .ui-tabs-nav li {
161
- border-left-width: 0;
162
- border-right-width: 1px;
163
- -webkit-border-radius: 0 2px 2px 0;
164
- -moz-border-radius: 0 2px 2px 0;
165
- border-radius: 0 2px 2px 0;
166
- }
167
- .wrap.settings-wrap .ui-tabs-nav li a {
168
- padding: 5px 12px 5px 5px;
169
- }
170
-
171
- /* --------------------------------------------------
172
- :: Format Setting
173
- ---------------------------------------------------*/
174
- .format-setting .format-setting-inner {
175
- float: right;
176
- }
177
- .format-setting .description {
178
- float: left;
179
- }
180
- #post .format-setting-inner p {
181
- float: right;
182
- }
183
- .docs-ul li {
184
- margin-left: 0;
185
- margin-right: 20px;
186
- }
187
- #contextual-help-setting {
188
- float: right;
189
- }
190
- #contextual-help-label {
191
- float: right;
192
- }
193
- #option_tree_settings_help {
194
- float: right;
195
- }
196
- #option-tree-settings-api blockquote {
197
- padding-left: 0;
198
- padding-right: 15px;
199
- }
200
- #option-tree-settings-api blockquote:before {
201
- left: auto;
202
- right: -10px;
203
- top: 10px;
204
- }
205
-
206
- /* --------------------------------------------------
207
- :: Input & Upload
208
- ---------------------------------------------------*/
209
- input.option-tree-ui-upload-input,
210
- input.option-tree-ui-input {
211
- -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
212
- -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
213
- box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
214
- }
215
- .option-tree-sortable input.option-tree-ui-upload-input,
216
- .option-tree-sortable input.option-tree-ui-input {
217
- width: 99.9%; /* fixes a strange bug with input with */
218
- }
219
-
220
- /* --------------------------------------------------
221
- :: Upload
222
- ---------------------------------------------------*/
223
- div.option-tree-ui-media-wrap {
224
- margin: 5px 0 0 55px;
225
- }
226
- .option-tree-ui-media-wrap img {
227
- float: right;
228
- }
229
- .option-tree-ui-upload-parent {
230
- margin-right: 0;
231
- margin-left: 45px;
232
- }
233
- .format-setting .ot_upload_media {
234
- right: auto;
235
- left: -45px;
236
- }
237
- .option-tree-ui-media-wrap a.option-tree-ui-remove-media {
238
- right: auto;
239
- left: -55px;
240
- }
241
-
242
- /* --------------------------------------------------
243
- :: Setting Item with Drag & Drop
244
- ---------------------------------------------------*/
245
- .option-tree-setting .open {
246
- padding: 10px 10px 10px 100px;
247
- }
248
- .option-tree-setting .open:hover:before {
249
- left: auto;
250
- right: 4px;
251
- }
252
- .button-section {
253
- right: auto;
254
- left: 0px;
255
- }
256
-
257
- /* --------------------------------------------------
258
- :: Layouts
259
- ---------------------------------------------------*/
260
- #option-tree-options-layouts-form {
261
- left: auto;
262
- right: 13px;
263
- }
264
- .option-tree-save-layout {
265
- float: right;
266
- }
267
- .option-tree-save-layout.active-layout {
268
- border-left: 0;
269
- border-right: 1px solid #fff;
270
- padding-left: 0;
271
- padding-right: 9px;
272
- }
273
- .option-tree-save-layout .widefat {
274
- float: right;
275
- }
276
- .option-tree-save-layout button.blue {
277
- margin: 0 10px 0 0;
278
- }
279
- .option-tree-active-layout {
280
- border-right: 0;
281
- border-left: 1px solid #ccc;
282
- float: right;
283
- padding: 10px 0 10px 10px;
284
- }
285
- .button.save-layout {
286
- margin: 0 10px 0 0 !important;
287
- }
288
-
289
- /* --------------------------------------------------
290
- :: Option Group
291
- ---------------------------------------------------*/
292
- .ot-option-group {
293
- float: right;
294
- padding-right: 0px;
295
- padding-left: 5px;
296
- }
297
- .ot-option-group--is-last {
298
- padding-left: 0;
299
- }
300
- .ot-option-group--icon {
301
- border-left: 1px solid #ccc;
302
- border-right: 0px;
303
- left: auto;
304
- right: 1px;
305
- }
306
- .ot-option-group--icon + input.option-tree-ui-input {
307
- padding-left: 5px !important;
308
- padding-right: 34px !important;
309
- margin-left: 5px;
310
- margin-right: 0px;
311
- }
312
- .ot-option-group--checkbox {
313
- float: right;
314
- padding-right: 0px;
315
- padding-left: 10px;
316
- }
317
- #post-body .ot-option-group--checkbox p {
318
- float: right;
319
- }
320
-
321
- /* --------------------------------------------------
322
- :: Select
323
- ---------------------------------------------------*/
324
- .select-wrapper {
325
- background: #fff url(../images/ot-select-rtl.png) no-repeat left center;
326
- float: right;
327
- margin: 0 0 5px 5px;
328
- -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
329
- -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
330
- box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
331
- }
332
- .select-wrapper:hover {
333
- background-image: url(../images/ot-select-hover-rtl.png);
334
- }
335
- .select-wrapper span {
336
- padding-left: 27px;
337
- padding-right: 7px;
338
- }
339
- .type-measurement .select-wrapper {
340
- margin-left: 0;
341
- right: auto;
342
- left: 0px;
343
- }
344
- /* FireFox */
345
- @-moz-document url-prefix() {
346
- #option-tree-options-layouts-form .select-wrapper {
347
- left: auto;
348
- right: 250px;
349
- };
350
- }
351
-
352
- /* --------------------------------------------------
353
- :: Measurement
354
- ---------------------------------------------------*/
355
- .option-tree-ui-measurement-input-wrap {
356
- margin-right: 0;
357
- margin-left: 80px;
358
- }
359
-
360
- /* --------------------------------------------------
361
- :: Checkbox & Radio
362
- ---------------------------------------------------*/
363
- .format-setting.type-checkbox input,
364
- .format-setting.type-radio input {
365
- float: right;
366
- margin: 2px 1px 0 5px;
367
- }
368
- .format-setting.type-checkbox label,
369
- .format-setting.type-radio label {
370
- float: right;
371
- }
372
- #option-tree-settings-api .format-setting.type-checkbox p,
373
- #option-tree-settings-api .format-setting.type-radio p {
374
- float: right;
375
- }
376
-
377
- /* --------------------------------------------------
378
- :: Radio Images
379
- ---------------------------------------------------*/
380
- .type-radio-image .option-tree-ui-radio-images {
381
- float: right;
382
- margin: 0 0px 10px 10px;
383
- }
384
-
385
- /* --------------------------------------------------
386
- :: Numeric Slider
387
- ---------------------------------------------------*/
388
- .ot-numeric-slider-wrap {
389
- margin: 0 0 0 96px;
390
- }
391
- .ot-numeric-slider-wrap .ot-numeric-slider-helper-input {
392
- right: auto;
393
- left: 5px;
394
- }
395
- .ot-numeric-slider.ui-slider {
396
- -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
397
- -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
398
- box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
399
- }
400
-
401
- /* --------------------------------------------------
402
- :: Colorpicker
403
- ---------------------------------------------------*/
404
- .option-tree-ui-colorpicker-input-wrap {
405
- float: right;
406
- }
407
- .option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label {
408
- margin-left: 10px;
409
- margin-right: 0px;
410
- }
411
- .type-link-color .option-tree-ui-colorpicker-input-wrap {
412
- margin-left: 20px;
413
- margin-right: 0px;
414
- }
415
- .option-tree-ui-colorpicker-input-wrap .wp-color-result {
416
- margin: 0px 0px 5px 5px;
417
- }
418
- .option-tree-ui-colorpicker-input-wrap .wp-picker-container .iris-picker {
419
- margin: 0px 0px 5px 5px;
420
- }
421
-
422
- /* --------------------------------------------------
423
- :: Google Font
424
- ---------------------------------------------------*/
425
- .js-remove-google-font.option-tree-ui-button.button {
426
- margin-left: 5px;
427
- margin-right: 0;
428
- margin-top: 0;
429
- }
430
-
431
- /* --------------------------------------------------
432
- :: OptionTree UI Buttons
433
- ---------------------------------------------------*/
434
- .option-tree-ui-button {
435
- float: right !important;
436
- }
437
- .option-tree-ui-button.right {
438
- float: left !important;
439
- }
440
- .option-tree-ui-button.hug-left {
441
- margin-right: 0px;
442
- }
443
- .option-tree-ui-button.hug-right {
444
- margin-left: 0px;
445
- }
446
- .option-tree-ui-button.left-item {
447
- float: right !important;
448
- margin: 5px 5px 5px 0;
449
- -webkit-border-radius: 0px 2px 2px 0px;
450
- -moz-border-radius: 0px 2px 2px 0px;
451
- border-radius: 0px 2px 2px 0px;
452
- }
453
- .option-tree-ui-button.center-item {
454
- margin: 5px -1px 5px 0;
455
- }
456
- .option-tree-ui-button.right-item {
457
- float: left !important;
458
- margin: 5px -1px 5px 5px;
459
- -webkit-border-radius: 2px 0px 0px 2px;
460
- -moz-border-radius: 2px 0px 0px 2px;
461
- border-radius: 2px 0px 0px 2px;
462
- }
463
- .option-tree-ui-buttons {
464
- margin: 11px 2px 0 5px;
465
- }
466
- button.reset-settings {
467
- left: auto;
468
- right: 8px;
469
- }
470
-
471
- /* --------------------------------------------------
472
- :: OptionTree UI Button Icons
473
- ---------------------------------------------------*/
474
- .option-tree-ui-button .icon {
475
- float: right;
476
- text-indent: 0;
477
- }
478
- .option-tree-ui-button .icon.left-label {
479
- margin-left: 10px;
480
- float: left;
481
- }
482
-
483
- /* --------------------------------------------------
484
- :: Gallery
485
- ---------------------------------------------------*/
486
- ul.ot-gallery-list {
487
- float: right;
488
- }
489
- ul.ot-gallery-list li {
490
- float: right;
491
- margin: 0px 0 10px 10px;
492
- }
493
- .ot-gallery-buttons {
494
- float: right;
495
- }
496
-
497
- /* --------------------------------------------------
498
- :: Google Fonts
499
- ---------------------------------------------------*/
500
- .option-tree-google-font-family,
501
- .option-tree-google-font-variants,
502
- .option-tree-google-font-subsets,
503
- #option-tree-settings-api p.checkbox-wrap,
504
- #post-body .ot-metabox-panels p.checkbox-wrap {
505
- float: right;
506
- }
507
-
508
- /* --------------------------------------------------
509
- :: On/Off Switch
510
- ---------------------------------------------------*/
511
- @media only screen {
512
- .on-off-switch {
513
- -webkit-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
514
- -moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
515
- box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
516
- }
517
- .on-off-switch label {
518
- float: right;
519
- }
520
- .on-off-switch .slide-button {
521
- left: auto;
522
- right: -1px;
523
- }
524
- .on-off-switch input:last-of-type:checked ~ .slide-button {
525
- left: auto;
526
- right: 50%;
527
- }
528
- }
529
-
530
- /* --------------------------------------------------
531
- :: Date Picker
532
- ---------------------------------------------------*/
533
- .ui-datepicker {
534
- direction: rtl;
535
- }
536
- .ui-datepicker .ui-widget-header {
537
- left: auto;
538
- right: -1px;
539
- }
540
- .ui-datepicker-prev:before {
541
- border-right: 0px;
542
- border-left: 1px solid #555;
543
- content: "\f105";
544
- float: left;
545
- width: 31px;
546
- height: 30px;
547
- }
548
- .ui-datepicker-prev {
549
- border-right: 0px;
550
- border-left: 1px solid #333;
551
- float: right;
552
- width: 31px;
553
- }
554
- .ui-datepicker-next:before {
555
- border-left: 0px;
556
- border-right: 1px solid #333;
557
- content: "\f104";
558
- float: right;
559
- width: 30px;
560
- height: 30px;
561
- }
562
- .ui-datepicker-next {
563
- border-left: 0px;
564
- border-right: 1px solid #555;
565
- float: left;
566
- width: 30px;
567
- }
568
- .ui-datepicker thead th:last-child {
569
- border-left: 1px solid #ccc;
570
- }
571
- .ui-datepicker tbody td {
572
- border-left: 1px solid #ccc;
573
- }
574
- .ui-datepicker tbody td:first-child {
575
- border-left: 0px;
576
- }
577
- .ui-datepicker .ui-datepicker-buttonpane button {
578
- float: left;
579
- }
580
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
581
- float: right;
582
- }
583
- @-moz-document url-prefix() {
584
- .ui-datepicker-calendar {
585
- position: relative;
586
- right: -1px;
587
- }
588
- .ui-datepicker-calendar thead {
589
- border-right: 1px solid #ccc;
590
- }
591
- }
592
-
593
- /* --------------------------------------------------
594
- :: Time Picker
595
- ---------------------------------------------------*/
596
- .ui-timepicker-div {
597
- direction: rtl;
598
- }
599
- .ui-timepicker-div dl {
600
- text-align: right;
601
- padding: 0 5px 0 0;
602
- }
603
- .ui-timepicker-div dl dt {
604
- float: right;
605
- clear: right;
606
- }
607
- .ui-timepicker-div dl dd {
608
- margin: 0 45% 10px 10px;
609
- }
610
-
611
- /* --------------------------------------------------
612
- :: Meta Box Tabs
613
- ---------------------------------------------------*/
614
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav {
615
- float: right;
616
- margin: 0 0 0 -1px;
617
- }
618
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li {
619
- border-width: 1px 1px 1px 0px;
620
- -webkit-border-radius: 0 0 2px 2px;
621
- -moz-border-radius: 0 0 2px 2px;
622
- border-radius: 0 0 2px 2px;
623
- }
624
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a {
625
- padding: 5px 12px 5px 5px;
626
- }
627
-
628
- /* --------------------------------------------------
629
- :: Theme Option & Side Metabox Tabs
630
- ---------------------------------------------------*/
631
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-default,
632
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-default {
633
- float: right;
634
- margin: 0 3px 0 0 !important;
635
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/css/ot-admin.css DELETED
@@ -1,4089 +0,0 @@
1
- .theme-thumb {
2
- min-width: 150px;
3
- display: inline-block;
4
- margin: 15px;
5
- width: calc(33% - 25px);
6
- box-sizing: border-box;
7
- background-color: #f1f1f1;
8
- padding-bottom: 5px;
9
- border: thin solid transparent;
10
- position: relative;
11
- }
12
- #rate-plugin {
13
- left: 150px;
14
- margin: 10px 20px 10px 150px;
15
- padding: 15px;
16
- background-color: #79042e;
17
- width: calc(100% - 400px);
18
- font-size: 16px;
19
- color: #ffffff;
20
- }
21
-
22
- #rate-plugin a {
23
- color: #ffffff;
24
- }
25
-
26
- #option-tree-settings-api #rate-plugin p {
27
- margin: 10px 0 0 0 !important;
28
- }
29
-
30
- .format-setting-wrap .theme-thumb:nth-child(3n + 1) {
31
- margin-left: 0;
32
- }
33
- .theme-thumb:hover {
34
- border: thin solid #00000099;
35
- }
36
- .theme-thumb span {
37
- display: block;
38
- padding: 5px 10px;
39
- }
40
- .theme-thumb span .button {
41
- margin-top: 5px;
42
- }
43
- .theme-thumb img {
44
- max-width: 100%;
45
- border-bottom: 2px solid #fe2929;
46
- }
47
- .theme-thumb span.name {
48
- font-weight: 600;
49
- font-size: 15px;
50
- }
51
- .theme-thumb span.name small {
52
- font-weight: 400;
53
- font-style: italic;
54
- }
55
- .theme-thumb .ribbon {
56
- width: 100px;
57
- height: 100px;
58
- overflow: hidden;
59
- position: absolute;
60
- top: 0;
61
- right: 0;
62
- }
63
- .theme-thumb .ribbon::before,
64
- .theme-thumb .ribbon::after {
65
- position: absolute;
66
- z-index: -1;
67
- content: '';
68
- display: block;
69
- }
70
- .theme-thumb .ribbon i {
71
- position: absolute;
72
- display: inline-block;
73
- padding: 10px;
74
- background-color: #fe2929e6;
75
- color: #fff;
76
- font: 700 18px/1 'Lato', sans-serif;
77
- right: 0;
78
- top: 0;
79
- }
80
- .theme-thumb .ribbon::before,
81
- .theme-thumb .ribbon::after {
82
- border-top-color: transparent;
83
- border-right-color: transparent;
84
- }
85
- .theme-thumb .ribbon::before {
86
- top: 0;
87
- left: 0;
88
- }
89
- .theme-thumb .ribbon::after {
90
- bottom: 0;
91
- right: 0;
92
- }
93
-
94
- /* --------------------------------------------------
95
- :: OptionTree Font
96
- ---------------------------------------------------*/
97
- @font-face {
98
- font-family: "option-tree-font";
99
- src:url("../fonts/option-tree-font.eot");
100
- src:url("../fonts/option-tree-font.eot?#iefix") format("embedded-opentype"),
101
- url("../fonts/option-tree-font.woff") format("woff"),
102
- url("../fonts/option-tree-font.ttf") format("truetype"),
103
- url("../fonts/option-tree-font.svg#option-tree-font") format("svg");
104
- font-weight: normal;
105
- font-style: normal;
106
- }
107
-
108
- [class^="ot-icon-"],
109
- [class*=" ot-icon-"] {
110
- font-family: "option-tree-font";
111
- speak: none;
112
- font-style: normal;
113
- font-weight: normal;
114
- font-variant: normal;
115
- text-transform: none;
116
- line-height: 1;
117
- -webkit-font-smoothing: antialiased;
118
- -moz-osx-font-smoothing: grayscale;
119
- }
120
-
121
- .ui-tabs li > a [class^="ot-icon-"],
122
- .ui-tabs li > a [class*=" ot-icon-"] {
123
- padding-right: 5px;
124
- line-height: 18px;
125
- vertical-align: middle;
126
- }
127
-
128
- .ot-icon-option-tree:before {
129
- content: "\e785";
130
- }
131
- .ot-icon-glass:before {
132
- content: "\f000";
133
- }
134
- .ot-icon-music:before {
135
- content: "\f001";
136
- }
137
- .ot-icon-search:before {
138
- content: "\f002";
139
- }
140
- .ot-icon-envelope-o:before {
141
- content: "\f003";
142
- }
143
- .ot-icon-heart:before {
144
- content: "\f004";
145
- }
146
- .ot-icon-star:before {
147
- content: "\f005";
148
- }
149
- .ot-icon-star-o:before {
150
- content: "\f006";
151
- }
152
- .ot-icon-user:before {
153
- content: "\f007";
154
- }
155
- .ot-icon-film:before {
156
- content: "\f008";
157
- }
158
- .ot-icon-th-large:before {
159
- content: "\f009";
160
- }
161
- .ot-icon-th:before {
162
- content: "\f00a";
163
- }
164
- .ot-icon-th-list:before {
165
- content: "\f00b";
166
- }
167
- .ot-icon-check:before {
168
- content: "\f00c";
169
- }
170
- .ot-icon-times:before {
171
- content: "\f00d";
172
- }
173
- .ot-icon-search-plus:before {
174
- content: "\f00e";
175
- }
176
- .ot-icon-search-minus:before {
177
- content: "\f010";
178
- }
179
- .ot-icon-power-off:before {
180
- content: "\f011";
181
- }
182
- .ot-icon-signal:before {
183
- content: "\f012";
184
- }
185
- .ot-icon-gear:before {
186
- content: "\f013";
187
- }
188
- .ot-icon-trash-o:before {
189
- content: "\f014";
190
- }
191
- .ot-icon-home:before {
192
- content: "\f015";
193
- }
194
- .ot-icon-file-o:before {
195
- content: "\f016";
196
- }
197
- .ot-icon-clock-o:before {
198
- content: "\f017";
199
- }
200
- .ot-icon-road:before {
201
- content: "\f018";
202
- }
203
- .ot-icon-download:before {
204
- content: "\f019";
205
- }
206
- .ot-icon-arrow-circle-o-down:before {
207
- content: "\f01a";
208
- }
209
- .ot-icon-arrow-circle-o-up:before {
210
- content: "\f01b";
211
- }
212
- .ot-icon-inbox:before {
213
- content: "\f01c";
214
- }
215
- .ot-icon-play-circle-o:before {
216
- content: "\f01d";
217
- }
218
- .ot-icon-rotate-right:before {
219
- content: "\f01e";
220
- }
221
- .ot-icon-refresh:before {
222
- content: "\f021";
223
- }
224
- .ot-icon-list-alt:before {
225
- content: "\f022";
226
- }
227
- .ot-icon-lock:before {
228
- content: "\f023";
229
- }
230
- .ot-icon-flag:before {
231
- content: "\f024";
232
- }
233
- .ot-icon-headphones:before {
234
- content: "\f025";
235
- }
236
- .ot-icon-volume-off:before {
237
- content: "\f026";
238
- }
239
- .ot-icon-volume-down:before {
240
- content: "\f027";
241
- }
242
- .ot-icon-volume-up:before {
243
- content: "\f028";
244
- }
245
- .ot-icon-qrcode:before {
246
- content: "\f029";
247
- }
248
- .ot-icon-barcode:before {
249
- content: "\f02a";
250
- }
251
- .ot-icon-tag:before {
252
- content: "\f02b";
253
- }
254
- .ot-icon-tags:before {
255
- content: "\f02c";
256
- }
257
- .ot-icon-book:before {
258
- content: "\f02d";
259
- }
260
- .ot-icon-bookmark:before {
261
- content: "\f02e";
262
- }
263
- .ot-icon-print:before {
264
- content: "\f02f";
265
- }
266
- .ot-icon-camera:before {
267
- content: "\f030";
268
- }
269
- .ot-icon-font:before {
270
- content: "\f031";
271
- }
272
- .ot-icon-bold:before {
273
- content: "\f032";
274
- }
275
- .ot-icon-italic:before {
276
- content: "\f033";
277
- }
278
- .ot-icon-text-height:before {
279
- content: "\f034";
280
- }
281
- .ot-icon-text-width:before {
282
- content: "\f035";
283
- }
284
- .ot-icon-align-left:before {
285
- content: "\f036";
286
- }
287
- .ot-icon-align-center:before {
288
- content: "\f037";
289
- }
290
- .ot-icon-align-right:before {
291
- content: "\f038";
292
- }
293
- .ot-icon-align-justify:before {
294
- content: "\f039";
295
- }
296
- .ot-icon-list:before {
297
- content: "\f03a";
298
- }
299
- .ot-icon-dedent:before {
300
- content: "\f03b";
301
- }
302
- .ot-icon-indent:before {
303
- content: "\f03c";
304
- }
305
- .ot-icon-video-camera:before {
306
- content: "\f03d";
307
- }
308
- .ot-icon-picture-o:before {
309
- content: "\f03e";
310
- }
311
- .ot-icon-pencil:before {
312
- content: "\f040";
313
- }
314
- .ot-icon-map-marker:before {
315
- content: "\f041";
316
- }
317
- .ot-icon-adjust:before {
318
- content: "\f042";
319
- }
320
- .ot-icon-tint:before {
321
- content: "\f043";
322
- }
323
- .ot-icon-edit:before {
324
- content: "\f044";
325
- }
326
- .ot-icon-share-square-o:before {
327
- content: "\f045";
328
- }
329
- .ot-icon-check-square-o:before {
330
- content: "\f046";
331
- }
332
- .ot-icon-arrows:before {
333
- content: "\f047";
334
- }
335
- .ot-icon-step-backward:before {
336
- content: "\f048";
337
- }
338
- .ot-icon-fast-backward:before {
339
- content: "\f049";
340
- }
341
- .ot-icon-backward:before {
342
- content: "\f04a";
343
- }
344
- .ot-icon-play:before {
345
- content: "\f04b";
346
- }
347
- .ot-icon-pause:before {
348
- content: "\f04c";
349
- }
350
- .ot-icon-stop:before {
351
- content: "\f04d";
352
- }
353
- .ot-icon-forward:before {
354
- content: "\f04e";
355
- }
356
- .ot-icon-fast-forward:before {
357
- content: "\f050";
358
- }
359
- .ot-icon-step-forward:before {
360
- content: "\f051";
361
- }
362
- .ot-icon-eject:before {
363
- content: "\f052";
364
- }
365
- .ot-icon-chevron-left:before {
366
- content: "\f053";
367
- }
368
- .ot-icon-chevron-right:before {
369
- content: "\f054";
370
- }
371
- .ot-icon-plus-circle:before {
372
- content: "\f055";
373
- }
374
- .ot-icon-minus-circle:before {
375
- content: "\f056";
376
- }
377
- .ot-icon-times-circle:before {
378
- content: "\f057";
379
- }
380
- .ot-icon-check-circle:before {
381
- content: "\f058";
382
- }
383
- .ot-icon-question-circle:before {
384
- content: "\f059";
385
- }
386
- .ot-icon-info-circle:before {
387
- content: "\f05a";
388
- }
389
- .ot-icon-crosshairs:before {
390
- content: "\f05b";
391
- }
392
- .ot-icon-times-circle-o:before {
393
- content: "\f05c";
394
- }
395
- .ot-icon-check-circle-o:before {
396
- content: "\f05d";
397
- }
398
- .ot-icon-ban:before {
399
- content: "\f05e";
400
- }
401
- .ot-icon-arrow-left:before {
402
- content: "\f060";
403
- }
404
- .ot-icon-arrow-right:before {
405
- content: "\f061";
406
- }
407
- .ot-icon-arrow-up:before {
408
- content: "\f062";
409
- }
410
- .ot-icon-arrow-down:before {
411
- content: "\f063";
412
- }
413
- .ot-icon-mail-forward:before {
414
- content: "\f064";
415
- }
416
- .ot-icon-expand:before {
417
- content: "\f065";
418
- }
419
- .ot-icon-compress:before {
420
- content: "\f066";
421
- }
422
- .ot-icon-plus:before {
423
- content: "\f067";
424
- }
425
- .ot-icon-minus:before {
426
- content: "\f068";
427
- }
428
- .ot-icon-asterisk:before {
429
- content: "\f069";
430
- }
431
- .ot-icon-exclamation-circle:before {
432
- content: "\f06a";
433
- }
434
- .ot-icon-gift:before {
435
- content: "\f06b";
436
- }
437
- .ot-icon-leaf:before {
438
- content: "\f06c";
439
- }
440
- .ot-icon-fire:before {
441
- content: "\f06d";
442
- }
443
- .ot-icon-eye:before {
444
- content: "\f06e";
445
- }
446
- .ot-icon-eye-slash:before {
447
- content: "\f070";
448
- }
449
- .ot-icon-warning:before {
450
- content: "\f071";
451
- }
452
- .ot-icon-plane:before {
453
- content: "\f072";
454
- }
455
- .ot-icon-calendar:before {
456
- content: "\f073";
457
- }
458
- .ot-icon-random:before {
459
- content: "\f074";
460
- }
461
- .ot-icon-comment:before {
462
- content: "\f075";
463
- }
464
- .ot-icon-magnet:before {
465
- content: "\f076";
466
- }
467
- .ot-icon-chevron-up:before {
468
- content: "\f077";
469
- }
470
- .ot-icon-chevron-down:before {
471
- content: "\f078";
472
- }
473
- .ot-icon-retweet:before {
474
- content: "\f079";
475
- }
476
- .ot-icon-shopping-cart:before {
477
- content: "\f07a";
478
- }
479
- .ot-icon-folder:before {
480
- content: "\f07b";
481
- }
482
- .ot-icon-folder-open:before {
483
- content: "\f07c";
484
- }
485
- .ot-icon-arrows-v:before {
486
- content: "\f07d";
487
- }
488
- .ot-icon-arrows-h:before {
489
- content: "\f07e";
490
- }
491
- .ot-icon-bar-chart-o:before {
492
- content: "\f080";
493
- }
494
- .ot-icon-twitter-square:before {
495
- content: "\f081";
496
- }
497
- .ot-icon-facebook-square:before {
498
- content: "\f082";
499
- }
500
- .ot-icon-camera-retro:before {
501
- content: "\f083";
502
- }
503
- .ot-icon-key:before {
504
- content: "\f084";
505
- }
506
- .ot-icon-gears:before {
507
- content: "\f085";
508
- }
509
- .ot-icon-comments:before {
510
- content: "\f086";
511
- }
512
- .ot-icon-thumbs-o-up:before {
513
- content: "\f087";
514
- }
515
- .ot-icon-thumbs-o-down:before {
516
- content: "\f088";
517
- }
518
- .ot-icon-star-half:before {
519
- content: "\f089";
520
- }
521
- .ot-icon-heart-o:before {
522
- content: "\f08a";
523
- }
524
- .ot-icon-sign-out:before {
525
- content: "\f08b";
526
- }
527
- .ot-icon-linkedin-square:before {
528
- content: "\f08c";
529
- }
530
- .ot-icon-thumb-tack:before {
531
- content: "\f08d";
532
- }
533
- .ot-icon-external-link:before {
534
- content: "\f08e";
535
- }
536
- .ot-icon-sign-in:before {
537
- content: "\f090";
538
- }
539
- .ot-icon-trophy:before {
540
- content: "\f091";
541
- }
542
- .ot-icon-github-square:before {
543
- content: "\f092";
544
- }
545
- .ot-icon-upload:before {
546
- content: "\f093";
547
- }
548
- .ot-icon-lemon-o:before {
549
- content: "\f094";
550
- }
551
- .ot-icon-phone:before {
552
- content: "\f095";
553
- }
554
- .ot-icon-square-o:before {
555
- content: "\f096";
556
- }
557
- .ot-icon-bookmark-o:before {
558
- content: "\f097";
559
- }
560
- .ot-icon-phone-square:before {
561
- content: "\f098";
562
- }
563
- .ot-icon-twitter:before {
564
- content: "\f099";
565
- }
566
- .ot-icon-facebook:before {
567
- content: "\f09a";
568
- }
569
- .ot-icon-github:before {
570
- content: "\f09b";
571
- }
572
- .ot-icon-unlock:before {
573
- content: "\f09c";
574
- }
575
- .ot-icon-credit-card:before {
576
- content: "\f09d";
577
- }
578
- .ot-icon-rss:before {
579
- content: "\f09e";
580
- }
581
- .ot-icon-hdd-o:before {
582
- content: "\f0a0";
583
- }
584
- .ot-icon-bullhorn:before {
585
- content: "\f0a1";
586
- }
587
- .ot-icon-bell:before {
588
- content: "\f0a2";
589
- }
590
- .ot-icon-certificate:before {
591
- content: "\f0a3";
592
- }
593
- .ot-icon-hand-o-right:before {
594
- content: "\f0a4";
595
- }
596
- .ot-icon-hand-o-left:before {
597
- content: "\f0a5";
598
- }
599
- .ot-icon-hand-o-up:before {
600
- content: "\f0a6";
601
- }
602
- .ot-icon-hand-o-down:before {
603
- content: "\f0a7";
604
- }
605
- .ot-icon-arrow-circle-left:before {
606
- content: "\f0a8";
607
- }
608
- .ot-icon-arrow-circle-right:before {
609
- content: "\f0a9";
610
- }
611
- .ot-icon-arrow-circle-up:before {
612
- content: "\f0aa";
613
- }
614
- .ot-icon-arrow-circle-down:before {
615
- content: "\f0ab";
616
- }
617
- .ot-icon-globe:before {
618
- content: "\f0ac";
619
- }
620
- .ot-icon-wrench:before {
621
- content: "\f0ad";
622
- }
623
- .ot-icon-tasks:before {
624
- content: "\f0ae";
625
- }
626
- .ot-icon-filter:before {
627
- content: "\f0b0";
628
- }
629
- .ot-icon-briefcase:before {
630
- content: "\f0b1";
631
- }
632
- .ot-icon-arrows-alt:before {
633
- content: "\f0b2";
634
- }
635
- .ot-icon-group:before {
636
- content: "\f0c0";
637
- }
638
- .ot-icon-chain:before {
639
- content: "\f0c1";
640
- }
641
- .ot-icon-cloud:before {
642
- content: "\f0c2";
643
- }
644
- .ot-icon-flask:before {
645
- content: "\f0c3";
646
- }
647
- .ot-icon-cut:before {
648
- content: "\f0c4";
649
- }
650
- .ot-icon-copy:before {
651
- content: "\f0c5";
652
- }
653
- .ot-icon-paperclip:before {
654
- content: "\f0c6";
655
- }
656
- .ot-icon-save:before {
657
- content: "\f0c7";
658
- }
659
- .ot-icon-square:before {
660
- content: "\f0c8";
661
- }
662
- .ot-icon-bars:before {
663
- content: "\f0c9";
664
- }
665
- .ot-icon-list-ul:before {
666
- content: "\f0ca";
667
- }
668
- .ot-icon-list-ol:before {
669
- content: "\f0cb";
670
- }
671
- .ot-icon-strikethrough:before {
672
- content: "\f0cc";
673
- }
674
- .ot-icon-underline:before {
675
- content: "\f0cd";
676
- }
677
- .ot-icon-table:before {
678
- content: "\f0ce";
679
- }
680
- .ot-icon-magic:before {
681
- content: "\f0d0";
682
- }
683
- .ot-icon-truck:before {
684
- content: "\f0d1";
685
- }
686
- .ot-icon-pinterest:before {
687
- content: "\f0d2";
688
- }
689
- .ot-icon-pinterest-square:before {
690
- content: "\f0d3";
691
- }
692
- .ot-icon-google-plus-square:before {
693
- content: "\f0d4";
694
- }
695
- .ot-icon-google-plus:before {
696
- content: "\f0d5";
697
- }
698
- .ot-icon-money:before {
699
- content: "\f0d6";
700
- }
701
- .ot-icon-caret-down:before {
702
- content: "\f0d7";
703
- }
704
- .ot-icon-caret-up:before {
705
- content: "\f0d8";
706
- }
707
- .ot-icon-caret-left:before {
708
- content: "\f0d9";
709
- }
710
- .ot-icon-caret-right:before {
711
- content: "\f0da";
712
- }
713
- .ot-icon-columns:before {
714
- content: "\f0db";
715
- }
716
- .ot-icon-unsorted:before {
717
- content: "\f0dc";
718
- }
719
- .ot-icon-sort-down:before {
720
- content: "\f0dd";
721
- }
722
- .ot-icon-sort-up:before {
723
- content: "\f0de";
724
- }
725
- .ot-icon-envelope:before {
726
- content: "\f0e0";
727
- }
728
- .ot-icon-linkedin:before {
729
- content: "\f0e1";
730
- }
731
- .ot-icon-rotate-left:before {
732
- content: "\f0e2";
733
- }
734
- .ot-icon-legal:before {
735
- content: "\f0e3";
736
- }
737
- .ot-icon-dashboard:before {
738
- content: "\f0e4";
739
- }
740
- .ot-icon-comment-o:before {
741
- content: "\f0e5";
742
- }
743
- .ot-icon-comments-o:before {
744
- content: "\f0e6";
745
- }
746
- .ot-icon-flash:before {
747
- content: "\f0e7";
748
- }
749
- .ot-icon-sitemap:before {
750
- content: "\f0e8";
751
- }
752
- .ot-icon-umbrella:before {
753
- content: "\f0e9";
754
- }
755
- .ot-icon-paste:before {
756
- content: "\f0ea";
757
- }
758
- .ot-icon-lightbulb-o:before {
759
- content: "\f0eb";
760
- }
761
- .ot-icon-exchange:before {
762
- content: "\f0ec";
763
- }
764
- .ot-icon-cloud-download:before {
765
- content: "\f0ed";
766
- }
767
- .ot-icon-cloud-upload:before {
768
- content: "\f0ee";
769
- }
770
- .ot-icon-user-md:before {
771
- content: "\f0f0";
772
- }
773
- .ot-icon-stethoscope:before {
774
- content: "\f0f1";
775
- }
776
- .ot-icon-suitcase:before {
777
- content: "\f0f2";
778
- }
779
- .ot-icon-bell-o:before {
780
- content: "\f0f3";
781
- }
782
- .ot-icon-coffee:before {
783
- content: "\f0f4";
784
- }
785
- .ot-icon-cutlery:before {
786
- content: "\f0f5";
787
- }
788
- .ot-icon-file-text-o:before {
789
- content: "\f0f6";
790
- }
791
- .ot-icon-building-o:before {
792
- content: "\f0f7";
793
- }
794
- .ot-icon-hospital-o:before {
795
- content: "\f0f8";
796
- }
797
- .ot-icon-ambulance:before {
798
- content: "\f0f9";
799
- }
800
- .ot-icon-medkit:before {
801
- content: "\f0fa";
802
- }
803
- .ot-icon-fighter-jet:before {
804
- content: "\f0fb";
805
- }
806
- .ot-icon-beer:before {
807
- content: "\f0fc";
808
- }
809
- .ot-icon-h-square:before {
810
- content: "\f0fd";
811
- }
812
- .ot-icon-plus-square:before {
813
- content: "\f0fe";
814
- }
815
- .ot-icon-angle-double-left:before {
816
- content: "\f100";
817
- }
818
- .ot-icon-angle-double-right:before {
819
- content: "\f101";
820
- }
821
- .ot-icon-angle-double-up:before {
822
- content: "\f102";
823
- }
824
- .ot-icon-angle-double-down:before {
825
- content: "\f103";
826
- }
827
- .ot-icon-angle-left:before {
828
- content: "\f104";
829
- }
830
- .ot-icon-angle-right:before {
831
- content: "\f105";
832
- }
833
- .ot-icon-angle-up:before {
834
- content: "\f106";
835
- }
836
- .ot-icon-angle-down:before {
837
- content: "\f107";
838
- }
839
- .ot-icon-desktop:before {
840
- content: "\f108";
841
- }
842
- .ot-icon-laptop:before {
843
- content: "\f109";
844
- }
845
- .ot-icon-tablet:before {
846
- content: "\f10a";
847
- }
848
- .ot-icon-mobile-phone:before {
849
- content: "\f10b";
850
- }
851
- .ot-icon-circle-o:before {
852
- content: "\f10c";
853
- }
854
- .ot-icon-quote-left:before {
855
- content: "\f10d";
856
- }
857
- .ot-icon-quote-right:before {
858
- content: "\f10e";
859
- }
860
- .ot-icon-spinner:before {
861
- content: "\f110";
862
- }
863
- .ot-icon-circle:before {
864
- content: "\f111";
865
- }
866
- .ot-icon-mail-reply:before {
867
- content: "\f112";
868
- }
869
- .ot-icon-github-alt:before {
870
- content: "\f113";
871
- }
872
- .ot-icon-folder-o:before {
873
- content: "\f114";
874
- }
875
- .ot-icon-folder-open-o:before {
876
- content: "\f115";
877
- }
878
- .ot-icon-smile-o:before {
879
- content: "\f118";
880
- }
881
- .ot-icon-frown-o:before {
882
- content: "\f119";
883
- }
884
- .ot-icon-meh-o:before {
885
- content: "\f11a";
886
- }
887
- .ot-icon-gamepad:before {
888
- content: "\f11b";
889
- }
890
- .ot-icon-keyboard-o:before {
891
- content: "\f11c";
892
- }
893
- .ot-icon-flag-o:before {
894
- content: "\f11d";
895
- }
896
- .ot-icon-flag-checkered:before {
897
- content: "\f11e";
898
- }
899
- .ot-icon-terminal:before {
900
- content: "\f120";
901
- }
902
- .ot-icon-code:before {
903
- content: "\f121";
904
- }
905
- .ot-icon-reply-all:before {
906
- content: "\f122";
907
- }
908
- .ot-icon-star-half-empty:before {
909
- content: "\f123";
910
- }
911
- .ot-icon-location-arrow:before {
912
- content: "\f124";
913
- }
914
- .ot-icon-crop:before {
915
- content: "\f125";
916
- }
917
- .ot-icon-code-fork:before {
918
- content: "\f126";
919
- }
920
- .ot-icon-unlink:before {
921
- content: "\f127";
922
- }
923
- .ot-icon-question:before {
924
- content: "\f128";
925
- }
926
- .ot-icon-info:before {
927
- content: "\f129";
928
- }
929
- .ot-icon-exclamation:before {
930
- content: "\f12a";
931
- }
932
- .ot-icon-superscript:before {
933
- content: "\f12b";
934
- }
935
- .ot-icon-subscript:before {
936
- content: "\f12c";
937
- }
938
- .ot-icon-eraser:before {
939
- content: "\f12d";
940
- }
941
- .ot-icon-puzzle-piece:before {
942
- content: "\f12e";
943
- }
944
- .ot-icon-microphone:before {
945
- content: "\f130";
946
- }
947
- .ot-icon-microphone-slash:before {
948
- content: "\f131";
949
- }
950
- .ot-icon-shield:before {
951
- content: "\f132";
952
- }
953
- .ot-icon-calendar-o:before {
954
- content: "\f133";
955
- }
956
- .ot-icon-fire-extinguisher:before {
957
- content: "\f134";
958
- }
959
- .ot-icon-rocket:before {
960
- content: "\f135";
961
- }
962
- .ot-icon-maxcdn:before {
963
- content: "\f136";
964
- }
965
- .ot-icon-chevron-circle-left:before {
966
- content: "\f137";
967
- }
968
- .ot-icon-chevron-circle-right:before {
969
- content: "\f138";
970
- }
971
- .ot-icon-chevron-circle-up:before {
972
- content: "\f139";
973
- }
974
- .ot-icon-chevron-circle-down:before {
975
- content: "\f13a";
976
- }
977
- .ot-icon-html5:before {
978
- content: "\f13b";
979
- }
980
- .ot-icon-css3:before {
981
- content: "\f13c";
982
- }
983
- .ot-icon-anchor:before {
984
- content: "\f13d";
985
- }
986
- .ot-icon-unlock-alt:before {
987
- content: "\f13e";
988
- }
989
- .ot-icon-bullseye:before {
990
- content: "\f140";
991
- }
992
- .ot-icon-ellipsis-h:before {
993
- content: "\f141";
994
- }
995
- .ot-icon-ellipsis-v:before {
996
- content: "\f142";
997
- }
998
- .ot-icon-rss-square:before {
999
- content: "\f143";
1000
- }
1001
- .ot-icon-play-circle:before {
1002
- content: "\f144";
1003
- }
1004
- .ot-icon-ticket:before {
1005
- content: "\f145";
1006
- }
1007
- .ot-icon-minus-square:before {
1008
- content: "\f146";
1009
- }
1010
- .ot-icon-minus-square-o:before {
1011
- content: "\f147";
1012
- }
1013
- .ot-icon-level-up:before {
1014
- content: "\f148";
1015
- }
1016
- .ot-icon-level-down:before {
1017
- content: "\f149";
1018
- }
1019
- .ot-icon-check-square:before {
1020
- content: "\f14a";
1021
- }
1022
- .ot-icon-pencil-square:before {
1023
- content: "\f14b";
1024
- }
1025
- .ot-icon-external-link-square:before {
1026
- content: "\f14c";
1027
- }
1028
- .ot-icon-share-square:before {
1029
- content: "\f14d";
1030
- }
1031
- .ot-icon-compass:before {
1032
- content: "\f14e";
1033
- }
1034
- .ot-icon-toggle-down:before {
1035
- content: "\f150";
1036
- }
1037
- .ot-icon-toggle-up:before {
1038
- content: "\f151";
1039
- }
1040
- .ot-icon-toggle-right:before {
1041
- content: "\f152";
1042
- }
1043
- .ot-icon-euro:before {
1044
- content: "\f153";
1045
- }
1046
- .ot-icon-gbp:before {
1047
- content: "\f154";
1048
- }
1049
- .ot-icon-dollar:before {
1050
- content: "\f155";
1051
- }
1052
- .ot-icon-rupee:before {
1053
- content: "\f156";
1054
- }
1055
- .ot-icon-cny:before {
1056
- content: "\f157";
1057
- }
1058
- .ot-icon-ruble:before {
1059
- content: "\f158";
1060
- }
1061
- .ot-icon-won:before {
1062
- content: "\f159";
1063
- }
1064
- .ot-icon-bitcoin:before {
1065
- content: "\f15a";
1066
- }
1067
- .ot-icon-file:before {
1068
- content: "\f15b";
1069
- }
1070
- .ot-icon-file-text:before {
1071
- content: "\f15c";
1072
- }
1073
- .ot-icon-sort-alpha-asc:before {
1074
- content: "\f15d";
1075
- }
1076
- .ot-icon-sort-alpha-desc:before {
1077
- content: "\f15e";
1078
- }
1079
- .ot-icon-sort-amount-asc:before {
1080
- content: "\f160";
1081
- }
1082
- .ot-icon-sort-amount-desc:before {
1083
- content: "\f161";
1084
- }
1085
- .ot-icon-sort-numeric-asc:before {
1086
- content: "\f162";
1087
- }
1088
- .ot-icon-sort-numeric-desc:before {
1089
- content: "\f163";
1090
- }
1091
- .ot-icon-thumbs-up:before {
1092
- content: "\f164";
1093
- }
1094
- .ot-icon-thumbs-down:before {
1095
- content: "\f165";
1096
- }
1097
- .ot-icon-youtube-square:before {
1098
- content: "\f166";
1099
- }
1100
- .ot-icon-youtube:before {
1101
- content: "\f167";
1102
- }
1103
- .ot-icon-xing:before {
1104
- content: "\f168";
1105
- }
1106
- .ot-icon-xing-square:before {
1107
- content: "\f169";
1108
- }
1109
- .ot-icon-youtube-play:before {
1110
- content: "\f16a";
1111
- }
1112
- .ot-icon-dropbox:before {
1113
- content: "\f16b";
1114
- }
1115
- .ot-icon-stack-overflow:before {
1116
- content: "\f16c";
1117
- }
1118
- .ot-icon-instagram:before {
1119
- content: "\f16d";
1120
- }
1121
- .ot-icon-flickr:before {
1122
- content: "\f16e";
1123
- }
1124
- .ot-icon-adn:before {
1125
- content: "\f170";
1126
- }
1127
- .ot-icon-bitbucket:before {
1128
- content: "\f171";
1129
- }
1130
- .ot-icon-bitbucket-square:before {
1131
- content: "\f172";
1132
- }
1133
- .ot-icon-tumblr:before {
1134
- content: "\f173";
1135
- }
1136
- .ot-icon-tumblr-square:before {
1137
- content: "\f174";
1138
- }
1139
- .ot-icon-long-arrow-down:before {
1140
- content: "\f175";
1141
- }
1142
- .ot-icon-long-arrow-up:before {
1143
- content: "\f176";
1144
- }
1145
- .ot-icon-long-arrow-left:before {
1146
- content: "\f177";
1147
- }
1148
- .ot-icon-long-arrow-right:before {
1149
- content: "\f178";
1150
- }
1151
- .ot-icon-apple:before {
1152
- content: "\f179";
1153
- }
1154
- .ot-icon-windows:before {
1155
- content: "\f17a";
1156
- }
1157
- .ot-icon-android:before {
1158
- content: "\f17b";
1159
- }
1160
- .ot-icon-linux:before {
1161
- content: "\f17c";
1162
- }
1163
- .ot-icon-dribbble:before {
1164
- content: "\f17d";
1165
- }
1166
- .ot-icon-skype:before {
1167
- content: "\f17e";
1168
- }
1169
- .ot-icon-foursquare:before {
1170
- content: "\f180";
1171
- }
1172
- .ot-icon-trello:before {
1173
- content: "\f181";
1174
- }
1175
- .ot-icon-female:before {
1176
- content: "\f182";
1177
- }
1178
- .ot-icon-male:before {
1179
- content: "\f183";
1180
- }
1181
- .ot-icon-gittip:before {
1182
- content: "\f184";
1183
- }
1184
- .ot-icon-sun-o:before {
1185
- content: "\f185";
1186
- }
1187
- .ot-icon-moon-o:before {
1188
- content: "\f186";
1189
- }
1190
- .ot-icon-archive:before {
1191
- content: "\f187";
1192
- }
1193
- .ot-icon-bug:before {
1194
- content: "\f188";
1195
- }
1196
- .ot-icon-vk:before {
1197
- content: "\f189";
1198
- }
1199
- .ot-icon-weibo:before {
1200
- content: "\f18a";
1201
- }
1202
- .ot-icon-renren:before {
1203
- content: "\f18b";
1204
- }
1205
- .ot-icon-pagelines:before {
1206
- content: "\f18c";
1207
- }
1208
- .ot-icon-stack-exchange:before {
1209
- content: "\f18d";
1210
- }
1211
- .ot-icon-arrow-circle-o-right:before {
1212
- content: "\f18e";
1213
- }
1214
- .ot-icon-arrow-circle-o-left:before {
1215
- content: "\f190";
1216
- }
1217
- .ot-icon-toggle-left:before {
1218
- content: "\f191";
1219
- }
1220
- .ot-icon-dot-circle-o:before {
1221
- content: "\f192";
1222
- }
1223
- .ot-icon-wheelchair:before {
1224
- content: "\f193";
1225
- }
1226
- .ot-icon-vimeo-square:before {
1227
- content: "\f194";
1228
- }
1229
- .ot-icon-turkish-lira:before {
1230
- content: "\f195";
1231
- }
1232
- .ot-icon-plus-square-o:before {
1233
- content: "\f196";
1234
- }
1235
-
1236
- /* --------------------------------------------------
1237
- :: Screen Meta & Menu Icon
1238
- ---------------------------------------------------*/
1239
- .appearance_page_ot-theme-options #screen-meta {
1240
- margin-right: 20px;
1241
- margin-left: 2px;
1242
- min-width: 533px;
1243
- }
1244
-
1245
- /* --------------------------------------------------
1246
- :: Messages
1247
- ---------------------------------------------------*/
1248
- .wrap.settings-wrap div.error,
1249
- .wrap.settings-wrap div.updated {
1250
- margin: 9px 5px 0px 2px !important;
1251
- }
1252
-
1253
- /* --------------------------------------------------
1254
- :: OptionTree Wrappers
1255
- ---------------------------------------------------*/
1256
- #option-tree-settings-api .metabox-holder {
1257
- overflow: hidden;
1258
- }
1259
- #option-tree-settings-api .postbox {
1260
- background: #fff;
1261
- border: none;
1262
- margin: 0 20px;
1263
- }
1264
- #option-tree-settings-api .inside {
1265
- margin: 0px !important;
1266
- padding: 0px !important;
1267
- }
1268
- #option-tree-settings-api > .ui-tabs {
1269
- background: #fff;
1270
- border: 1px solid #ccc;
1271
- border-top: none;
1272
- margin: 0px 5px 0 2px;
1273
- min-width: 533px;
1274
- padding-bottom: 5px;
1275
- position: relative;
1276
- -webkit-box-shadow: inset 146px 0 0 #f1f1f1, inset 147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05);
1277
- -moz-box-shadow: inset 146px 0 0 #f1f1f1, inset 147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05);
1278
- box-shadow: inset 146px 0 0 #f1f1f1, inset 147px 0 0 #ccc, 0 1px 3px rgba(0,0,0,0.05);
1279
- -webkit-border-radius: 0 0 2px 2px;
1280
- -moz-border-radius: 0 0 2px 2px;
1281
- border-radius: 0 0 2px 2px;
1282
- }
1283
-
1284
- /* --------------------------------------------------
1285
- :: Header
1286
- ---------------------------------------------------*/
1287
- #option-tree-header-wrap {
1288
- position: relative;
1289
- }
1290
- #option-tree-header {
1291
- background: #333;
1292
- color: #bbb;
1293
- display: block;
1294
- margin: 11px 5px 0 2px;
1295
- min-width: 535px;
1296
- overflow: hidden;
1297
- position: relative;
1298
- -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05);
1299
- -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.05);
1300
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
1301
- -webkit-border-radius: 2px 2px 0 0;
1302
- -moz-border-radius: 2px 2px 0 0;
1303
- border-radius: 2px 2px 0 0;
1304
- }
1305
- #option-tree-header li {
1306
- display: block;
1307
- float: left;
1308
- margin: 0px;
1309
- padding: 0px;
1310
- }
1311
- #option-tree-header li a {
1312
- color: #999;
1313
- text-decoration: none;
1314
- -webkit-transition: none;
1315
- -moz-transition: none;
1316
- transition: none;
1317
- }
1318
- #option-tree-header li a:hover {
1319
- color: #0074a2;
1320
- }
1321
- #option-tree-header #option-tree-logo a {
1322
- border-right: 1px solid #000;
1323
- float: left;
1324
- height: 24px;
1325
- padding: 3px 12px 3px 13px;
1326
- width: 20px;
1327
- }
1328
- #option-tree-header #option-tree-logo a:before {
1329
- content: "\e785";
1330
- font: normal 20px/1 "option-tree-font" !important;
1331
- speak: none;
1332
- padding: 2px 0;
1333
- height: 24px;
1334
- width: 20px;
1335
- display: inline-block;
1336
- -webkit-font-smoothing: antialiased;
1337
- -moz-osx-font-smoothing: grayscale;
1338
- -webkit-transition: all .1s ease-in-out;
1339
- -moz-transition: all .1s ease-in-out;
1340
- transition: all .1s ease-in-out;
1341
- }
1342
- #option-tree-header li#option-tree-logo:hover {
1343
- background-color: #222;
1344
- color: #0074a2;
1345
- -webkit-border-top-left-radius: 2px;
1346
- -moz-border-radius-topleft: 2px;
1347
- border-top-left-radius: 2px;
1348
- }
1349
- #option-tree-header li#option-tree-logo:hover a {
1350
- border-right-color: #000;
1351
- }
1352
- #option-tree-header #option-tree-version span,
1353
- #option-tree-header #theme-version span {
1354
- border-left: 1px solid #444;
1355
- display: block;
1356
- float: left;
1357
- height: 24px;
1358
- line-height: 24px;
1359
- padding: 3px 12px 3px 12px;
1360
- }
1361
- #option-tree-header #theme-version:before {
1362
- border-right: 1px solid #000;
1363
- content: "";
1364
- display: block;
1365
- float: left;
1366
- height: 30px;
1367
- }
1368
- /* light */
1369
- .admin-color-light #option-tree-header {
1370
- background: #888;
1371
- color: #fff;
1372
- }
1373
- .admin-color-light #option-tree-header li a {
1374
- color: #ccc;
1375
- }
1376
- .admin-color-light #option-tree-header li a:hover {
1377
- color: #eee;
1378
- }
1379
- .admin-color-light #option-tree-header #option-tree-logo a,
1380
- .admin-color-light #option-tree-header #theme-version:before {
1381
- border-right-color: #3c3c3c;
1382
- }
1383
- .admin-color-light #option-tree-header li#option-tree-logo:hover {
1384
- background-color: #777;
1385
- }
1386
- .admin-color-light #option-tree-header li#option-tree-logo:hover a {
1387
- border-right-color: #3c3c3c;
1388
- }
1389
- .admin-color-light #option-tree-header #option-tree-version span,
1390
- .admin-color-light #option-tree-header #theme-version span {
1391
- border-left-color: #999;
1392
- }
1393
- /* blue */
1394
- .admin-color-blue #option-tree-header {
1395
- background: #52accc;
1396
- color: #fff;
1397
- }
1398
- .admin-color-blue #option-tree-header li a {
1399
- color: #e2f8ff;
1400
- }
1401
- .admin-color-blue #option-tree-header li a:hover {
1402
- color: #fff;
1403
- }
1404
- .admin-color-blue #option-tree-header #option-tree-logo a,
1405
- .admin-color-blue #option-tree-header #theme-version:before {
1406
- border-right-color: #002b39;
1407
- }
1408
- .admin-color-blue #option-tree-header li#option-tree-logo:hover {
1409
- background-color: #006484;
1410
- }
1411
- .admin-color-blue #option-tree-header li#option-tree-logo:hover a {
1412
- border-right-color: #002b39;
1413
- }
1414
- .admin-color-blue #option-tree-header #option-tree-version span,
1415
- .admin-color-blue #option-tree-header #theme-version span {
1416
- border-left-color: #5dc2e6;
1417
- }
1418
- /* coffee */
1419
- .admin-color-coffee #option-tree-header {
1420
- background: #59524c;
1421
- color: #c7cbc9;
1422
- }
1423
- .admin-color-coffee #option-tree-header li a {
1424
- color: #f3f2f1;
1425
- }
1426
- .admin-color-coffee #option-tree-header li a:hover {
1427
- color: #fff;
1428
- }
1429
- .admin-color-coffee #option-tree-header #option-tree-logo a,
1430
- .admin-color-coffee #option-tree-header #theme-version:before {
1431
- border-right-color: #0f0e0d;
1432
- }
1433
- .admin-color-coffee #option-tree-header li#option-tree-logo:hover {
1434
- background-color: #cca588;
1435
- }
1436
- .admin-color-coffee #option-tree-header li#option-tree-logo:hover a {
1437
- border-right-color: #0f0e0d;
1438
- }
1439
- .admin-color-coffee #option-tree-header #option-tree-version span,
1440
- .admin-color-coffee #option-tree-header #theme-version span {
1441
- border-left-color: #675f58;
1442
- }
1443
- /* ectoplasm */
1444
- .admin-color-ectoplasm #option-tree-header {
1445
- background: #523f6d;
1446
- color: #c6c6d3;
1447
- }
1448
- .admin-color-ectoplasm #option-tree-header li a {
1449
- color: #f3f2f1;
1450
- }
1451
- .admin-color-ectoplasm #option-tree-header li a:hover {
1452
- color: #fff;
1453
- }
1454
- .admin-color-ectoplasm #option-tree-header #option-tree-logo a,
1455
- .admin-color-ectoplasm #option-tree-header #theme-version:before {
1456
- border-right-color: #181220;
1457
- }
1458
- .admin-color-ectoplasm #option-tree-header li#option-tree-logo:hover {
1459
- background-color: #a3b542;
1460
- }
1461
- .admin-color-ectoplasm #option-tree-header li#option-tree-logo:hover a {
1462
- border-right-color: #181220;
1463
- }
1464
- .admin-color-ectoplasm #option-tree-header #option-tree-version span,
1465
- .admin-color-ectoplasm #option-tree-header #theme-version span {
1466
- border-left-color: #644d85;
1467
- }
1468
- /* midnight */
1469
- .admin-color-midnight #option-tree-header {
1470
- background: #363b3f;
1471
- color: #f1f2f3;
1472
- }
1473
- .admin-color-midnight #option-tree-header li a {
1474
- color: #f1f2f3;
1475
- }
1476
- .admin-color-midnight #option-tree-header li a:hover {
1477
- color: #fff;
1478
- }
1479
- .admin-color-midnight #option-tree-header #option-tree-logo a,
1480
- .admin-color-midnight #option-tree-header #theme-version:before {
1481
- border-right-color: #090a0b;
1482
- }
1483
- .admin-color-midnight #option-tree-header li#option-tree-logo:hover {
1484
- background-color: #ed543f;
1485
- }
1486
- .admin-color-midnight #option-tree-header li#option-tree-logo:hover a {
1487
- border-right-color: #090a0b;
1488
- }
1489
- .admin-color-midnight #option-tree-header #option-tree-version span,
1490
- .admin-color-midnight #option-tree-header #theme-version span {
1491
- border-left-color: #4c5359;
1492
- }
1493
- /* ocean */
1494
- .admin-color-ocean #option-tree-header {
1495
- background: #738e96;
1496
- color: #f1fcff;
1497
- }
1498
- .admin-color-ocean #option-tree-header li a {
1499
- color: #f1fcff;
1500
- }
1501
- .admin-color-ocean #option-tree-header li a:hover {
1502
- color: #fff;
1503
- }
1504
- .admin-color-ocean #option-tree-header #option-tree-logo a,
1505
- .admin-color-ocean #option-tree-header #theme-version:before {
1506
- border-right-color: #39464a;
1507
- }
1508
- .admin-color-ocean #option-tree-header li#option-tree-logo:hover {
1509
- background-color: #9ab8a0;
1510
- }
1511
- .admin-color-ocean #option-tree-header li#option-tree-logo:hover a {
1512
- border-right-color: #39464a;
1513
- }
1514
- .admin-color-ocean #option-tree-header #option-tree-version span,
1515
- .admin-color-ocean #option-tree-header #theme-version span {
1516
- border-left-color: #87a6af;
1517
- }
1518
- /* sunrise */
1519
- .admin-color-sunrise #option-tree-header {
1520
- background: #da4f41;
1521
- color: #fff;
1522
- }
1523
- .admin-color-sunrise #option-tree-header li a {
1524
- color: #f3f1f1;
1525
- }
1526
- .admin-color-sunrise #option-tree-header li a:hover {
1527
- color: #fff;
1528
- }
1529
- .admin-color-sunrise #option-tree-header #option-tree-logo a,
1530
- .admin-color-sunrise #option-tree-header #theme-version:before {
1531
- border-right-color: #8a322a;
1532
- }
1533
- .admin-color-sunrise #option-tree-header li#option-tree-logo:hover {
1534
- background-color: #e88436;
1535
- }
1536
- .admin-color-sunrise #option-tree-header li#option-tree-logo:hover a {
1537
- border-right-color: #8a322a;
1538
- }
1539
- .admin-color-sunrise #option-tree-header #option-tree-version span,
1540
- .admin-color-sunrise #option-tree-header #theme-version span {
1541
- border-left-color: #e75546;
1542
- }
1543
-
1544
- /* --------------------------------------------------
1545
- :: Sub Header
1546
- ---------------------------------------------------*/
1547
- #option-tree-sub-header {
1548
- background: #fafafa;
1549
- border: 1px solid #ccc;
1550
- border-top: none;
1551
- display: block;
1552
- margin: 0 5px 0 2px;
1553
- min-width: 523px;
1554
- overflow: hidden;
1555
- padding: 5px;
1556
- position: relative;
1557
- -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 3px rgba(0,0,0,0.05);
1558
- -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 3px rgba(0,0,0,0.05);
1559
- box-shadow: inset 0 1px 0 #fff, 0 1px 3px rgba(0,0,0,0.05);
1560
- }
1561
-
1562
- /* --------------------------------------------------
1563
- :: Tabs
1564
- ---------------------------------------------------*/
1565
- .wrap.settings-wrap .ui-tabs-nav {
1566
- float: left;
1567
- list-style: none;
1568
- margin: 0 0 0 -4px;
1569
- padding: 1em 0;
1570
- width: 151px;
1571
- }
1572
- .wrap.settings-wrap .ui-tabs-nav li {
1573
- border: 1px solid transparent;
1574
- border-right-width: 0px;
1575
- display: block; margin: 0;
1576
- -webkit-border-radius: 2px 0 0 2px;
1577
- -moz-border-radius: 2px 0 0 2px;
1578
- border-radius: 2px 0 0 2px;
1579
- }
1580
- .wrap.settings-wrap .ui-tabs-nav li.ui-state-active {
1581
- background: #fff;
1582
- border-color: #ccc;
1583
- color: #000;
1584
- }
1585
- .wrap.settings-wrap .ui-tabs-nav li a {
1586
- color: #21759b;
1587
- display: block;
1588
- line-height: 18px;
1589
- padding: 5px 5px 5px 12px;
1590
- text-decoration: none;
1591
- }
1592
- .wrap.settings-wrap .ui-tabs-nav li a:hover,
1593
- .wrap.settings-wrap .ui-tabs-nav li.ui-state-active a {
1594
- color: #000;
1595
- outline: none;
1596
- }
1597
- .wrap.settings-wrap .ui-tabs-panel {
1598
- clear: both;
1599
- }
1600
- .wrap.settings-wrap .ui-tabs-nav li a:focus { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; }
1601
- /* --------------------------------------------------
1602
- :: Format Settings
1603
- ---------------------------------------------------*/
1604
- .format-settings {
1605
- position: relative;
1606
- width: 100%;
1607
- }
1608
- .format-setting-wrap,
1609
- .option-tree-sortable .format-settings {
1610
- padding: 10px 0 20px 0;
1611
- }
1612
-
1613
- /* --------------------------------------------------
1614
- :: Format Setting Label
1615
- ---------------------------------------------------*/
1616
- .format-setting-label {
1617
- border-bottom: 1px solid #F0F0F0;
1618
- margin: 0 0 20px 0;
1619
- padding: 5px 0px 1px 0px;
1620
- width: 100%;
1621
- }
1622
- #option-tree-settings-api .description h3,
1623
- #option-tree-settings-api .format-setting-label .label,
1624
- #poststuff .format-setting-label .label {
1625
- background: none;
1626
- border: none;
1627
- color: #222;
1628
- cursor: text;
1629
- display: block;
1630
- font-size: 1.3em;
1631
- font-weight: 800;
1632
- line-height: 1.6em;
1633
- letter-spacing: 0;
1634
- padding: 0 0 9px 0;
1635
- -webkit-user-select: text;
1636
- text-shadow: none;
1637
- }
1638
-
1639
- /* --------------------------------------------------
1640
- :: Format Setting
1641
- ---------------------------------------------------*/
1642
- .format-setting {
1643
- overflow: hidden;
1644
- position: relative;
1645
- width: 100%;
1646
- }
1647
- .format-setting .format-setting-inner {
1648
- float: left;
1649
- position: relative;
1650
- width: 63%;
1651
- }
1652
- .format-setting.no-desc > .format-setting-inner,
1653
- .format-setting.wide-desc .format-setting-inner {
1654
- width: 100%;
1655
- }
1656
- .format-setting .description {
1657
- float: right;
1658
- padding: 5px 0;
1659
- width: 35%;
1660
- font-size: 14px;
1661
- }
1662
- .format-setting.no-desc > .description,
1663
- .format-setting.wide-desc .description {
1664
- float: none;
1665
- width: 100%;
1666
- }
1667
- .list-item-description {
1668
- padding-top: 10px;
1669
- }
1670
- #option-tree-settings-api h4 {
1671
- color: #333;
1672
- font-size: 1.2em;
1673
- font-weight: 500;
1674
- line-height: 1.5em;
1675
- margin: 1em 0 0.5em 0;
1676
- padding: 0;
1677
- }
1678
- #option-tree-settings-api h5 {
1679
- color: #444;
1680
- font-size: 1em;
1681
- font-weight: 700;
1682
- line-height: 1.2em;
1683
- margin: 1em 0 0.5em 0;
1684
- padding: 0;
1685
- }
1686
- #option-tree-settings-api p {
1687
- margin: 0 0 1.5em 0 !important;
1688
- }
1689
- #post .format-setting-inner p {
1690
- float: left;
1691
- width: 100%;
1692
- margin: 0 0 1.05em 0 !important;
1693
- }
1694
- .aside {
1695
- border-bottom: 1px solid #eee;
1696
- padding-bottom: 15px;
1697
- margin-bottom: 15px;
1698
- }
1699
- .deprecated {
1700
- border-bottom: 1px solid #eee;
1701
- color: #b94029;
1702
- padding-bottom: 15px;
1703
- margin-bottom: 15px;
1704
- }
1705
- .warning {
1706
- color: #b94029;
1707
- }
1708
- .docs-ul {
1709
- line-height: 1.3em;
1710
- margin: 0;
1711
- padding: 0 0 1em 0;
1712
- }
1713
- .docs-ul li {
1714
- list-style-type: square;
1715
- margin-left: 20px;
1716
- }
1717
- #contextual-help-setting {
1718
- float: left;
1719
- padding: 10px 0 5px 0;
1720
- width: 100%;
1721
- }
1722
- #contextual-help-label {
1723
- float: left;
1724
- padding-top: 20px;
1725
- width: 100%;
1726
- }
1727
- #option_tree_settings_help {
1728
- float: left;
1729
- width: 100%;
1730
- }
1731
- #option-tree-settings-api blockquote {
1732
- font-style: italic;
1733
- padding-left: 15px;
1734
- position: relative;
1735
- }
1736
- #option-tree-settings-api blockquote:before {
1737
- color: #ccc;
1738
- content: "\201C";
1739
- display: block;
1740
- font-size: 400%;
1741
- font-style: normal;
1742
- left: -10px;
1743
- position: absolute;
1744
- top: 10px;
1745
- }
1746
- @media only screen and (max-width: 1020px) {
1747
- .format-setting .description,
1748
- .format-setting .format-setting-inner {
1749
- width: 100%;
1750
- }
1751
- .format-setting .description {
1752
- padding-top: 0px;
1753
- padding-bottom: 20px;
1754
- }
1755
- }
1756
- .ot-background-group {
1757
- overflow: hidden;
1758
- width: auto;
1759
- }
1760
- .ot-background-size-input {
1761
- max-width: 110px;
1762
- }
1763
- .option-tree-setting-edit,
1764
- .option-tree-setting-remove {
1765
- text-indent: -9999px;
1766
- }
1767
-
1768
- /* --------------------------------------------------
1769
- :: Code formatting
1770
- ---------------------------------------------------*/
1771
- #option-tree-settings-api code,
1772
- .ot-metabox-wrapper code {
1773
- background-color: #f1f1f1;
1774
- color: #333;
1775
- font-size: 12px;
1776
- }
1777
- #option-tree-settings-api pre {
1778
- font-size: 13px;
1779
- padding: 0;
1780
- margin: 1.5em 0;
1781
- line-height: 18px;
1782
- overflow: auto;
1783
- overflow-Y: hidden;
1784
- padding-top: 18px;
1785
- background: #f1f1f1;
1786
- border-bottom: 1px solid #f1f1f1;
1787
- margin-bottom: 20px;
1788
- color: #000;
1789
- white-space: pre-wrap;
1790
- word-wrap: break-word;
1791
- }
1792
- #option-tree-settings-api pre code {
1793
- padding: 0 18px 18px 18px;
1794
- display: block;
1795
- background: url(../images/ot-pre-bg.gif) repeat left top;
1796
- }
1797
-
1798
- /* --------------------------------------------------
1799
- :: Input & Upload
1800
- ---------------------------------------------------*/
1801
- input.option-tree-ui-upload-input,
1802
- input.option-tree-ui-input {
1803
- background: #fff;
1804
- border: 1px solid #ccc !important;
1805
- line-height: 17px;
1806
- font-size: 12px;
1807
- margin-bottom: 5px !important;
1808
- padding: 7px 6px;
1809
- position: relative;
1810
- width: 100% !important;
1811
- -webkit-border-radius: 2px;
1812
- -moz-border-radius: 2px;
1813
- border-radius: 2px;
1814
- -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
1815
- -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
1816
- box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
1817
- }
1818
- input:hover.option-tree-ui-upload-input,
1819
- input:hover.option-tree-ui-input {
1820
- border-color: #bbb !important;
1821
- -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1822
- -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1823
- box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1824
- }
1825
- input:focus.option-tree-ui-upload-input,
1826
- input:focus.option-tree-ui-input {
1827
- border-color: #999 !important;
1828
- }
1829
-
1830
- @media screen and (-webkit-min-device-pixel-ratio:0) {
1831
- .option-tree-ui-input,
1832
- .option-tree-ui-upload-input {
1833
- padding: 5px 6px !important;
1834
- }
1835
- }
1836
-
1837
- /* --------------------------------------------------
1838
- :: Upload
1839
- ---------------------------------------------------*/
1840
- div.option-tree-ui-media-wrap {
1841
- margin: 0 55px 0 0;
1842
- min-height: 35px;
1843
- position: relative;
1844
- }
1845
- .option-tree-ui-media-wrap img {
1846
- background: #fafafa;
1847
- border: 1px solid #ccc;
1848
- padding: 4px;
1849
- display: block;
1850
- float: left;
1851
- max-width: 100%;
1852
- height: auto;
1853
- -ms-interpolation-mode: bicubic;
1854
- -webkit-border-radius: 2px;
1855
- -moz-border-radius: 2px;
1856
- border-radius: 2px;
1857
- }
1858
- .option-tree-ui-upload-parent {
1859
- width: auto !important;
1860
- margin-right: 45px;
1861
- padding: 0px;
1862
- position: relative;
1863
- }
1864
- .ot_upload_media {
1865
- top: 0px;
1866
- margin: 0px !important;
1867
- position: absolute;
1868
- right: -45px;
1869
- text-indent: -9999px;
1870
- }
1871
- .option-tree-ui-media-wrap a.option-tree-ui-remove-media {
1872
- float: none !important;
1873
- margin: 0px !important;
1874
- position: absolute !important;
1875
- right: -55px;
1876
- text-indent: -9999px;
1877
- top: 1px;
1878
- }
1879
-
1880
- /* --------------------------------------------------
1881
- :: Textarea
1882
- ---------------------------------------------------*/
1883
- .fill-area .description,
1884
- .fill-area .format-setting-inner {
1885
- width: 100% !important;
1886
- }
1887
- .wp-editor-area {
1888
- display: block;
1889
- }
1890
- .textarea,
1891
- .ot-metabox-wrapper textarea {
1892
- width: 99.9%;
1893
- border: 1px solid #ccc;
1894
- font-family: Consolas, Monaco, monospace;
1895
- line-height: 150%;
1896
- outline: 0;
1897
- padding: 10px;
1898
- resize: vertical;
1899
- }
1900
- #contextual-help-setting .textarea {
1901
- width: 99.75%;
1902
- }
1903
- .ot-metabox-wrapper .wp-editor-container {
1904
- border: none;
1905
- }
1906
- .textarea:hover,
1907
- .ot-metabox-wrapper textarea:hover {
1908
- border-color: #bbb !important;
1909
- -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1910
- -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1911
- box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1912
- }
1913
- .textarea:focus,
1914
- .ot-metabox-wrapper textarea:focus {
1915
- border-color: #999 !important;
1916
- }
1917
-
1918
- @media only screen and (max-width: 1105px) {
1919
- .type-textarea .description, .type-textarea .format-setting-inner {
1920
- width: 100%;
1921
- }
1922
- }
1923
-
1924
- /* --------------------------------------------------
1925
- :: Setting Item with Drag & Drop
1926
- ---------------------------------------------------*/
1927
- .option-tree-setting-wrap {
1928
- margin-top: 0px;
1929
- }
1930
- .option-tree-setting-wrap li {
1931
- margin: 5px 0px;
1932
- }
1933
- .option-tree-setting {
1934
- border: 1px solid #ccc;
1935
- overflow: hidden;
1936
- position: relative;
1937
- -webkit-border-radius: 2px;
1938
- -moz-border-radius: 2px;
1939
- border-radius: 2px;
1940
- }
1941
- .option-tree-setting:hover {
1942
- border-color: #999;
1943
- -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1944
- -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1945
- box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
1946
- }
1947
- .option-tree-setting a {
1948
- text-decoration: none;
1949
- }
1950
- .option-tree-setting .open {
1951
- background: #fafafa;
1952
- line-height: 21px;
1953
- height: 21px;
1954
- padding: 10px 100px 10px 10px;
1955
- display: block;
1956
- }
1957
- .option-tree-sortable .open {
1958
- cursor: move;
1959
- }
1960
- .ui-state-disabled .option-tree-setting .open {
1961
- cursor: default;
1962
- }
1963
- .option-tree-setting .open:hover {
1964
- background: #fafafa;
1965
- }
1966
- .option-tree-setting .open:hover:before {
1967
- color: #999;
1968
- content: "\f142";
1969
- left: 4px;
1970
- font-family: "option-tree-font";
1971
- speak: none;
1972
- font-size: 14px;
1973
- font-style: normal;
1974
- font-weight: normal;
1975
- font-variant: normal;
1976
- text-transform: none;
1977
- line-height: 1;
1978
- position: absolute;
1979
- top: 14px;
1980
- -webkit-font-smoothing: antialiased;
1981
- -moz-osx-font-smoothing: grayscale;
1982
- }
1983
- .option-tree-setting.is-section .open:hover:before {
1984
- color: #000;
1985
- }
1986
- .button-section {
1987
- position: absolute;
1988
- right: 0px;
1989
- top: 1px;
1990
- }
1991
- .option-tree-setting.is-section {
1992
- border: 1px solid #000;
1993
- }
1994
- .option-tree-setting.is-section .option-tree-setting-body,
1995
- .option-tree-setting.is-section .option-tree-ui-button {
1996
- border-right-color: #000 !important;
1997
- }
1998
- .option-tree-setting.is-section .open {
1999
- background: #333;
2000
- color: #bbb;
2001
- }
2002
- .format-setting .ui-sortable-helper .option-tree-setting .open {
2003
- background: #fff;
2004
- }
2005
- .option-tree-setting.is-section .open:hover,
2006
- .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2007
- background: #333;
2008
- }
2009
- /* light */
2010
- .admin-color-light .option-tree-setting.is-section,
2011
- .admin-color-light .option-tree-setting.is-section .option-tree-setting-body,
2012
- .admin-color-light .option-tree-setting.is-section .option-tree-ui-button {
2013
- border-color: #3c3c3c !important;
2014
- }
2015
- .admin-color-light .option-tree-setting.is-section .open:hover:before {
2016
- color: #3c3c3c;
2017
- }
2018
- .admin-color-light .option-tree-setting.is-section .open {
2019
- background: #888;
2020
- color: #fff;
2021
- }
2022
- .admin-color-light .option-tree-setting.is-section .open:hover,
2023
- .admin-color-light .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2024
- background: #888;
2025
- }
2026
- /* blue */
2027
- .admin-color-blue .option-tree-setting.is-section,
2028
- .admin-color-blue .option-tree-setting.is-section .option-tree-setting-body,
2029
- .admin-color-blue .option-tree-setting.is-section .option-tree-ui-button {
2030
- border-color: #002b39 !important;
2031
- }
2032
- .admin-color-blue .option-tree-setting.is-section .open:hover:before {
2033
- color: #002b39;
2034
- }
2035
- .admin-color-blue .option-tree-setting.is-section .open {
2036
- background: #52accc;
2037
- color: #fff;
2038
- }
2039
- .admin-color-blue .option-tree-setting.is-section .open:hover,
2040
- .admin-color-blue .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2041
- background: #52accc;
2042
- }
2043
- /* coffee */
2044
- .admin-color-coffee .option-tree-setting.is-section,
2045
- .admin-color-coffee .option-tree-setting.is-section .option-tree-setting-body,
2046
- .admin-color-coffee .option-tree-setting.is-section .option-tree-ui-button {
2047
- border-color: #0f0e0d !important;
2048
- }
2049
- .admin-color-coffee .option-tree-setting.is-section .open:hover:before {
2050
- color: #0f0e0d;
2051
- }
2052
- .admin-color-coffee .option-tree-setting.is-section .open {
2053
- background: #59524c;
2054
- color: #c7cbc9;
2055
- }
2056
- .admin-color-coffee .option-tree-setting.is-section .open:hover,
2057
- .admin-color-coffee .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2058
- background: #59524c;
2059
- }
2060
- /* ectoplasm */
2061
- .admin-color-ectoplasm .option-tree-setting.is-section,
2062
- .admin-color-ectoplasm .option-tree-setting.is-section .option-tree-setting-body,
2063
- .admin-color-ectoplasm .option-tree-setting.is-section .option-tree-ui-button {
2064
- border-color: #181220 !important;
2065
- }
2066
- .admin-color-ectoplasm .option-tree-setting.is-section .open:hover:before {
2067
- color: #181220;
2068
- }
2069
- .admin-color-ectoplasm .option-tree-setting.is-section .open {
2070
- background: #523f6d;
2071
- color: #c6c6d3;
2072
- }
2073
- .admin-color-ectoplasm .option-tree-setting.is-section .open:hover,
2074
- .admin-color-ectoplasm .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2075
- background: #523f6d;
2076
- }
2077
- /* midnight */
2078
- .admin-color-midnight .option-tree-setting.is-section,
2079
- .admin-color-midnight .option-tree-setting.is-section .option-tree-setting-body,
2080
- .admin-color-midnight .option-tree-setting.is-section .option-tree-ui-button {
2081
- border-color: #090a0b !important;
2082
- }
2083
- .admin-color-midnight .option-tree-setting.is-section .open:hover:before {
2084
- color: #090a0b;
2085
- }
2086
- .admin-color-midnight .option-tree-setting.is-section .open {
2087
- background: #363b3f;
2088
- color: #f1f2f3;
2089
- }
2090
- .admin-color-midnight .option-tree-setting.is-section .open:hover,
2091
- .admin-color-midnight .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2092
- background: #363b3f;
2093
- }
2094
- /* ocean */
2095
- .admin-color-ocean .option-tree-setting.is-section,
2096
- .admin-color-ocean .option-tree-setting.is-section .option-tree-setting-body,
2097
- .admin-color-ocean .option-tree-setting.is-section .option-tree-ui-button {
2098
- border-color: #39464a !important;
2099
- }
2100
- .admin-color-ocean .option-tree-setting.is-section .open:hover:before {
2101
- color: #39464a;
2102
- }
2103
- .admin-color-ocean .option-tree-setting.is-section .open {
2104
- background: #738e96;
2105
- color: #f1fcff;
2106
- }
2107
- .admin-color-ocean .option-tree-setting.is-section .open:hover,
2108
- .admin-color-ocean .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2109
- background: #738e96;
2110
- }
2111
- /* sunrise */
2112
- .admin-color-sunrise .option-tree-setting.is-section,
2113
- .admin-color-sunrise .option-tree-setting.is-section .option-tree-setting-body,
2114
- .admin-color-sunrise .option-tree-setting.is-section .option-tree-ui-button {
2115
- border-color: #8a322a !important;
2116
- }
2117
- .admin-color-sunrise .option-tree-setting.is-section .open:hover:before {
2118
- color: #8a322a;
2119
- }
2120
- .admin-color-sunrise .option-tree-setting.is-section .open {
2121
- background: #da4f41;
2122
- color: #fff;
2123
- }
2124
- .admin-color-sunrise .option-tree-setting.is-section .open:hover,
2125
- .admin-color-sunrise .format-setting .ui-sortable-helper .option-tree-setting.is-section .open {
2126
- background: #da4f41;
2127
- }
2128
- .ui-state-highlight {
2129
- border: 1px dashed #ccc;
2130
- display: block;
2131
- -webkit-border-radius: 2px;
2132
- -moz-border-radius: 2px;
2133
- border-radius: 2px;
2134
- }
2135
- .option-tree-setting-body {
2136
- background: #fff;
2137
- border-top: 1px solid #ccc;
2138
- display: none;
2139
- padding: 10px;
2140
- -webkit-border-bottom-right-radius: 2px;
2141
- -webkit-border-bottom-left-radius: 2px;
2142
- -moz-border-radius-bottomright: 2px;
2143
- -moz-border-radius-bottomleft: 2px;
2144
- border-bottom-right-radius: 2px;
2145
- border-bottom-left-radius: 2px;
2146
- }
2147
- li ul .format-setting-wrap {
2148
- padding: 0 0 10px 0;
2149
- }
2150
- li ul .format-setting-label {
2151
- border: none;
2152
- padding: 0px;
2153
- margin: 0px;
2154
- }
2155
-
2156
- /* --------------------------------------------------
2157
- :: Layouts
2158
- ---------------------------------------------------*/
2159
- #option_tree_layouts {
2160
- display: none;
2161
- padding-top: 12px;
2162
- }
2163
- #option-tree-options-layouts-form {
2164
- left: 13px;
2165
- position: absolute;
2166
- top: 30px;
2167
- z-index: 10;
2168
- }
2169
- .option-tree-save-layout {
2170
- float: left;
2171
- padding: 10px 0;
2172
- }
2173
- .option-tree-save-layout.active-layout {
2174
- padding-left: 10px;
2175
- }
2176
- .option-tree-save-layout .widefat {
2177
- float: left;
2178
- width: 128px !important;
2179
- margin: 0;
2180
- }
2181
- .option-tree-active-layout {
2182
- border-right: 1px solid #ccc;
2183
- float: left;
2184
- padding: 10px 10px 10px 0;
2185
- min-width: 126px;
2186
- }
2187
- .button.save-layout {
2188
- margin: 0 0 0 10px !important;
2189
- }
2190
- .option-tree-layout-activate {
2191
- text-indent: -9999px;
2192
- }
2193
- .option-tree-layout-activate .icon:before {
2194
- content: "\f096";
2195
- position: relative;
2196
- top: 1px;
2197
- }
2198
- .option-tree-layout-activate.active .icon:before {
2199
- content: "\f046";
2200
- padding-left: 1px;
2201
- }
2202
-
2203
- /* --------------------------------------------------
2204
- :: Option Group
2205
- ---------------------------------------------------*/
2206
- .ot-option-group {
2207
- float: left;
2208
- padding-right: 5px;
2209
- position: relative;
2210
- width: 20%;
2211
- box-sizing: border-box;
2212
- }
2213
- .ot-option-group--three-fourths {
2214
- width: 75%;
2215
- }
2216
- .ot-option-group--two-thirds {
2217
- width: 66.6%;
2218
- }
2219
- .ot-option-group--one-half {
2220
- width: 50%;
2221
- }
2222
- .ot-option-group--one-third {
2223
- width: 33.3%;
2224
- }
2225
- .ot-option-group--one-fourth {
2226
- width: 25%;
2227
- }
2228
- .ot-option-group--one-fifth {
2229
- width: 20%;
2230
- }
2231
- .ot-option-group--one-sixth {
2232
- width: 16.6%;
2233
- }
2234
- .ot-option-group--one-eighth {
2235
- width: 12.5%;
2236
- }
2237
- .ot-option-group--is-last {
2238
- padding-right: 0;
2239
- }
2240
- .ot-option-group--icon {
2241
- background: #fafafa;
2242
- border-right: 1px solid #ccc;
2243
- display: inline-block;
2244
- font-size: 14px;
2245
- line-height: 14px;
2246
- padding: 6px 6px 7px;
2247
- position: absolute;
2248
- text-align: center;
2249
- top: 1px;
2250
- left: 1px;
2251
- width: 14px;
2252
- z-index: 10;
2253
- }
2254
- .ot-icon-circle.ot-option-group--icon:before {
2255
- left: 1px;
2256
- position: relative;
2257
- -webkit-filter: blur(1px);
2258
- -moz-filter: blur(1px);
2259
- -ms-filter: blur(1px);
2260
- -o-filter: blur(1px);
2261
- filter: blur(1px);
2262
- }
2263
- .ot-option-group--icon + input.option-tree-ui-input {
2264
- padding-left: 34px !important;
2265
- margin-right: 5px;
2266
- }
2267
- .ot-option-group--checkbox {
2268
- float: left;
2269
- padding-top: 2px;
2270
- padding-right: 10px;
2271
- width: auto;
2272
- }
2273
- #post-body .ot-option-group--checkbox p {
2274
- color: #a9a9a9;
2275
- float: left;
2276
- margin: 1px 0 0.3em 0 !important;
2277
- }
2278
- @media screen and ( min-width: 783px ) {
2279
- #post-body .ot-option-group--checkbox p input {
2280
- margin-top: 0px !important;
2281
- }
2282
- }
2283
- @media screen and ( max-width: 1020px ) {
2284
- .ot-option-group--one-fourth,
2285
- .ot-option-group--one-fifth,
2286
- .ot-option-group--one-sixth,
2287
- .ot-option-group--one-eighth {
2288
- width: 33.3%;
2289
- }
2290
- .ot-option-group--checkbox {
2291
- width: 100%;
2292
- }
2293
- }
2294
- @media screen and ( max-width: 782px ) {
2295
- .ot-option-group {
2296
- width: 50%;
2297
- }
2298
- .ot-option-group--three-fourths,
2299
- .ot-option-group--two-thirds,
2300
- .ot-option-group--one-half {
2301
- width: 100%;
2302
- }
2303
- .ot-option-group--checkbox {
2304
- padding-top: 0.3em;
2305
- }
2306
- }
2307
- .ot-option-group .select-wrapper {
2308
- width: 100%;
2309
- }
2310
-
2311
- /* --------------------------------------------------
2312
- :: Select
2313
- ---------------------------------------------------*/
2314
- .select-wrapper {
2315
- background: #fff url(../images/ot-select.png) no-repeat right center;
2316
- border: 1px solid #ccc;
2317
- display: block;
2318
- float: left;
2319
- font-size: 12px;
2320
- height: 29px;
2321
- margin: 0 5px 5px 0;
2322
- max-width: 100%;
2323
- width: auto;
2324
- -webkit-border-radius: 2px;
2325
- -moz-border-radius: 2px;
2326
- border-radius: 2px;
2327
- -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
2328
- -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
2329
- box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
2330
- -webkit-box-sizing: border-box;
2331
- -moz-box-sizing: border-box;
2332
- box-sizing: border-box;
2333
- }
2334
- .select-wrapper:hover {
2335
- background-image: url(../images/ot-select-hover.png);
2336
- border-color: #999;
2337
- }
2338
- select.option-tree-ui-select {
2339
- cursor: pointer;
2340
- filter: alpha(opacity= 0);
2341
- font-size: 14px;
2342
- height: 29px;
2343
- margin: 0;
2344
- max-width: 100%;
2345
- -moz-opacity: 0;
2346
- opacity: 0;
2347
- padding: 0 !important;
2348
- position: relative;
2349
- width: inherit;
2350
- z-index: 4;
2351
- min-width: 118px;
2352
- }
2353
-
2354
- select.option-tree-ui-select option {
2355
- padding: 3px 15px !important;
2356
- }
2357
- .select-wrapper span {
2358
- height: 27px;
2359
- line-height: 27px;
2360
- overflow: hidden;
2361
- padding-left: 7px;
2362
- padding-right: 27px;
2363
- position: absolute;
2364
- z-index: 2;
2365
- }
2366
- #option-tree-options-layouts-form .select-wrapper {
2367
- margin: 0px;
2368
- }
2369
- #option-tree-options-layouts-form select.option-tree-ui-select {
2370
- min-width: 124px;
2371
- }
2372
- .type-measurement select.option-tree-ui-select {
2373
- min-width: 73px !important;
2374
- }
2375
- .type-measurement .select-wrapper {
2376
- margin-right: 0;
2377
- position: absolute;
2378
- right: 0px;
2379
- top: 0px;
2380
- }
2381
-
2382
- /* FireFox */
2383
- @-moz-document url-prefix() {
2384
- #option-tree-options-layouts-form .select-wrapper {
2385
- left: 250px;
2386
- }
2387
- }
2388
-
2389
- /* --------------------------------------------------
2390
- :: Measurement
2391
- ---------------------------------------------------*/
2392
- .option-tree-ui-measurement-input-wrap {
2393
- margin-right: 80px;
2394
- }
2395
-
2396
- /* --------------------------------------------------
2397
- :: Checkbox & Radio
2398
- ---------------------------------------------------*/
2399
- .format-setting.type-checkbox input,
2400
- .format-setting.type-radio input {
2401
- float: left;
2402
- margin: 2px 5px 0 1px;
2403
- }
2404
- .format-setting.type-checkbox label,
2405
- .format-setting.type-radio label {
2406
- float: left;
2407
- max-width: 90%;
2408
- padding: 0px;
2409
- }
2410
- #option-tree-settings-api .format-setting.type-checkbox p,
2411
- #option-tree-settings-api .format-setting.type-radio p {
2412
- float: left;
2413
- margin: 0.5em 0 !important;
2414
- width: 100%;
2415
- }
2416
- @media screen and ( max-width: 782px ) {
2417
- .format-setting.type-checkbox,
2418
- .format-setting.type-radio {
2419
- padding-top: 0.3em;
2420
- }
2421
- }
2422
-
2423
- /* --------------------------------------------------
2424
- :: Radio Images
2425
- ---------------------------------------------------*/
2426
- .type-radio-image .option-tree-ui-radio-images {
2427
- float: left;
2428
- margin: 0 10px 10px 0px;
2429
- }
2430
-
2431
- .type-radio-image .option-tree-ui-radio-images img {
2432
- background: #c2c2c2;
2433
- border: 1px solid #ccc;
2434
- cursor: pointer;
2435
- opacity: 0.8;
2436
- padding: 5px;
2437
- -webkit-border-radius: 2px;
2438
- -moz-border-radius: 2px;
2439
- border-radius: 2px;
2440
- }
2441
- .type-radio-image .option-tree-ui-radio-images img.option-tree-ui-radio-image-selected,
2442
- .type-radio-image .option-tree-ui-radio-images img:hover {
2443
- border-color: #464646;
2444
- opacity: 1;
2445
- -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05);
2446
- -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.05);
2447
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
2448
- }
2449
-
2450
- /* --------------------------------------------------
2451
- :: Social Links
2452
- ---------------------------------------------------*/
2453
- .type-social-links input.option-tree-ui-input {
2454
- margin-top: 5px;
2455
- }
2456
-
2457
- /* --------------------------------------------------
2458
- :: Numeric Slider
2459
- ---------------------------------------------------*/
2460
- .type-numeric-slider .format-setting-inner {
2461
- background: #fcfcfc;
2462
- border: 1px solid #ccc;
2463
- min-height: 41px;
2464
- padding: 5px;
2465
- -webkit-box-sizing: border-box;
2466
- -moz-box-sizing: border-box;
2467
- box-sizing: border-box;
2468
- -webkit-border-radius: 2px;
2469
- -moz-border-radius: 2px;
2470
- border-radius: 2px;
2471
- }
2472
- .ot-numeric-slider-wrap {
2473
- margin: 0 96px 0 0;
2474
- }
2475
- .ot-numeric-slider-wrap .ot-numeric-slider-helper-input {
2476
- position: absolute;
2477
- right: 5px;
2478
- text-align: center;
2479
- top: 5px;
2480
- width: 90px !important;
2481
- }
2482
- .ot-numeric-slider.ui-slider {
2483
- background: #fff;
2484
- border: 1px solid #ccc;
2485
- margin: 8px 8px 0 8px;
2486
- position: relative;
2487
- -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
2488
- -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
2489
- box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
2490
- -webkit-border-radius: 2px;
2491
- -moz-border-radius: 2px;
2492
- border-radius: 2px;
2493
- }
2494
- .ot-numeric-slider.ui-slider-horizontal {
2495
- height: 11px;
2496
- }
2497
- .ot-numeric-slider.ui-slider .ui-slider-handle {
2498
- border: 1px solid #000;
2499
- color: #555;
2500
- cursor: pointer;
2501
- display: block;
2502
- height: 27px;
2503
- margin: -9px -8px;
2504
- outline: 0;
2505
- position: absolute;
2506
- width: 16px;
2507
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08);
2508
- -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08);
2509
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08);
2510
- -webkit-border-radius: 2px;
2511
- -moz-border-radius: 2px;
2512
- border-radius: 2px;
2513
- }
2514
- /* default */
2515
- .ot-numeric-slider.ui-slider .ui-slider-handle {
2516
- background: #333;
2517
- border-color: #000;
2518
- }
2519
- .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2520
- .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2521
- background: #444;
2522
- border-color: #111;
2523
- }
2524
- /* light */
2525
- .admin-color-light .ot-numeric-slider.ui-slider .ui-slider-handle {
2526
- background: #888;
2527
- border-color: #3c3c3c;
2528
- }
2529
- .admin-color-light .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2530
- .admin-color-light .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2531
- background: #999;
2532
- border-color: #777;
2533
- }
2534
- /* blue */
2535
- .admin-color-blue .ot-numeric-slider.ui-slider .ui-slider-handle {
2536
- background: #52accc;
2537
- border-color: #002b39;
2538
- }
2539
- .admin-color-blue .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2540
- .admin-color-blue .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2541
- background: #5dc2e6;
2542
- border-color: #006484;
2543
- }
2544
- /* coffee */
2545
- .admin-color-coffee .ot-numeric-slider.ui-slider .ui-slider-handle {
2546
- background: #59524c;
2547
- border-color: #0f0e0d;
2548
- }
2549
- .admin-color-coffee .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2550
- .admin-color-coffee .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2551
- background: #cca588;
2552
- border-color: #675f58;
2553
- }
2554
- /* ectoplasm */
2555
- .admin-color-ectoplasm .ot-numeric-slider.ui-slider .ui-slider-handle {
2556
- background: #523f6d;
2557
- border-color: #181220;
2558
- }
2559
- .admin-color-ectoplasm .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2560
- .admin-color-ectoplasm .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2561
- background: #a3b542;
2562
- border-color: #644d85;
2563
- }
2564
- /* midnight */
2565
- .admin-color-midnight .ot-numeric-slider.ui-slider .ui-slider-handle {
2566
- background: #363b3f;
2567
- border-color: #090a0b;
2568
- }
2569
- .admin-color-midnight .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2570
- .admin-color-midnight .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2571
- background: #ed543f;
2572
- border-color: #a0382a;
2573
- }
2574
- /* ocean */
2575
- .admin-color-ocean .ot-numeric-slider.ui-slider .ui-slider-handle {
2576
- background: #738e96;
2577
- border-color: #39464a;
2578
- }
2579
- .admin-color-ocean .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2580
- .admin-color-ocean .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2581
- background: #9ab8a0;
2582
- border-color: #5a6c5e;
2583
- }
2584
- /* sunrise */
2585
- .admin-color-sunrise .ot-numeric-slider.ui-slider .ui-slider-handle {
2586
- background: #da4f41;
2587
- border-color: #8a322a;
2588
- }
2589
- .admin-color-sunrise .ot-numeric-slider.ui-slider .ui-slider-handle:hover,
2590
- .admin-color-sunrise .ot-numeric-slider.ui-slider .ui-slider-handle.ui-state-active {
2591
- background: #e88436;
2592
- border-color: #e75546;
2593
- }
2594
-
2595
- /* --------------------------------------------------
2596
- :: Colorpicker
2597
- ---------------------------------------------------*/
2598
- .option-tree-ui-colorpicker-input-wrap {
2599
- float: left;
2600
- }
2601
- .hide-color-picker {
2602
-
2603
- }
2604
- .option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label {
2605
- height: 30px;
2606
- line-height: 30px;
2607
- margin-right: 10px;
2608
- display: block;
2609
- }
2610
- .type-link-color .option-tree-ui-colorpicker-input-wrap {
2611
- margin-right: 20px;
2612
- }
2613
- .option-tree-ui-colorpicker-input-wrap .wp-color-picker,
2614
- .option-tree-ui-colorpicker-input-wrap .wp-picker-default,
2615
- .option-tree-ui-colorpicker-input-wrap .wp-picker-clear {
2616
- border-color: #ccc;
2617
- font-size: 12px !important;
2618
- height: 29px !important;
2619
- line-height: 27px !important;
2620
- margin-top: 0px;
2621
- -webkit-border-radius: 2px;
2622
- -moz-border-radius: 2px;
2623
- border-radius: 2px;
2624
- -webkit-box-shadow: none;
2625
- -moz-box-shadow: none;
2626
- box-shadow: none;
2627
- }
2628
- .option-tree-ui-colorpicker-input-wrap .wp-color-picker {
2629
- margin: 0 0 5px 0 !important;
2630
- }
2631
- .option-tree-ui-colorpicker-input-wrap .wp-color-result {
2632
- height: 27px;
2633
- outline: 0;
2634
- margin: 0 5px 5px 0px;
2635
- top: 0px;
2636
- -webkit-box-shadow: none;
2637
- -moz-box-shadow: none;
2638
- box-shadow: none;
2639
- }
2640
- .option-tree-ui-colorpicker-input-wrap .wp-color-result:after {
2641
- line-height: 27px;
2642
- }
2643
- .option-tree-ui-colorpicker-input-wrap .wp-picker-container .iris-picker {
2644
- border-color: #ccc;
2645
- margin: 0px 5px 5px 0;
2646
- -webkit-border-radius: 2px;
2647
- -moz-border-radius: 2px;
2648
- border-radius: 2px;
2649
- }
2650
- @media screen and ( max-width: 782px ) {
2651
- .option-tree-ui-colorpicker-input-wrap .wp-color-picker {
2652
- padding: 3px 5px !important;
2653
- }
2654
- .option-tree-ui-colorpicker-input-wrap .wp-picker-clear,
2655
- .option-tree-ui-colorpicker-input-wrap .wp-picker-default {
2656
- margin-top: 4px;
2657
- padding: 0 8px 1px !important;
2658
- }
2659
- }
2660
-
2661
- /* --------------------------------------------------
2662
- :: Colorpicker Opacity (Derivative work of the Codestar WP Color Picker.)
2663
- ---------------------------------------------------*/
2664
- .option-tree-opacity-wrap {
2665
- background-color: #fff;
2666
- border: 1px solid #ccc;
2667
- border-top: none;
2668
- border-radius: 0 0 2px 2px;
2669
- direction: ltr;
2670
- display: none;
2671
- padding: 10px;
2672
- position: relative;
2673
- top: -6px;
2674
- width: 235px;
2675
- }
2676
- .option-tree-opacity-slider {
2677
- left: 10px;
2678
- position: absolute;
2679
- width: 171px;
2680
- margin-left: 3px;
2681
- height: 28px;
2682
- }
2683
- .option-tree-opacity-slider .ui-slider-handle {
2684
- position: absolute;
2685
- top: -3px;
2686
- bottom: -3px;
2687
- z-index: 5;
2688
- border-color: #aaa;
2689
- border-style: solid;
2690
- border-width: 4px 3px;
2691
- width: 6px;
2692
- height: 26px;
2693
- margin: 0 -3px;
2694
- background: none;
2695
- cursor: ew-resize;
2696
- opacity: 0.9;
2697
- border-radius: 4px;
2698
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
2699
- }
2700
- .option-tree-opacity-slider .ui-slider-handle:before {
2701
- content: " ";
2702
- position: absolute;
2703
- left: -2px;
2704
- right: -2px;
2705
- top: -3px;
2706
- bottom: -3px;
2707
- border: 2px solid #fff;
2708
- border-radius: 3px;
2709
- }
2710
- .option-tree-opacity-slider-offset {
2711
- height: 28px;
2712
- width: 183px;
2713
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAASCAYAAAAe/ZHXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkNEQUQ0ODM4RUE0MTFFNEExOEJFN0E5M0VFOTg0QUQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkNEQUQ0ODQ4RUE0MTFFNEExOEJFN0E5M0VFOTg0QUQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2Q0RBRDQ4MThFQTQxMUU0QTE4QkU3QTkzRUU5ODRBRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2Q0RBRDQ4MjhFQTQxMUU0QTE4QkU3QTkzRUU5ODRBRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv/r/N8AAAWYSURBVHjarFvvR3VBEN45JZGIPkREHyIiIhJJf3qUSERE9CGiDxERkcg9z9u92uucvTszz5z7xnHPj93Z2d359cxscn5+jpTS+EoiMr3/+51cZ2dn4+e29i2/u7y8RKf/pO3vc+o+n5ycoNK31+f6+jrfZ37yuG2mf3R01H3fa5N/b29vU6dP5qft0G4PDg5MGuPr/v4+jz1t27mfvN/b21P75+fHx8eZfiV/Ozs7rUJnSu/5+RlFv+m6ZJpbW1s1PnrvXl9fZ/qX89zY2LB4mfy+v7/nsdV1XltbK/dr5vnz87OcV5bJabuVlRVLBifjfX9/l/xkGtM+S0tLNXnu0szfU/P3IMn/k0678h6ddqjQFGccVL6hoCsVfsq+NZ5QtCv5rfFS41sq37W+UPhMyhxEWTetvce3NR8oewqD39qalXuGAK/WPltjajIC4x2c9Ye1f43SGcqGwRBeTZjhMNntL4pCWZMQYhE05RVl02EovRgC4RkCbUNSQAGhGB/GsKG4h6FQoigDa2i8fRBy3uLMXYIG3Vr3aZvRaCRdBYlYIMZywhBGCVhgzzOlgRuUSOvC0GMEWxOM/+EtQFh1OIIXtfwg1tRaayGjg5px0jyZKEaTle3e+AsLCygVRAh3FlEgKbReE3oYGj9EgIR00QiEgKw3ZBQbRGjBeAMtDETQmHiKDsezJNLgCTFGItZXlAgCSiQggblP+9c8SDI0lXWlFv5g3K63KZ51FOcZzthQ3LomoNHwJmKIQISI3vqzSpwIQ8liSjGMFQjDpoVgaQ6cWgvLhOC7qiAwiHrWbEg4JMSmeUrBuHoYwioOQNXmhmAcrs096s1gJCGi3hSEVU8DQxYElYHhKwUUGAa+NqOBMsSSAQJuhQhCAH4vxozExsxiihPuaIrjCVYKWlYEsjSM52G8Kxxryngl5j0j+EyGTIiED4s1Itm0ZGWxMFCLJaBAcEI6OBkmFgNBoc8Cait2ZnENE/6wQN8LJSJeSMNAjKVm+LUMAIt3PR5AQgIGp1Z5zxhE8PtXUYReYeXi4mKmOPNXBMzt2tPT07LIUtJqr66uusXEbkFnWiQ6Pj72ikrtzc1NKopuvbbj58PDwxqNHp27u7tuYWumUDV+v7+/Xyu6pc59+/DwUCsC9ujt7u6qRbt8//T01C3elbyN70fb29uZ/1FSincvLy/lPGb42tzc9IqJeHt7q61Pr2C6vr7u7tfHx8fMPhV0sLq6WhZtU0n36+uru8elPE7aLi8v1wqJPXn++fmZKYgX8ozFxcXJb0NaQTHClZT8+gBjsYdaFc+zWcUkGTCWENY66ta92oSVzo3WI6IZKGtukeyfBLFKBNAj6bUOBgaoe9wE4n04IBNkLMoC7+Skj630ZlTJMYdyMsU2T8AwpzALkVFilZgJcT2l9PCWDDSAMBSjVlJgZNk0lE1AIby0qCiCnBQNj6aBGQslZIZJ5hB6D/AzQHto5Z9Nk8tARdN4q2ExBnsyIJ311EymShyjan2rKk0zh1Ay1oQVWAZQRnkUA8RFw7TahjBnmNgMVMQrsCGZJezRtGlU0cUZ1zuaxGZPpbhApM+ZpFQqQ6xadoMtBrEKpBVo4GRXvNSxpaRixKiR+TChCYhsDwZkfFj8IkErjAHejcUI0XQrgwehhNSMHAz21E0wZ23FcCAmj8Sd/PXy2xLYLAuwRw4IMsqjFaWYOpMEhDySAPFCWyFkgAHrEcA+BNeJ4UE8HCzJPpCrerUmQIx1pWJkjqxJD8EikUo2c5aI8ZYgsAkM4WQtnHd0ns0ORgVTBghy5ISy928SGsbTMqYg523RUY8oNYG4FIYiyRyZCnFCJC87IoRAIMVOqQ7BKexxCS2hYVl9JhvlpYjnAe4MhmRPMWhhvLfXINaI9WKM0Zu0+SfAAFLE1EgfVSv7AAAAAElFTkSuQmCC);
2714
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.4) inset;
2715
- border-radius: 2px;
2716
- }
2717
- .option-tree-opacity-text {
2718
- position: absolute;
2719
- top: 15px;
2720
- left: 215px;
2721
- width: 30px;
2722
- font-size: 12px;
2723
- text-align: center;
2724
- }
2725
-
2726
- /* --------------------------------------------------
2727
- :: Google Font
2728
- ---------------------------------------------------*/
2729
- .type-google-font {
2730
-
2731
- }
2732
- .type-google-font-group-clone {
2733
- display: none;
2734
- }
2735
- .type-google-font-group {
2736
- float: left;
2737
- margin-bottom: 20px;
2738
- width: 100%;
2739
- }
2740
- .js-remove-google-font.option-tree-ui-button.button {
2741
- margin-left: 0;
2742
- margin-top: 0;
2743
- }
2744
-
2745
- /* --------------------------------------------------
2746
- :: OptionTree UI Buttons
2747
- ---------------------------------------------------*/
2748
- .option-tree-ui-button.button {
2749
- float: left;
2750
- font-size: 12px !important;
2751
- line-height: 27px !important;
2752
- height: 29px !important;
2753
- margin: 5px;
2754
- min-width: 40px;
2755
- padding: 0 10px 1px !important;
2756
- }
2757
- .option-tree-ui-button:active,
2758
- .option-tree-ui-button:hover,
2759
- .option-tree-ui-button:focus {
2760
- outline: 0;
2761
- }
2762
- .option-tree-ui-button.hidden {
2763
- display: none;
2764
- }
2765
- .option-tree-ui-button.button-secondary {
2766
- background: #b73b27;
2767
- border-color: #7f291b;
2768
- color: #fff;
2769
- text-shadow: none;
2770
- -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15);
2771
- -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15);
2772
- box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15);
2773
- }
2774
- .option-tree-ui-button.button-secondary.hover,
2775
- .option-tree-ui-button.button-secondary:hover,
2776
- .option-tree-ui-button.button-secondary.focus,
2777
- .option-tree-ui-button.button-secondary:focus {
2778
- background: #9b3221;
2779
- border-color: #7f291b;
2780
- color: #fff;
2781
- -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6);
2782
- -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.5), 0 1px 0 rgba(0,0,0,.15);
2783
- box-shadow: inset 0 1px 0 rgba(229,134,119,0.6);
2784
- }
2785
- .option-tree-ui-button.button-secondary.focus,
2786
- .option-tree-ui-button.button-secondary:focus {
2787
- border-color: #4f160d;
2788
- -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 1px 1px 2px rgba(0,0,0,0.4);
2789
- -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 1px 1px 2px rgba(0,0,0,0.4);
2790
- box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 1px 1px 2px rgba(0,0,0,0.4);
2791
- }
2792
- .option-tree-ui-button.button-secondary.active,
2793
- .option-tree-ui-button.button-secondary.active:hover,
2794
- .option-tree-ui-button.button-secondary.active:focus,
2795
- .option-tree-ui-button.button-secondary:active {
2796
- background: #b73b27;
2797
- border-color: #7f291b;
2798
- color: rgba(255,255,255,0.95);
2799
- -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
2800
- -moz-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
2801
- box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
2802
- vertical-align: top;
2803
- }
2804
- .option-tree-ui-button.right {
2805
- float: right;
2806
- }
2807
- .option-tree-ui-button.hug-left {
2808
- margin-left: 0px;
2809
- }
2810
- .option-tree-ui-button.hug-right {
2811
- margin-right: 0px;
2812
- }
2813
- .option-tree-ui-button.pad {
2814
- padding: 0px 21px;
2815
- }
2816
- .option-tree-ui-button.left-item {
2817
- margin: 5px 0 5px 5px;
2818
- -webkit-border-top-right-radius: 0px;
2819
- -webkit-border-bottom-right-radius: 0px;
2820
- -moz-border-radius-topright: 0px;
2821
- -moz-border-radius-bottomright: 0px;
2822
- border-top-right-radius: 0px;
2823
- border-bottom-right-radius: 0px;
2824
- }
2825
- .option-tree-ui-button.center-item {
2826
- margin: 5px 0 5px -1px;
2827
- -webkit-border-radius: 0px;
2828
- -moz-border-radius: 0px;
2829
- border-radius: 0px;
2830
- }
2831
- .option-tree-ui-button.right-item {
2832
- margin: 5px 5px 5px -1px;
2833
- -webkit-border-top-left-radius: 0px;
2834
- -webkit-border-bottom-left-radius: 0px;
2835
- -moz-border-radius-topleft: 0px;
2836
- -moz-border-radius-bottomleft: 0px;
2837
- border-top-left-radius: 0px;
2838
- border-bottom-left-radius: 0px;
2839
- }
2840
- .option-tree-ui-buttons {
2841
- background: #fff;
2842
- border: 1px solid #ccc;
2843
- margin: 11px 5px 0 2px;
2844
- min-width: 523px;
2845
- overflow: hidden;
2846
- padding: 5px;
2847
- position: relative;
2848
- -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.05);
2849
- -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.05);
2850
- box-shadow: 0 1px 3px rgba(0,0,0,0.05);
2851
- -webkit-border-radius: 2px;
2852
- -moz-border-radius: 2px;
2853
- border-radius: 2px;
2854
- }
2855
- .option-tree-ui-buttons.alt {
2856
- background: #f5f5f5;
2857
- border-color: #dfdfdf;
2858
- }
2859
- .option-tree-ui-buttons:before,
2860
- .option-tree-ui-buttons:after {
2861
- content: "\0020";
2862
- display: block;
2863
- height: 0;
2864
- visibility: hidden;
2865
- }
2866
- .option-tree-ui-buttons:after {
2867
- clear: both;
2868
- }
2869
- .option-tree-ui-buttons {
2870
- zoom: 1;
2871
- }
2872
- button.reset-settings {
2873
- position: relative;
2874
- top: -45px;
2875
- left: 8px;
2876
- }
2877
-
2878
- /* --------------------------------------------------
2879
- :: OptionTree UI Button Icons
2880
- ---------------------------------------------------*/
2881
- .option-tree-ui-button .icon {
2882
- color: #3a3a3a;
2883
- display: inline-block;
2884
- float: left;
2885
- font-size: 20px;
2886
- height: 20px;
2887
- margin-top: 3px;
2888
- opacity: 0.9;
2889
- overflow: hidden;
2890
- text-align: center;
2891
- text-indent: 0;
2892
- width: 18px;
2893
- }
2894
- button.option-tree-ui-button .icon {
2895
- margin-top: -3px;
2896
- }
2897
- .option-tree-ui-button.light .icon {
2898
- color: #fff;
2899
- opacity: 0.9;
2900
- }
2901
- .option-tree-ui-button.active .icon,
2902
- .option-tree-ui-button:hover .icon {
2903
- opacity: 1;
2904
- }
2905
- .option-tree-ui-button .icon.right-label {
2906
- margin-right: 10px;
2907
- }
2908
- .option-tree-ui-button .icon.left-label {
2909
- margin-left: 10px;
2910
- float: right;
2911
- }
2912
- .option-tree-ui-button .upload {
2913
- background-position: -0px -0px;
2914
- }
2915
- .option-tree-ui-button .trash-can {
2916
- background-position: -18px -0px;
2917
- }
2918
- .option-tree-ui-button .pencil,
2919
- .option-tree-ui-button .check {
2920
- background-position: -36px -0px;
2921
- }
2922
- .option-tree-ui-button:hover .pencil,
2923
- .option-tree-ui-button:hover .check,
2924
- .option-tree-ui-button.active .pencil,
2925
- .option-tree-ui-button.active .check {
2926
- background-position: -54px -0px;
2927
- }
2928
-
2929
- /* --------------------------------------------------
2930
- :: WP 3.8 Fixes (via Github @AlxMedia)
2931
- ---------------------------------------------------*/
2932
- #option-tree-settings-api #poststuff,
2933
- #option-tree-settings-api #post-body-content {
2934
- min-width: 0;
2935
- }
2936
- #option-tree-settings-api #poststuff h3 {
2937
- font-family: inherit !important;
2938
- }
2939
- #option-tree-settings-api .postbox {
2940
- -webkit-box-shadow: none;
2941
- -moz-box-shadow: none;
2942
- box-shadow: none;
2943
- }
2944
- #option-tree-settings-api p input[type="checkbox"],
2945
- #option-tree-settings-api p input[type="radio"] {
2946
- margin-top: 2px;
2947
- }
2948
- #option-tree-settings-api .format-setting.type-checkbox p,
2949
- #option-tree-settings-api .format-setting.type-radio p {
2950
- margin: 0.3em 0 !important;
2951
- }
2952
- input.option-tree-ui-upload-input,
2953
- input.option-tree-ui-input {
2954
- padding-top: 5px;
2955
- padding-bottom: 5px;
2956
- }
2957
- @media screen and ( max-width: 782px ) {
2958
- #option-tree-settings-api p input[type="checkbox"],
2959
- #option-tree-settings-api p input[type="radio"] {
2960
- margin-top: -3px;
2961
- }
2962
- }
2963
-
2964
- /* --------------------------------------------------
2965
- :: Gallery
2966
- ---------------------------------------------------*/
2967
- ul.ot-gallery-list {
2968
- float: left;
2969
- margin: 0;
2970
- width: 100%;
2971
- }
2972
- ul.ot-gallery-list li {
2973
- background: none repeat scroll 0 0 white;
2974
- border: 1px solid #bbb;
2975
- float: left;
2976
- margin: 0px 10px 10px 0;
2977
- padding: 4px;
2978
- -webkit-border-radius: 2px;
2979
- -moz-border-radius: 2px;
2980
- border-radius: 2px;
2981
- }
2982
- ul.ot-gallery-list li img {
2983
- display: block;
2984
- margin: 0;
2985
- }
2986
-
2987
- .ot-gallery-buttons {
2988
- float: left;
2989
- width: 100%;
2990
- }
2991
- .ot-gallery-buttons a.option-tree-ui-button {
2992
- margin-top: 0px;
2993
- margin-bottom: 0px;
2994
- }
2995
-
2996
- /* --------------------------------------------------
2997
- :: Google Fonts
2998
- ---------------------------------------------------*/
2999
- .option-tree-google-font-family,
3000
- .option-tree-google-font-variants,
3001
- .option-tree-google-font-subsets {
3002
- float: left;
3003
- width: 20%;
3004
- }
3005
- .option-tree-google-font-family {
3006
- width: 100%;
3007
- }
3008
- #option-tree-settings-api p.checkbox-wrap,
3009
- #post-body .ot-metabox-panels p.checkbox-wrap {
3010
- display: block;
3011
- float: left;
3012
- margin: 0.3em 0 !important;
3013
- width: 100%;
3014
- }
3015
- @media screen and ( max-width: 1020px ) {
3016
- .option-tree-google-font-variants,
3017
- .option-tree-google-font-subsets {
3018
- width: 33%;
3019
- }
3020
- }
3021
- @media screen and ( max-width: 782px ) {
3022
- .option-tree-google-font-variants,
3023
- .option-tree-google-font-subsets {
3024
- width: 50%;
3025
- }
3026
- }
3027
-
3028
- /* --------------------------------------------------
3029
- :: On/Off Switch
3030
- ---------------------------------------------------*/
3031
- .on-off-switch .slide-button {
3032
- display: none;
3033
- }
3034
- @media only screen {
3035
- .on-off-switch {
3036
- background-color: #fff;
3037
- border: 1px solid #ccc;
3038
- color: #333;
3039
- display: block;
3040
- font-size: 12px;
3041
- font-weight: normal;
3042
- height: 27px;
3043
- margin: 2px 1px;
3044
- position: relative;
3045
- padding: 0;
3046
- text-align: center;
3047
- text-transform: uppercase;
3048
- width: 100px;
3049
- -webkit-border-radius: 2px;
3050
- -moz-border-radius: 2px;
3051
- border-radius: 2px;
3052
- -webkit-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
3053
- -moz-box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
3054
- box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.05);
3055
- }
3056
- .on-off-switch * {
3057
- -webkit-box-sizing: border-box;
3058
- -moz-box-sizing: border-box;
3059
- box-sizing: border-box;
3060
- }
3061
- .on-off-switch input {
3062
- position: absolute;
3063
- opacity: 0;
3064
- }
3065
- .on-off-switch label {
3066
- cursor: pointer;
3067
- float: left;
3068
- height: 27px;
3069
- line-height: 27px;
3070
- margin: 0;
3071
- position: relative;
3072
- text-align: center;
3073
- vertical-align: middle;
3074
- width: 50%;
3075
- z-index: 2;
3076
- }
3077
- .on-off-switch input:last-of-type + label {
3078
- color: #333;
3079
- }
3080
- .on-off-switch input:checked + label {
3081
- color: #333;
3082
- }
3083
- .on-off-switch input:last-of-type:checked + label {
3084
- color: #fff;
3085
- }
3086
- .on-off-switch input:focus + label {
3087
- outline: none;
3088
- }
3089
- .on-off-switch .slide-button {
3090
- background: #b2d27e;
3091
- border: 1px solid #7c9258;
3092
- display: block;
3093
- height: 29px;
3094
- left: -1px;
3095
- padding: 0;
3096
- position: absolute;
3097
- text-decoration: none;
3098
- top: -1px;
3099
- width: 51%;
3100
- z-index: 1;
3101
- -webkit-border-radius: 2px;
3102
- -moz-border-radius: 2px;
3103
- border-radius: 2px;
3104
- -webkit-box-shadow: inset 0 1px 0 #c8eb8e, 0 1px 0 rgba(0,0,0,.08);
3105
- -moz-box-shadow: inset 0 1px 0 #c8eb8e, 0 1px 0 rgba(0,0,0,.08);
3106
- box-shadow: inset 0 1px 0 #c8eb8e, 0 1px 0 rgba(0,0,0,.08);
3107
- -webkit-transition: all 0.2s ease-out;
3108
- -moz-transition: all 0.2s ease-out;
3109
- transition: all 0.2s ease-out;
3110
- }
3111
- .on-off-switch input:last-of-type:checked ~ .slide-button {
3112
- background: #b73b27;
3113
- border-color: #7f291b;
3114
- color: #fff;
3115
- left: 50%;
3116
- -webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
3117
- -moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
3118
- box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
3119
- }
3120
- }
3121
- @media only screen and (-webkit-max-device-pixel-ratio: 2) and (max-device-width: 1280px) {
3122
- .on-off-switch {
3123
- -webkit-animation: webkitSiblingBugfix infinite 1s;
3124
- }
3125
- }
3126
- @-webkit-keyframes webkitSiblingBugfix {
3127
- from {
3128
- -webkit-transform: translate3d(0, 0, 0);
3129
- }
3130
- to {
3131
- -webkit-transform: translate3d(0, 0, 0);
3132
- }
3133
- }
3134
-
3135
- /* --------------------------------------------------
3136
- :: Simple Input Append & Prepend
3137
- ---------------------------------------------------*/
3138
- .ot-input-append,
3139
- .ot-input-prepend {
3140
- display: inline-block;
3141
- vertical-align: middle;
3142
- font-size: 0;
3143
- white-space: nowrap;
3144
- }
3145
- .ot-input-append input {
3146
- position: relative;
3147
- margin-bottom: 0;
3148
- *margin-left: 0;
3149
- vertical-align: top;
3150
- -webkit-border-radius: 0 2px 2px 0;
3151
- -moz-border-radius: 0 2px 2px 0;
3152
- border-radius: 0 2px 2px 0;
3153
- }
3154
- .ot-input-append input:focus,
3155
- .ot-input-prepend input:focus {
3156
- z-index: 2;
3157
- }
3158
- .ot-input-append .ot-add-on,
3159
- .ot-input-prepend .ot-add-on {
3160
- display: inline-block;
3161
- width: auto;
3162
- height: 27px;
3163
- line-height: 28px;
3164
- min-width: 16px;
3165
- padding: 0 6px;
3166
- font-size: 16px;
3167
- font-weight: normal;
3168
- text-align: center;
3169
- text-shadow: 0 1px 0 white;
3170
- background-color: #f7f7f7;
3171
- border: 1px solid #ccc;
3172
- }
3173
- .ot-input-prepend input {
3174
- border-left: 0 !important;
3175
- }
3176
- .ot-input-prepend .ot-add-on:first-child {
3177
- -webkit-border-radius: 2px 0 0 2px;
3178
- -moz-border-radius: 2px 0 0 2px;
3179
- border-radius: 2px 0 0 2px;
3180
- }
3181
- .ot-input-append input {
3182
- border-right: 0 !important;
3183
- -webkit-border-radius: 2px 0 0 2px;
3184
- -moz-border-radius: 2px 0 0 2px;
3185
- border-radius: 2px 0 0 2px;
3186
- }
3187
- .ot-input-append input + .btn-group .btn:first-child {
3188
- -webkit-border-top-left-radius: 0;
3189
- -moz-border-radius-topleft: 0;
3190
- border-top-left-radius: 0;
3191
- -webkit-border-bottom-left-radius: 0;
3192
- -moz-border-radius-bottomleft: 0;
3193
- border-bottom-left-radius: 0;
3194
- }
3195
- .ot-input-append .ot-add-on:last-child {
3196
- -webkit-border-radius: 0 2px 2px 0;
3197
- -moz-border-radius: 0 2px 2px 0;
3198
- border-radius: 0 2px 2px 0;
3199
- }
3200
- .ot-input-prepend.ot-input-append input {
3201
- -webkit-border-radius: 0;
3202
- -moz-border-radius: 0;
3203
- border-radius: 0;
3204
- }
3205
- .ot-input-prepend.ot-input-append .ot-add-on:first-child {
3206
- -webkit-border-radius: 2px 0 0 2px;
3207
- -moz-border-radius: 2px 0 0 2px;
3208
- border-radius: 2px 0 0 2px;
3209
- }
3210
- .ot-input-prepend.ot-input-append .ot-add-on:last-child {
3211
- -webkit-border-radius: 0 2px 2px 0;
3212
- -moz-border-radius: 0 2px 2px 0;
3213
- border-radius: 0 2px 2px 0;
3214
- }
3215
-
3216
- /* --------------------------------------------------
3217
- :: CSS Editor
3218
- ---------------------------------------------------*/
3219
- #option-tree-settings-api pre.ot-css-editor,
3220
- #poststuff .type-css pre.ot-css-editor,
3221
- #option-tree-settings-api pre.ot-javascript-editor,
3222
- #poststuff .type-javascript pre.ot-javascript-editor {
3223
- bottom: 0;
3224
- height: 280px;
3225
- left: 0;
3226
- margin: 0 !important;
3227
- right: 0;
3228
- top: 0;
3229
- }
3230
- #option-tree-settings-api pre.ace-chrome,
3231
- #poststuff .type-css pre.ace-chrome,
3232
- #poststuff .type-javascript pre.ace-chrome {
3233
- background-color: #fff !important;
3234
- border: 1px solid #ccc;
3235
- -webkit-border-radius: 2px;
3236
- -moz-border-radius: 2px;
3237
- border-radius: 2px;
3238
- }
3239
- #option-tree-settings-api pre.ace-chrome:hover,
3240
- #poststuff .type-css pre.ace-chrome:hover,
3241
- #poststuff .type-javascript pre.ace-chrome:hover {
3242
- border-color: #bbb !important;
3243
- -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3244
- -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3245
- box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3246
- }
3247
- #option-tree-settings-api pre.ace-chrome.ace_focus,
3248
- #poststuff .type-css pre.ace-chrome.ace_focus,
3249
- #poststuff .type-javascript pre.ace-chrome.ace_focus {
3250
- border-color: #999 !important;
3251
- -webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3252
- -moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3253
- box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
3254
- }
3255
-
3256
- /* --------------------------------------------------
3257
- :: Date Picker
3258
- ---------------------------------------------------*/
3259
- .ui-datepicker {
3260
- background: #fff;
3261
- border: 1px solid #ccc;
3262
- height: auto;
3263
- margin: 5px auto 0;
3264
- width: 216px;
3265
- z-index: 101 !important;
3266
- -webkit-border-radius: 2px;
3267
- -moz-border-radius: 2px;
3268
- border-radius: 2px;
3269
- }
3270
- .ui-datepicker a {
3271
- text-decoration: none;
3272
- }
3273
- .ui-datepicker table {
3274
- border-collapse: collapse;
3275
- border-spacing: 0;
3276
- width: 100%;
3277
- }
3278
- .ui-datepicker .ui-widget-header {
3279
- left: -1px;
3280
- line-height: 30px;
3281
- position: relative;
3282
- top: -1px;
3283
- width: 218px;
3284
- -webkit-border-radius: 2px 2px 0 0;
3285
- -moz-border-radius: 2px 2px 0 0;
3286
- border-radius: 2px 2px 0 0;
3287
- }
3288
- .ui-datepicker .ui-datepicker-title {
3289
- text-align: center;
3290
- }
3291
- .ui-datepicker-prev,
3292
- .ui-datepicker-next {
3293
- color: #ccc;
3294
- display: inline-block;
3295
- font-family: "option-tree-font";
3296
- font-size: 16px;
3297
- width: 30px;
3298
- height: 30px;
3299
- text-align: center;
3300
- cursor: pointer;
3301
- -webkit-border-radius: 2px 0 0 0;
3302
- -moz-border-radius: 2px 0 0 0;
3303
- border-radius: 2px 0 0 0;
3304
- }
3305
- .ui-datepicker-next {
3306
- -webkit-border-radius: 0 2px 0 0;
3307
- -moz-border-radius: 0 2px 0 0;
3308
- border-radius: 0 2px 0 0;
3309
- }
3310
- .ui-datepicker-prev span,
3311
- .ui-datepicker-next span {
3312
- display: none;
3313
- }
3314
- .ui-datepicker-prev:hover,
3315
- .ui-datepicker-next:hover {
3316
- color: #fff;
3317
- }
3318
- .ui-datepicker-prev:before {
3319
- border-right: 1px solid #555;
3320
- content: "\f104";
3321
- display: block;
3322
- float: left;
3323
- width: 31px;
3324
- height: 30px;
3325
- }
3326
- .ui-datepicker-prev {
3327
- border-right: 1px solid #333;
3328
- float: left;
3329
- }
3330
- .ui-datepicker-next:before {
3331
- border-left: 1px solid #555;
3332
- content: "\f105";
3333
- display: block;
3334
- float: right;
3335
- width: 30px;
3336
- height: 30px;
3337
- }
3338
- .ui-datepicker-next {
3339
- border-left: 1px solid #333;
3340
- float: right;
3341
- width: 31px;
3342
- }
3343
- a.ui-datepicker-prev,
3344
- a.ui-datepicker-next {
3345
- outline: 0;
3346
- }
3347
- .ui-datepicker thead {
3348
- background-color: #fafafa;
3349
- border-bottom: 1px solid #ccc;
3350
- }
3351
- .ui-datepicker th {
3352
- text-transform: uppercase;
3353
- font-size: 9px;
3354
- padding: 5px 0;
3355
- color: #555;
3356
- text-shadow: 1px 0px 0px rgba(255,255,255,0.5);
3357
- }
3358
- .ui-datepicker tbody td {
3359
- border-right: 1px solid #ccc;
3360
- padding: 0;
3361
- }
3362
- .ui-datepicker tbody td:last-child {
3363
- border-right: 0px;
3364
- }
3365
- .ui-datepicker tbody tr {
3366
- border-bottom: 1px solid #ccc;
3367
- }
3368
- .ui-datepicker tbody tr:last-child {
3369
- border-bottom: 0px;
3370
- }
3371
- .ui-datepicker td span,
3372
- .ui-datepicker td a {
3373
- display: inline-block;
3374
- font-size: 11px;
3375
- text-align: center;
3376
- width: 30px;
3377
- height: 29px;
3378
- line-height: 30px;
3379
- color: #555;
3380
- text-shadow: 1px 0px 0px rgba(255,255,255,0.5);
3381
- }
3382
- .ui-datepicker-calendar .ui-state-default {
3383
- background-color: #f1f1f1;
3384
- }
3385
- .ui-datepicker-calendar .ui-state-highlight {
3386
- border-radius: 0px;
3387
- border: none;
3388
- color: #0074a2;
3389
- }
3390
- .ui-datepicker-calendar .ui-state-hover {
3391
- background: #fff;
3392
- }
3393
- .ui-datepicker-calendar .ui-state-active {
3394
- background-color: #0074a2;
3395
- color: #fff !important;
3396
- text-shadow: 0px 1px 0px rgba(0,0,0,0.25);
3397
- position: relative;
3398
- }
3399
- .ui-datepicker-unselectable .ui-state-default {
3400
- background: #fff;
3401
- color: #aaa;
3402
- }
3403
- .ui-datepicker-calendar td:first-child .ui-state-active {
3404
- margin-left: 0;
3405
- width: 30px;
3406
- }
3407
- .ui-datepicker-calendar td:last-child .ui-state-active {
3408
- margin-right: 0;
3409
- width: 30px;
3410
- }
3411
- .ui-datepicker-calendar tr:last-child .ui-state-active {
3412
- height: 30px;
3413
- margin-bottom: 0;
3414
- }
3415
- .ui-datepicker .ui-datepicker-buttonpane {
3416
- background-image: none;
3417
- border-left: 0;
3418
- border-right: 0;
3419
- border-bottom: 0;
3420
- margin: 0;
3421
- padding: 0 .7em;
3422
- }
3423
- .ui-datepicker .ui-datepicker-buttonpane button {
3424
- background: #f7f7f7;
3425
- border: 1px solid #ccc;
3426
- color: #555;
3427
- cursor: pointer;
3428
- float: right;
3429
- height: auto;
3430
- margin: .7em 0;
3431
- padding: 5px 14px;
3432
- width: auto;
3433
- -webkit-border-radius: 3px;
3434
- -moz-border-radius: 3px;
3435
- border-radius: 3px;
3436
- -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
3437
- -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
3438
- box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
3439
- }
3440
- .ui-datepicker .ui-datepicker-buttonpane button::-moz-focus-inner {
3441
- border-width: 1px 0;
3442
- border-style: solid none;
3443
- border-color: transparent;
3444
- padding: 0;
3445
- }
3446
- .ui-datepicker .ui-datepicker-buttonpane button:hover,
3447
- .ui-datepicker .ui-datepicker-buttonpane button:focus {
3448
- background: #fafafa;
3449
- border-color: #999;
3450
- color: #222;
3451
- outline: 0;
3452
- }
3453
- .ui-datepicker .ui-datepicker-buttonpane button:focus {
3454
- -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
3455
- -moz-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
3456
- box-shadow: 1px 1px 1px rgba(0,0,0,.2);
3457
- }
3458
- .ui-datepicker .ui-datepicker-buttonpane button:active {
3459
- background: #eee;
3460
- border-color: #999;
3461
- color: #333;
3462
- outline: 0;
3463
- -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
3464
- -moz-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
3465
- box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
3466
- }
3467
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
3468
- float: left;
3469
- }
3470
- .ui-datepicker-calendar + .ui-datepicker-buttonpane {
3471
- border-bottom: 1px solid #ccc;
3472
- }
3473
- .ui-datepicker-multi-2 {
3474
- width: 432px !important;
3475
- }
3476
- .ui-datepicker-multi-3 {
3477
- width: 648px !important;
3478
- }
3479
- .ui-datepicker-multi-4 {
3480
- width: 864px !important;
3481
- }
3482
- .ui-datepicker-group {
3483
- float: left;
3484
- width: 216px !important;
3485
- }
3486
- .ui-datepicker-row-break {
3487
- clear: both;
3488
- width: 100%;
3489
- font-size: 0;
3490
- }
3491
- .ui-datepicker-multi .ui-datepicker-buttonpane {
3492
- border-top: 1px solid #ccc !important;
3493
- }
3494
-
3495
- /* default color scheme */
3496
- .ui-datepicker .ui-widget-header {
3497
- background: #333;
3498
- color: #bbb;
3499
- }
3500
- .ui-datepicker .ui-widget-header a {
3501
- color: #999;
3502
- }
3503
- .ui-datepicker-prev,
3504
- .ui-datepicker-next:before {
3505
- border-color: #000;
3506
- }
3507
- .ui-datepicker-next,
3508
- .ui-datepicker-prev:before {
3509
- border-color: #444;
3510
- }
3511
- .ui-datepicker-prev:hover,
3512
- .ui-datepicker-next:hover {
3513
- background: #222;
3514
- color: #0074a2 !important;
3515
- }
3516
- /* light */
3517
- .admin-color-light .ui-datepicker .ui-widget-header {
3518
- background: #888;
3519
- color: #fff;
3520
- }
3521
- .admin-color-light .ui-datepicker .ui-widget-header a {
3522
- color: #ccc;
3523
- }
3524
- .admin-color-light .ui-datepicker-prev,
3525
- .admin-color-light .ui-datepicker-next:before {
3526
- border-color: #3c3c3c;
3527
- }
3528
- .admin-color-light .ui-datepicker-next,
3529
- .admin-color-light .ui-datepicker-prev:before {
3530
- border-color: #999;
3531
- }
3532
- .admin-color-light .ui-datepicker-prev:hover,
3533
- .admin-color-light .ui-datepicker-next:hover {
3534
- background: #777;
3535
- color: #eee !important;
3536
- }
3537
- /* blue */
3538
- .admin-color-blue .ui-datepicker .ui-widget-header {
3539
- background: #52accc;
3540
- color: #fff;
3541
- }
3542
- .admin-color-blue .ui-datepicker .ui-widget-header a {
3543
- color: #e2f8ff;
3544
- }
3545
- .admin-color-blue .ui-datepicker-prev,
3546
- .admin-color-blue .ui-datepicker-next:before {
3547
- border-color: #002b39;
3548
- }
3549
- .admin-color-blue .ui-datepicker-next,
3550
- .admin-color-blue .ui-datepicker-prev:before {
3551
- border-color: #5dc2e6;
3552
- }
3553
- .admin-color-blue .ui-datepicker-prev:hover,
3554
- .admin-color-blue .ui-datepicker-next:hover {
3555
- background: #006484;
3556
- color: #fff !important;
3557
- }
3558
- /* coffee */
3559
- .admin-color-coffee .ui-datepicker .ui-widget-header {
3560
- background: #59524c;
3561
- color: #c7cbc9;
3562
- }
3563
- .admin-color-coffee .ui-datepicker .ui-widget-header a {
3564
- color: #f3f2f1;
3565
- }
3566
- .admin-color-coffee .ui-datepicker-prev,
3567
- .admin-color-coffee .ui-datepicker-next:before {
3568
- border-color: #0f0e0d;
3569
- }
3570
- .admin-color-coffee .ui-datepicker-next,
3571
- .admin-color-coffee .ui-datepicker-prev:before {
3572
- border-color: #675f58;
3573
- }
3574
- .admin-color-coffee .ui-datepicker-prev:hover,
3575
- .admin-color-coffee .ui-datepicker-next:hover {
3576
- background: #cca588;
3577
- color: #fff !important;
3578
- }
3579
- /* ectoplasm */
3580
- .admin-color-ectoplasm .ui-datepicker .ui-widget-header {
3581
- background: #523f6d;
3582
- color: #c6c6d3;
3583
- }
3584
- .admin-color-ectoplasm .ui-datepicker .ui-widget-header a {
3585
- color: #f3f2f1;
3586
- }
3587
- .admin-color-ectoplasm .ui-datepicker-prev,
3588
- .admin-color-ectoplasm .ui-datepicker-next:before {
3589
- border-color: #181220;
3590
- }
3591
- .admin-color-ectoplasm .ui-datepicker-next,
3592
- .admin-color-ectoplasm .ui-datepicker-prev:before {
3593
- border-color: #644d85;
3594
- }
3595
- .admin-color-ectoplasm .ui-datepicker-prev:hover,
3596
- .admin-color-ectoplasm .ui-datepicker-next:hover {
3597
- background: #a3b542;
3598
- color: #fff !important;
3599
- }
3600
- /* midnight */
3601
- .admin-color-midnight .ui-datepicker .ui-widget-header {
3602
- background: #363b3f;
3603
- color: #f1f2f3;
3604
- }
3605
- .admin-color-midnight .ui-datepicker .ui-widget-header a {
3606
- color: #f1f2f3;
3607
- }
3608
- .admin-color-midnight .ui-datepicker-prev,
3609
- .admin-color-midnight .ui-datepicker-next:before {
3610
- border-color: #090a0b;
3611
- }
3612
- .admin-color-midnight .ui-datepicker-next,
3613
- .admin-color-midnight .ui-datepicker-prev:before {
3614
- border-color: #4c5359;
3615
- }
3616
- .admin-color-midnight .ui-datepicker-prev:hover,
3617
- .admin-color-midnight .ui-datepicker-next:hover {
3618
- background: #ed543f;
3619
- color: #fff !important;
3620
- }
3621
- /* ocean */
3622
- .admin-color-ocean .ui-datepicker .ui-widget-header {
3623
- background: #738e96;
3624
- color: #f1fcff;
3625
- }
3626
- .admin-color-ocean .ui-datepicker .ui-widget-header a {
3627
- color: #f1fcff;
3628
- }
3629
- .admin-color-ocean .ui-datepicker-prev,
3630
- .admin-color-ocean .ui-datepicker-next:before {
3631
- border-color: #39464a;
3632
- }
3633
- .admin-color-ocean .ui-datepicker-next,
3634
- .admin-color-ocean .ui-datepicker-prev:before {
3635
- border-color: #87a6af;
3636
- }
3637
- .admin-color-ocean .ui-datepicker-prev:hover,
3638
- .admin-color-ocean .ui-datepicker-next:hover {
3639
- background: #9ab8a0;
3640
- color: #fff !important;
3641
- }
3642
- /* sunrise */
3643
- .admin-color-sunrise .ui-datepicker .ui-widget-header {
3644
- background: #da4f41;
3645
- color: #fff;
3646
- }
3647
- .admin-color-sunrise .ui-datepicker .ui-widget-header a {
3648
- color: #f3f1f1;
3649
- }
3650
- .admin-color-sunrise .ui-datepicker-prev,
3651
- .admin-color-sunrise .ui-datepicker-next:before {
3652
- border-color: #8a322a;
3653
- }
3654
- .admin-color-sunrise .ui-datepicker-next,
3655
- .admin-color-sunrise .ui-datepicker-prev:before {
3656
- border-color: #e75546;
3657
- }
3658
- .admin-color-sunrise .ui-datepicker-prev:hover,
3659
- .admin-color-sunrise .ui-datepicker-next:hover {
3660
- background: #e88436;
3661
- color: #fff !important;
3662
- }
3663
-
3664
- /* --------------------------------------------------
3665
- :: Time Picker
3666
- ---------------------------------------------------*/
3667
- .ui-timepicker-div {
3668
- border-top: 1px solid #ccc;
3669
- padding: 0 .4em;
3670
- }
3671
- .ui-timepicker-div .ui-widget-content {
3672
- border: 1px solid #aaa;
3673
- background: #fff;
3674
- font-weight: normal;
3675
- color: #212121;
3676
- }
3677
- .ui-timepicker-div .ui-slider {
3678
- position: relative;
3679
- text-align: left;
3680
- }
3681
- .ui-timepicker-div .ui-slider-horizontal {
3682
- height: .8em;
3683
- bottom: -.3em;
3684
- position: relative;
3685
- -webkit-border-radius: 2px;
3686
- -moz-border-radius: 2px;
3687
- border-radius: 2px;
3688
- }
3689
- .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3690
- background: #f7f7f7;
3691
- border: 1px solid #ccc;
3692
- color: #555;
3693
- cursor: pointer;
3694
- display: block;
3695
- height: 1.3em;
3696
- margin-left: -.5em;
3697
- outline: 0;
3698
- position: absolute;
3699
- top: -.325em;
3700
- width: .8em;
3701
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08);
3702
- -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08);
3703
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 rgba(0,0,0,.08);
3704
- -webkit-border-radius: 2px;
3705
- -moz-border-radius: 2px;
3706
- border-radius: 2px;
3707
- }
3708
- .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover {
3709
- background: #fafafa;
3710
- border-color: #999;
3711
- color: #222;
3712
- }
3713
- .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3714
- background: #eee;
3715
- border-color: #999;
3716
- color: #333;
3717
- outline: none;
3718
- }
3719
- .ui-datepicker-prev,
3720
- .ui-datepicker-next:before {
3721
- border-color: #000;
3722
- }
3723
- .ui-datepicker-next,
3724
- .ui-datepicker-prev:before {
3725
- border-color: #444;
3726
- }
3727
- .ui-datepicker-prev:hover,
3728
- .ui-datepicker-next:hover {
3729
- background: #222;
3730
- color: #0074a2 !important;
3731
- }
3732
-
3733
- .ui-timepicker-div dl {
3734
- text-align: left;
3735
- }
3736
- .ui-timepicker-div dl dt {
3737
- float: left;
3738
- clear: left;
3739
- padding: 0 0 0 5px;
3740
- }
3741
- .ui-timepicker-div dl dd {
3742
- margin: 0 10px 10px 45%;
3743
- }
3744
- .ui-timepicker-div td {
3745
- font-size: 90%;
3746
- }
3747
- .ui-tpicker-grid-label {
3748
- background: none;
3749
- border: none;
3750
- margin: 0;
3751
- padding: 0;
3752
- }
3753
- /* default */
3754
- .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3755
- background: #333;
3756
- border-color: #000;
3757
- }
3758
- .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3759
- .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3760
- background: #444;
3761
- border-color: #111;
3762
- }
3763
- /* light */
3764
- .admin-color-light .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3765
- background: #888;
3766
- border-color: #3c3c3c;
3767
- }
3768
- .admin-color-light .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3769
- .admin-color-light .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3770
- background: #999;
3771
- border-color: #777;
3772
- }
3773
- /* blue */
3774
- .admin-color-blue .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3775
- background: #52accc;
3776
- border-color: #002b39;
3777
- }
3778
- .admin-color-blue .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3779
- .admin-color-blue .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3780
- background: #5dc2e6;
3781
- border-color: #006484;
3782
- }
3783
- /* coffee */
3784
- .admin-color-coffee .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3785
- background: #59524c;
3786
- border-color: #0f0e0d;
3787
- }
3788
- .admin-color-coffee .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3789
- .admin-color-coffee .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3790
- background: #cca588;
3791
- border-color: #675f58;
3792
- }
3793
- /* ectoplasm */
3794
- .admin-color-ectoplasm .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3795
- background: #523f6d;
3796
- border-color: #181220;
3797
- }
3798
- .admin-color-ectoplasm .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3799
- .admin-color-ectoplasm .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3800
- background: #a3b542;
3801
- border-color: #644d85;
3802
- }
3803
- /* midnight */
3804
- .admin-color-midnight .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3805
- background: #363b3f;
3806
- border-color: #090a0b;
3807
- }
3808
- .admin-color-midnight .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3809
- .admin-color-midnight .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3810
- background: #ed543f;
3811
- border-color: #a0382a;
3812
- }
3813
- /* ocean */
3814
- .admin-color-ocean .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3815
- background: #738e96;
3816
- border-color: #39464a;
3817
- }
3818
- .admin-color-ocean .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3819
- .admin-color-ocean .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3820
- background: #9ab8a0;
3821
- border-color: #5a6c5e;
3822
- }
3823
- /* sunrise */
3824
- .admin-color-sunrise .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle {
3825
- background: #da4f41;
3826
- border-color: #8a322a;
3827
- }
3828
- .admin-color-sunrise .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle:hover,
3829
- .admin-color-sunrise .ui-timepicker-div .ui-slider-horizontal .ui-slider-handle.ui-state-active {
3830
- background: #e88436;
3831
- border-color: #e75546;
3832
- }
3833
-
3834
- /* --------------------------------------------------
3835
- :: Meta Box Tabs
3836
- ---------------------------------------------------*/
3837
- .ot-metabox-tabs.ui-tabs {
3838
- overflow: hidden;
3839
- position: relative;
3840
- }
3841
- .ot-metabox-tabs.ui-tabs .ot-metabox-wrapper {
3842
- overflow: hidden;
3843
- }
3844
- .ot-metabox-tabs.ui-tabs .ot-metabox-panels {
3845
- background: white;
3846
- border: 1px solid #ccc;
3847
- margin: 7px 0 1px 0;
3848
- min-height: 140px;
3849
- overflow: hidden;
3850
- padding: 12px;
3851
- -webkit-border-radius: 2px;
3852
- -moz-border-radius: 2px;
3853
- border-radius: 2px;
3854
- }
3855
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav {
3856
- float: left;
3857
- list-style: none;
3858
- margin: 0 -1px 0 0;
3859
- padding: 18px 0 12px 0;
3860
- width: 151px;
3861
- }
3862
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li,
3863
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-focus {
3864
- background: none;
3865
- border: 1px solid transparent;
3866
- border-right-width: 0px;
3867
- display: block;
3868
- margin: 0;
3869
- outline: 0;
3870
- padding: 1px 0;
3871
- width: 150px;
3872
- -webkit-border-radius: 2px 0 0 2px;
3873
- -moz-border-radius: 2px 0 0 2px;
3874
- border-radius: 2px 0 0 2px;
3875
- }
3876
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active {
3877
- background: white;
3878
- border-color: #ccc;
3879
- color: black;
3880
- }
3881
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a {
3882
- color: #21759b;
3883
- display: block;
3884
- line-height: 18px;
3885
- outline: 0;
3886
- padding: 5px 5px 5px 12px;
3887
- text-decoration: none;
3888
- }
3889
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a:hover {
3890
- color: black;
3891
- outline: none;
3892
- }
3893
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active a {
3894
- color: black;
3895
- outline: none;
3896
- }
3897
- .ot-metabox-tabs.ui-tabs .ot-metabox-panel {
3898
- clear: both;
3899
- }
3900
-
3901
- /* --------------------------------------------------
3902
- :: Theme Option & Side Metabox Tabs
3903
- ---------------------------------------------------*/
3904
- .ot-theme-option-tabs.ui-tabs
3905
- #side-sortables .ot-metabox-tabs.ui-tabs {
3906
- position: relative;
3907
- }
3908
- .ot-theme-option-tabs.ui-tabs .inside,
3909
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-wrapper {
3910
- overflow: hidden;
3911
- }
3912
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-panels,
3913
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-panels {
3914
- border: 0;
3915
- margin: 0;
3916
- overflow: hidden;
3917
- padding: 0;
3918
- width: 100%;
3919
- }
3920
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav,
3921
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav {
3922
- border-bottom: 1px solid #ccc;
3923
- float: none;
3924
- font-size: 12px !important;
3925
- height: 30px;
3926
- list-style: none;
3927
- margin: 2px 0 0 0;
3928
- padding: 0;
3929
- width: 100%;
3930
- }
3931
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav {
3932
- margin-top: 10px;
3933
- }
3934
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-default,
3935
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-default {
3936
- background: #fafafa;
3937
- border: 1px solid #ccc;
3938
- border-width: 1px 1px 0px 1px;
3939
- display: block;
3940
- float: left;
3941
- margin: 0 0 0 3px;
3942
- padding: 0;
3943
- outline: 0;
3944
- -webkit-border-radius: 2px 2px 0 0;
3945
- -moz-border-radius: 2px 2px 0 0;
3946
- border-radius: 2px 2px 0 0;
3947
- }
3948
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li:hover,
3949
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li:hover {
3950
- background: #f1f1f1;
3951
- border: 1px solid #ccc;
3952
- border-width: 1px 1px 0px 1px;
3953
- }
3954
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-active,
3955
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active {
3956
- background: white;
3957
- border-color: #ccc;
3958
- border-width: 1px 1px 0px 1px;
3959
- color: black;
3960
- padding: 0;
3961
- -webkit-border-radius: 2px 2px 0 0;
3962
- -moz-border-radius: 2px 2px 0 0;
3963
- border-radius: 2px 2px 0 0;
3964
- }
3965
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li a,
3966
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a {
3967
- color: #21759b;
3968
- display: block;
3969
- line-height: 18px;
3970
- outline: 0;
3971
- padding: 6px 12px 5px 12px !important;
3972
- text-decoration: none;
3973
- }
3974
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li a:hover,
3975
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a:hover {
3976
- color: black;
3977
- outline: none;
3978
- }
3979
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-nav.ui-tabs-nav li.ui-state-active a,
3980
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active a {
3981
- color: black;
3982
- outline: none;
3983
- padding: 6px 12px 6px 12px !important;
3984
- }
3985
- .ot-theme-option-tabs.ui-tabs .ot-theme-option-panel,
3986
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-panel {
3987
- clear: both;
3988
- }
3989
- #side-sortables .ot-metabox-tabs.ui-tabs .format-setting .description,
3990
- #side-sortables .ot-metabox-tabs.ui-tabs .format-setting .format-setting-inner {
3991
- width: 100%;
3992
- }
3993
-
3994
- /* --------------------------------------------------
3995
- :: Metabox Tabs for Small Screens & Mobile Devices
3996
- ---------------------------------------------------*/
3997
- @media screen and ( max-width: 1020px ) {
3998
- .ot-metabox-tabs.ui-tabs {
3999
- position: relative;
4000
- }
4001
- .ot-metabox-tabs.ui-tabs .ot-metabox-wrapper {
4002
- overflow: hidden;
4003
- }
4004
- .ot-metabox-tabs.ui-tabs .ot-metabox-panels {
4005
- border: 0;
4006
- margin: 0;
4007
- overflow: hidden;
4008
- padding: 0;
4009
- width: 100%;
4010
- }
4011
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav {
4012
- border-bottom: 1px solid #ccc;
4013
- float: none;
4014
- font-size: 12px !important;
4015
- height: 30px;
4016
- list-style: none;
4017
- margin: 2px 0 0 0;
4018
- padding: 0;
4019
- width: 100%;
4020
- }
4021
- #side-sortables .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav {
4022
- margin-top: 10px;
4023
- }
4024
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li {
4025
- background: #fafafa;
4026
- border: 1px solid #ccc !important;
4027
- border-width: 1px 1px 0px 1px !important;
4028
- display: inline-block !important;
4029
- margin: 0 0 0 3px !important;
4030
- padding: 0 !important;
4031
- outline: 0 !important;
4032
- width: auto !important;
4033
- -webkit-border-radius: 2px 2px 0 0;
4034
- -moz-border-radius: 2px 2px 0 0;
4035
- border-radius: 2px 2px 0 0;
4036
- }
4037
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li:hover {
4038
- background: #f1f1f1;
4039
- }
4040
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active {
4041
- background: white;
4042
- color: black;
4043
- padding: 0;
4044
- -webkit-border-radius: 2px 2px 0 0;
4045
- -moz-border-radius: 2px 2px 0 0;
4046
- border-radius: 2px 2px 0 0;
4047
- }
4048
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a {
4049
- color: #21759b;
4050
- display: block;
4051
- line-height: 18px;
4052
- outline: 0;
4053
- padding: 6px 12px 5px 12px !important;
4054
- text-decoration: none;
4055
- }
4056
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li a:hover {
4057
- color: black;
4058
- outline: none;
4059
- }
4060
- .ot-metabox-tabs.ui-tabs .ot-metabox-nav.ui-tabs-nav li.ui-state-active a {
4061
- color: black;
4062
- outline: none;
4063
- padding: 6px 12px 6px 12px !important;
4064
- }
4065
- .ot-metabox-tabs.ui-tabs .ot-metabox-panel {
4066
- clear: both;
4067
- }
4068
- }
4069
-
4070
-
4071
- .of-notice-small {
4072
- border-left: 4px solid #00a0d2;
4073
- margin: 5px 0 15px;
4074
- padding: 1px 12px;
4075
- background-color: #fafafa;
4076
- display: inline-block;
4077
- }
4078
-
4079
-
4080
- .nifty-list {
4081
- list-style-type: circle;
4082
- list-style-position: outside;
4083
- margin-left: 14px;
4084
- line-height: 150%;
4085
- }
4086
-
4087
- .toplevel_page_niftycs-options .upsell-footer{
4088
- text-align: center;
4089
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/fonts/option-tree-font.eot DELETED
Binary file
admin/assets/fonts/option-tree-font.svg DELETED
@@ -1,379 +0,0 @@
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>Generated by IcoMoon</metadata>
5
- <defs>
6
- <font id="option-tree-font" horiz-adv-x="512">
7
- <font-face units-per-em="512" ascent="480" descent="-32" />
8
- <missing-glyph horiz-adv-x="512" />
9
- <glyph unicode="&#x20;" d="" horiz-adv-x="256" />
10
- <glyph unicode="&#xe785;" d="M255.995-32c-141.155 0-255.995 114.841-255.995 256.010 0 141.149 114.841 255.99 255.995 255.99 141.164 0 256.005-114.841 256.005-255.99 0-141.169-114.841-256.010-256.005-256.010zM255.995 452.125c-125.784 0-228.12-102.336-228.12-228.115 0-125.794 102.336-228.135 228.12-228.135 125.775 0 228.106 102.341 228.106 228.136 0 125.78-102.331 228.115-228.106 228.115zM219.298 72.94c0 0.438 0 228.795 0 228.795h-37.923c-14.819 0-27.112-1.231-36.869-3.688-9.768-2.462-18.349-9.206-25.757-20.219-7.414-11.027-11.638-28.007-12.687-50.968h-24.842v87.715c-13.465-26.604-21.1-56.67-21.1-88.531 0-88.773 58.925-163.766 139.781-188.067 7.050-0.906 19.333 2.23 19.397 34.964zM397.455 187.126c-18.904-0.152-34.2 15.995-34.2 35.727 0 19.737 15.296 35.741 34.2 35.741 1.014 0 2.014-0.064 2.993-0.152-0.069 1.56-0.399 3.053-0.925 4.431 0.005 0 0.005 0 0.010 0-2.053 5.785-4.465 10.733-7.252 14.819-7.409 10.929-15.389 17.669-23.926 20.219-8.541 2.555-18.387 3.83-29.543 3.83h-46.109v-228.973c0.015-35.185 14.73-35.998 21.661-34.437 1.137 0.354 2.26 0.748 3.387 1.118 0.015 0.010 0.084 0.049 0.094 0.054 0.024 0 0.039 0.010 0.059 0.010 0 0-0.029-0.015-0.079-0.034 78.43 25.757 135.079 99.53 135.079 186.57 0 34.024-8.659 66.024-23.887 93.923 0-11.259 0-96.409 0-97.113 0.010-18.634-10.255-35.56-31.562-35.731zM256.512 422.44c-69.4 0-130.344-36.027-165.278-90.368h330.55c-34.925 54.336-95.872 90.368-165.273 90.368z" />
11
- <glyph unicode="&#xf000;" d="M485.428 424.571q0-10-12.286-22.286l-180.571-180.571v-219.428h91.428q7.428 0 12.857-5.428t5.428-12.857-5.428-12.857-12.857-5.429h-256q-7.428 0-12.857 5.429t-5.428 12.857 5.428 12.857 12.857 5.428h91.428v219.428l-180.571 180.572q-12.285 12.286-12.285 22.286 0 6.571 5.143 10.428t10.857 5 12.285 1.143h402.286q6.572 0 12.286-1.143t10.857-5 5.143-10.428z" />
12
- <glyph unicode="&#xf001;" d="M438.857 411.429v-320q0-14.286-9.714-25.428t-24.572-17.286-29.572-9.143-27.572-3-27.572 3-29.572 9.143-24.572 17.286-9.714 25.428 9.714 25.428 24.572 17.286 29.572 9.143 27.572 3q30 0 54.857-11.143v153.428l-219.429-67.714v-202.571q0-14.286-9.714-25.428t-24.571-17.286-29.572-9.143-27.572-3-27.572 3-29.572 9.143-24.572 17.286-9.714 25.428 9.714 25.428 24.572 17.286 29.572 9.143 27.572 3q30 0 54.857-11.143v276.286q0 8.857 5.428 16.143t14 10.143l237.714 73.143q3.428 1.143 8 1.143 11.428 0 19.428-8t8-19.429z" />
13
- <glyph unicode="&#xf002;" d="M329.143 237.714q0 52.857-37.572 90.428t-90.428 37.571-90.428-37.571-37.572-90.428 37.572-90.428 90.428-37.572 90.428 37.572 37.572 90.428zM475.428 0q0-14.857-10.857-25.714t-25.714-10.857q-15.428 0-25.714 10.857l-98 97.714q-51.143-35.428-114-35.428-40.857 0-78.143 15.857t-64.285 42.857-42.857 64.286-15.857 78.143 15.857 78.143 42.857 64.285 64.285 42.857 78.143 15.857 78.143-15.857 64.286-42.857 42.857-64.285 15.857-78.143q0-62.857-35.428-114l98-98q10.572-10.572 10.572-25.714z" horiz-adv-x="476" />
14
- <glyph unicode="&#xf003;" d="M475.428 45.714v219.428q-9.143-10.286-19.714-18.857-76.572-58.857-121.714-96.572-14.572-12.286-23.714-19.143t-24.714-13.857-29.286-7h-0.571q-13.714 0-29.285 7t-24.714 13.857-23.714 19.143q-45.143 37.714-121.715 96.572-10.572 8.572-19.715 18.857v-219.428q0-3.714 2.715-6.428t6.428-2.714h420.572q3.714 0 6.428 2.714t2.714 6.428zM475.428 346v7t-0.143 3.714-0.857 3.572-1.572 2.572-2.572 2.143-4 0.714h-420.572q-3.715 0-6.428-2.714t-2.715-6.429q0-48 42-81.143 55.143-43.428 114.571-90.572 1.714-1.428 10-8.428t13.143-10.714 12.714-9 14.429-7.857 12.286-2.572h0.572q5.714 0 12.286 2.572t14.428 7.857 12.714 9 13.143 10.714 10 8.428q59.428 47.143 114.572 90.572 15.428 12.286 28.714 33t13.286 37.572zM512 356.572v-310.857q0-18.857-13.428-32.286t-32.286-13.428h-420.572q-18.857 0-32.285 13.428t-13.428 32.286v310.857q0 18.857 13.428 32.286t32.285 13.428h420.572q18.857 0 32.286-13.428t13.428-32.286z" />
15
- <glyph unicode="&#xf004;" d="M256 0q-7.428 0-12.572 5.143l-178.286 172q-2.857 2.286-7.857 7.428t-15.857 18.714-19.428 27.857-15.286 34.572-6.715 39.428q0 62.857 36.285 98.285t100.285 35.429q17.714 0 36.143-6.143t34.285-16.571 27.286-19.572 21.714-19.428q10.286 10.285 21.714 19.428t27.286 19.572 34.286 16.571 36.143 6.143q64 0 100.286-35.429t36.286-98.285q0-63.143-65.428-128.572l-178-171.428q-5.143-5.143-12.572-5.143z" />
16
- <glyph unicode="&#xf005;" d="M475.428 290.572q0-6.286-7.428-13.714l-103.714-101.143 24.572-142.857q0.286-2 0.286-5.714 0-6-3-10.143t-8.714-4.143q-5.428 0-11.428 3.428l-128.286 67.428-128.286-67.428q-6.285-3.428-11.428-3.428-6 0-9 4.143t-3 10.143q0 1.714 0.572 5.714l24.572 142.857-104 101.143q-7.143 7.714-7.143 13.714 0 10.572 16 13.143l143.428 20.857 64.286 130q5.428 11.714 14 11.714t14-11.714l64.286-130 143.429-20.857q16-2.572 16-13.143z" horiz-adv-x="476" />
17
- <glyph unicode="&#xf006;" d="M324.857 188.572l87.428 84.857-120.572 17.715-54 109.143-54-109.143-120.572-17.714 87.428-84.857-20.857-120.286 108 56.857 107.714-56.857zM475.428 290.572q0-6.286-7.428-13.714l-103.714-101.143 24.572-142.857q0.286-2 0.286-5.714 0-14.286-11.714-14.286-5.428 0-11.428 3.428l-128.286 67.428-128.286-67.428q-6.285-3.428-11.428-3.428-6 0-9 4.143t-3 10.143q0 1.714 0.572 5.714l24.572 142.857-104 101.143q-7.143 7.714-7.143 13.714 0 10.572 16 13.143l143.428 20.857 64.286 130q5.428 11.714 14 11.714t14-11.714l64.286-130 143.429-20.857q16-2.572 16-13.143z" horiz-adv-x="476" />
18
- <glyph unicode="&#xf007;" d="M402.286 74q0-34.286-20.857-54.143t-55.428-19.857h-249.714q-34.572 0-55.428 19.857t-20.857 54.143q0 15.143 1 29.572t4 31.143 7.572 31 12.285 27.857 17.715 23.143 24.428 15.286 31.857 5.714q2.572 0 12-6.143t21.285-13.714 30.857-13.714 38.143-6.143 38.143 6.143 30.857 13.714 21.286 13.714 12 6.143q17.428 0 31.857-5.714t24.428-15.285 17.714-23.143 12.286-27.857 7.572-31 4-31.143 1-29.572zM310.857 329.143q0-45.428-32.143-77.572t-77.572-32.143-77.572 32.143-32.143 77.572 32.143 77.571 77.572 32.143 77.572-32.143 32.143-77.571z" horiz-adv-x="403" />
19
- <glyph unicode="&#xf008;" d="M109.715 18.286v36.572q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.572q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM109.715 128v36.572q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.572q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM109.715 237.714v36.572q0 7.428-5.428 12.857t-12.857 5.429h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM402.286 18.286v146.286q0 7.428-5.428 12.857t-12.857 5.428h-219.429q-7.429 0-12.857-5.428t-5.428-12.857v-146.286q0-7.428 5.428-12.857t12.857-5.428h219.429q7.428 0 12.857 5.428t5.428 12.857zM109.715 347.429v36.572q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.572q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM512 18.286v36.572q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.572q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM402.286 237.714v146.286q0 7.428-5.428 12.857t-12.857 5.428h-219.429q-7.429 0-12.857-5.428t-5.428-12.857v-146.286q0-7.428 5.428-12.857t12.857-5.428h219.429q7.428 0 12.857 5.428t5.428 12.857zM512 128v36.572q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.572q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM512 237.714v36.572q0 7.428-5.428 12.857t-12.857 5.429h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM512 347.429v36.572q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-36.572q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM548.572 393.143v-384q0-18.857-13.428-32.286t-32.286-13.428h-457.143q-18.857 0-32.285 13.428t-13.428 32.286v384q0 18.857 13.428 32.286t32.285 13.428h457.143q18.857 0 32.286-13.428t13.428-32.286z" horiz-adv-x="549" />
20
- <glyph unicode="&#xf009;" d="M219.429 182.857v-109.714q0-14.857-10.857-25.714t-25.714-10.857h-146.286q-14.857 0-25.715 10.857t-10.857 25.714v109.714q0 14.857 10.857 25.714t25.715 10.857h146.286q14.857 0 25.714-10.857t10.857-25.714zM219.429 402.286v-109.714q0-14.857-10.857-25.714t-25.714-10.857h-146.286q-14.857 0-25.715 10.857t-10.857 25.714v109.714q0 14.857 10.857 25.714t25.715 10.857h146.286q14.857 0 25.714-10.857t10.857-25.714zM475.428 182.857v-109.714q0-14.857-10.857-25.714t-25.714-10.857h-146.286q-14.857 0-25.714 10.857t-10.857 25.714v109.714q0 14.857 10.857 25.714t25.714 10.857h146.286q14.857 0 25.714-10.857t10.857-25.714zM475.428 402.286v-109.714q0-14.857-10.857-25.714t-25.714-10.857h-146.286q-14.857 0-25.714 10.857t-10.857 25.714v109.714q0 14.857 10.857 25.714t25.714 10.857h146.286q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="476" />
21
- <glyph unicode="&#xf00a;" d="M146.286 118.857v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM146.286 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM329.143 118.857v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM146.286 411.429v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM329.143 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM512 118.857v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM329.143 411.429v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM512 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM512 411.429v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428z" />
22
- <glyph unicode="&#xf00b;" d="M146.286 118.857v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM146.286 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM512 118.857v-54.857q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h274.286q11.428 0 19.428-8t8-19.428zM146.286 411.429v-54.857q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428zM512 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h274.286q11.428 0 19.428-8t8-19.428zM512 411.429v-54.857q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h274.286q11.428 0 19.428-8t8-19.428z" />
23
- <glyph unicode="&#xf00c;" d="M477.428 313.714q0-11.428-8-19.428l-245.714-245.714q-8-8-19.428-8t-19.428 8l-142.286 142.286q-8 8-8 19.428t8 19.428l38.857 38.857q8 8 19.428 8t19.428-8l84-84.285 187.429 187.714q8 8 19.428 8t19.428-8l38.857-38.857q8-8 8-19.428z" />
24
- <glyph unicode="&#xf00d;" d="M370.857 97.714q0-11.428-8-19.428l-38.857-38.857q-8-8-19.428-8t-19.428 8l-84 84-84-84q-8-8-19.428-8t-19.428 8l-38.857 38.857q-8 8-8 19.428t8 19.428l84 84-84 84q-8 8-8 19.428t8 19.428l38.857 38.857q8 8 19.428 8t19.428-8l84-84 84 84q8 8 19.428 8t19.428-8l38.857-38.857q8-8 8-19.428t-8-19.428l-84-84 84-84q8-8 8-19.428z" horiz-adv-x="403" />
25
- <glyph unicode="&#xf00e;" d="M292.572 246.857v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-64v-64q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v64h-64q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h64v64q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428v-64h64q3.714 0 6.428-2.714t2.714-6.428zM329.143 237.714q0 52.857-37.572 90.428t-90.428 37.571-90.428-37.571-37.572-90.428 37.572-90.428 90.428-37.572 90.428 37.572 37.572 90.428zM475.428 0q0-15.143-10.714-25.857t-25.857-10.715q-15.428 0-25.714 10.857l-98 97.714q-51.143-35.428-114-35.428-40.857 0-78.143 15.857t-64.285 42.857-42.857 64.286-15.857 78.143 15.857 78.143 42.857 64.285 64.285 42.857 78.143 15.857 78.143-15.857 64.286-42.857 42.857-64.285 15.857-78.143q0-62.857-35.428-114l98-98q10.572-10.572 10.572-25.714z" horiz-adv-x="476" />
26
- <glyph unicode="&#xf010;" d="M292.572 246.857v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-164.571q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h164.571q3.714 0 6.428-2.714t2.714-6.428zM329.143 237.714q0 52.857-37.572 90.428t-90.428 37.571-90.428-37.571-37.572-90.428 37.572-90.428 90.428-37.572 90.428 37.572 37.572 90.428zM475.428 0q0-15.143-10.714-25.857t-25.857-10.715q-15.428 0-25.714 10.857l-98 97.714q-51.143-35.428-114-35.428-40.857 0-78.143 15.857t-64.285 42.857-42.857 64.286-15.857 78.143 15.857 78.143 42.857 64.285 64.285 42.857 78.143 15.857 78.143-15.857 64.286-42.857 42.857-64.285 15.857-78.143q0-62.857-35.428-114l98-98q10.572-10.572 10.572-25.714z" horiz-adv-x="476" />
27
- <glyph unicode="&#xf011;" d="M438.857 219.429q0-44.572-17.428-85.143t-46.857-70-70-46.857-85.143-17.428-85.143 17.428-70 46.857-46.857 70-17.428 85.143q0 52 23 98t64.715 77.143q12.285 9.143 27.285 7.143t23.857-14.286q9.143-12 7-27t-14.143-24.143q-28-21.143-43.285-51.714t-15.285-65.143q0-29.714 11.572-56.714t31.285-46.714 46.715-31.286 56.714-11.572 56.714 11.572 46.714 31.286 31.286 46.714 11.572 56.714q0 34.572-15.286 65.143t-43.286 51.715q-12 9.143-14.143 24.143t7 27q8.857 12.286 24 14.286t27.143-7.143q41.714-31.143 64.714-77.143t23-98zM256 438.857v-182.857q0-14.857-10.857-25.714t-25.715-10.857-25.714 10.857-10.857 25.714v182.857q0 14.857 10.857 25.715t25.714 10.857 25.714-10.857 10.857-25.715z" />
28
- <glyph unicode="&#xf012;" d="M73.143 64v-54.857q0-4-2.572-6.572t-6.572-2.572h-54.857q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h54.857q4 0 6.572-2.572t2.572-6.572zM182.857 100.572v-91.428q0-4-2.571-6.572t-6.572-2.572h-54.857q-4 0-6.572 2.572t-2.572 6.572v91.428q0 4 2.572 6.572t6.572 2.572h54.857q4 0 6.572-2.572t2.571-6.572zM292.572 173.714v-164.571q0-4-2.572-6.572t-6.572-2.572h-54.857q-4 0-6.571 2.572t-2.571 6.572v164.572q0 4 2.571 6.572t6.572 2.572h54.857q4 0 6.572-2.572t2.572-6.572zM402.286 283.429v-274.286q0-4-2.572-6.572t-6.572-2.572h-54.857q-4 0-6.572 2.572t-2.572 6.572v274.286q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.572-2.571t2.572-6.572zM512 429.714v-420.571q0-4-2.572-6.572t-6.572-2.572h-54.857q-4 0-6.572 2.572t-2.572 6.572v420.572q0 4 2.572 6.571t6.572 2.572h54.857q4 0 6.572-2.572t2.572-6.571z" />
29
- <glyph unicode="&#xf013;" d="M292.572 219.429q0 30.286-21.428 51.714t-51.714 21.428-51.714-21.428-21.428-51.714 21.428-51.714 51.714-21.428 51.714 21.428 21.428 51.714zM438.857 250.572v-63.428q0-3.428-2.286-6.572t-5.714-3.714l-52.857-8q-5.428-15.428-11.143-26 10-14.286 30.572-39.428 2.857-3.428 2.857-7.143t-2.572-6.572q-7.714-10.572-28.286-30.857t-26.857-20.286q-3.428 0-7.428 2.572l-39.428 30.857q-12.572-6.572-26-10.857-4.572-38.857-8.286-53.143-2-8-10.286-8h-63.428q-4 0-7 2.428t-3.286 6.143l-8 52.572q-14 4.572-25.714 10.572l-40.285-30.572q-2.857-2.572-7.143-2.572-4 0-7.143 3.143-36 32.572-47.143 48-2 2.857-2 6.572 0 3.428 2.285 6.572 4.285 6 14.572 19t15.428 20.143q-7.715 14.286-11.715 28.286l-52.285 7.714q-3.715 0.572-6 3.572t-2.285 6.714v63.428q0 3.428 2.285 6.572t5.428 3.714l53.143 8q4 13.143 11.143 26.286-11.428 16.286-30.572 39.428-2.857 3.428-2.857 6.857 0 2.857 2.572 6.572 7.428 10.286 28.143 30.714t27 20.428q3.715 0 7.428-2.857l39.428-30.572q12.572 6.572 26 10.857 4.572 38.857 8.286 53.143 2 8 10.286 8h63.428q4 0 7-2.428t3.286-6.143l8-52.571q14-4.572 25.714-10.572l40.572 30.572q2.572 2.571 6.857 2.571 3.714 0 7.143-2.857 36.857-34 47.143-48.572 2-2.286 2-6.286 0-3.428-2.286-6.571-4.286-6-14.572-19t-15.428-20.143q7.428-14.286 11.714-28l52.286-8q3.714-0.571 6-3.571t2.286-6.714z" />
30
- <glyph unicode="&#xf014;" d="M146.286 265.143v-164.571q0-4-2.571-6.572t-6.571-2.572h-18.285q-4 0-6.572 2.572t-2.572 6.572v164.571q0 4 2.572 6.572t6.572 2.571h18.285q4 0 6.572-2.571t2.571-6.572zM219.429 265.143v-164.571q0-4-2.571-6.572t-6.572-2.572h-18.286q-4 0-6.572 2.572t-2.571 6.572v164.571q0 4 2.571 6.572t6.572 2.571h18.286q4 0 6.572-2.571t2.571-6.572zM292.572 265.143v-164.571q0-4-2.572-6.572t-6.572-2.572h-18.286q-4 0-6.572 2.572t-2.571 6.572v164.571q0 4 2.571 6.572t6.572 2.571h18.286q4 0 6.572-2.571t2.572-6.572zM329.143 58.286v270.857h-256v-270.857q0-6.286 2-11.572t4.143-7.714 3-2.428h237.715q0.857 0 3 2.428t4.143 7.714 2 11.572zM137.143 365.714h128l-13.714 33.429q-2 2.571-4.857 3.143h-90.571q-2.857-0.572-4.857-3.143zM402.286 356.572v-18.285q0-4-2.572-6.572t-6.572-2.572h-27.428v-270.857q0-23.714-13.428-41t-32.286-17.286h-237.714q-18.857 0-32.285 16.714t-13.428 40.428v272h-27.428q-4 0-6.572 2.571t-2.571 6.572v18.286q0 4 2.571 6.571t6.572 2.572h88.285l20 47.714q4.285 10.572 15.429 18t22.572 7.428h91.428q11.428 0 22.572-7.428t15.428-18l20-47.714h88.286q4 0 6.572-2.572t2.572-6.571z" horiz-adv-x="403" />
31
- <glyph unicode="&#xf015;" d="M402.286 192v-137.143q0-7.428-5.428-12.857t-12.857-5.428h-109.714v109.714h-73.143v-109.714h-109.715q-7.428 0-12.857 5.428t-5.428 12.857v137.143q0 0.286 0.143 0.857t0.143 0.857l164.286 135.428 164.285-135.428q0.286-0.572 0.286-1.714zM466 211.714l-17.714-21.143q-2.286-2.572-6-3.143h-0.857q-3.714 0-6 2l-197.714 164.857-197.714-164.857q-3.428-2.286-6.857-2-3.715 0.572-6 3.143l-17.715 21.143q-2.285 2.857-2 6.714t3.143 6.143l205.428 171.143q9.143 7.428 21.714 7.428t21.714-7.428l69.714-58.286v55.714q0 4 2.572 6.572t6.572 2.572h54.857q4 0 6.572-2.572t2.572-6.572v-116.572l62.572-52q2.857-2.286 3.143-6.143t-2-6.714z" horiz-adv-x="476" />
32
- <glyph unicode="&#xf016;" d="M36.572 36.572h292.572v219.428h-118.857q-11.429 0-19.429 8t-8 19.429v118.857h-146.286v-365.714zM219.429 292.572h107.429q-2.857 8.286-6.286 11.714l-89.428 89.428q-3.429 3.429-11.714 6.286v-107.428zM365.714 283.429v-256q0-11.428-8-19.428t-19.428-8h-310.857q-11.428 0-19.428 8t-8 19.428v384q0 11.428 8 19.428t19.428 8h182.857q11.429 0 25.143-5.714t21.714-13.714l89.143-89.143q8-8 13.714-21.714t5.714-25.143z" horiz-adv-x="366" />
33
- <glyph unicode="&#xf017;" d="M256 320v-128q0-4-2.571-6.572t-6.571-2.572h-91.428q-4 0-6.572 2.572t-2.571 6.572v18.286q0 4 2.571 6.572t6.572 2.571h64v100.572q0 4 2.571 6.572t6.571 2.571h18.286q4 0 6.572-2.571t2.572-6.572zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
34
- <glyph unicode="&#xf018;" d="M317.428 190.857v1.143l-6.857 91.428q-0.286 3.714-3.143 6.428t-6.572 2.714h-53.143q-3.714 0-6.571-2.714t-3.143-6.428l-6.857-91.428v-1.143q-0.286-3.428 2.286-5.714t6-2.286h69.714q3.428 0 6 2.286t2.286 5.714zM534.285 57.429q0-20.857-13.143-20.857h-201.143q3.714 0 6.286 2.714t2.286 6.428l-5.714 73.143q-0.286 3.714-3.143 6.428t-6.572 2.714h-77.714q-3.714 0-6.572-2.714t-3.143-6.428l-5.714-73.143q-0.286-3.714 2.286-6.428t6.286-2.714h-201.143q-13.143 0-13.143 20.857 0 15.428 7.428 33.143l119.143 298.286q2.286 5.428 7.428 9.428t10.857 4h96.857q-3.714 0-6.572-2.714t-3.143-6.428l-4.286-54.857q-0.286-4 2.286-6.572t6.286-2.572h47.429q3.714 0 6.286 2.572t2.286 6.572l-4.286 54.857q-0.286 3.714-3.143 6.429t-6.572 2.714h96.857q5.714 0 10.857-4t7.428-9.429l119.143-298.285q7.428-17.714 7.428-33.143z" horiz-adv-x="549" />
35
- <glyph unicode="&#xf019;" d="M365.714 91.429q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM438.857 91.429q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM475.428 155.429v-91.428q0-11.428-8-19.428t-19.428-8h-420.572q-11.428 0-19.428 8t-8 19.428v91.428q0 11.428 8 19.428t19.428 8h132.857l38.571-38.857q16.572-16 38.857-16t38.857 16l38.857 38.857h132.572q11.428 0 19.428-8t8-19.428zM382.572 318q4.857-11.714-4-20l-128-128q-5.143-5.428-12.857-5.428t-12.857 5.428l-128 128q-8.857 8.286-4 20 4.857 11.143 16.857 11.143h73.143v128q0 7.429 5.428 12.857t12.857 5.428h73.143q7.428 0 12.857-5.428t5.428-12.857v-128h73.143q12 0 16.857-11.143z" horiz-adv-x="476" />
36
- <glyph unicode="&#xf01a;" d="M320 210.286q0-3.428-2.857-6.857l-91.143-91.143q-3.143-2.572-6.571-2.572t-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v100.572q0 4 2.571 6.572t6.571 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-100.572h54.857q4 0 6.572-2.572t2.572-6.572zM219.429 374.857q-42.285 0-78-20.857t-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78-20.857 78-56.572 56.572-78 20.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
37
- <glyph unicode="&#xf01b;" d="M319.428 225.143q-2.286-5.714-8.572-5.714h-54.857v-100.572q0-4-2.571-6.572t-6.572-2.572h-54.857q-4 0-6.571 2.572t-2.571 6.572v100.572h-54.857q-4 0-6.572 2.571t-2.572 6.572q0 3.428 2.857 6.857l91.143 91.143q3.143 2.571 6.571 2.571t6.572-2.571l91.428-91.428q4.286-4.572 2-10zM219.429 374.857q-42.285 0-78-20.857t-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78-20.857 78-56.572 56.572-78 20.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
38
- <glyph unicode="&#xf01c;" d="M292.286 201.143h90.286q-0.286 0.857-0.714 2.286t-0.714 2.286l-60.572 141.714h-202.286l-60.572-141.714q-0.285-0.572-0.715-2.286t-0.715-2.286h90.285l27.143-54.857h91.428zM438.857 192.572v-137.714q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v137.714q0 17.714 7.143 35.143l68 157.714q2.857 7.143 10.428 12t15 4.857h237.714q7.428 0 15-4.857t10.428-12l68-157.714q7.143-17.428 7.143-35.143z" />
39
- <glyph unicode="&#xf01d;" d="M338.286 219.429q0-10.572-9.143-15.714l-155.429-91.428q-4.286-2.572-9.143-2.572-4.572 0-9.143 2.286-9.143 5.428-9.143 16v182.857q0 10.572 9.143 16 9.429 5.143 18.285-0.286l155.429-91.428q9.143-5.143 9.143-15.714zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
40
- <glyph unicode="&#xf01e;" d="M438.857 402.286v-128q0-7.428-5.428-12.857t-12.857-5.428h-128q-12 0-16.857 11.428-4.857 11.143 4 19.714l39.428 39.428q-42.286 39.143-99.714 39.143-29.714 0-56.714-11.572t-46.715-31.285-31.285-46.714-11.572-56.714 11.572-56.714 31.285-46.714 46.715-31.286 56.714-11.572q34 0 64.286 14.857t51.143 42q2 2.857 6.572 3.428 4 0 7.143-2.572l39.143-39.428q2.572-2.286 2.714-5.857t-2.143-6.428q-31.143-37.714-75.428-58.428t-93.428-20.714q-44.572 0-85.143 17.428t-70 46.857-46.857 70-17.428 85.143 17.428 85.143 46.857 70 70 46.857 85.143 17.428q42 0 81.286-15.857t69.857-44.715l37.143 36.857q8.286 8.857 20 4 11.143-4.857 11.143-16.857z" />
41
- <glyph unicode="&#xf021;" d="M431.714 173.714q0-1.428-0.286-2-18.286-76.572-76.572-124.143t-136.571-47.572q-41.715 0-80.715 15.714t-69.572 44.857l-36.857-36.857q-5.428-5.428-12.857-5.428t-12.857 5.428-5.428 12.857v128q0 7.428 5.428 12.857t12.857 5.428h128q7.428 0 12.857-5.428t5.429-12.857-5.428-12.857l-39.143-39.143q20.285-18.857 46-29.143t53.429-10.286q38.286 0 71.428 18.572t53.143 51.143q3.143 4.857 15.143 33.428 2.286 6.572 8.572 6.572h54.857q3.714 0 6.428-2.714t2.714-6.428zM438.857 402.286v-128q0-7.428-5.428-12.857t-12.857-5.428h-128q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857l39.428 39.428q-42.286 39.143-99.714 39.143-38.286 0-71.428-18.571t-53.143-51.143q-3.143-4.857-15.143-33.428-2.285-6.572-8.572-6.572h-56.857q-3.715 0-6.428 2.714t-2.715 6.428v2q18.572 76.572 77.143 124.143t137.143 47.572q41.714 0 81.143-15.857t70-44.714l37.143 36.857q5.428 5.428 12.857 5.428t12.857-5.428 5.428-12.857z" />
42
- <glyph unicode="&#xf022;" d="M109.715 137.143v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM109.715 210.286v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM109.715 283.429v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM438.857 137.143v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-274.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h274.286q3.714 0 6.428-2.714t2.714-6.428zM438.857 210.286v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-274.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h274.286q3.714 0 6.428-2.714t2.714-6.428zM438.857 283.429v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-274.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h274.286q3.714 0 6.428-2.714t2.714-6.428zM475.428 82.286v237.714q0 3.714-2.714 6.428t-6.428 2.714h-420.572q-3.715 0-6.428-2.714t-2.715-6.428v-237.714q0-3.714 2.715-6.428t6.428-2.714h420.572q3.714 0 6.428 2.714t2.714 6.428zM512 393.143v-310.857q0-18.857-13.428-32.286t-32.286-13.428h-420.572q-18.857 0-32.285 13.428t-13.428 32.286v310.857q0 18.857 13.428 32.286t32.285 13.428h420.572q18.857 0 32.286-13.428t13.428-32.286z" />
43
- <glyph unicode="&#xf023;" d="M91.428 256h146.286v54.857q0 30.286-21.428 51.714t-51.714 21.428-51.715-21.428-21.428-51.714v-54.857zM329.143 228.572v-164.571q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v164.571q0 11.429 8 19.429t19.428 8h9.143v54.857q0 52.572 37.715 90.286t90.285 37.714 90.285-37.714 37.714-90.286v-54.857h9.143q11.428 0 19.428-8t8-19.428z" horiz-adv-x="329" />
44
- <glyph unicode="&#xf024;" d="M91.428 402.286q0-20.572-18.285-31.428v-361.714q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v361.714q-18.285 10.857-18.285 31.428 0 15.143 10.715 25.857t25.857 10.715 25.857-10.715 10.715-25.857zM512 384v-218q0-7.143-3.572-11t-11.286-7.857q-61.428-33.143-105.428-33.143-17.428 0-35.286 6.286t-31 13.714-33 13.714-40.714 6.286q-54.857 0-132.571-41.714-4.857-2.572-9.428-2.572-7.428 0-12.857 5.428t-5.428 12.857v212q0 9.143 8.857 15.714 6 4 22.572 12.286 67.428 34.285 120.285 34.285 30.571 0 57.143-8.285t62.572-25.143q10.857-5.428 25.143-5.428 15.428 0 33.572 6t31.428 13.428 25.143 13.428 15.572 6q7.428 0 12.857-5.428t5.428-12.857z" />
45
- <glyph unicode="&#xf025;" d="M475.428 222.286q0-47.428-17.143-89.714l-5.714-14-52.857-9.428q-6.286-23.714-25.857-39t-44.714-15.286v-9.143q0-4-2.572-6.572t-6.572-2.572h-18.286q-4 0-6.572 2.572t-2.572 6.572v164.572q0 4 2.572 6.572t6.572 2.572h18.286q4 0 6.572-2.572t2.572-6.572v-9.143q20.286 0 37.143-10.143t26.572-27.286l19.428 3.428q8.286 27.143 8.286 55.143 0 42.286-25.143 79.715t-67.572 59.714-90.143 22.286-90.143-22.286-67.572-59.714-25.143-79.714q0-28 8.285-55.143l19.428-3.428q9.715 17.143 26.572 27.286t37.143 10.143v9.143q0 4 2.571 6.572t6.571 2.572h18.286q4 0 6.572-2.572t2.571-6.572v-164.572q0-4-2.571-6.572t-6.572-2.572h-18.286q-4 0-6.572 2.572t-2.571 6.572v9.143q-25.143 0-44.715 15.286t-25.857 39l-52.857 9.428-5.715 14q-17.143 42.286-17.143 89.714 0 43.143 19.143 83.143t51.143 69.286 76 46.714 91.429 17.429 91.428-17.429 76-46.714 51.143-69.286 19.143-83.143z" horiz-adv-x="476" />
46
- <glyph unicode="&#xf026;" d="M219.429 374.857v-310.857q0-7.428-5.429-12.857t-12.857-5.428-12.857 5.428l-95.143 95.143h-74.857q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.428 5.428 12.857t12.857 5.429h74.857l95.143 95.143q5.428 5.429 12.857 5.429t12.857-5.429 5.428-12.857z" horiz-adv-x="220" />
47
- <glyph unicode="&#xf027;" d="M219.429 374.857v-310.857q0-7.428-5.429-12.857t-12.857-5.428-12.857 5.428l-95.143 95.143h-74.857q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.428 5.428 12.857t12.857 5.429h74.857l95.143 95.143q5.428 5.429 12.857 5.429t12.857-5.429 5.428-12.857zM329.143 219.429q0-21.714-12.143-40.428t-32.143-26.714q-2.857-1.428-7.143-1.428-7.428 0-12.857 5.286t-5.428 13q0 6 3.428 10.143t8.286 7.143 9.714 6.572 8.286 10.143 3.428 16.286-3.428 16.286-8.286 10.143-9.714 6.572-8.286 7.143-3.428 10.143q0 7.714 5.428 13t12.857 5.286q4.286 0 7.143-1.429 20-7.714 32.143-26.571t12.143-40.572z" horiz-adv-x="329" />
48
- <glyph unicode="&#xf028;" d="M219.429 374.857v-310.857q0-7.428-5.429-12.857t-12.857-5.428-12.857 5.428l-95.143 95.143h-74.857q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.428 5.428 12.857t12.857 5.429h74.857l95.143 95.143q5.428 5.429 12.857 5.429t12.857-5.429 5.428-12.857zM329.143 219.429q0-21.714-12.143-40.428t-32.143-26.714q-2.857-1.428-7.143-1.428-7.428 0-12.857 5.286t-5.428 13q0 6 3.428 10.143t8.286 7.143 9.714 6.572 8.286 10.143 3.428 16.286-3.428 16.286-8.286 10.143-9.714 6.572-8.286 7.143-3.428 10.143q0 7.714 5.428 13t12.857 5.286q4.286 0 7.143-1.429 20-7.714 32.143-26.571t12.143-40.572zM402.286 219.429q0-43.714-24.286-80.714t-64.286-53.857q-3.714-1.428-7.143-1.428-7.714 0-13.143 5.428t-5.428 12.857q0 11.143 11.143 16.857 16 8.286 21.714 12.572 21.143 15.428 33 38.714t11.857 49.572-11.857 49.572-33 38.714q-5.714 4.286-21.714 12.572-11.143 5.714-11.143 16.857 0 7.429 5.428 12.857t12.857 5.428q3.714 0 7.428-1.428 40-16.857 64.286-53.857t24.286-80.714zM475.428 219.429q0-65.714-36.286-120.714t-96.572-81q-3.714-1.428-7.428-1.428-7.428 0-12.857 5.428t-5.428 12.857q0 10.286 11.143 16.857 2 1.143 6.428 3t6.428 3q13.143 7.143 23.428 14.572 35.143 26 54.857 64.857t19.714 82.572-19.714 82.572-54.857 64.857q-10.286 7.428-23.428 14.572-2 1.143-6.428 3t-6.428 3q-11.143 6.572-11.143 16.857 0 7.429 5.428 12.857t12.857 5.428q3.714 0 7.428-1.428 60.286-26 96.572-81t36.286-120.714z" horiz-adv-x="476" />
49
- <glyph unicode="&#xf029;" d="M109.715 146.286v-36.572h-36.572v36.572h36.572zM109.715 365.714v-36.571h-36.572v36.571h36.572zM329.143 365.714v-36.571h-36.572v36.571h36.572zM36.572 73.429h109.715v109.428h-109.715v-109.428zM36.572 292.572h109.715v109.714h-109.715v-109.714zM256 292.572h109.714v109.714h-109.714v-109.714zM182.857 219.429v-182.857h-182.857v182.857h182.857zM329.143 73.143v-36.572h-36.572v36.572h36.572zM402.286 73.143v-36.572h-36.572v36.572h36.572zM402.286 219.429v-109.714h-109.714v36.572h-36.572v-109.714h-36.572v182.857h109.714v-36.572h36.572v36.572h36.572zM182.857 438.857v-182.857h-182.857v182.857h182.857zM402.286 438.857v-182.857h-182.857v182.857h182.857z" horiz-adv-x="403" />
50
- <glyph unicode="&#xf02a;" d="M18 36.572h-18v402.286h18v-402.286zM36 36.857h-9.143v402h9.143v-402zM62.857 36.857h-8.857v402h8.857v-402zM107.715 36.857h-8.857v402h8.857v-402zM152.571 36.857h-17.715v402h17.714v-402zM188.571 36.857h-8.857v402h8.857v-402zM206.571 36.857h-8.857v402h8.857v-402zM224.571 36.857h-8.857v402h8.857v-402zM269.428 36.857h-18v402h18v-402zM314.286 36.857h-18v402h18v-402zM350.286 36.857h-18v402h18v-402zM386.286 36.857h-18v402h18v-402zM413.143 36.857h-18v402h18v-402zM467.143 36.857h-26.857v402h26.857v-402zM485.143 36.857h-9.143v402h9.143v-402zM512 36.572h-18v402.286h18v-402.286z" />
51
- <glyph unicode="&#xf02b;" d="M128 347.429q0 15.143-10.715 25.857t-25.857 10.715-25.857-10.715-10.715-25.857 10.715-25.857 25.857-10.714 25.857 10.714 10.715 25.857zM432.857 182.857q0-15.143-10.572-25.714l-140.286-140.571q-11.143-10.572-26-10.572-15.143 0-25.714 10.572l-204.286 204.571q-10.857 10.572-18.428 28.857t-7.572 33.428v118.857q0 14.857 10.857 25.715t25.715 10.857h118.857q15.143 0 33.428-7.572t29.143-18.428l204.285-204q10.572-11.143 10.572-26z" />
52
- <glyph unicode="&#xf02c;" d="M128 347.429q0 15.143-10.715 25.857t-25.857 10.715-25.857-10.715-10.715-25.857 10.715-25.857 25.857-10.714 25.857 10.714 10.715 25.857zM432.857 182.857q0-15.143-10.572-25.714l-140.286-140.571q-11.143-10.572-26-10.572-15.143 0-25.714 10.572l-204.286 204.571q-10.857 10.572-18.428 28.857t-7.572 33.428v118.857q0 14.857 10.857 25.715t25.715 10.857h118.857q15.143 0 33.428-7.572t29.143-18.428l204.285-204q10.572-11.143 10.572-26zM542.572 182.857q0-15.143-10.572-25.714l-140.286-140.571q-11.143-10.572-26-10.572-10.286 0-16.857 4t-15.143 12.857l134.286 134.286q10.572 10.572 10.572 25.714 0 14.857-10.572 26l-204.286 204q-10.857 10.857-29.143 18.428t-33.429 7.572h64q15.143 0 33.428-7.572t29.143-18.428l204.286-204q10.572-11.143 10.572-26z" horiz-adv-x="549" />
53
- <glyph unicode="&#xf02d;" d="M468.286 338.857q11.428-16.285 5.143-36.857l-78.572-258.857q-5.428-18.286-21.857-30.714t-35-12.428h-263.714q-22 0-42.428 15.286t-28.428 37.572q-6.857 19.143-0.571 36.286 0 1.143 0.857 7.714t1.143 10.572q0.285 2.286-0.857 6.143t-0.857 5.572q0.571 3.143 2.285 6t4.715 6.714 4.714 6.714q6.572 10.857 12.857 26.143t8.572 26.143q0.857 2.857 0.143 8.572t-0.143 8q0.857 3.143 4.857 8t4.857 6.572q6 10.286 12 26.286t7.143 25.714q0.285 2.571-0.715 9.143t0.143 8q1.143 3.714 6.285 8.714t6.285 6.429q5.428 7.428 12.143 24.143t7.857 27.572q0.285 2.286-0.857 7.286t-0.572 7.571q0.572 2.286 2.572 5.143t5.143 6.572 4.857 6q2.285 3.428 4.715 8.714t4.285 10 4.572 10.286 5.572 9.143 7.571 6.714 10.286 3.286 13.572-1.571l-0.286-0.857q10.857 2.572 14.572 2.572h217.428q21.143 0 32.572-16t5.143-37.143l-78.286-258.857q-10.286-34-20.428-43.857t-36.714-9.857h-248.286q-7.715 0-10.857-4.286-3.143-4.572-0.285-12.286 6.857-20 41.143-20h263.714q8.286 0 16 4.428t10 11.857l85.714 282q2 6.286 1.428 16.285 10.857-4.285 16.857-12.285zM164.286 338.286q-1.143-3.714 0.571-6.428t5.714-2.714h173.714q3.714 0 7.286 2.714t4.714 6.428l6 18.285q1.143 3.715-0.572 6.429t-5.714 2.714h-173.714q-3.714 0-7.286-2.714t-4.714-6.429zM140.571 265.143q-1.143-3.714 0.571-6.428t5.714-2.714h173.714q3.714 0 7.286 2.714t4.714 6.428l6 18.286q1.143 3.714-0.572 6.428t-5.714 2.714h-173.714q-3.714 0-7.286-2.714t-4.714-6.428z" horiz-adv-x="476" />
54
- <glyph unicode="&#xf02e;" d="M332.572 438.857q6.572 0 12.572-2.572 9.428-3.714 15-11.714t5.572-17.714v-368.286q0-9.714-5.572-17.714t-15-11.714q-5.428-2.286-12.572-2.286-13.714 0-23.714 9.143l-126 121.143-126-121.143q-10.285-9.428-23.715-9.428-6.572 0-12.572 2.572-9.428 3.714-15 11.714t-5.572 17.714v368.286q0 9.714 5.572 17.714t15 11.714q6 2.572 12.572 2.572h299.428z" horiz-adv-x="366" />
55
- <glyph unicode="&#xf02f;" d="M109.715 36.572h256v73.143h-256v-73.143zM109.715 219.429h256v109.714h-45.714q-11.428 0-19.428 8t-8 19.428v45.714h-182.857v-182.857zM438.857 201.143q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM475.428 201.143v-118.857q0-3.714-2.714-6.428t-6.428-2.714h-64v-45.714q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v45.714h-64q-3.715 0-6.428 2.714t-2.715 6.428v118.857q0 22.572 16.143 38.714t38.715 16.143h18.285v155.429q0 11.428 8 19.428t19.428 8h192q11.428 0 25.143-5.714t21.714-13.715l43.428-43.428q8-8 13.714-21.714t5.714-25.143v-73.143h18.286q22.572 0 38.714-16.143t16.143-38.714z" horiz-adv-x="476" />
56
- <glyph unicode="&#xf030;" d="M274.286 283.429q34 0 58.143-24.143t24.143-58.143-24.143-58.143-58.143-24.143-58.143 24.143-24.143 58.143 24.143 58.143 58.143 24.143zM475.428 402.286q30.286 0 51.715-21.428t21.428-51.714v-256q0-30.286-21.428-51.714t-51.714-21.428h-402.286q-30.285 0-51.715 21.428t-21.428 51.714v256q0 30.286 21.428 51.714t51.715 21.428h64l14.572 38.857q5.428 14 19.857 24.143t29.571 10.143h146.286q15.143 0 29.572-10.143t19.857-24.143l14.572-38.857h64zM274.286 73.143q52.857 0 90.428 37.572t37.572 90.428-37.572 90.428-90.428 37.572-90.428-37.572-37.572-90.428 37.572-90.428 90.428-37.572z" horiz-adv-x="549" />
57
- <glyph unicode="&#xf031;" d="M207.143 315.714l-48.571-128.571q20.857-0.286 43.857-0.572t34-0.428 15-0.143l8.285 0.572q-9.143 27.143-26.286 68.857-15.143 37.715-26.286 60.286zM6 0h-6l0.572 22.572q6.285 2 22.857 5.143 25.428 4.572 31.428 8.857 5.715 4.572 13.715 19.428l67.715 176 80 206.857h36.572l3.143-6 58.572-137.143q29.428-69.143 35.428-84.857 11.143-29.143 27.428-67.143 7.428-16.572 18.572-46.857 6.857-19.143 18.572-42.572 6.286-14 10-16.286 6.286-5.428 19.714-6.572 13.428-1.714 29.428-7.714 1.714-11.143 1.714-16.286 0-4-0.286-7.428-22.857 0-54.857 2.286-26.572 2.286-54 2.286-22.572 0-38.572-0.572l-57.143-3.143-16.572-0.572q0 12.857 1.143 22.286l37.429 8q16 3.714 19.428 6.572 3.428 3.428 3.428 7.714t-1.714 9.143l-13.428 32.572-26.286 65.143-128.571 0.572q-8.286-18.572-29.715-78.286-6.572-18.286-6.572-24 0-8.857 4.857-12.286 7.428-6 29.428-9.143 0.857 0 3.857-0.572t8.571-1.428 11.572-1.714q0.286-8 0.286-16.572 0-4.857-0.571-7.714-18.857 0-99.715 5.714l-13.715-2.286q-23.143-4-47.715-4z" horiz-adv-x="476" />
58
- <glyph unicode="&#xf032;" d="M158.571 40.857q21.715-9.143 40-9.143 37.429 0 61.715 11.714t34.857 32.286q10.857 20 10.857 51.714 0 32.572-11.714 51.428-16.572 26.857-40.286 36-22.857 9.143-70.572 9.143-21.143 0-28.857-2.857v-41.143l-0.286-49.428 0.857-77.143q0-4.286 3.429-12.572zM154.571 254q12.286-2 31.143-2 50 0 75.428 18.572t25.428 64q0 32-24.286 53.428-24 21.428-72.857 21.428-14.857 0-37.143-3.714 0-12.572 0.571-22 2-34.857 1.714-79.714l-0.286-28q0-12.286 0.286-22zM0 0l0.572 26.857q12.857 2.572 19.428 3.428 22 3.428 35.143 8.857 4.857 7.714 6 14.572 2.572 18.857 2.572 55.428l-0.572 142q-1.428 73.143-2.572 115.428-0.285 24.857-3.143 31.143-0.285 1.143-3.428 3.428-5.143 3.428-19.715 4.285-8.572 0.572-32.572 3.715l-1.143 23.714 74.285 1.714 108.572 3.715 12.857 0.285q1.429 0 4 0.143t4 0.143q0.286 0 6.143-0.143t11.572-0.143h21.143q25.143 0 54.571-7.714 12.286-3.714 27.428-11.143 16.286-8.286 29.143-21.715 12.572-13.428 18.572-29.714t6-34.857q0-20-9.143-36.572t-27.143-30q-7.428-5.714-42.857-22 50.572-11.714 76.286-41.714 26.286-30.286 26.286-67.428 0-21.714-8.286-46-6-17.714-20.286-33.428-18.857-20.572-40-30.857-20.857-10.286-58-17.143-23.428-4.286-56.572-3.143l-56.286 1.143q-24 0.572-85.143-3.143-9.428-0.857-77.715-3.143z" horiz-adv-x="403" />
59
- <glyph unicode="&#xf033;" d="M0 0.572l4.857 24.286q1.143 0.286 22 5.714 21.715 5.428 33.143 11.143 8.285 10.572 11.715 28.857l7.715 39.714 16 76.572 3.428 18.286q2.285 12.572 4.857 24.143t4.572 19.143 3.572 13.286 2.572 8.714 1 3.286l8.285 44.857 4.572 18 6.286 38.572 2.286 14.286v10.857q-11.715 6.286-41.143 8-8 0.572-10.857 1.143l5.428 29.428 90.572-4q11.143-0.572 20.857-0.572 18.857 0 61.143 2.572 9.428 0.572 19.428 1.286t10.286 0.714q-0.572-5.428-1.714-10.857-2-8.285-3.714-14.571-15.714-5.429-31.143-8.857-18.285-4.572-28.857-8.857-3.429-8.857-6.857-25.143-2.571-12.572-3.714-23.428-12.571-56.857-18.857-87.428l-17.428-88.857-10.857-45.143-12.286-67.143-3.429-12.857q-0.571-2 0.286-7.714 18.286-4.286 34-6 10.286-1.428 18.857-2.857-0.286-8.286-2-16.572-2-8.857-2.571-11.714-5.143 0-6.572-0.286-6.857-0.572-12-0.572-2.571 0-8 0.857-5.428 1.143-41.428 4.857l-56.572 0.572q-11.715 0.286-49.715-3.143-21.143-2-28-2.572z" horiz-adv-x="293" />
60
- <glyph unicode="&#xf034;" d="M23.143 438.572l15.428-7.714q5.715-1.428 60.285-1.428h37.143l5.428 0.857 32.857 0.286 61.429-0.286h83.714l9.714-0.572q4-0.285 8 2t6 4.572l2 2.286 12 0.286q4.286 0 8-0.286v-29.857t0.286-37.571l0.286-28.572-0.286-16.572q0-9.143-1.143-14.572-11.143-4.286-19.428-5.143-7.143 12.286-15.428 36.572-2.286 6.857-4.428 17.857t-3.286 18.714-1.714 8.286q-3.714 4.286-7.714 5.429-2 0.571-12.143 0.571t-29.572-0.286-31.714-0.285q-9.714 0-19.143-1.428-2.857-27.715-2.286-38.857l0.286-43.428v-94.857l0.857-102.572-0.286-42q-0.286-13.143 3.143-24.286 14-7.143 25.429-9.143 0.571 0 5.143-1.428t12.571-3.714 12.286-3.428q8.572-2.286 14.286-5.143 1.428-12.857 1.428-14.286 0-2.857-0.857-8.286-4-0.286-9.714-0.286-31.428 0-53.428 2.857-20.572 2.286-68 2.286-25.143 0-66.572-4-13.715-1.143-20-1.143-0.572 6.286-0.572 7.428l-0.285 7.428v2.572q6 9.428 22.572 14 39.715 10.857 45.429 14.286 2.571 6 3.429 16 2.286 54.857 1.714 123.714l-1.429 122.286q-0.286 17.714-0.143 33.857t0.143 29.286-0.571 16.286-1.714 4.286q-1.714 1.428-4 1.714-10.857 1.714-42.285 1.714-12.285 0-28.572-3.857t-20.857-7q-3.715-2.572-6.285-9.429t-6.285-21.428-6.857-24q-1.715-5.428-5.572-9.143t-5.857-3.714q-12.572 7.714-16 12.572v109.428zM498.286 73.143q9.428 0 12-5.286t-3.143-12.714l-36-46.286q-5.714-7.428-14-7.428t-14 7.428l-36 46.286q-5.714 7.428-3.143 12.714t12 5.286h22.857v292.572h-22.857q-9.428 0-12 5.286t3.143 12.714l36 46.286q5.714 7.428 14 7.428t14-7.428l36-46.286q5.714-7.429 3.143-12.714t-12-5.286h-22.857v-292.572h22.857z" />
61
- <glyph unicode="&#xf035;" d="M23.143 438.572l15.428-7.714q5.715-1.428 60.285-1.428h37.143l5.428 0.857 32.857 0.286 218.286-0.286 9.714-0.572q4-0.285 8 2t6 4.572l2 2.286 12 0.286q4.286 0 8-0.286v-29.857t0.286-37.571l0.286-28.572-0.286-16.572q0-9.143-1.143-14.572-11.143-4.286-19.428-5.143-7.143 12.286-15.428 36.572-2.286 6.857-4.428 17.857t-3.286 18.714-1.714 8.286q-3.714 4.286-7.714 5.429-2 0.571-16.714 0.571t-39.572-0.286-36.572-0.285q-26.857 0-36.286-1.428-2.857-27.715-2.286-38.857l0.286-43.428v14.857l0.857-102.571-0.286-42q-0.286-13.143 3.143-24.286 14-7.143 25.428-9.143 0.572 0 5.143-1.428t12.572-3.714 12.286-3.428q8.572-2.286 14.286-5.143 1.428-12.857 1.428-14.286 0-2.857-0.857-8.286-4-0.286-9.714-0.286-31.428 0-53.428 2.857-20.572 2.286-68 2.286-23.428 0-66.572-3.714-12.857-1.428-20-1.428-0.572 6.286-0.572 7.428l-0.285 7.428v2.572q6 9.428 22.571 14 39.714 10.857 45.428 14.286 2.571 6 3.429 16 1.714 39.143 1.714 123.714l-1.429 12.572q0 75.714-0.571 79.428-0.571 3.143-1.714 4.286-1.714 1.428-4 1.714-10.857 1.714-42.285 1.714-14.285 0-48.143-4t-37.857-6.857q-3.715-2.572-6.285-9.429t-6.285-21.428-6.857-24q-1.715-5.428-5.572-9.143t-5.857-3.714q-12.572 7.714-16 12.572v109.428zM430 68.857q7.428-5.714 7.428-14t-7.428-14l-46.286-36q-7.428-5.714-12.714-3.143t-5.286 12v22.857h-292.572v-22.857q0-9.428-5.285-12t-12.715 3.143l-46.285 36q-7.428 5.714-7.428 14t7.428 14l46.285 36q7.428 5.714 12.715 3.143t5.285-12v-22.857h292.572v22.857q0 9.428 5.286 12t12.714-3.143z" />
62
- <glyph unicode="&#xf036;" d="M512 91.429v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM402.286 201.143v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-365.714q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h365.714q7.428 0 12.857-5.428t5.428-12.857zM475.428 310.857v-36.571q0-7.428-5.428-12.857t-12.857-5.428h-438.857q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h438.857q7.428 0 12.857-5.428t5.428-12.857zM365.714 420.572v-36.571q0-7.429-5.428-12.857t-12.857-5.428h-329.143q-7.428 0-12.857 5.428t-5.428 12.857v36.571q0 7.429 5.428 12.857t12.857 5.428h329.143q7.428 0 12.857-5.428t5.428-12.857z" />
63
- <glyph unicode="&#xf037;" d="M512 91.429v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM402.286 201.143v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-256q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h256q7.428 0 12.857-5.428t5.428-12.857zM475.428 310.857v-36.571q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h402.286q7.428 0 12.857-5.428t5.428-12.857zM365.714 420.572v-36.571q0-7.429-5.428-12.857t-12.857-5.428h-182.857q-7.429 0-12.857 5.428t-5.428 12.857v36.571q0 7.429 5.428 12.857t12.857 5.428h182.857q7.428 0 12.857-5.428t5.428-12.857z" />
64
- <glyph unicode="&#xf038;" d="M512 91.429v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM512 201.143v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-365.714q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h365.714q7.428 0 12.857-5.428t5.428-12.857zM512 310.857v-36.571q0-7.428-5.428-12.857t-12.857-5.428h-438.857q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h438.857q7.428 0 12.857-5.428t5.428-12.857zM512 420.572v-36.571q0-7.429-5.428-12.857t-12.857-5.428h-329.143q-7.428 0-12.857 5.428t-5.429 12.857v36.571q0 7.429 5.428 12.857t12.857 5.428h329.143q7.428 0 12.857-5.428t5.428-12.857z" />
65
- <glyph unicode="&#xf039;" d="M512 91.429v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM512 201.143v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM512 310.857v-36.571q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h475.428q7.428 0 12.857-5.428t5.428-12.857zM512 420.572v-36.571q0-7.429-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v36.571q0 7.429 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857z" />
66
- <glyph unicode="&#xf03a;" d="M73.143 100.572v-54.857q0-3.714-2.715-6.428t-6.428-2.714h-54.857q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.428t6.428 2.714h54.857q3.715 0 6.428-2.714t2.715-6.428zM73.143 210.286v-54.857q0-3.714-2.715-6.428t-6.428-2.714h-54.857q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.428t6.428 2.714h54.857q3.715 0 6.428-2.714t2.715-6.428zM73.143 320v-54.857q0-3.714-2.715-6.428t-6.428-2.714h-54.857q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.429t6.428 2.714h54.857q3.715 0 6.428-2.714t2.715-6.428zM512 100.572v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-384q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.428t6.428 2.714h384q3.714 0 6.428-2.714t2.714-6.428zM73.143 429.714v-54.857q0-3.714-2.715-6.428t-6.428-2.715h-54.857q-3.715 0-6.428 2.715t-2.715 6.428v54.857q0 3.715 2.715 6.429t6.428 2.714h54.857q3.715 0 6.428-2.714t2.715-6.429zM512 210.286v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-384q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.428t6.428 2.714h384q3.714 0 6.428-2.714t2.714-6.428zM512 320v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-384q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.429t6.428 2.714h384q3.714 0 6.428-2.714t2.714-6.428zM512 429.714v-54.857q0-3.714-2.714-6.428t-6.428-2.715h-384q-3.715 0-6.428 2.715t-2.715 6.428v54.857q0 3.715 2.715 6.429t6.428 2.714h384q3.714 0 6.428-2.714t2.714-6.429z" />
67
- <glyph unicode="&#xf03b;" d="M109.715 320v-164.571q0-3.714-2.715-6.428t-6.428-2.714q-4 0-6.572 2.572l-82.285 82.286q-2.572 2.571-2.572 6.572t2.572 6.572l82.285 82.286q2.572 2.571 6.572 2.571 3.715 0 6.428-2.714t2.715-6.428zM512 100.572v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-493.714q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.428t6.428 2.714h493.714q3.714 0 6.428-2.714t2.714-6.428zM512 210.286v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-310.857q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.428t6.428 2.714h310.857q3.714 0 6.428-2.714t2.714-6.428zM512 320v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-310.857q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.429t6.428 2.714h310.857q3.714 0 6.428-2.714t2.714-6.428zM512 429.714v-54.857q0-3.714-2.714-6.428t-6.428-2.715h-493.714q-3.715 0-6.428 2.715t-2.715 6.428v54.857q0 3.715 2.715 6.429t6.428 2.714h493.714q3.714 0 6.428-2.714t2.714-6.429z" />
68
- <glyph unicode="&#xf03c;" d="M100.572 237.714q0-4-2.572-6.572l-82.285-82.286q-2.572-2.572-6.572-2.572-3.715 0-6.428 2.714t-2.715 6.428v164.571q0 3.714 2.715 6.429t6.428 2.714q4 0 6.572-2.572l82.285-82.285q2.572-2.572 2.572-6.572zM512 100.572v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-493.714q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.428t6.428 2.714h493.714q3.714 0 6.428-2.714t2.714-6.428zM512 210.286v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-310.857q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.428t6.428 2.714h310.857q3.714 0 6.428-2.714t2.714-6.428zM512 320v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-310.857q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.429t6.428 2.714h310.857q3.714 0 6.428-2.714t2.714-6.428zM512 429.714v-54.857q0-3.714-2.714-6.428t-6.428-2.715h-493.714q-3.715 0-6.428 2.715t-2.715 6.428v54.857q0 3.715 2.715 6.429t6.428 2.714h493.714q3.714 0 6.428-2.714t2.714-6.429z" />
69
- <glyph unicode="&#xf03d;" d="M512 374.857v-310.857q0-12-11.143-16.857-3.714-1.428-7.143-1.428-7.714 0-12.857 5.428l-115.143 115.143v-47.428q0-34-24.143-58.143t-58.143-24.143h-201.143q-34 0-58.143 24.143t-24.143 58.143v201.143q0 34 24.143 58.143t58.143 24.143h201.143q34 0 58.143-24.143t24.143-58.143v-47.143l115.143 114.857q5.143 5.428 12.857 5.428 3.428 0 7.143-1.428 11.143-4.857 11.143-16.857z" />
70
- <glyph unicode="&#xf03e;" d="M182.857 310.857q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857 16 38.857 38.857 16 38.857-16 16-38.857zM475.428 201.143v-128h-402.286v54.857l91.428 91.428 45.714-45.714 146.286 146.286zM502.857 402.286h-457.143q-3.715 0-6.428-2.714t-2.715-6.428v-347.428q0-3.714 2.715-6.428t6.428-2.714h457.143q3.714 0 6.428 2.714t2.714 6.428v347.428q0 3.714-2.714 6.428t-6.428 2.714zM548.572 393.143v-347.428q0-18.857-13.428-32.286t-32.286-13.428h-457.143q-18.857 0-32.285 13.428t-13.428 32.286v347.428q0 18.857 13.428 32.286t32.285 13.428h457.143q18.857 0 32.286-13.428t13.428-32.286z" horiz-adv-x="549" />
71
- <glyph unicode="&#xf040;" d="M103.715 36.572l26 26-67.143 67.143-26-26v-30.572h36.572v-36.572h30.572zM253.143 301.714q0 6.286-6.286 6.286-2.857 0-4.857-2l-154.857-154.857q-2-2-2-4.857 0-6.286 6.285-6.286 2.857 0 4.857 2l154.857 154.857q2 2 2 4.857zM237.714 356.572l118.857-118.857-237.714-237.714h-118.857v118.857zM432.857 329.143q0-15.143-10.572-25.714l-47.428-47.428-118.857 118.857 47.428 47.143q10.286 10.857 25.714 10.857 15.143 0 26-10.857l67.143-66.857q10.572-11.143 10.572-26z" />
72
- <glyph unicode="&#xf041;" d="M219.429 292.572q0 30.286-21.429 51.715t-51.714 21.428-51.715-21.428-21.428-51.714 21.428-51.714 51.715-21.428 51.714 21.428 21.428 51.714zM292.572 292.572q0-31.143-9.428-51.143l-104-221.143q-4.572-9.428-13.572-14.857t-19.286-5.428-19.285 5.428-13.285 14.857l-104.285 221.143q-9.428 20-9.428 51.143 0 60.571 42.857 103.428t103.428 42.857 103.428-42.857 42.857-103.428z" horiz-adv-x="293" />
73
- <glyph unicode="&#xf042;" d="M219.429 64v310.857q-42.285 0-78-20.857t-56.572-56.571-20.857-78 20.857-78 56.572-56.572 78-20.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
74
- <glyph unicode="&#xf043;" d="M146.286 146.286q0 10.286-5.714 19.714-0.286 0.286-4.428 6.428t-7.286 10.857-7.143 12.572-6 14.428q-1.143 4.572-6 4.572t-6-4.572q-2-6.572-6-14.428t-7.143-12.572-7.285-10.857-4.428-6.428q-5.715-9.428-5.715-19.714 0-15.143 10.715-25.857t25.857-10.714 25.857 10.714 10.714 25.857zM292.572 182.857q0-60.572-42.857-103.428t-103.429-42.857-103.428 42.857-42.857 103.428q0 41.428 23.143 78.572 1.715 2.571 17.857 25.857t28.857 43.143 28.428 50.857 23.715 57.572q2.572 8.572 9.715 13.428t14.571 4.857 14.714-4.857 9.572-13.428q8-26.572 23.714-57.572t28.428-50.857 28.857-43.143 17.857-25.857q23.143-36.286 23.143-78.572z" horiz-adv-x="293" />
75
- <glyph unicode="&#xf044;" d="M253.714 137.143l33.143 33.143-43.428 43.428-33.143-33.143v-16h27.429v-27.428h16zM379.428 342.857q-4.572 4.572-9.428-0.286l-100-100q-4.857-4.857-0.286-9.428t9.428 0.286l100 100q4.857 4.857 0.286 9.428zM402.286 173.143v-54.286q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h237.714q18 0 33.428-7.143 4.286-2 5.143-6.572 0.857-4.857-2.572-8.285l-14-14q-4-4-9.143-2.286-6.572 1.714-12.857 1.714h-237.714q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.714q18.857 0 32.286 13.428t13.428 32.286v36q0 3.714 2.572 6.286l18.286 18.286q4.286 4.286 10 2t5.714-8.286zM374.857 384l82.286-82.286-192-192h-82.286v82.286zM501.714 346.286l-26.286-26.285-82.286 82.285 26.286 26.286q8 8 19.428 8t19.428-8l43.428-43.428q8-8 8-19.428t-8-19.428z" />
76
- <glyph unicode="&#xf045;" d="M402.286 192.857v-74q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h72.857q3.714 0 6.429-2.715t2.714-6.428q0-7.714-7.428-9.143-22-7.429-38-17.143-2.857-1.143-4.572-1.143h-32q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.714q18.857 0 32.286 13.428t13.428 32.286v61.143q0 5.428 5.143 8.286 8 3.714 15.428 10.572 4.572 4.572 10 2.286 6-2.572 6-8.286zM470 334.572l-109.714-109.714q-5.143-5.428-12.857-5.428-3.428 0-7.143 1.428-11.143 4.857-11.143 16.857v54.857h-45.714q-92.286 0-125.143-37.428-34-39.143-21.143-135.143 0.857-6.572-5.714-9.714-2.286-0.572-3.428-0.572-4.572 0-7.428 3.714-2.857 4-6 8.857t-11.285 19.572-14.143 28.428-11 32.572-5 34.857q0 14 1 26t4 25.715 8 25.143 13.428 23.286 19.572 21.143 27 17.572 35.572 13.857 45.572 8.714 56.143 3.143h45.714v54.857q0 12 11.143 16.857 3.714 1.429 7.143 1.429 7.428 0 12.857-5.429l109.714-109.714q5.428-5.428 5.428-12.857t-5.428-12.857z" horiz-adv-x="476" />
77
- <glyph unicode="&#xf046;" d="M402.286 209.714v-90.857q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h237.714q18 0 33.428-7.143 4.286-2 5.143-6.572 0.857-4.857-2.572-8.285l-14-14q-2.857-2.857-6.572-2.857-0.857 0-2.572 0.572-6.572 1.714-12.857 1.714h-237.714q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.714q18.857 0 32.286 13.428t13.428 32.286v72.572q0 3.714 2.572 6.286l18.286 18.286q2.857 2.857 6.572 2.857 1.714 0 3.428-0.857 5.714-2.286 5.714-8.286zM468.286 349.429l-232.571-232.572q-6.857-6.857-16.285-6.857t-16.286 6.857l-122.857 122.857q-6.857 6.857-6.857 16.286t6.857 16.286l31.428 31.428q6.857 6.857 16.285 6.857t16.285-6.857l75.143-75.143 184.857 184.857q6.857 6.857 16.286 6.857t16.286-6.857l31.428-31.429q6.857-6.857 6.857-16.285t-6.857-16.286z" horiz-adv-x="476" />
78
- <glyph unicode="&#xf047;" d="M512 219.429q0-7.428-5.428-12.857l-73.143-73.143q-5.428-5.428-12.857-5.428t-12.857 5.428-5.428 12.857v36.572h-109.714v-109.714h36.572q7.428 0 12.857-5.428t5.428-12.857-5.428-12.857l-73.143-73.143q-5.428-5.428-12.857-5.428t-12.857 5.428l-73.143 73.143q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h36.571v109.714h-109.715v-36.572q0-7.428-5.428-12.857t-12.857-5.428-12.857 5.428l-73.143 73.143q-5.428 5.428-5.428 12.857t5.428 12.857l73.143 73.143q5.428 5.428 12.857 5.428t12.857-5.428 5.428-12.857v-36.571h109.715v109.714h-36.572q-7.428 0-12.857 5.428t-5.429 12.857 5.428 12.857l73.143 73.143q5.429 5.428 12.857 5.428t12.857-5.428l73.143-73.143q5.428-5.428 5.428-12.857t-5.428-12.857-12.857-5.428h-36.572v-109.714h109.714v36.572q0 7.428 5.428 12.857t12.857 5.429 12.857-5.428l73.143-73.143q5.428-5.428 5.428-12.857z" />
79
- <glyph unicode="&#xf048;" d="M279.714 435.143q5.428 5.428 9.143 3.714t3.714-9.143v-420.572q0-7.428-3.714-9.143t-9.143 3.714l-202.857 202.857q-2.572 2.572-3.715 5.428v-193.714q0-7.428-5.428-12.857t-12.857-5.428h-36.572q-7.428 0-12.857 5.428t-5.428 12.857v402.286q0 7.428 5.428 12.857t12.857 5.429h36.572q7.428 0 12.857-5.429t5.428-12.857v-193.714q1.143 3.143 3.715 5.428z" horiz-adv-x="293" />
80
- <glyph unicode="&#xf049;" d="M499.143 435.143q5.428 5.428 9.143 3.714t3.715-9.143v-420.572q0-7.428-3.714-9.143t-9.143 3.714l-202.857 202.857q-2.572 2.572-3.714 5.428v-202.857q0-7.428-3.714-9.143t-9.143 3.714l-202.857 202.857q-2.572 2.572-3.715 5.428v-193.714q0-7.428-5.428-12.857t-12.857-5.428h-36.572q-7.428 0-12.857 5.428t-5.428 12.857v402.286q0 7.428 5.428 12.857t12.857 5.429h36.572q7.428 0 12.857-5.429t5.428-12.857v-193.714q1.143 3.143 3.715 5.428l202.857 202.857q5.428 5.428 9.143 3.715t3.714-9.143v-202.857q1.143 3.143 3.714 5.428z" />
81
- <glyph unicode="&#xf04a;" d="M462.572 435.143q5.428 5.428 9.143 3.714t3.714-9.143v-420.572q0-7.428-3.714-9.143t-9.143 3.714l-202.857 202.857q-2.286 2.572-3.714 5.428v-202.857q0-7.428-3.714-9.143t-9.143 3.714l-202.857 202.857q-5.428 5.428-5.428 12.857t5.428 12.857l202.857 202.857q5.429 5.429 9.143 3.714t3.714-9.143v-202.857q1.428 3.143 3.714 5.428z" horiz-adv-x="476" />
82
- <glyph unicode="&#xf04b;" d="M395.428 210.572l-379.428-210.857q-6.572-3.714-11.286-0.857t-4.715 10.286v420.572q0 7.428 4.715 10.285t11.286-0.857l379.428-210.857q6.572-3.714 6.572-8.857t-6.572-8.857z" horiz-adv-x="403" />
83
- <glyph unicode="&#xf04c;" d="M438.857 420.572v-402.286q0-7.428-5.428-12.857t-12.857-5.428h-146.286q-7.428 0-12.857 5.428t-5.428 12.857v402.286q0 7.428 5.428 12.857t12.857 5.429h146.286q7.428 0 12.857-5.429t5.428-12.857zM182.857 420.572v-402.286q0-7.428-5.429-12.857t-12.857-5.428h-146.286q-7.428 0-12.857 5.428t-5.428 12.857v402.286q0 7.428 5.428 12.857t12.857 5.429h146.286q7.429 0 12.857-5.429t5.428-12.857z" />
84
- <glyph unicode="&#xf04d;" d="M438.857 420.572v-402.286q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v402.286q0 7.428 5.428 12.857t12.857 5.429h402.286q7.428 0 12.857-5.429t5.428-12.857z" />
85
- <glyph unicode="&#xf04e;" d="M12.857 3.714q-5.428-5.428-9.143-3.714t-3.715 9.143v420.572q0 7.428 3.715 9.143t9.143-3.714l202.857-202.857q2.286-2.286 3.714-5.428v202.857q0 7.428 3.714 9.143t9.143-3.715l202.857-202.857q5.428-5.428 5.428-12.857t-5.428-12.857l-202.857-202.857q-5.429-5.428-9.143-3.714t-3.714 9.143v202.857q-1.429-2.857-3.714-5.428z" horiz-adv-x="476" />
86
- <glyph unicode="&#xf050;" d="M12.857 3.714q-5.428-5.428-9.143-3.714t-3.715 9.143v420.572q0 7.428 3.715 9.143t9.143-3.714l202.857-202.857q2.286-2.286 3.714-5.428v202.857q0 7.428 3.714 9.143t9.143-3.715l202.857-202.857q2.286-2.286 3.714-5.428v193.714q0 7.428 5.428 12.857t12.857 5.429h36.572q7.428 0 12.857-5.429t5.428-12.857v-402.286q0-7.428-5.428-12.857t-12.857-5.428h-36.572q-7.428 0-12.857 5.428t-5.428 12.857v193.714q-1.428-2.857-3.714-5.428l-202.857-202.857q-5.429-5.428-9.143-3.714t-3.714 9.143v202.857q-1.429-2.857-3.714-5.428z" />
87
- <glyph unicode="&#xf051;" d="M12.857 3.714q-5.428-5.428-9.143-3.714t-3.715 9.143v420.572q0 7.428 3.715 9.143t9.143-3.714l202.857-202.857q2.286-2.286 3.714-5.428v193.714q0 7.428 5.428 12.857t12.857 5.429h36.571q7.428 0 12.857-5.429t5.428-12.857v-402.286q0-7.428-5.428-12.857t-12.857-5.428h-36.572q-7.428 0-12.857 5.428t-5.429 12.857v193.714q-1.429-2.857-3.714-5.428z" horiz-adv-x="293" />
88
- <glyph unicode="&#xf052;" d="M4 195.714l202.857 202.857q5.429 5.429 12.857 5.429t12.857-5.429l202.857-202.857q5.428-5.428 3.714-9.143t-9.143-3.714h-420.572q-7.428 0-9.143 3.714t3.715 9.143zM420.857 36.572h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v73.143q0 7.428 5.428 12.857t12.857 5.428h402.286q7.428 0 12.857-5.428t5.428-12.857v-73.143q0-7.428-5.428-12.857t-12.857-5.428z" horiz-adv-x="440" />
89
- <glyph unicode="&#xf053;" d="M212 26l-186.286 186q-10.572 10.572-10.572 25.857t10.572 25.857l186.286 186q10.572 10.571 25.857 10.571t25.857-10.571l21.428-21.429q10.572-10.571 10.572-25.857t-10.572-25.857l-138.857-138.857 138.857-138.571q10.572-10.857 10.572-26t-10.572-25.714l-21.428-21.428q-10.572-10.572-25.857-10.572t-25.857 10.572z" horiz-adv-x="329" />
90
- <glyph unicode="&#xf054;" d="M314 237.714q0-14.857-10.572-26l-186.286-186q-10.572-10.572-25.715-10.572t-25.715 10.572l-21.715 21.428q-10.572 11.143-10.572 26 0 15.143 10.572 25.714l138.857 138.857-138.857 138.572q-10.572 11.143-10.572 26 0 15.143 10.572 25.714l21.715 21.428q10.285 10.857 25.715 10.857t25.715-10.857l186.286-186q10.572-10.571 10.572-25.714z" horiz-adv-x="329" />
91
- <glyph unicode="&#xf055;" d="M347.428 201.143v36.572q0 7.428-5.428 12.857t-12.857 5.429h-73.143v73.143q0 7.429-5.428 12.857t-12.857 5.428h-36.571q-7.428 0-12.857-5.428t-5.429-12.857v-73.143h-73.143q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h73.143v-73.143q0-7.428 5.428-12.857t12.857-5.428h36.571q7.428 0 12.857 5.428t5.429 12.857v73.143h73.143q7.428 0 12.857 5.428t5.428 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
92
- <glyph unicode="&#xf056;" d="M347.428 201.143v36.572q0 7.428-5.428 12.857t-12.857 5.429h-219.429q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h219.429q7.428 0 12.857 5.428t5.428 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
93
- <glyph unicode="&#xf057;" d="M328.286 154.857q0 7.428-5.428 12.857l-51.714 51.714 51.714 51.714q5.428 5.428 5.428 12.857 0 7.714-5.428 13.143l-25.714 25.714q-5.428 5.428-13.143 5.428-7.428 0-12.857-5.428l-51.714-51.714-51.714 51.714q-5.428 5.428-12.857 5.428-7.714 0-13.143-5.428l-25.715-25.714q-5.428-5.428-5.428-13.143 0-7.428 5.428-12.857l51.715-51.714-51.715-51.714q-5.428-5.428-5.428-12.857 0-7.714 5.428-13.143l25.715-25.714q5.428-5.428 13.143-5.428 7.429 0 12.857 5.428l51.714 51.714 51.714-51.714q5.428-5.428 12.857-5.428 7.714 0 13.143 5.428l25.714 25.714q5.428 5.428 5.428 13.143zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
94
- <glyph unicode="&#xf058;" d="M366.857 265.714q0 8-5.143 13.143l-26 25.715q-5.428 5.428-12.857 5.428t-12.857-5.428l-116.572-116.286-64.572 64.572q-5.428 5.428-12.857 5.428t-12.857-5.428l-26-25.714q-5.143-5.143-5.143-13.143 0-7.714 5.143-12.857l103.428-103.428q5.428-5.428 12.857-5.428 7.714 0 13.143 5.428l155.143 155.143q5.143 5.143 5.143 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
95
- <glyph unicode="&#xf059;" d="M256 82.286v54.857q0 4-2.571 6.572t-6.571 2.572h-54.857q-4 0-6.571-2.572t-2.571-6.572v-54.857q0-4 2.571-6.572t6.572-2.572h54.857q4 0 6.571 2.572t2.572 6.572zM329.143 274.286q0 25.143-15.857 46.572t-39.572 33.143-48.572 11.714q-69.428 0-106-60.857-4.285-6.857 2.285-12l37.715-28.572q2-1.714 5.428-1.714 4.572 0 7.143 3.428 15.143 19.429 24.571 26.286 9.714 6.857 24.572 6.857 13.714 0 24.428-7.428t10.714-16.857q0-10.857-5.714-17.428t-19.428-12.857q-18-8-33-24.714t-15-35.857v-10.286q0-4 2.571-6.572t6.571-2.572h54.857q4 0 6.571 2.572t2.572 6.572q0 5.428 6.143 14.143t15.572 14.143q9.143 5.143 14 8.143t13.143 10 12.714 13.714 8 17.286 3.572 23.143zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
96
- <glyph unicode="&#xf05a;" d="M292.572 82.286v45.714q0 4-2.572 6.572t-6.572 2.572h-27.428v146.286q0 4-2.571 6.572t-6.571 2.571h-91.428q-4 0-6.572-2.571t-2.571-6.572v-45.714q0-4 2.571-6.572t6.572-2.572h27.428v-91.428h-27.428q-4 0-6.572-2.572t-2.571-6.572v-45.714q0-4 2.571-6.572t6.572-2.572h128q4 0 6.572 2.572t2.572 6.572zM256 338.286v45.715q0 4-2.571 6.571t-6.571 2.572h-54.857q-4 0-6.571-2.572t-2.571-6.571v-45.715q0-4 2.571-6.571t6.572-2.572h54.857q4 0 6.571 2.572t2.572 6.572zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
97
- <glyph unicode="&#xf05b;" d="M342 182.857h-31.143q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h31.143q-9.143 30.857-32.143 53.857t-53.857 32.143v-31.143q0-7.428-5.429-12.857t-12.857-5.428h-36.571q-7.428 0-12.857 5.428t-5.429 12.857v31.143q-30.857-9.143-53.857-32.143t-32.143-53.857h31.143q7.429 0 12.857-5.428t5.428-12.857v-36.571q0-7.428-5.428-12.857t-12.857-5.428h-31.143q9.143-30.857 32.143-53.857t53.857-32.143v31.143q0 7.428 5.428 12.857t12.857 5.428h36.571q7.428 0 12.857-5.428t5.429-12.857v-31.143q30.857 9.143 53.857 32.143t32.143 53.857zM438.857 237.714v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-40.857q-10.572-46-44.143-79.572t-79.572-44.143v-40.857q0-7.428-5.428-12.857t-12.857-5.428h-36.571q-7.428 0-12.857 5.428t-5.429 12.857v40.857q-46 10.572-79.572 44.143t-44.143 79.572h-40.857q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h40.857q10.572 46 44.143 79.572t79.572 44.143v40.857q0 7.428 5.428 12.857t12.857 5.429h36.571q7.428 0 12.857-5.429t5.429-12.857v-40.857q46-10.572 79.572-44.143t44.143-79.572h40.857q7.428 0 12.857-5.428t5.428-12.857z" />
98
- <glyph unicode="&#xf05c;" d="M313.428 167.143l-41.714-41.714q-2.857-2.857-6.572-2.857t-6.572 2.857l-39.143 39.143-39.143-39.143q-2.857-2.857-6.572-2.857t-6.572 2.857l-41.715 41.714q-2.857 2.857-2.857 6.572t2.857 6.572l39.143 39.143-39.143 39.143q-2.857 2.857-2.857 6.572t2.857 6.572l41.715 41.714q2.857 2.857 6.572 2.857t6.572-2.857l39.143-39.143 39.143 39.143q2.857 2.857 6.572 2.857t6.572-2.857l41.714-41.714q2.857-2.857 2.857-6.572t-2.857-6.572l-39.143-39.143 39.143-39.143q2.857-2.857 2.857-6.572t-2.857-6.572zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
99
- <glyph unicode="&#xf05d;" d="M334.572 243.143l-120.572-120.572q-5.428-5.428-12.857-5.428t-12.857 5.428l-84 84q-5.428 5.428-5.428 12.857t5.428 12.857l29.143 29.143q5.429 5.428 12.857 5.428t12.857-5.428l42-42 78.571 78.572q5.428 5.428 12.857 5.428t12.857-5.428l29.143-29.143q5.428-5.428 5.428-12.857t-5.428-12.857zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
100
- <glyph unicode="&#xf05e;" d="M374.857 220.286q0 46-24.857 84.286l-215.429-215.143q39.143-25.428 84.857-25.428 31.714 0 60.428 12.428t49.572 33.286 33.143 49.857 12.286 60.714zM89.428 134.857l215.714 215.428q-38.572 26-85.714 26-42.286 0-78-20.857t-56.572-56.857-20.857-78.285q0-46.286 25.428-85.428zM438.857 220.286q0-44.857-17.428-85.714t-46.714-70.286-70-46.857-85.286-17.428-85.286 17.428-70 46.857-46.715 70.286-17.428 85.714 17.428 85.572 46.715 70.143 70 46.857 85.286 17.428 85.286-17.428 70-46.857 46.714-70.143 17.428-85.572z" />
101
- <glyph unicode="&#xf060;" d="M438.857 219.429v-36.572q0-15.143-9.286-25.857t-24.143-10.714h-201.143l83.715-84q10.857-10.286 10.857-25.714t-10.857-25.714l-21.428-21.714q-10.572-10.572-25.714-10.572-14.857 0-26 10.572l-186 186.286q-10.572 10.572-10.572 25.714 0 14.857 10.572 26l186 185.714q10.857 10.857 26 10.857 14.857 0 25.714-10.857l21.428-21.143q10.857-10.857 10.857-26t-10.857-26l-83.714-83.714h201.143q14.857 0 24.143-10.714t9.286-25.857z" />
102
- <glyph unicode="&#xf061;" d="M420.572 201.143q0-15.428-10.572-26l-186-186q-11.143-10.572-26-10.572-14.572 0-25.714 10.572l-21.428 21.428q-10.857 10.857-10.857 26t10.857 26l83.714 83.714h-201.143q-14.857 0-24.143 10.714t-9.286 25.857v36.572q0 15.143 9.286 25.857t24.143 10.714h201.143l-83.714 84q-10.857 10.286-10.857 25.714t10.857 25.715l21.428 21.428q10.857 10.857 25.714 10.857 15.143 0 26-10.857l186-186q10.572-10 10.572-25.714z" />
103
- <glyph unicode="&#xf062;" d="M460.286 198q0-14.572-10.572-25.714l-21.428-21.428q-10.857-10.857-26-10.857-15.428 0-25.714 10.857l-84 83.714v-201.143q0-14.857-10.714-24.143t-25.857-9.286h-36.571q-15.143 0-25.857 9.286t-10.714 24.143v201.143l-84-83.714q-10.285-10.857-25.715-10.857t-25.715 10.857l-21.428 21.428q-10.857 10.857-10.857 25.714 0 15.143 10.857 26l186 186q10 10.571 25.714 10.571 15.428 0 26-10.571l186-186q10.572-11.143 10.572-26z" horiz-adv-x="476" />
104
- <glyph unicode="&#xf063;" d="M460.286 237.714q0-15.143-10.572-25.714l-186-186.286q-11.143-10.572-26-10.572-15.143 0-25.714 10.572l-186 186.286q-10.857 10.286-10.857 25.714 0 15.143 10.857 26l21.143 21.428q11.143 10.572 26 10.572 15.143 0 25.715-10.572l84-84v201.143q0 14.857 10.857 25.715t25.715 10.857h36.572q14.857 0 25.714-10.857t10.857-25.715v-201.143l84 84q10.572 10.572 25.714 10.572 14.857 0 26-10.572l21.428-21.428q10.572-11.143 10.572-26z" horiz-adv-x="476" />
105
- <glyph unicode="&#xf064;" d="M512 292.572q0-7.428-5.428-12.857l-146.286-146.286q-5.428-5.428-12.857-5.428t-12.857 5.428-5.428 12.857v73.143h-64q-28 0-50.143-1.714t-44-6.143-38-12.143-30.143-19.857-22.857-28.857-13.857-39.572-5-51.714q0-15.714 1.428-35.143 0-1.714 0.715-6.714t0.715-7.572q0-4.286-2.428-7.143t-6.715-2.857q-4.572 0-8 4.857-2 2.572-3.715 6.286t-3.857 8.572-3 6.857q-36.285 81.428-36.285 128.857 0 56.857 15.143 95.143 46.285 115.143 250 115.143h64v73.143q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428l146.286-146.286q5.429-5.428 5.429-12.857z" />
106
- <glyph unicode="&#xf065;" d="M215.714 173.714q0-3.714-2.857-6.572l-94.857-94.857 41.143-41.143q5.429-5.428 5.429-12.857t-5.428-12.857-12.857-5.428h-128q-7.428 0-12.857 5.428t-5.428 12.857v128q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428l41.143-41.143 94.857 94.857q2.857 2.857 6.572 2.857t6.572-2.857l32.572-32.572q2.857-2.857 2.857-6.572zM438.857 420.572v-128q0-7.428-5.428-12.857t-12.857-5.428-12.857 5.428l-41.143 41.143-94.857-94.857q-2.857-2.857-6.572-2.857t-6.572 2.857l-32.572 32.572q-2.857 2.857-2.857 6.572t2.857 6.572l94.857 94.857-41.143 41.143q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h128q7.428 0 12.857-5.428t5.428-12.857z" />
107
- <glyph unicode="&#xf066;" d="M219.429 201.143v-128q0-7.428-5.429-12.857t-12.857-5.428-12.857 5.428l-41.143 41.143-94.857-94.857q-2.857-2.857-6.572-2.857t-6.572 2.857l-32.572 32.572q-2.857 2.857-2.857 6.572t2.857 6.572l94.857 94.857-41.143 41.143q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h128q7.428 0 12.857-5.428t5.429-12.857zM435.143 393.143q0-3.714-2.857-6.572l-94.857-94.857 41.143-41.143q5.428-5.428 5.428-12.857t-5.428-12.857-12.857-5.428h-128q-7.428 0-12.857 5.428t-5.429 12.857v128q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428l41.143-41.143 94.857 94.857q2.857 2.857 6.572 2.857t6.572-2.857l32.572-32.572q2.857-2.857 2.857-6.572z" />
108
- <glyph unicode="&#xf067;" d="M402.286 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-118.857v-118.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.429 0-19.429 8t-8 19.428v118.857h-118.857q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h118.857v118.857q0 11.429 8 19.429t19.428 8h54.857q11.429 0 19.429-8t8-19.429v-118.857h118.857q11.428 0 19.428-8t8-19.428z" horiz-adv-x="403" />
109
- <glyph unicode="&#xf068;" d="M402.286 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-347.428q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h347.428q11.428 0 19.428-8t8-19.428z" horiz-adv-x="403" />
110
- <glyph unicode="&#xf069;" d="M423.428 175.429q13.143-7.428 17-22.143t-3.572-27.857l-18.286-31.428q-7.428-13.143-22.143-17t-27.857 3.572l-76 43.714v-87.714q0-14.857-10.857-25.714t-25.714-10.857h-36.572q-14.857 0-25.714 10.857t-10.857 25.714v87.714l-76-43.714q-13.143-7.428-27.857-3.572t-22.143 17l-18.285 31.428q-7.428 13.143-3.572 27.857t17 22.143l76 44-76 44q-13.143 7.428-17 22.143t3.572 27.857l18.285 31.428q7.428 13.143 22.143 17t27.857-3.572l76-43.714v87.714q0 14.857 10.857 25.714t25.714 10.857h36.572q14.857 0 25.714-10.857t10.857-25.714v-87.714l76 43.714q13.143 7.428 27.857 3.572t22.143-17l18.286-31.428q7.428-13.143 3.572-27.857t-17-22.143l-76-44z" horiz-adv-x="476" />
111
- <glyph unicode="&#xf06a;" d="M219.429 438.857q59.715 0 110.143-29.428t79.857-79.857 29.428-110.143-29.428-110.143-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428zM256 82.572v54.286q0 4-2.571 6.714t-6.286 2.714h-54.857q-3.714 0-6.572-2.857t-2.857-6.572v-54.286q0-3.714 2.857-6.572t6.572-2.857h54.857q3.714 0 6.286 2.714t2.571 6.714zM255.429 180.857l5.143 177.428q0 3.428-2.857 5.143-2.857 2.285-6.857 2.285h-62.857q-4 0-6.857-2.285-2.857-1.715-2.857-5.143l4.857-177.428q0-2.857 2.857-5t6.857-2.143h52.857q4 0 6.714 2.143t3 5z" />
112
- <glyph unicode="&#xf06b;" d="M265.143 88v204.571h-91.428v-204.571q0-7.143 5.143-11t13.143-3.857h54.857q8 0 13.143 3.857t5.143 11zM134.857 329.143h55.715l-36 46q-7.428 8.857-19.714 8.857-11.428 0-19.428-8t-8-19.428 8-19.428 19.428-8zM331.428 356.572q0 11.429-8 19.429t-19.428 8q-12.286 0-19.714-8.857l-35.714-46h55.428q11.428 0 19.428 8t8 19.428zM438.857 283.429v-91.428q0-4-2.572-6.572t-6.572-2.572h-27.428v-118.857q0-11.428-8-19.428t-19.428-8h-310.857q-11.428 0-19.428 8t-8 19.428v118.857h-27.428q-4 0-6.572 2.572t-2.571 6.572v91.428q0 4 2.571 6.572t6.572 2.571h125.715q-26.572 0-45.285 18.715t-18.715 45.286 18.715 45.285 45.285 18.715q30.572 0 48-22l36.572-47.143 36.572 47.143q17.428 22 48 22 26.572 0 45.286-18.715t18.714-45.285-18.714-45.286-45.286-18.714h125.714q4 0 6.572-2.572t2.572-6.571z" />
113
- <glyph unicode="&#xf06c;" d="M365.714 274.286q0 7.429-5.428 12.857t-12.857 5.428q-49.143 0-90.857-14.143t-74.143-38.285-67.285-62.714q-5.428-6-5.428-12.857 0-7.428 5.428-12.857t12.857-5.428q6.857 0 12.857 5.428 7.714 6.857 21.143 20.286t19.143 18.857q39.143 35.428 76.715 50.286t89.572 14.857q7.428 0 12.857 5.429t5.428 12.857zM512 330.857q0-27.143-5.714-55.143-13.143-64-52.714-109.428t-102.143-76.572q-61.143-30.857-125.143-30.857-42.285 0-81.715 13.428-4.286 1.428-25.143 12t-27.428 10.572q-4.572 0-11.285-9.143t-12.857-20-15-20-17.143-9.143q-8.572 0-14.572 3.143t-8.857 6.857-7.715 12q-0.571 1.143-1.715 3.143t-1.571 2.857-0.857 2.714-0.428 3.857q0 10 8.857 21t19.428 18.714 19.428 16 8.857 13.714q0 1.143-4 10.857t-4.572 12.572q-2.572 14.572-2.572 29.714 0 32.857 12.428 62.857t34 52.715 48.715 39.714 58.286 27.286q15.714 5.143 41.428 7.286t51.286 2.571 51 1.714 46.714 6.857 32.428 16.143l8.428 8.429t8.428 8 7.714 5.714 10.428 4.572 12.428 1.285q11.143 0 20.143-13.143t13.572-32 6.857-35.428 2.286-27.428z" />
114
- <glyph unicode="&#xf06d;" d="M402.286-9.143v-18.286q0-3.714-2.714-6.429t-6.428-2.714h-384q-3.715 0-6.428 2.714t-2.715 6.429v18.286q0 3.714 2.715 6.428t6.428 2.714h384q3.714 0 6.428-2.714t2.714-6.428zM329.143 292.572q0-22.285-7-41.143t-18.286-32.143-25-25.143-27.428-22.143-25-20.572-18.286-23.286-7-27.572q0-27.428 19.143-64l-1.143 0.286 0.286-0.286q-25.714 11.714-45.714 23.714t-39.572 28.572-32.428 35-20.715 43-7.857 52.572q0 22.286 7 41.143t18.285 32.143 25 25.143 27.428 22.143 25 20.572 18.286 23.285 7 27.572q0 26.857-18.857 64l0.857-0.286-0.286 0.286q25.714-11.714 45.714-23.714t39.572-28.572 32.428-35 20.714-43 7.857-52.572z" horiz-adv-x="403" />
115
- <glyph unicode="&#xf06e;" d="M475.428 201.143q-43.428 67.428-108.857 100.857 17.428-29.714 17.428-64.285 0-52.857-37.572-90.428t-90.428-37.572-90.428 37.572-37.572 90.428q0 34.572 17.428 64.286-65.428-33.428-108.857-100.857 38-58.572 95.285-93.286t124.143-34.714 124.143 34.714 95.286 93.286zM269.714 310.857q0 5.714-4 9.714t-9.714 4q-35.714 0-61.286-25.571t-25.572-61.286q0-5.714 4-9.714t9.714-4 9.714 4 4 9.714q0 24.572 17.428 42t42 17.428q5.714 0 9.714 4t4 9.714zM512 201.143q0-9.714-5.714-19.714-40-65.714-107.572-105.286t-142.714-39.572-142.714 39.714-107.572 105.143q-5.715 10-5.715 19.714t5.715 19.714q40 65.428 107.572 105.143t142.714 39.714 142.714-39.714 107.572-105.143q5.714-10 5.714-19.714z" />
116
- <glyph unicode="&#xf070;" d="M158.571 94l22.285 40.286q-24.857 18-38.857 45.428t-14 58q0 34.572 17.429 64.286-65.428-33.428-108.857-100.857 47.715-73.714 122-107.143zM269.714 310.857q0 5.714-4 9.714t-9.714 4q-35.714 0-61.286-25.571t-25.572-61.286q0-5.714 4-9.714t9.714-4 9.714 4 4 9.714q0 24.572 17.428 42t42 17.428q5.714 0 9.714 4t4 9.714zM373.428 365.429q0-2-0.286-2.572-30-53.714-90-161.714t-90.286-162l-14-25.428q-2.857-4.572-8-4.572-3.429 0-38.286 20-4.572 2.857-4.572 8 0 3.428 12.572 24.857-40.857 18.572-75.285 49.428t-59.572 70q-5.715 8.857-5.715 19.714t5.715 19.714q43.715 67.143 108.572 106t141.714 38.857q25.428 0 51.428-4.857l15.428 27.714q2.857 4.572 8 4.572 1.428 0 5.143-1.714t8.857-4.429 9.428-5.286 9-5.285 5.572-3.286q4.572-2.857 4.572-7.714zM384 237.714q0-39.714-22.572-72.428t-59.714-47l80 143.428q2.286-12.857 2.286-24zM512 201.143q0-10-5.714-19.714-11.143-18.286-31.143-41.428-42.857-49.143-99.286-76.286t-119.857-27.143l21.143 37.714q60.572 5.143 112.143 39.143t86.143 87.714q-32.857 51.143-80.572 84l18 32q27.143-18.286 52.143-43.714t41.286-52.572q5.714-9.714 5.714-19.714z" />
117
- <glyph unicode="&#xf071;" d="M292.572 82.572v54.286q0 4-2.714 6.714t-6.428 2.714h-54.857q-3.714 0-6.429-2.714t-2.714-6.714v-54.286q0-4 2.714-6.714t6.428-2.714h54.857q3.714 0 6.428 2.714t2.714 6.714zM292 189.429l5.143 131.143q0 3.429-2.857 5.429-3.714 3.143-6.857 3.143h-62.857q-3.143 0-6.857-3.143-2.857-2-2.857-6l4.857-130.572q0-2.857 2.857-4.714t6.857-1.857h52.857q4 0 6.714 1.857t3 4.714zM288 456.286l219.428-402.285q10-18-0.572-36-4.857-8.286-13.286-13.143t-18.143-4.857h-438.857q-9.715 0-18.143 4.857t-13.286 13.143q-10.572 18-0.572 36l219.429 402.286q4.857 8.857 13.429 14t18.572 5.143 18.572-5.143 13.428-14z" />
118
- <glyph unicode="&#xf072;" d="M393.143 429.714q12.572-14.857 3.428-42.285t-30.857-49.143l-46-46 45.714-198.857q1.428-5.428-3.428-9.428l-36.572-27.428q-2-1.714-5.428-1.714-1.143 0-2 0.286-4.286 0.857-6 4.572l-79.714 145.143-74-74 15.143-55.428q1.429-4.857-2.286-8.857l-27.429-27.428q-2.571-2.572-6.572-2.572h-0.571q-4.286 0.572-6.857 3.714l-54 72-72 54q-3.143 2-3.715 6.572-0.285 3.714 2.571 7.143l27.428 27.714q2.572 2.572 6.572 2.572 1.715 0 2.285-0.286l55.428-15.143 74 74-145.143 79.714q-4 2.286-4.857 6.857-0.572 4.571 2.572 7.714l36.572 36.571q4 3.715 8.572 2.286l190-45.428 45.714 45.714q21.714 21.715 49.143 30.857t42.286-3.429z" horiz-adv-x="403" />
119
- <glyph unicode="&#xf073;" d="M36.572 0h82.285v82.286h-82.285v-82.286zM137.143 0h91.429v82.286h-91.428v-82.286zM36.572 100.572h82.285v91.428h-82.285v-91.428zM137.143 100.572h91.429v91.428h-91.428v-91.428zM36.572 210.286h82.285v82.286h-82.285v-82.286zM246.857 0h91.429v82.286h-91.428v-82.286zM137.143 210.286h91.429v82.286h-91.428v-82.286zM356.572 0h82.286v82.286h-82.286v-82.286zM246.857 100.572h91.429v91.428h-91.428v-91.428zM146.286 347.429v82.285q0 3.715-2.714 6.429t-6.428 2.714h-18.285q-3.715 0-6.428-2.714t-2.715-6.429v-82.285q0-3.714 2.715-6.428t6.428-2.714h18.285q3.714 0 6.428 2.714t2.714 6.428zM356.572 100.572h82.286v91.428h-82.286v-91.428zM246.857 210.286h91.429v82.286h-91.428v-82.286zM356.572 210.286h82.286v82.286h-82.286v-82.286zM365.714 347.429v82.285q0 3.715-2.714 6.429t-6.428 2.714h-18.286q-3.714 0-6.428-2.714t-2.714-6.429v-82.285q0-3.714 2.714-6.428t6.428-2.714h18.286q3.714 0 6.428 2.714t2.714 6.428zM475.428 365.714v-365.714q0-14.857-10.857-25.714t-25.714-10.857h-402.286q-14.857 0-25.715 10.857t-10.857 25.714v365.714q0 14.857 10.857 25.714t25.715 10.857h36.572v27.428q0 18.857 13.428 32.285t32.285 13.429h18.285q18.857 0 32.285-13.429t13.428-32.285v-27.428h109.714v27.428q0 18.857 13.428 32.285t32.286 13.429h18.286q18.857 0 32.286-13.429t13.428-32.285v-27.428h36.572q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="476" />
120
- <glyph unicode="&#xf074;" d="M190.286 338q-17.143-26.285-39.143-78-6.286 12.857-10.571 20.715t-11.572 18.143-14.572 16.143-18 10-23.285 4.143h-64q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h64q71.429 0 117.143-64.286zM512 109.714q0-4-2.572-6.572l-91.428-91.428q-2.572-2.572-6.572-2.572-3.714 0-6.428 2.714t-2.714 6.428v54.857q-9.143 0-24.286-0.143t-23.143-0.286-20.857 0.286-20.286 1.428-18.286 3-18 5.286-16.572 8.143-16.857 11.428-15.714 15.286-16 19.857q16.857 26.572 38.857 78 6.286-12.857 10.572-20.714t11.572-18.143 14.572-16.143 18-10 23.286-4.143h73.143v54.857q0 4 2.572 6.572t6.572 2.572q3.428 0 6.857-2.857l91.143-91.143q2.572-2.572 2.572-6.572zM512 365.714q0-4-2.572-6.571l-91.428-91.428q-2.572-2.572-6.572-2.572-3.714 0-6.428 2.714t-2.714 6.429v54.857h-73.143q-13.714 0-24.857-4.286t-19.714-12.857-14.572-17.572-12.857-22.143q-9.143-17.714-22.286-48.857-8.286-18.857-14.143-31.714t-15.429-30-18.286-28.572-21.143-23.714-25.715-19.572-30.428-12-36.572-4.714h-64q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h64q13.715 0 24.857 4.286t19.715 12.857 14.572 17.572 12.857 22.143q9.143 17.714 22.286 48.857 8.286 18.857 14.143 31.715t15.429 30 18.286 28.572 21.143 23.714 25.715 19.572 30.428 12 36.572 4.714h73.143v54.857q0 4 2.572 6.572t6.572 2.572q3.428 0 6.857-2.857l91.143-91.143q2.572-2.572 2.572-6.572z" />
121
- <glyph unicode="&#xf075;" d="M512 219.429q0-49.714-34.286-91.857t-93.143-66.572-128.572-24.428q-20 0-41.428 2.286-56.572-50-131.429-69.143-14-4-32.572-6.286-4.857-0.571-8.715 2.572t-5 8.286v0.286q-0.857 1.143-0.143 3.428t0.572 2.857 1.285 2.714l1.715 2.572t2 2.428 2.285 2.572q2 2.286 8.857 9.857t9.857 10.857 8.857 11.286 9.285 14.572 7.715 16.857 7.428 21.714q-44.857 25.428-70.715 62.857t-25.857 80.286q0 37.143 20.285 71t54.572 58.428 81.714 39 99.428 14.428q69.714 0 128.571-24.428t93.143-66.572 34.286-91.857z" />
122
- <glyph unicode="&#xf076;" d="M438.857 237.714v-36.572q0-57.428-28.143-103.428t-78.286-71.857-113-25.857-113 25.857-78.285 71.857-28.143 103.428v36.572q0 7.428 5.428 12.857t12.857 5.429h109.715q7.428 0 12.857-5.428t5.429-12.857v-36.571q0-14.857 6.714-25.714t15.286-16.286 20.286-8.572 18.286-3.714 12.572-0.572 12.572 0.572 18.286 3.714 20.286 8.572 15.286 16.286 6.714 25.714v36.572q0 7.428 5.428 12.857t12.857 5.429h109.714q7.428 0 12.857-5.428t5.428-12.857zM146.286 420.572v-109.714q0-7.428-5.428-12.857t-12.857-5.428h-109.715q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.429 5.428 12.857t12.857 5.428h109.715q7.429 0 12.857-5.428t5.428-12.857zM438.857 420.572v-109.714q0-7.428-5.428-12.857t-12.857-5.428h-109.714q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.429 5.428 12.857t12.857 5.428h109.714q7.428 0 12.857-5.428t5.428-12.857z" />
123
- <glyph unicode="&#xf077;" d="M460.286 128q0-15.143-10.572-25.714l-21.428-21.428q-10.857-10.857-26-10.857-15.428 0-25.714 10.857l-138.857 138.572-138.857-138.572q-10.285-10.857-25.715-10.857t-25.715 10.857l-21.428 21.428q-10.857 10.286-10.857 25.714 0 15.143 10.857 26l186 186q10.572 10.571 25.714 10.571 14.857 0 26-10.571l185.714-186q10.857-10.857 10.857-26z" horiz-adv-x="476" />
124
- <glyph unicode="&#xf078;" d="M460.286 274.286q0-15.143-10.572-25.714l-186-186q-10.857-10.857-26-10.857-15.428 0-25.714 10.857l-186 186q-10.857 10.286-10.857 25.714 0 15.143 10.857 26l21.143 21.428q11.143 10.572 26 10.572 15.143 0 25.715-10.572l138.857-138.857 138.857 138.857q10.572 10.572 25.714 10.572 14.857 0 26-10.572l21.428-21.428q10.572-11.143 10.572-26z" horiz-adv-x="476" />
125
- <glyph unicode="&#xf079;" d="M365.714 45.714q0-3.714-2.714-6.428t-6.428-2.714h-274.286q-2.285 0-3.857 0.572t-2.572 2-1.572 2.286-0.857 3.286-0.285 3.286v171.429h-54.857q-7.428 0-12.857 5.428t-5.428 12.857q0 6.857 4.285 11.714l91.428 109.714q5.428 6.286 14 6.286t14-6.286l91.429-109.714q4.286-4.857 4.286-11.714 0-7.428-5.428-12.857t-12.857-5.428h-54.857v-109.714h164.572q4.572 0 7.143-3.143l45.714-54.857q2-3.143 2-6zM548.572 164.572q0-6.857-4.285-11.714l-91.428-109.714q-5.714-6.572-14-6.572t-14 6.572l-91.428 109.714q-4.286 4.857-4.286 11.714 0 7.428 5.428 12.857t12.857 5.428h54.857v109.714h-164.571q-4.571 0-7.143 3.428l-45.714 54.857q-2 2.572-2 5.714 0 3.714 2.714 6.428t6.428 2.714h274.286q2.286 0 3.857-0.571t2.572-2 1.572-2.286 0.857-3.286 0.286-3.286v-171.428h54.857q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="549" />
126
- <glyph unicode="&#xf07a;" d="M182.857 36.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.715 25.857 10.715 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM438.857 36.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.714 25.857 10.714 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM475.428 347.429v-146.286q0-6.857-4.572-12.143t-11.714-6.143l-298.286-34.857q0.286-2 1.286-6.143t1.714-7.572 0.714-6.286q0-4.572-6.857-18.286h262.857q7.428 0 12.857-5.428t5.428-12.857-5.428-12.857-12.857-5.428h-292.572q-7.428 0-12.857 5.428t-5.428 12.857q0 4 3.143 11.286t8.428 17 5.857 10.857l-50.572 235.143h-58.285q-7.428 0-12.857 5.429t-5.428 12.857 5.428 12.857 12.857 5.429h73.143q4.572 0 8.143-1.857t5.715-4.428 3.715-7 2.143-7.572 1.572-8.428 1.285-7.286h343.143q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="476" />
127
- <glyph unicode="&#xf07b;" d="M475.428 301.714v-201.143q0-26.286-18.857-45.143t-45.143-18.857h-347.428q-26.285 0-45.143 18.857t-18.857 45.143v274.286q0 26.286 18.857 45.143t45.143 18.857h91.428q26.286 0 45.143-18.857t18.857-45.143v-9.143h192q26.286 0 45.143-18.857t18.857-45.143z" horiz-adv-x="476" />
128
- <glyph unicode="&#xf07c;" d="M536.857 203.429q0-8.857-8.857-18.857l-96-113.143q-12.286-14.572-34.428-24.714t-41-10.143h-310.857q-9.715 0-17.285 3.714t-7.572 12.286q0 8.857 8.857 18.857l96 113.143q12.286 14.572 34.428 24.714t41 10.143h310.857q9.715 0 17.285-3.714t7.572-12.286zM438.857 301.714v-45.714h-237.714q-26.857 0-56.286-13.572t-46.857-34.143l-97.715-114.857q0 1.143-0.143 3.572t-0.143 3.572v274.286q0 26.286 18.857 45.143t45.143 18.857h91.428q26.285 0 45.143-18.857t18.857-45.143v-9.143h155.429q26.286 0 45.143-18.857t18.857-45.143z" horiz-adv-x="549" />
129
- <glyph unicode="&#xf07d;" d="M201.143 384q0-7.429-5.429-12.857t-12.857-5.428h-36.571v-292.572h36.572q7.428 0 12.857-5.428t5.429-12.857-5.428-12.857l-73.143-73.143q-5.428-5.428-12.857-5.428t-12.857 5.428l-73.143 73.143q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h36.572v292.572h-36.572q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857l73.143 73.143q5.428 5.429 12.857 5.429t12.857-5.429l73.143-73.143q5.428-5.428 5.428-12.857z" horiz-adv-x="220" />
130
- <glyph unicode="&#xf07e;" d="M512 219.429q0-7.428-5.428-12.857l-73.143-73.143q-5.428-5.428-12.857-5.428t-12.857 5.428-5.428 12.857v36.572h-292.572v-36.572q0-7.428-5.428-12.857t-12.857-5.428-12.857 5.428l-73.143 73.143q-5.428 5.428-5.428 12.857t5.428 12.857l73.143 73.143q5.428 5.429 12.857 5.429t12.857-5.428 5.428-12.857v-36.571h292.572v36.572q0 7.428 5.428 12.857t12.857 5.429 12.857-5.428l73.143-73.143q5.428-5.428 5.428-12.857z" />
131
- <glyph unicode="&#xf080;" d="M146.286 182.857v-109.714h-73.143v109.714h73.143zM256 329.143v-256h-73.143v256h73.143zM365.714 256v-182.857h-73.143v182.857h73.143zM475.428 365.714v-292.571h-73.143v292.572h73.143zM512 45.714v347.428q0 3.714-2.714 6.428t-6.428 2.714h-457.143q-3.715 0-6.428-2.714t-2.715-6.428v-347.428q0-3.714 2.715-6.428t6.428-2.714h457.143q3.714 0 6.428 2.714t2.714 6.428zM548.572 393.143v-347.428q0-18.857-13.428-32.286t-32.286-13.428h-457.143q-18.857 0-32.285 13.428t-13.428 32.286v347.428q0 18.857 13.428 32.286t32.285 13.428h457.143q18.857 0 32.286-13.428t13.428-32.286z" horiz-adv-x="549" />
132
- <glyph unicode="&#xf081;" d="M365.714 301.143q-16-7.143-34.572-9.714 19.428 11.428 26.572 33.428-18.572-10.857-38.286-14.572-17.428 18.857-43.714 18.857-24.857 0-42.428-17.571t-17.572-42.428q0-8.286 1.429-13.714-36.857 2-69.143 18.572t-54.857 44.286q-8.285-14.286-8.285-30.286 0-32.572 26-50-13.428 0.286-28.572 7.428v-0.572q0-21.428 14.285-38.143t35.143-20.714q-8.285-2.286-14.572-2.286-3.715 0-11.143 1.143 6-18 21.285-29.714t34.715-12q-33.143-25.714-74.572-25.714-7.428 0-14.285 0.857 42.285-26.857 92-26.857 32 0 60 10.143t48 27.143 34.428 39.143 21.428 46.286 7 48.143q0 5.143-0.286 7.714 18 12.857 30 31.143zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
133
- <glyph unicode="&#xf082;" d="M373.428 213.143l6.572 62.572h-56.572v31.143q0 14 4.428 19.572t20.428 5.572h31.428v62.572h-50q-43.428 0-62.286-20.572t-18.857-60.857v-37.428h-37.429v-62.572h37.428v-181.429h74.857v181.428h50zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
134
- <glyph unicode="&#xf083;" d="M265.143 237.714q0 4-2.572 6.572t-6.572 2.571q-18.857 0-32.286-13.428t-13.428-32.286q0-4 2.571-6.572t6.571-2.572 6.572 2.572 2.571 6.572q0 11.428 8 19.428t19.429 8q4 0 6.572 2.571t2.572 6.572zM329.143 200.572q0-30.286-21.428-51.714t-51.714-21.428-51.714 21.428-21.428 51.714 21.428 51.714 51.714 21.428 51.714-21.428 21.428-51.714zM36.572 36.572h438.857v36.572h-438.857v-36.572zM365.714 200.572q0 45.428-32.143 77.572t-77.572 32.143-77.572-32.143-32.143-77.572 32.143-77.572 77.572-32.143 77.572 32.143 32.143 77.572zM73.143 384h109.715v36.571h-109.715v-36.571zM36.572 329.143h438.857v73.143h-236.571l-18.285-36.572h-184v-36.571zM512 402.286v-365.714q0-15.143-10.714-25.857t-25.857-10.714h-438.857q-15.143 0-25.857 10.714t-10.714 25.857v365.714q0 15.143 10.714 25.857t25.857 10.714h438.857q15.143 0 25.857-10.714t10.714-25.857z" />
135
- <glyph unicode="&#xf084;" d="M237.714 329.143q0 22.857-16 38.857t-38.857 16-38.857-16-16-38.857q0-12 5.428-23.714-11.715 5.428-23.715 5.428-22.857 0-38.857-16t-16-38.857 16-38.857 38.857-16 38.857 16 16 38.857q0 12-5.428 23.715 11.714-5.428 23.714-5.428 22.857 0 38.857 16t16 38.857zM480.857 128q0-4.857-14-18.857t-18.857-14q-2.572 0-8.143 4.572t-10.428 9.428-11 11.428-7 7.428l-27.428-27.428 62.857-62.857q8-8 8-19.428 0-12-11.143-23.143t-23.143-11.143q-11.428 0-19.428 8l-191.714 191.714q-50.286-37.428-104.285-37.428-46.572 0-75.857 29.286t-29.285 75.857q0 45.715 27.143 89.429t70.857 70.857 89.428 27.143q46.572 0 75.857-29.286t29.286-75.857q0-54-37.428-104.286l101.428-101.428 27.428 27.428q-0.857 0.857-7.428 7t-11.428 11-9.428 10.428-4.572 8.143q0 4.857 14 18.857t18.857 14q3.714 0 6.572-2.857 1.714-1.714 13.143-12.714t23.428-22.714 24.714-24.572 20.857-22.286 8.143-11.714z" />
136
- <glyph unicode="&#xf085;" d="M256 219.429q0 30.286-21.428 51.714t-51.714 21.428-51.714-21.428-21.428-51.714 21.428-51.714 51.714-21.428 51.714 21.428 21.428 51.714zM475.428 73.143q0 14.857-10.857 25.714t-25.714 10.857-25.714-10.857-10.857-25.714q0-15.143 10.714-25.857t25.857-10.714 25.857 10.714 10.714 25.857zM475.428 365.714q0 14.857-10.857 25.715t-25.714 10.857-25.714-10.857-10.857-25.715q0-15.143 10.714-25.857t25.857-10.714 25.857 10.714 10.714 25.857zM365.714 245.429v-52.857q0-2.857-2-5.572t-4.572-3l-44.286-6.857q-3.143-10-9.143-21.714 9.714-13.714 25.714-32.857 2-2.857 2-5.714 0-3.428-2-5.428-6.572-8.572-23.572-25.572t-22.428-17q-3.143 0-6 2l-32.857 25.714q-10.571-5.428-22-8.857-3.143-30.857-6.571-44.286-2-6.857-8.572-6.857h-53.143q-3.143 0-5.714 2.143t-2.857 5l-6.572 43.714q-9.714 2.857-21.428 8.857l-33.715-25.428q-2-2-5.715-2-3.143 0-6 2.286-41.143 38-41.143 45.714 0 2.572 2 5.428 2.857 4 11.715 15.143t13.428 17.428q-6.572 12.572-10 23.428l-43.428 6.857q-2.857 0.286-4.857 2.714t-2 5.572v52.857q0 2.857 2 5.572t4.572 3l44.285 6.857q3.143 10 9.143 21.715-9.715 13.714-25.715 32.857-2 3.143-2 5.714 0 3.429 2 5.714 6.285 8.572 23.428 25.428t22.572 16.857q3.143 0 6-2l32.857-25.714q9.715 5.143 22 9.143 3.143 30.857 6.572 44 2 6.857 8.572 6.857h53.143q3.143 0 5.714-2.143t2.857-5l6.572-43.714q9.714-2.857 21.428-8.857l33.714 25.428q2.286 2 5.714 2 3.143 0 6-2.286 41.143-38 41.143-45.714 0-2.572-2-5.428-3.428-4.572-12-15.428t-12.857-17.143q6.572-13.714 9.714-23.428l43.428-6.572q2.857-0.572 4.857-3t2-5.572zM548.572 93.143v-40q0-4.572-42.572-8.857-3.428-7.714-8.572-14.857 14.572-32.286 14.572-39.428 0-1.143-1.143-2-34.857-20.286-35.428-20.286-2.286 0-13.143 13.429t-14.857 19.428q-5.714-0.572-8.572-0.572t-8.572 0.572q-4-6-14.857-19.428t-13.143-13.429q-0.572 0-35.428 20.286-1.143 0.857-1.143 2 0 7.143 14.572 39.428-5.143 7.143-8.572 14.857-42.572 4.286-42.572 8.857v40q0 4.572 42.572 8.857 3.714 8.286 8.572 14.857-14.572 32.286-14.572 39.428 0 1.143 1.143 2 1.143 0.572 10 5.714t16.857 9.714 8.572 4.572q2.286 0 13.143-13.286t14.857-19.286q5.714 0.572 8.572 0.572t8.572-0.572q14.572 20.286 26.286 32l1.714 0.572q1.143 0 35.428-20 1.143-0.857 1.143-2 0-7.143-14.572-39.428 4.857-6.572 8.572-14.857 42.572-4.286 42.572-8.857zM548.572 385.714v-40q0-4.572-42.572-8.857-3.428-7.714-8.572-14.857 14.572-32.286 14.572-39.428 0-1.143-1.143-2-34.857-20.286-35.428-20.286-2.286 0-13.143 13.428t-14.857 19.428q-5.714-0.572-8.572-0.572t-8.572 0.572q-4-6-14.857-19.428t-13.143-13.428q-0.572 0-35.428 20.286-1.143 0.857-1.143 2 0 7.143 14.572 39.428-5.143 7.143-8.572 14.857-42.572 4.286-42.572 8.857v40q0 4.571 42.572 8.857 3.714 8.286 8.572 14.857-14.572 32.285-14.572 39.428 0 1.143 1.143 2 1.143 0.572 10 5.714t16.857 9.714 8.572 4.572q2.286 0 13.143-13.286t14.857-19.285q5.714 0.571 8.572 0.571t8.572-0.571q14.572 20.286 26.286 32l1.714 0.571q1.143 0 35.428-20 1.143-0.857 1.143-2 0-7.143-14.572-39.428 4.857-6.572 8.572-14.857 42.572-4.286 42.572-8.857z" horiz-adv-x="549" />
137
- <glyph unicode="&#xf086;" d="M402.286 256q0-39.714-26.857-73.428t-73.286-53.286-101-19.572q-24.572 0-50.286 4.572-35.428-25.143-79.428-36.572-10.285-2.572-24.572-4.572h-0.857q-3.143 0-5.857 2.286t-3.285 6q-0.285 0.857-0.285 1.857t0.143 1.857 0.572 1.714l0.715 1.428t1 1.572 1.143 1.428 1.285 1.428 1.143 1.286q1.428 1.714 6.572 7.143t7.428 8.428 6.428 8.286 7.143 11 5.857 12.572q-35.428 20.572-55.715 50.572t-20.285 64q0 39.714 26.857 73.428t73.285 53.286 101 19.571 101-19.571 73.286-53.286 26.857-73.428zM512 182.857q0-34.286-20.286-64.143t-55.714-50.428q2.857-6.857 5.857-12.572t7.143-11 6.428-8.286 7.428-8.428 6.572-7.143q0.286-0.286 1.143-1.286t1.286-1.428 1.143-1.428 1-1.572l0.714-1.428t0.572-1.714 0.143-1.857-0.286-1.857q-0.857-4-3.714-6.286t-6.286-2q-14.286 2-24.572 4.572-44 11.428-79.428 36.572-25.714-4.572-50.286-4.572-77.428 0-134.857 37.714 16.571-1.143 25.143-1.143 46 0 88.286 12.857t75.428 36.857q35.714 26.286 54.857 60.572t19.143 72.572q0 22-6.572 43.428 36.857-20.286 58.286-50.857t21.429-65.714z" />
138
- <glyph unicode="&#xf087;" d="M73.143 91.429q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM402.286 256q0 14.572-11.143 25.572t-25.428 11h-100.572q0 16.572 13.714 45.572t13.714 45.857q0 28-9.143 41.429t-36.572 13.428q-7.428-7.428-10.857-24.286t-8.714-35.857-17-31.285q-6.286-6.572-22-26-1.143-1.429-6.571-8.572t-9-11.714-9.857-12.143-11.429-12.571-11-10.143-11.428-7.714-10.143-2.571h-9.143v-182.857h9.143q3.715 0 9-0.857t9.429-1.857 10.857-3.143 10-3.286 10.143-3.572 8.286-3q60.286-20.857 97.714-20.857h34.572q54.857 0 54.857 47.714 0 7.428-1.428 16 8.572 4.572 13.572 15t5 21-5.143 19.714q15.143 14.286 15.143 34 0 7.143-2.857 15.857t-7.143 13.572q9.143 0.286 15.286 13.428t6.143 23.143zM438.857 256.286q0-25.428-14-46.571 2.572-9.428 2.572-19.714 0-22-10.857-41.143 0.857-6 0.857-12.286 0-28.857-17.143-50.857 0.286-39.714-24.286-62.714t-64.857-23h-36.857q-27.428 0-54.143 6.428t-61.857 18.714q-33.143 11.428-39.428 11.428h-82.285q-15.143 0-25.857 10.714t-10.714 25.857v182.857q0 15.143 10.714 25.857t25.857 10.714h78.285q10.285 6.857 39.143 44.286 16.572 21.428 30.572 36.571 6.857 7.143 10.143 24.429t8.714 36.143 17.715 30.857q11.143 10.571 25.714 10.571 24 0 43.143-9.285t29.143-29 10-53.143q0-26.572-13.714-54.857h50.286q29.714 0 51.428-21.714t21.714-51.143z" />
139
- <glyph unicode="&#xf088;" d="M73.143 347.429q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM402.286 182.857q0 10-6.143 23.143t-15.286 13.428q4.286 4.857 7.143 13.572t2.857 15.857q0 19.715-15.143 34 5.143 9.143 5.143 19.715t-5 21-13.572 15q1.428 8.572 1.428 16 0 24.285-14 36t-38.857 11.714h-36.572q-37.428 0-97.714-20.857-1.429-0.571-8.286-3t-10.143-3.571-10-3.286-10.857-3.143-9.428-1.857-9-0.857h-9.143v-182.857h9.143q4.572 0 10.143-2.572t11.428-7.714 11-10.143 11.428-12.572 9.857-12.143 9-11.714 6.571-8.572q15.714-19.428 22-26 11.714-12.286 17-31.286t8.714-35.857 10.857-24.286q27.429 0 36.571 13.428t9.143 41.428q0 16.857-13.714 45.857t-13.714 45.572h100.572q14.286 0 25.428 11t11.143 25.572zM438.857 182.572q0-29.428-21.714-51.143t-51.428-21.714h-50.286q13.714-28.286 13.714-54.857 0-33.714-10-53.143-10-19.714-29.143-29t-43.143-9.285q-14.571 0-25.715 10.572-9.714 9.428-15.428 23.428t-7.286 25.857-5 24.143-8.857 18.286q-13.714 14.286-30.571 36.286-28.857 37.428-39.143 44.286h-78.285q-15.143 0-25.857 10.714t-10.714 25.857v182.857q0 15.143 10.714 25.857t25.857 10.714h82.285q6.285 0 39.429 11.428 36.572 12.572 63.714 18.857t57.143 6.286h32q40 0 64.714-22.572t24.428-61.715v-1.428q17.143-22 17.143-50.857 0-6.286-0.857-12.286 10.857-19.143 10.857-41.143 0-10.286-2.572-19.714 14-21.143 14-46.572z" />
140
- <glyph unicode="&#xf089;" d="M237.714 466.286v-382.572l-128.286-67.428q-6.285-3.428-11.428-3.428-6 0-9 4.143t-3 10.143q0 1.714 0.572 5.714l24.572 142.857-104 101.143q-7.143 7.714-7.143 13.714 0 10.572 16 13.143l143.428 20.857 64.286 130q5.428 11.714 14 11.714z" horiz-adv-x="256" />
141
- <glyph unicode="&#xf08a;" d="M475.428 305.143q0 23.143-6.143 40.857t-15.714 28.143-23.286 17-26.857 8.857-28 2.286-32-7.286-31.572-18.286-24.714-20.571-17.143-17.572q-5.143-6.286-14-6.286t-14 6.286q-6.857 8-17.143 17.571t-24.715 20.572-31.572 18.286-32 7.286-28-2.286-26.857-8.857-23.285-17-15.715-28.143-6.143-40.857q0-48 53.428-101.428l166-160 165.714 159.714q53.714 53.714 53.714 101.714zM512 305.143q0-63.143-65.428-128.571l-178-171.428q-5.143-5.143-12.572-5.143t-12.572 5.143l-178.286 172q-2.857 2.286-7.857 7.428t-15.857 18.714-19.428 27.857-15.286 34.572-6.715 39.428q0 62.857 36.285 98.286t100.285 35.428q17.714 0 36.143-6.143t34.285-16.572 27.286-19.571 21.714-19.429q10.286 10.286 21.714 19.429t27.286 19.571 34.286 16.572 36.143 6.143q64 0 100.286-35.428t36.286-98.286z" />
142
- <glyph unicode="&#xf08b;" d="M182.857 64q0-1.143 0.286-5.714t0.143-7.572-0.857-6.714-2.857-5.572-5.857-1.857h-91.428q-34 0-58.143 24.143t-24.143 58.143v201.143q0 34 24.143 58.143t58.143 24.143h91.428q3.714 0 6.429-2.714t2.714-6.428q0-1.143 0.286-5.714t0.143-7.572-0.857-6.715-2.857-5.571-5.857-1.857h-91.428q-18.857 0-32.285-13.428t-13.428-32.286v-201.143q0-18.857 13.428-32.286t32.285-13.428h89.143t3.286-0.286 3.286-0.857 2.286-1.572 2-2.572 0.571-3.857zM448 219.429q0-7.428-5.428-12.857l-155.428-155.428q-5.428-5.428-12.857-5.428t-12.857 5.428-5.428 12.857v82.286h-128q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.428 5.428 12.857t12.857 5.429h128v82.285q0 7.429 5.428 12.857t12.857 5.428 12.857-5.428l155.428-155.428q5.428-5.428 5.428-12.857z" horiz-adv-x="476" />
143
- <glyph unicode="&#xf08c;" d="M67.715 71.429h66v198.286h-66v-198.286zM138 330.857q-0.286 14.857-10.285 24.572t-26.572 9.714-27-9.714-10.428-24.572q0-14.571 10.143-24.428t26.428-9.857h0.285q16.857 0 27.143 9.857t10.285 24.428zM305.143 71.429h66v113.714q0 44-20.857 66.572t-55.143 22.572q-38.857 0-59.714-33.428h0.571v28.857h-66q0.857-18.857 0-198.286h66v110.857q0 10.857 2 16 4.286 10 12.857 17t21.143 7q33.143 0 33.143-44.857v-106zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
144
- <glyph unicode="&#xf08d;" d="M137.143 228.572v128q0 4-2.571 6.572t-6.572 2.572-6.572-2.572-2.572-6.572v-128q0-4 2.572-6.571t6.572-2.572 6.572 2.572 2.571 6.572zM329.143 128q0-7.428-5.428-12.857t-12.857-5.428h-122.572l-14.572-138q-0.571-3.428-3-5.857t-5.857-2.428h-0.286q-7.714 0-9.143 7.715l-21.714 138.572h-115.428q-7.428 0-12.857 5.428t-5.428 12.857q0 35.143 22.428 63.286t50.715 28.143v146.286q-14.857 0-25.715 10.857t-10.857 25.714 10.857 25.714 25.715 10.857h182.857q14.857 0 25.714-10.857t10.857-25.714-10.857-25.714-25.714-10.857v-146.286q28.286 0 50.714-28.143t22.428-63.286z" horiz-adv-x="329" />
145
- <glyph unicode="&#xf08e;" d="M402.286 210.286v-91.428q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h201.143q4 0 6.572-2.572t2.572-6.572v-18.285q0-4-2.572-6.572t-6.572-2.572h-201.143q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.715q18.857 0 32.286 13.428t13.428 32.286v91.428q0 4 2.572 6.572t6.572 2.571h18.286q4 0 6.572-2.571t2.572-6.572zM512 457.143v-146.286q0-7.428-5.428-12.857t-12.857-5.428-12.857 5.428l-50.286 50.286-186.286-186.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-32.572 32.572q-2.857 2.857-2.857 6.572t2.857 6.572l186.286 186.286-50.286 50.285q-5.428 5.429-5.428 12.857t5.428 12.857 12.857 5.428h146.286q7.428 0 12.857-5.428t5.428-12.857z" />
146
- <glyph unicode="&#xf090;" d="M338.286 219.429q0-7.428-5.428-12.857l-155.429-155.428q-5.429-5.428-12.857-5.428t-12.857 5.428-5.429 12.857v82.286h-128q-7.428 0-12.857 5.428t-5.428 12.857v109.714q0 7.428 5.428 12.857t12.857 5.429h128v82.285q0 7.429 5.428 12.857t12.857 5.428 12.857-5.428l155.428-155.428q5.428-5.428 5.428-12.857zM438.857 320v-201.143q0-34-24.143-58.143t-58.143-24.143h-91.428q-3.714 0-6.428 2.714t-2.714 6.428q0 1.143-0.286 5.714t-0.143 7.572 0.857 6.714 2.857 5.572 5.857 1.857h91.428q18.857 0 32.286 13.428t13.428 32.286v201.143q0 18.857-13.428 32.286t-32.286 13.428h-89.143t-3.286 0.286-3.286 0.857-2.286 1.572-2 2.572-0.571 3.857q0 1.143-0.286 5.715t-0.143 7.572 0.857 6.714 2.857 5.571 5.857 1.857h91.428q34 0 58.143-24.143t24.143-58.143z" />
147
- <glyph unicode="&#xf091;" d="M130.857 223.143q-21.143 46.286-21.143 106h-73.143v-27.428q0-22.286 27-46.286t67.285-32.286zM438.857 301.714v27.428h-73.143q0-59.714-21.143-106 40.286 8.286 67.286 32.286t27 46.286zM475.428 338.286v-36.571q0-20.286-11.857-40.857t-32-37.143-49.428-27.857-61.572-12.714q-12-15.428-27.143-27.143-10.857-9.714-15-20.714t-4.143-25.572q0-15.428 8.714-26t27.857-10.572q21.428 0 38.143-13t16.714-32.714v-18.286q0-4-2.572-6.572t-6.572-2.572h-237.714q-4 0-6.572 2.572t-2.572 6.572v18.286q0 19.714 16.715 32.714t38.143 13q19.143 0 27.857 10.572t8.714 26q0 14.572-4.143 25.572t-15 20.714q-15.143 11.714-27.143 27.143-32.285 1.428-61.572 12.714t-49.428 27.857-32 37.143-11.857 40.857v36.572q0 11.428 8 19.428t19.428 8h82.285v27.428q0 18.857 13.428 32.286t32.285 13.428h164.571q18.857 0 32.286-13.428t13.428-32.286v-27.428h82.286q11.428 0 19.428-8t8-19.428z" horiz-adv-x="476" />
148
- <glyph unicode="&#xf092;" d="M112.572 89.143q-2.285-2.572-5.715 0.857-3.715 3.143-1.143 5.428 2.285 2.572 5.715-0.857 3.428-3.143 1.143-5.428zM100.572 106.572q2.572-3.428 0-5.428-2.285-1.714-4.857 2t0 5.143q2.572 2 4.857-1.714zM83.143 123.714q-1.428-2-3.715-0.572-2.857 1.428-2 3.428 0.857 1.428 3.715 0.572 2.857-1.428 2-3.428zM92 114q-1.715-2-4.572 0.857-2.572 3.143-0.572 4.572 1.715 1.714 4.572-0.857 2.572-3.143 0.572-4.572zM128.857 82q-1.143-3.428-5.428-1.714-4.857 1.143-3.715 4.286t5.428 2q4.572-1.428 3.715-4.572zM146.857 80.572q0-3.143-4.571-3.143-4.857-0.572-4.857 3.143 0 3.143 4.571 3.143 4.857 0.572 4.857-3.143zM163.429 83.429q0.571-2.857-4-4t-5.143 2.286 4 4.286q4.572 0.572 5.143-2.572zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-64q-4.572 0-7 0.286t-5.572 1.428-4.572 4.143-1.428 7.857v68.286q0 27.714-14.857 40.572 16.286 1.714 29.286 5.143t26.857 11.143 23.143 19 15.143 30 5.857 43q0 34.572-22.572 58.857 10.572 26-2.286 58.286-8 2.572-23.143-3.143t-26.286-12.572l-10.857-6.857q-26.572 7.429-54.857 7.429t-54.857-7.428q-4.572 3.143-12.143 7.714t-23.857 11-24.572 3.857q-12.572-32.285-2-58.285-22.572-24.286-22.572-58.857 0-24.285 5.857-42.857t15-30 23-19.143 26.857-11.143 29.285-5.143q-11.428-10.286-14-29.428-6-2.857-12.857-4.286t-16.285-1.428-18.715 6.143-15.857 17.857q-5.428 9.143-13.857 14.857t-14.143 6.857l-5.715 0.857q-6 0-8.285-1.286t-1.428-3.286 2.572-4 3.715-3.428l2-1.428q6.285-2.857 12.428-10.857t9-14.572l2.857-6.572q3.715-10.857 12.572-17.572t19.143-8.572 19.857-2 15.857 1l6.572 1.143q0-10.857 0.143-29.428t0.143-19.428q0-6.286-3.143-9.572t-6.286-3.714-9.429-0.428h-64q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
149
- <glyph unicode="&#xf093;" d="M365.714 54.857q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM438.857 54.857q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM475.428 118.857v-91.428q0-11.428-8-19.428t-19.428-8h-420.572q-11.428 0-19.428 8t-8 19.428v91.428q0 11.428 8 19.428t19.428 8h122q6-16 20.143-26.286t31.571-10.286h73.143q17.428 0 31.572 10.286t20.143 26.286h122q11.428 0 19.428-8t8-19.428zM382.572 304q-4.857-11.428-16.857-11.428h-73.143v-128q0-7.428-5.428-12.857t-12.857-5.428h-73.143q-7.429 0-12.857 5.428t-5.428 12.857v128h-73.143q-12 0-16.857 11.428-4.857 11.143 4 19.714l128 128q5.143 5.428 12.857 5.428t12.857-5.428l128-128q8.857-8.572 4-19.714z" horiz-adv-x="476" />
150
- <glyph unicode="&#xf094;" d="M402 239.429q0 12.572-2 32.428t-5.143 27.572q-3.428 8.572-4.857 12.572t-2.572 10.428-1.143 13.857q0 6.572 1.428 19.572t1.428 19.286q0 10.571-2.857 15.714-1.143 0.286-3.714 0.286-5.428 0-16.572-1.286t-16.857-1.286q-17.143 0-50.286 6.857t-50 6.857q-12.286 0-27-3.285t-24.286-6.715-25.572-9.714q-39.143-15.428-57.715-29.428-27.428-20.857-45.572-54.143t-25.143-67.428-7-71q0-11.428 3.572-34.286t3.572-34.572q0-6.572-3.143-19t-3.143-18.714 3.428-10.428 9.715-4.143q6.857 0 20.715 3.143t21 3.143q16.285 0 48.428-4.428t48.428-4.428q51.714 0 81.143 10.286 36.857 12.857 67.286 43.572t47.428 70.143 17 78.572zM438.572 240q0-47.143-20-93.571t-56-82.286-80.286-51.572q-35.428-12.572-93.143-12.572-16.285 0-48.571 4.143t-48.285 4.143q-6.857 0-20.715-4.143t-21-4.143q-20.857 0-35.285 15.857t-14.428 36.714q0 6.857 3.143 19.428t3.143 19.143q0 11.428-3.571 34.428t-3.571 34.714q0 31.714 5.143 62.143t15.572 59.857 28.715 55.428 42.857 44.571q22.285 16.857 66.285 34.286 55.428 22.286 90.286 22.286 17.143 0 50.143-6.857t49.572-6.857q5.428 0 16.286 1.428t16.572 1.429q23.143 0 33.714-14.429t10.572-38.428q0-6.572-1.428-19.428t-1.428-19.428q0-2.857 0.286-5.286t0.857-4.857 1.143-3.857 1.857-4.572 1.857-4.857q4.572-11.428 7.143-33.857t2.572-39z" />
151
- <glyph unicode="&#xf095;" d="M402.286 121.143q0-7.714-2.857-20.143t-6-19.572q-6-14.286-34.857-30.286-26.857-14.572-53.143-14.572-7.714 0-15 1t-16.428 3.572-13.572 4.143-15.857 5.857-14 5.143q-28 10-50 23.714-36.571 22.572-75.572 61.572t-61.572 75.572q-13.715 22-23.715 50-0.857 2.571-5.143 14t-5.857 15.857-4.143 13.572-3.571 16.428-1 15q0 26.286 14.572 53.143 16 28.857 30.285 34.857 7.143 3.143 19.572 6t20.143 2.857q4 0 6-0.857 5.143-1.714 15.143-21.714 3.143-5.429 8.572-15.429t10-18.143 8.857-15.286q0.857-1.143 5-7.143t6.143-10.143 2-8.143q0-5.714-8.143-14.286t-17.715-15.714-17.715-15.143-8.143-13.143q0-2.572 1.428-6.428t2.428-5.857 4-6.857 3.285-5.428q21.715-39.143 49.715-67.143t67.143-49.714q0.571-0.286 5.428-3.286t6.857-4 5.857-2.428 6.428-1.428q5.143 0 13.143 8.143t15.143 17.714 15.714 17.714 14.286 8.143q4 0 8.143-2t10.143-6.143 7.143-5q7.143-4.286 15.286-8.857t18.143-10 15.428-8.572q20-10 21.714-15.143 0.857-2 0.857-6z" horiz-adv-x="403" />
152
- <glyph unicode="&#xf096;" d="M320 402.286h-237.714q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.714q18.857 0 32.286 13.428t13.428 32.286v237.714q0 18.857-13.428 32.286t-32.286 13.428zM402.286 356.572v-237.714q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h237.714q34 0 58.143-24.143t24.143-58.143z" horiz-adv-x="403" />
153
- <glyph unicode="&#xf097;" d="M329.143 402.286h-292.572v-354.857l146.286 140.286 25.428-24.286 120.857-116v354.857zM332.572 438.857q6.572 0 12.572-2.572 9.428-3.714 15-11.714t5.572-17.714v-368.286q0-9.714-5.572-17.714t-15-11.714q-5.428-2.286-12.572-2.286-13.714 0-23.714 9.143l-126 121.143-126-121.143q-10.285-9.428-23.715-9.428-6.572 0-12.572 2.572-9.428 3.714-15 11.714t-5.572 17.714v368.286q0 9.714 5.572 17.714t15 11.714q6 2.572 12.572 2.572h299.428z" horiz-adv-x="366" />
154
- <glyph unicode="&#xf098;" d="M365.714 134.572q0 3.143-0.572 4.572-0.857 2.286-11 8.428t-25.286 14.143l-15.143 8.286q-1.428 0.857-5.428 3.714t-7.143 4.286-6 1.428q-5.143 0-13.428-9.286t-16.286-18.714-12.572-9.428q-2 0-4.714 1t-4.428 1.857-4.857 2.714-4 2.428q-28.285 15.714-48.715 36.143t-36.143 48.714q-0.571 0.857-2.429 4t-2.714 4.857-1.857 4.429-1 4.714q0 3.714 5.857 9.572t12.857 11 12.857 11.286 5.857 10.428q0 2.857-1.429 6t-4.286 7.143-3.714 5.429q-0.857 1.714-4.286 8.143t-7.143 13-7.571 13.572-7.143 11.572-4.714 5.143-4.571 0.572q-13.715 0-28.857-6.286-13.143-6-22.857-27t-9.715-37.285q0-4.572 0.715-9.714t1.428-8.714 2.572-9.428 2.857-8.428 3.572-9.428 3.143-8.572q17.143-46.857 61.857-91.572t91.572-61.857q1.714-0.572 8.572-3.143t9.428-3.572 8.428-2.857 9.428-2.572 8.714-1.428 9.714-0.714q16.286 0 37.286 9.714t27 22.857q6.286 15.143 6.286 28.857zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
155
- <glyph unicode="&#xf099;" d="M462.857 358.857q-19.143-28-46.286-47.714 0.286-4 0.286-12 0-37.143-10.857-74.143t-33-71-52.714-60.143-73.714-41.714-92.286-15.572q-77.428 0-141.714 41.428 10-1.143 22.285-1.143 64.285 0 114.572 39.428-30 0.572-53.715 18.428t-32.572 45.572q9.428-1.428 17.428-1.428 12.285 0 24.285 3.143-32 6.572-53 31.857t-21 58.714v1.143q19.428-10.857 41.715-11.714-18.857 12.572-30 32.857t-11.143 44q0 25.143 12.572 46.572 34.572-42.572 84.143-68.143t106.143-28.428q-2.286 10.857-2.286 21.143 0 38.286 27 65.286t65.286 27q40 0 67.428-29.143 31.143 6 58.572 22.286-10.572-32.857-40.572-50.857 26.572 2.857 53.143 14.286z" horiz-adv-x="476" />
156
- <glyph unicode="&#xf09a;" d="M146 316.572h73.428l-8.572-81.143h-64.857v-235.428h-97.428v235.428h-48.572v81.143h48.572v48.857q0 52 24.572 78.715t80.857 26.714h64.857v-81.143h-40.572q-11.143 0-17.857-1.857t-9.714-6.714-3.857-9.857-0.857-14.143v-40.572z" horiz-adv-x="220" />
157
- <glyph unicode="&#xf09b;" d="M438.857 219.429q0-71.714-41.857-129t-108.143-79.286q-7.714-1.428-11.286 2t-3.572 8.572v60.286q0 27.714-14.857 40.572 16.286 1.714 29.286 5.143t26.857 11.143 23.143 19 15.143 30 5.857 43q0 34.572-22.572 58.857 10.572 26-2.286 58.286-8 2.572-23.143-3.143t-26.286-12.572l-10.857-6.857q-26.572 7.429-54.857 7.429t-54.857-7.428q-4.572 3.143-12.143 7.714t-23.857 11-24.572 3.857q-12.572-32.285-2-58.285-22.572-24.286-22.572-58.857 0-24.285 5.857-42.857t15-30 23-19.143 26.857-11.143 29.285-5.143q-11.428-10.286-14-29.428-6-2.857-12.857-4.286t-16.285-1.428-18.715 6.143-15.857 17.857q-5.428 9.143-13.857 14.857t-14.143 6.857l-5.715 0.857q-6 0-8.285-1.286t-1.428-3.286 2.572-4 3.715-3.428l2-1.428q6.285-2.857 12.428-10.857t9-14.572l2.857-6.572q3.715-10.857 12.572-17.572t19.143-8.572 19.857-2 15.857 1l6.572 1.143q0-10.857 0.143-25.428t0.143-15.428q0-5.143-3.714-8.572t-11.428-2q-66.285 22-108.143 79.286t-41.857 129q0 59.714 29.428 110.143t79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
158
- <glyph unicode="&#xf09c;" d="M475.428 310.857v-73.143q0-7.428-5.428-12.857t-12.857-5.428h-18.286q-7.428 0-12.857 5.428t-5.428 12.857v73.143q0 30.286-21.428 51.714t-51.714 21.428-51.714-21.428-21.428-51.714v-54.857h27.428q11.428 0 19.428-8t8-19.428v-164.571q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v164.571q0 11.429 8 19.429t19.428 8h192v54.857q0 52.857 37.572 90.428t90.428 37.572 90.428-37.572 37.572-90.428z" horiz-adv-x="476" />
159
- <glyph unicode="&#xf09d;" d="M502.857 438.857q18.857 0 32.286-13.428t13.428-32.286v-347.428q0-18.857-13.428-32.286t-32.286-13.428h-457.143q-18.857 0-32.285 13.428t-13.428 32.286v347.428q0 18.857 13.428 32.286t32.285 13.428h457.143zM45.715 402.286q-3.715 0-6.428-2.714t-2.715-6.428v-64h475.428v64q0 3.714-2.714 6.428t-6.428 2.714h-457.143zM502.857 36.572q3.714 0 6.428 2.714t2.714 6.428v173.714h-475.428v-173.714q0-3.714 2.715-6.428t6.428-2.714h457.143zM73.143 73.143v36.572h73.143v-36.572h-73.143zM182.857 73.143v36.572h109.715v-36.572h-109.714z" horiz-adv-x="549" />
160
- <glyph unicode="&#xf09e;" d="M109.715 91.429q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857 16 38.857 38.857 16 38.857-16 16-38.857zM256 56.286q0.572-8-4.857-13.714-5.143-6-13.429-6h-38.572q-7.143 0-12.286 4.714t-5.714 11.857q-6.286 65.428-52.714 111.857t-111.857 52.714q-7.143 0.572-11.857 5.714t-4.715 12.286v38.572q0 8.286 6 13.428 4.857 4.857 12.286 4.857h1.428q45.715-3.714 87.428-23t74-51.857q32.572-32.286 51.857-74t23-87.428zM402.286 55.714q0.572-7.714-5.143-13.428-5.143-5.714-13.143-5.714h-40.857q-7.428 0-12.714 5t-5.572 12.143q-3.428 61.428-28.857 116.714t-66.143 96-96 66.143-116.715 29.143q-7.143 0.285-12.143 5.572t-5 12.428v40.857q0 8 5.715 13.143 5.143 5.143 12.572 5.143h0.857q74.857-3.714 143.286-34.286t121.572-84q53.428-53.143 84-121.572t34.286-143.286z" horiz-adv-x="403" />
161
- <glyph unicode="&#xf0a0;" d="M297.143 128q0-9.428-6.714-16.143t-16.143-6.714-16.143 6.714-6.714 16.143 6.714 16.143 16.143 6.714 16.143-6.714 6.714-16.143zM370.286 128q0-9.428-6.714-16.143t-16.143-6.714-16.143 6.714-6.714 16.143 6.714 16.143 16.143 6.714 16.143-6.714 6.714-16.143zM402.286 82.286v91.428q0 3.714-2.714 6.428t-6.428 2.714h-347.428q-3.715 0-6.428-2.714t-2.715-6.428v-91.428q0-3.714 2.715-6.428t6.428-2.714h347.428q3.714 0 6.428 2.714t2.714 6.428zM50.857 219.429h337.143l-44.857 137.714q-1.143 3.714-4.572 6.143t-7.428 2.428h-223.429q-4 0-7.428-2.428t-4.572-6.143zM438.857 173.714v-91.428q0-18.857-13.428-32.286t-32.286-13.428h-347.428q-18.857 0-32.285 13.428t-13.428 32.286v91.428q0 7.143 4.572 21.428l56.285 173.143q4.857 15.143 18 24.572t28.857 9.428h223.428q15.714 0 28.857-9.428t18-24.572l56.286-173.143q4.572-14.286 4.572-21.428z" />
162
- <glyph unicode="&#xf0a1;" d="M475.428 292.572q15.143 0 25.857-10.714t10.714-25.857-10.714-25.857-25.857-10.714v-109.714q0-14.857-10.857-25.714t-25.714-10.857q-119.143 99.143-232 108.572-16.572-5.428-26-18.857t-8.857-28.714 11.429-26.428q-5.714-9.428-6.572-18.714t1.714-16.572 9.572-15.714 13.714-14.286 17.572-14.428q-8.286-16.572-31.857-23.714t-48.143-3.286-37.715 15.857q-2 6.572-8.428 25t-9.143 27-6.572 25.428-4.285 28.857 1 28.143 6.285 31.572h-34.857q-18.857 0-32.285 13.428t-13.428 32.286v54.857q0 18.857 13.428 32.286t32.285 13.428h137.143q124.286 0 256 109.714 14.857 0 25.714-10.857t10.857-25.714v-109.714zM438.857 120v272.572q-112.572-86.286-219.429-98v-77.143q107.715-12 219.429-97.428z" />
163
- <glyph unicode="&#xf0a2;" d="M242.286-9.143q0 4.572-4.572 4.572-16.857 0-29 12.143t-12.143 29q0 4.572-4.571 4.572t-4.572-4.572q0-20.857 14.714-35.572t35.572-14.714q4.572 0 4.572 4.572zM52.285 73.143h370.857q-46.857 51.714-70.428 117.572t-23.572 138.428q0 73.143-91.428 73.143t-91.428-73.143q0-72.571-23.572-138.428t-70.428-117.572zM475.428 73.143q0-14.857-10.857-25.714t-25.714-10.857h-128q0-30.286-21.428-51.714t-51.714-21.429-51.714 21.429-21.428 51.714h-128q-14.857 0-25.715 10.857t-10.857 25.714q54.285 46 82 113.572t27.715 142.428q0 47.143 27.429 74.857t75.428 33.428q-2.286 5.143-2.286 10.572 0 11.428 8 19.428t19.428 8 19.428-8 8-19.428q0-5.428-2.286-10.572 48-5.714 75.428-33.428t27.428-74.857q0-74.857 27.714-142.428t82-113.572z" horiz-adv-x="476" />
164
- <glyph unicode="&#xf0a3;" d="M393.143 219.429l39.428-38.572q8.572-8 5.714-20-3.428-11.714-14.857-14.572l-53.714-13.714 15.143-53.143q3.428-11.714-5.428-20-8.286-8.857-20-5.428l-53.143 15.143-13.714-53.714q-2.857-11.428-14.572-14.857-3.428-0.572-5.428-0.572-8.857 0-14.572 6.286l-38.572 39.428-38.572-39.428q-8-8.572-20-5.714-11.714 3.143-14.572 14.857l-13.714 53.714-53.143-15.143q-11.715-3.428-20 5.428-8.857 8.286-5.428 20l15.143 53.143-53.715 13.714q-11.428 2.857-14.857 14.572-2.857 12 5.715 20l39.428 38.572-39.428 38.572q-8.572 8-5.715 20 3.429 11.714 14.857 14.572l53.715 13.714-15.143 53.143q-3.428 11.714 5.428 20 8.285 8.857 20 5.429l53.143-15.143 13.714 53.714q2.857 11.714 14.572 14.572 11.714 3.428 20-5.428l38.572-39.714 38.572 39.714q8.286 8.571 20 5.428 11.714-2.857 14.572-14.572l13.714-53.714 53.143 15.143q11.714 3.428 20-5.429 8.857-8.286 5.428-20l-15.143-53.143 53.714-13.714q11.428-2.857 14.857-14.572 2.857-12-5.714-20z" />
165
- <glyph unicode="&#xf0a4;" d="M73.143 91.429q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM475.428 256q0 14.572-11.143 25.572t-25.428 11h-164.572q0 5.714 4.286 13.857t9.428 15.714 9.428 19.429 4.286 24.143q0 19.143-12.714 27.857t-33 8.714q-6.857 0-25.714-39.714-6.857-12.572-10.572-18.572-11.428-18.286-32-41.428-20.286-23.143-28.857-30.286-19.715-16.286-40-16.286h-9.143v-182.857h9.143q20.571 0 47.715-9.143t55.286-18.286 51.286-9.143q54 0 54 47.714 0 7.428-1.428 16 8.572 4.572 13.572 15t5 21-5.143 19.714q15.143 14.286 15.143 34 0 7.143-2.857 15.857t-7.143 13.572h94.572q14.857 0 25.714 10.857t10.857 25.715zM512 256.286q0-30-21.572-51.714t-51.572-21.714h-48.286q-1.143-17.714-10.572-34 0.857-6 0.857-12.286 0-28.857-17.143-50.857 0.286-39.714-24.286-62.714t-64.857-23q-38 0-92 19.714-46.857 16.857-63.715 16.857h-82.285q-15.143 0-25.857 10.714t-10.714 25.857v182.857q0 15.143 10.714 25.857t25.857 10.714h82.285q2.857 0 6.143 1.286t6.715 4 6.429 5.143 6.857 6.429 5.857 6.143 5.428 6.143 4 4.857q18.572 21.143 28.572 36.857 3.714 6 9.428 17.714t10.572 20.572 11.572 18 15.714 14.143 19.857 5q35.715 0 59-19.143t23.286-54q0-19.428-6.286-36.572h106.857q29.714 0 51.428-21.714t21.714-51.143z" />
166
- <glyph unicode="&#xf0a5;" d="M393.143 73.143h9.143v182.857h-9.143q-10 0-19.286 3.429t-17.857 10.572-14.286 13.143-14 15.429q-0.572 0.857-1 1.286t-1.143 1.286-1.286 1.428q-20.572 23.143-32 41.429-4 6.286-10.857 19.428-0.286 0.857-3 6.428t-5.286 10.286-5.714 10.143-6.143 8.714-5.286 3.286q-20.286 0-33-8.715t-12.714-27.857q0-12.286 4.286-24.143t9.428-19.428 9.428-15.714 4.286-13.857h-164.571q-14.285 0-25.428-11t-11.143-25.571q0-14.857 10.857-25.714t25.715-10.857h94.571q-4.286-4.857-7.143-13.572t-2.857-15.857q0-19.714 15.143-34-5.143-9.143-5.143-19.714t5-21 13.572-15q-1.143-6.857-1.143-16 0-24.286 13.857-36t38.714-11.714q24 0 52.286 9.143t55.428 18.286 47.714 9.143zM475.428 91.429q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM512 256v-182.857q0-15.143-10.714-25.857t-25.857-10.714h-82.286q-16.857 0-63.714-16.857-54.286-19.714-90.572-19.714-40.572 0-65.714 22.143t-24.857 62.143l0.286 1.428q-17.429 21.714-17.429 50.857 0 6.286 0.857 12.286-9.428 16.286-10.572 34h-48.285q-30 0-51.572 21.714t-21.572 51.714q0 29.428 21.715 51.143t51.428 21.715h106.857q-6.286 17.143-6.286 36.572 0 34.857 23.285 54t59 19.143q10.857 0 19.857-5t15.714-14.143 11.572-18 10.572-20.572 9.428-17.715q10-15.714 28.572-36.857 0.572-0.857 4-4.857t5.428-6.143 5.857-6.143 6.857-6.428 6.428-5.143 6.714-4 6.143-1.286h82.286q15.143 0 25.857-10.714t10.714-25.857z" />
167
- <glyph unicode="&#xf0a6;" d="M365.714 18.286q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM402.286 236.572q0 54-47.714 54-7.428 0-16-1.428-4.572 8.572-15 13.572t-21 5-19.714-5.143q-14.286 15.143-34 15.143-7.143 0-15.857-2.857t-13.571-7.143v94.571q0 14.857-10.857 25.715t-25.715 10.857q-14.572 0-25.572-11.143t-11-25.429v-164.571q-5.714 0-13.857 4.286t-15.715 9.428-19.428 9.428-24.143 4.286q-19.143 0-27.857-12.714t-8.715-33q0-6.857 39.715-25.714 12.572-6.857 18.572-10.572 18.285-11.428 41.428-32 23.143-20.286 30.286-28.857 16.286-19.714 16.286-40v-9.143h182.857v9.143q0 20.572 9.143 47.714t18.286 55.286 9.143 51.286zM438.857 238q0-38-19.714-92-16.857-46.857-16.857-63.714v-82.286q0-15.143-10.714-25.857t-25.857-10.715h-182.857q-15.143 0-25.857 10.715t-10.714 25.857v82.286q0 2.857-1.286 6.143t-4 6.714-5.143 6.428-6.429 6.857-6.143 5.857-6.143 5.428-4.857 4q-21.143 18.572-36.857 28.572-6 3.714-17.715 9.428t-20.572 10.572-18 11.572-14.143 15.714-5 19.857q0 35.715 19.143 59t54 23.286q19.428 0 36.572-6.286v106.857q0 29.715 21.715 51.428t51.143 21.715q30 0 51.715-21.572t21.714-51.572v-48.285q17.714-1.143 34-10.572 6 0.857 12.286 0.857 28.857 0 50.857-17.143 39.714 0.286 62.714-24.286t23-64.857z" />
168
- <glyph unicode="&#xf0a7;" d="M402.286 201.143q0 24-9.143 52.286t-18.286 55.428-9.143 47.714v9.143h-182.857v-9.143q0-10-3.429-19.286t-10.572-17.857-13.143-14.286-15.429-14q-2.571-2.286-4-3.429-23.143-20.571-41.428-32-6.285-4-19.428-10.857-0.857-0.286-6.428-3t-10.285-5.286-10.143-5.714-8.715-6.143-3.285-5.286q0-20.285 8.715-33t27.857-12.714q12.285 0 24.143 4.286t19.428 9.428 15.714 9.428 13.857 4.286v-164.571q0-14.286 11-25.428t25.572-11.143q14.857 0 25.714 10.857t10.857 25.714v94.572q13.143-10 29.429-10 19.714 0 34 15.143 9.143-5.143 19.714-5.143t21 5 15 13.572q6.857-1.143 16-1.143 24.286 0 36 13.857t11.714 38.714zM365.714 420.572q0 7.429-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.429 12.857 5.429 5.428 12.857zM438.857 202.286q0-40.572-22.143-65.714t-62.143-24.857l-1.428 0.286q-21.714-17.428-50.857-17.428-6.286 0-12.286 0.857-15.428-8.572-34-10.572v-48.286q0-30-21.714-51.572t-51.714-21.571q-29.428 0-51.143 21.714t-21.715 51.428v106.857q-15.428-6.286-36.572-6.286-34.572 0-53.857 23.286t-19.285 59q0 10.857 5 19.857t14.143 15.714 18 11.572 20.572 10.572 17.715 9.428q15.715 10 36.857 28.572 0.857 0.571 4.857 4t6.143 5.428 6.143 5.857 6.429 6.857 5.143 6.428 4 6.714 1.286 6.143v82.286q0 15.143 10.714 25.857t25.857 10.714h182.857q15.143 0 25.857-10.714t10.714-25.857v-82.286q0-16.857 16.857-63.714 19.714-54.285 19.714-90.571z" />
169
- <glyph unicode="&#xf0a8;" d="M365.714 201.143v36.572q0 7.428-5.428 12.857t-12.857 5.429h-143.429l54 54q5.428 5.428 5.428 12.857t-5.428 12.857l-26 26q-5.143 5.143-12.857 5.143t-12.857-5.143l-129.429-129.429q-5.143-5.143-5.143-12.857t5.143-12.857l129.429-129.428q5.143-5.143 12.857-5.143t12.857 5.143l26 26q5.143 5.143 5.143 12.857t-5.143 12.857l-54 54h143.428q7.428 0 12.857 5.428t5.428 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
170
- <glyph unicode="&#xf0a9;" d="M367.143 219.429q0 7.714-5.143 12.857l-129.429 129.429q-5.143 5.143-12.857 5.143t-12.857-5.143l-26-26q-5.143-5.143-5.143-12.857t5.143-12.857l54-54h-143.429q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h143.429l-54-54q-5.429-5.428-5.429-12.857t5.428-12.857l26-26q5.143-5.143 12.857-5.143t12.857 5.143l129.429 129.428q5.143 5.143 5.143 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
171
- <glyph unicode="&#xf0aa;" d="M366.857 219.714q0 7.714-5.143 12.857l-129.429 129.429q-5.143 5.143-12.857 5.143t-12.857-5.143l-129.429-129.429q-5.143-5.143-5.143-12.857t5.143-12.857l26-26q5.143-5.143 12.857-5.143t12.857 5.143l54 54v-143.428q0-7.428 5.428-12.857t12.857-5.428h36.571q7.428 0 12.857 5.428t5.429 12.857v143.428l54-54q5.428-5.428 12.857-5.428t12.857 5.428l26 26q5.143 5.143 5.143 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
172
- <glyph unicode="&#xf0ab;" d="M366.857 219.143q0 7.714-5.143 12.857l-26 26q-5.143 5.143-12.857 5.143t-12.857-5.143l-54-54v143.428q0 7.428-5.428 12.857t-12.857 5.428h-36.571q-7.428 0-12.857-5.428t-5.429-12.857v-143.428l-54 54q-5.428 5.428-12.857 5.428t-12.857-5.428l-26-26q-5.143-5.143-5.143-12.857t5.143-12.857l129.429-129.428q5.143-5.143 12.857-5.143t12.857 5.143l129.429 129.428q5.143 5.143 5.143 12.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
173
- <glyph unicode="&#xf0ac;" d="M219.429 438.857q59.715 0 110.143-29.428t79.857-79.857 29.428-110.143-29.428-110.143-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428zM297.714 290q-0.572-0.286-2.714-2.714t-3.857-2.714q0.572 0 1.286 1.429t1.428 3.143 1 2q1.714 2 6.286 4.286 4 1.714 14.857 3.429 9.714 2.286 14.572-3.143-0.572 0.572 2.714 3.714t4.143 3.429q0.857 0.571 4.286 1.286t4.286 2.143l0.572 6.286q-3.428-0.286-5 2t-1.857 6q0-0.571-1.714-2.286 0 2-1.286 2.286t-3.286-0.286-2.572-0.286q-2.857 0.857-4.286 2.143t-2.286 4.714-1.143 4.286q-0.572 1.428-2.714 3t-2.714 3q-0.286 0.571-0.714 1.571t-0.857 1.857-1.143 1.571-1.572 0.714-2-1.428-2.143-2.857-1.286-1.428q-0.857 0.571-1.714 0.428t-1.286-0.286-1.286-0.857-1.428-1q-0.857-0.572-2.428-0.857t-2.428-0.571q4.286 1.428-0.286 3.143-2.857 1.143-4.572 0.857 2.572 1.143 2.143 3.428t-2.428 4h1.428q-0.286 1.143-2.428 2.428t-5 2.429-3.714 1.714q-2.286 1.428-9.714 2.714t-9.428 0.143q-1.428-1.714-1.286-3t1.143-4 1-3.572q0.286-1.714-1.572-3.714t-1.857-3.428q0-2 4-4.428t2.857-6.143q-0.857-2.286-4.572-4.571t-4.572-3.429q-1.428-2.286-0.428-5.286t3-4.714q0.572-0.571 0.428-1.143t-1-1.286-1.572-1.143-1.857-1l-0.857-0.571q-3.143-1.429-5.857 1.714t-3.857 7.428q-2 7.143-4.572 8.572-6.572 2.286-8.286-0.286-1.429 3.714-11.714 7.428-7.143 2.571-16.572 1.143 1.714 0.286 0 4.286-2 4.286-5.428 3.429 0.857 1.714 1.143 5t0.286 3.857q0.857 3.715 3.429 6.572 0.286 0.286 2 2.428t2.714 3.857 0.143 1.714q10-1.143 14.286 3.143 1.429 1.428 3.286 4.857t3 4.857q2.571 1.715 4 1.572t4.143-1.572 4.143-1.428q4-0.285 4.429 3.143t-2.143 5.714q3.429-0.286 0.857 4.857-1.429 2-2.286 2.571-3.429 1.143-7.714-1.428-2.286-1.143 0.571-2.286-0.286 0.286-2.714-3t-4.714-5-4.571 1.428q-0.286 0.286-1.571 3.857t-2.714 3.857q-2.286 0-4.571-4.286 0.857 2.286-3.143 4.286t-6.857 2.285q5.428 3.428-2.286 7.715-2 1.143-5.857 1.428t-5.571-1.143q-1.429-2-1.571-3.285t1.429-2.286 3-1.572 3.286-1.143 2.429-0.857q4-2.857 2.286-4-0.571-0.286-2.429-1t-3.286-1.286-1.714-1.143q-0.857-1.143 0-4t-0.571-4q-1.429 1.428-2.571 5t-2 4.714q2-2.572-7.143-1.714l-2.857 0.286q-1.143 0-4.572-0.572t-5.857-0.286-3.857 2.286q-1.143 2.285 0 5.714 0.286 1.143 1.143 0.572-1.143 0.857-3.143 2.714t-2.857 2.428q-13.143-4.285-26.857-11.714 1.714-0.286 3.429 0.286 1.429 0.572 3.714 1.857t2.857 1.572q9.714 4 12 2l1.429 1.428q4-4.572 5.714-7.143-2 1.143-8.571 0.286-5.714-1.715-6.286-3.429 2-3.428 1.429-5.143-1.143 0.857-3.286 2.857t-4.143 3.143-4.286 1.428q-4.572 0-6.286-0.286-41.715-22.857-67.143-63.428 2-2 3.428-2.286 1.143-0.286 1.428-2.572t0.715-3.143 3.285 0.857q2.572-2.286 0.857-5.428 0.285 0.286 12.572-7.714 5.428-4.857 6-6 0.857-3.143-2.857-5.143-0.285 0.572-2.572 2.572t-2.572 1.143q-0.857-1.428 0.143-5.286t3-3.571q-2 0-2.715-4.572t-0.715-10.143-0.285-6.714l0.572-0.286q-0.857-3.428 1.572-9.857t6.143-5.572q-3.715-0.857 5.715-12.286 1.715-2.286 2.285-2.572 0.857-0.571 3.428-2.143t4.285-2.857 2.857-3q1.143-1.428 2.857-6.428t4-6.714q-0.572-1.714 2.715-5.714t3-6.572q-0.285 0-0.715-0.286t-0.715-0.286q0.857-2 4.428-4t4.429-3.714q0.286-0.857 0.571-2.857t0.857-3.143 2.286-0.572q0.571 5.714-6.857 17.714-4.285 7.143-4.857 8.286-0.857 1.428-1.572 4.428t-1.285 4.143q0.572 0 1.715-0.428t2.428-1 2.143-1.143 0.572-0.857q-0.857-2 0.572-5t3.429-5.286 4.857-5.428 3.429-3.714q1.714-1.714 4-5.572t0-3.857q2.571 0 5.714-2.857t4.857-5.714q1.429-2.286 2.286-7.428t1.429-6.857q0.571-2 2.429-3.857t3.571-2.714l4.571-2.286t3.714-2q1.429-0.572 5.286-3t6.143-3.286q2.857-1.143 4.571-1.143t4.143 0.714 3.857 1q4.286 0.572 8.286-4.286t6-6q10.286-5.428 15.714-3.143-0.571-0.286 0.143-2.143t2.286-4.428 2.571-4.143 1.571-2.428q1.429-1.714 5.143-4.286t5.143-4.286q1.714 1.143 2 2.572-0.857-2.286 2-5.714t5.143-2.857q4 0.857 4 9.143-8.857-4.286-14 5.143 0 0.286-0.714 1.572t-1.143 2.428-0.714 2.428 0 2.143 1.429 0.857q2.571 0 2.857 1t-0.571 3.572-1.143 3.714q-0.286 2.286-3.143 5.714t-3.429 4.286q-1.429-2.572-4.571-2.286t-4.572 2.572q0-0.286-0.429-1.572t-0.429-1.857q-3.714 0-4.286 0.286 0.286 0.857 0.714 5t1 6.428q0.286 1.143 1.571 3.428t2.143 4.143 1.143 3.572-1.286 2.714-5 0.714q-5.429-0.286-7.429-5.714-0.286-0.857-0.857-3t-1.429-3.286-2.571-2q-2-0.857-6.857-0.572t-6.857 1.428q-3.714 2.286-6.429 8.286t-2.714 10.572q0 2.857 0.714 7.572t0.857 7.143-1.571 7q0.857 0.572 2.571 2.714t2.857 3q0.571 0.286 1.286 0.428t1.286 0 1.143 0.428 0.857 1.714q-0.286 0.286-1.143 0.857-0.857 0.857-1.143 0.857 2-0.857 8.143 0.428t7.857-0.428q4.286-3.143 6.286 0.572 0 0.286-0.714 2.714t-0.143 3.857q1.429-7.714 8.286-2.572 0.857-0.857 4.429-1.428t5-1.428q0.857-0.572 2-1.572t1.571-1.286 1.429 0.143 2.429 1.857q2.857-4 3.429-6.857 3.143-11.428 5.428-12.572 2-0.857 3.143-0.572t1.286 2.714 0 4-0.429 3.572l-0.286 2.286v5.143l-0.286 2.286q-4.286 0.857-5.286 3.428t0.429 5.286 4.286 5.286q0.286 0.286 2.286 1t4.429 1.857 3.572 2.286q6 5.429 4.286 10 2 0 3.143 2.572-0.286 0-1.428 0.857t-2.143 1.429-1.286 0.571q2.572 1.429 0.572 4.572 1.428 0.857 2.143 3.143t2.143 2.857q2.572-3.429 6-0.572 2 2.286 0.286 4.572 1.428 2 5.857 3t5.286 2.714q2-0.572 2.286 0.571t0.286 3.429 0.857 3.428q1.143 1.429 4.286 2.572t3.714 1.428l4.857 3.143q0.857 1.143 0 1.143 5.143-0.571 8.857 3.143 2.857 3.143-1.714 5.714 0.857 1.714-0.857 2.714t-4.286 1.571q0.857 0.286 3.286 0.143t3 0.428q4.286 2.857-2 4.572-4.857 1.428-12.286-3.429zM251.143 39.429q58.857 10.286 100.285 54-0.857 0.857-3.572 1.286t-3.572 1q-5.143 2-6.857 2.286 0.286 2-0.714 3.714t-2.286 2.572-3.572 2.286-3.143 2q-0.572 0.572-2 1.714t-2 1.572-2.143 1.286-2.428 0.572-2.857-0.286l-0.857-0.286q-0.857-0.286-1.572-0.714t-1.572-0.857-1.143-0.857 0-0.714q-6 4.857-10.286 6.286-1.428 0.286-3.143 1.572t-3 2-2.857 0.428-3.286-2q-1.428-1.428-1.714-4.286t-0.572-3.714q-2 1.428 0 5t0.572 5.286q-0.857 1.714-3 1.286t-3.428-1.286-3.286-2.428-2.572-1.857-2.428-1.572-2.428-2.143q-0.857-1.143-1.714-3.428t-1.428-3.143q-0.572 1.143-3.286 1.857t-2.714 1.572q0.572-2.857 1.143-10t1.428-10.857q2-8.857-3.428-13.714-7.714-7.143-8.286-11.428-1.143-6.286 3.429-7.428 0-2-2.286-5.857t-2-6.143q0-1.714 0.571-4.572z" />
174
- <glyph unicode="&#xf0ad;" d="M109.715 54.857q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM293.714 174.857l-194.857-194.857q-10.572-10.572-25.715-10.572-14.857 0-26 10.572l-30.285 30.857q-10.857 10.286-10.857 25.714 0 15.143 10.857 26l194.571 194.571q11.143-28 32.714-49.571t49.572-32.714zM474.857 299.143q0-11.143-6.572-30.286-13.428-38.286-47-62.143t-73.857-23.857q-52.857 0-90.428 37.572t-37.572 90.428 37.572 90.428 90.428 37.572q16.572 0 34.714-4.715t30.714-13.285q4.572-3.143 4.572-8t-4.572-8l-83.714-48.286v-64l55.143-30.572q1.428 0.857 22.572 13.857t38.714 23.143 20.143 10.143q4.286 0 6.714-2.857t2.428-7.143z" horiz-adv-x="476" />
175
- <glyph unicode="&#xf0ae;" d="M292.572 73.143h182.857v36.572h-182.857v-36.572zM182.857 219.429h292.572v36.572h-292.572v-36.572zM365.714 365.714h109.714v36.572h-109.714v-36.572zM512 128v-73.143q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v73.143q0 7.428 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM512 274.286v-73.143q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v73.143q0 7.429 5.428 12.857t12.857 5.428h475.428q7.428 0 12.857-5.428t5.428-12.857zM512 420.572v-73.143q0-7.428-5.428-12.857t-12.857-5.428h-475.428q-7.428 0-12.857 5.428t-5.428 12.857v73.143q0 7.428 5.428 12.857t12.857 5.429h475.428q7.428 0 12.857-5.429t5.428-12.857z" />
176
- <glyph unicode="&#xf0b0;" d="M400.857 391.143q4.857-11.714-4-20l-140.857-140.857v-212q0-12-11.143-16.857-3.714-1.428-7.143-1.428-7.714 0-12.857 5.428l-73.143 73.143q-5.428 5.428-5.428 12.857v138.857l-140.857 140.857q-8.857 8.286-4 20 4.857 11.143 16.857 11.143h365.714q12 0 16.857-11.143z" horiz-adv-x="403" />
177
- <glyph unicode="&#xf0b1;" d="M182.857 402.286h146.286v36.572h-146.286v-36.572zM512 219.429v-137.143q0-18.857-13.428-32.286t-32.286-13.428h-420.572q-18.857 0-32.285 13.428t-13.428 32.286v137.143h192v-45.714q0-7.428 5.428-12.857t12.857-5.428h91.429q7.428 0 12.857 5.428t5.428 12.857v45.714h192zM292.572 219.429v-36.572h-73.143v36.572h73.143zM512 356.572v-109.714h-512v109.714q0 18.857 13.428 32.286t32.285 13.428h100.572v45.714q0 11.429 8 19.429t19.428 8h164.571q11.428 0 19.428-8t8-19.429v-45.714h100.572q18.857 0 32.286-13.428t13.428-32.286z" />
178
- <glyph unicode="&#xf0b2;" d="M366.572 320.857l-101.428-101.428 101.428-101.428 41.143 41.143q8.286 8.857 20 4 11.143-4.857 11.143-16.857v-128q0-7.428-5.428-12.857t-12.857-5.428h-128q-12 0-16.857 11.428-4.857 11.143 4 19.714l41.143 41.143-101.428 101.428-101.428-101.428 41.143-41.143q8.857-8.572 4-19.714-4.857-11.428-16.857-11.428h-128q-7.428 0-12.857 5.428t-5.428 12.857v128q0 12 11.428 16.857 11.143 4.857 19.715-4l41.143-41.143 101.428 101.428-101.428 101.428-41.143-41.143q-5.428-5.428-12.857-5.428-3.428 0-6.857 1.428-11.428 4.857-11.428 16.857v128q0 7.428 5.428 12.857t12.857 5.429h128q12 0 16.857-11.429 4.857-11.143-4-19.714l-41.143-41.143 101.428-101.428 101.428 101.428-41.143 41.143q-8.857 8.572-4 19.714 4.857 11.429 16.857 11.429h128q7.428 0 12.857-5.429t5.428-12.857v-128q0-12-11.143-16.857-3.714-1.428-7.143-1.428-7.428 0-12.857 5.428z" />
179
- <glyph unicode="&#xf0c0;" d="M169.429 219.429q-46.285-1.428-75.715-36.572h-38.285q-23.428 0-39.428 11.572t-16 33.857q0 100.857 35.428 100.857 1.715 0 12.428-6t27.857-12.143 34-6.143q19.143 0 38 6.572-1.429-10.572-1.429-18.857 0-39.714 23.143-73.143zM475.428 37.429q0-34.286-20.857-54.143t-55.428-19.857h-249.714q-34.572 0-55.428 19.857t-20.857 54.143q0 15.143 1 29.572t4 31.143 7.572 31 12.285 27.857 17.715 23.143 24.428 15.286 31.857 5.714q2.857 0 12.286-6.143t20.857-13.714 30.572-13.714 38.572-6.143 38.572 6.143 30.572 13.714 20.857 13.714 12.286 6.143q17.428 0 31.857-5.714t24.428-15.286 17.714-23.143 12.286-27.857 7.572-31 4-31.143 1-29.572zM182.857 402.286q0-30.285-21.429-51.714t-51.715-21.428-51.715 21.428-21.428 51.714 21.428 51.715 51.715 21.428 51.715-21.428 21.428-51.715zM384 292.572q0-45.428-32.143-77.571t-77.572-32.143-77.572 32.143-32.143 77.572 32.143 77.572 77.572 32.143 77.572-32.143 32.143-77.572zM548.572 228.286q0-22.285-16-33.857t-39.428-11.572h-38.286q-29.428 35.143-75.714 36.572 23.143 33.428 23.143 73.143 0 8.286-1.428 18.857 18.857-6.572 38-6.572 16.857 0 34 6.143t27.857 12.143 12.428 6q35.428 0 35.428-100.857zM512 402.286q0-30.285-21.428-51.714t-51.714-21.428-51.714 21.428-21.428 51.714 21.428 51.715 51.714 21.428 51.714-21.428 21.428-51.715z" horiz-adv-x="549" />
180
- <glyph unicode="&#xf0c1;" d="M416 128q0 11.428-8 19.428l-59.428 59.428q-8 8-19.428 8-12 0-20.572-9.143 0.857-0.857 5.428-5.286t6.143-6.143 4.286-5.428 3.714-7.286 1-7.857q0-11.428-8-19.428t-19.428-8q-4.286 0-7.857 1t-7.286 3.714-5.428 4.286-6.143 6.143-5.286 5.428q-9.428-8.857-9.428-20.857 0-11.428 8-19.428l58.857-59.143q7.714-7.714 19.428-7.714 11.428 0 19.428 7.428l42 41.714q8 8 8 19.143zM215.143 329.429q0 11.428-8 19.428l-58.857 59.143q-8 8-19.428 8-11.143 0-19.428-7.715l-42-41.714q-8-8-8-19.143 0-11.428 8-19.428l59.428-59.428q7.714-7.714 19.428-7.714 12 0 20.572 8.857-0.857 0.857-5.428 5.286t-6.143 6.143-4.286 5.428-3.714 7.286-1 7.857q0 11.429 8 19.429t19.429 8q4.286 0 7.857-1t7.286-3.714 5.429-4.286 6.143-6.143 5.286-5.428q9.429 8.857 9.429 20.857zM470.857 128q0-34.286-24.286-58l-42-41.714q-23.714-23.714-58-23.714-34.572 0-58.286 24.286l-58.857 59.143q-23.715 23.714-23.715 58 0 35.143 25.143 59.714l-25.143 25.143q-24.572-25.143-59.428-25.143-34.285 0-58.285 24l-59.428 59.428q-24 24-24 58.286t24.285 58l42 41.714q23.715 23.714 58 23.714 34.572 0 58.286-24.285l58.857-59.143q23.715-23.714 23.715-58 0-35.143-25.143-59.714l25.143-25.143q24.572 25.143 59.428 25.143 34.286 0 58.286-24l59.428-59.428q24-24 24-58.286z" horiz-adv-x="476" />
181
- <glyph unicode="&#xf0c2;" d="M548.572 146.286q0-45.428-32.143-77.572t-77.572-32.143h-310.857q-52.857 0-90.428 37.572t-37.572 90.428q0 37.714 20.285 69t53.428 46.714q-0.572 8-0.572 12.286 0 60.572 42.857 103.428t103.428 42.857q45.143 0 81.857-25.143t53.572-65.714q20 17.714 47.428 17.714 30.286 0 51.714-21.428t21.428-51.714q0-21.428-11.714-39.428 36.857-8.572 60.857-38.428t24-68.428z" horiz-adv-x="549" />
182
- <glyph unicode="&#xf0c3;" d="M436.286 61.714q16-25.428 6.143-43.572t-40.143-18.143h-329.143q-30.285 0-40.143 18.143t6.143 43.572l143.714 226.571v114h-18.286q-7.428 0-12.857 5.429t-5.429 12.857 5.428 12.857 12.857 5.429h146.286q7.428 0 12.857-5.429t5.428-12.857-5.428-12.857-12.857-5.429h-18.286v-114zM213.714 268.857l-77.714-122.571h203.428l-77.714 122.572-5.714 8.857v124.572h-36.572v-124.572z" horiz-adv-x="476" />
183
- <glyph unicode="&#xf0c4;" d="M274.286 219.429q7.428 0 12.857-5.428t5.428-12.857-5.428-12.857-12.857-5.428-12.857 5.428-5.428 12.857 5.428 12.857 12.857 5.428zM360 201.143l144.857-113.714q8-5.714 7.143-16-1.428-10-10-14.572l-36.572-18.286q-3.714-2-8.286-2-4.857 0-8.857 2.286l-197.143 110.572-31.429-18.857q-2.286-1.143-3.429-1.428 4-14 2.857-27.714-2-22-16-42.143t-37.714-35.286q-37.715-24-79.143-24-38.857 0-63.428 22.286-25.715 24-22.572 59.143 2 21.714 16 42t37.428 35.428q37.715 24 79.428 24 23.714 0 43.143-8.857 2.571 3.714 6.286 6.286l34.857 20.857-34.857 20.857q-3.714 2.572-6.286 6.286-19.429-8.857-43.143-8.857-41.715 0-79.428 24-23.428 15.143-37.428 35.428t-16 42q-1.429 16.857 4.428 32.286t18.143 26.571q24.285 22.572 63.428 22.572 41.428 0 79.143-24 23.714-14.857 37.714-35.143t16-42.286q1.143-13.714-2.857-27.714 1.143-0.286 3.429-1.429l31.428-18.857 197.143 110.571q4 2.286 8.857 2.286 4.572 0 8.286-2l36.572-18.285q8.572-4.572 10-14.572 0.857-10.286-7.143-16zM165.429 275.429q13.143 12 6 30.857t-30.285 33.429q-26.285 16.857-54.857 16.857-21.143 0-32.285-10.286-13.143-12-6-30.857t30.285-33.428q26.285-16.857 54.857-16.857 21.143 0 32.286 10.286zM141.143 62.572q23.143 14.572 30.285 33.428t-6 30.857q-11.143 10.286-32.286 10.286-28.572 0-54.857-16.857-23.143-14.572-30.285-33.428t6-30.857q11.143-10.286 32.285-10.286 28.572 0 54.857 16.857zM192 237.714l27.428-16.572v3.143q0 10.286 9.428 16l4 2.286-22.572 13.429-7.428-7.428q-0.857-0.857-2.857-3.143t-3.429-3.428q-0.571-0.572-1.143-1t-0.857-0.714zM256 173.714l27.428-9.143 210.286 164.571-36.572 18.286-219.429-123.143v-32.285l-45.715-27.428 2.571-2.286q0.571-0.572 2-1.714 1.143-1.143 3.143-3.428t3.143-3.428l7.429-7.428zM457.143 54.857l36.572 18.286-148.571 116.572-50.572-39.428q-0.572-0.857-3.714-2z" />
184
- <glyph unicode="&#xf0c5;" d="M484.572 365.714q11.428 0 19.428-8t8-19.428v-347.428q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v82.286h-155.429q-11.428 0-19.428 8t-8 19.428v192q0 11.428 5.715 25.143t13.714 21.715l116.572 116.572q8 8 21.715 13.714t25.143 5.714h118.857q11.428 0 19.428-8t8-19.428v-93.715q19.428 11.429 36.572 11.429h118.857zM329.143 304.857l-85.428-85.428h85.428v85.428zM146.286 414.572l-85.428-85.428h85.428v85.428zM202.286 229.714l90.286 90.286v118.857h-109.714v-118.857q0-11.428-8-19.428t-19.428-8h-118.857v-182.857h146.286v73.143q0 11.428 5.714 25.143t13.714 21.714zM475.428 0v329.143h-109.714v-118.857q0-11.428-8-19.428t-19.428-8h-118.857v-182.857h256z" />
185
- <glyph unicode="&#xf0c6;" d="M401.143 79.714q0-33.428-22.572-56t-56-22.572q-38.572 0-67.143 28.572l-222 221.714q-32.285 32.857-32.285 77.428 0 45.428 31.428 77.143t76.857 31.714q45.143 0 78-32.285l172.857-173.143q2.857-2.857 2.857-6.286 0-4.571-8.714-13.285t-13.286-8.714q-3.714 0-6.572 2.857l-173.143 173.428q-22.571 22-51.715 22-30.285 0-51.143-21.428t-20.857-51.714q0-30 21.715-51.714l221.714-222q18-18 41.428-18 18.286 0 30.286 12t12 30.286q0 23.428-18 41.428l-166 166q-7.428 6.857-17.143 6.857-8.286 0-13.714-5.428t-5.429-13.714q0-9.143 7.143-16.857l117.143-117.143q2.857-2.857 2.857-6.286 0-4.572-8.857-13.428t-13.428-8.857q-3.429 0-6.286 2.857l-117.143 117.143q-18 17.429-18 42.572 0 23.428 16.285 39.714t39.715 16.286q25.143 0 42.571-18l166-166q28.572-28 28.572-67.143z" horiz-adv-x="403" />
186
- <glyph unicode="&#xf0c7;" d="M109.715 36.572h219.429v109.714h-219.429v-109.714zM365.714 36.572h36.572v256q0 4-2.857 11t-5.714 9.857l-80.286 80.286q-2.857 2.857-9.714 5.714t-11.143 2.857v-118.857q0-11.428-8-19.428t-19.428-8h-164.571q-11.428 0-19.428 8t-8 19.428v118.857h-36.572v-365.714h36.572v118.857q0 11.428 8 19.428t19.428 8h237.715q11.428 0 19.428-8t8-19.428v-118.857zM256 301.714v91.428q0 3.714-2.714 6.428t-6.428 2.714h-54.857q-3.714 0-6.429-2.714t-2.714-6.428v-91.428q0-3.714 2.714-6.428t6.428-2.714h54.857q3.714 0 6.429 2.714t2.714 6.428zM438.857 292.572v-265.143q0-11.428-8-19.428t-19.428-8h-384q-11.428 0-19.428 8t-8 19.428v384q0 11.428 8 19.428t19.428 8h265.143q11.428 0 25.143-5.714t21.714-13.714l80-80q8-8 13.714-21.714t5.714-25.143z" />
187
- <glyph unicode="&#xf0c8;" d="M438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
188
- <glyph unicode="&#xf0c9;" d="M438.857 91.429v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h402.286q7.428 0 12.857-5.428t5.428-12.857zM438.857 237.714v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h402.286q7.428 0 12.857-5.428t5.428-12.857zM438.857 384v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h402.286q7.428 0 12.857-5.428t5.428-12.857z" />
189
- <glyph unicode="&#xf0ca;" d="M109.715 73.143q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857 16 38.857 38.857 16 38.857-16 16-38.857zM109.715 219.429q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857 16 38.857 38.857 16 38.857-16 16-38.857zM512 100.572v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-347.428q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.428t6.428 2.714h347.428q3.714 0 6.428-2.714t2.714-6.428zM109.715 365.714q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857 16 38.857 38.857 16 38.857-16 16-38.857zM512 246.857v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-347.428q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.429t6.428 2.714h347.428q3.714 0 6.428-2.714t2.714-6.428zM512 393.143v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-347.428q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.429t6.428 2.714h347.428q3.714 0 6.428-2.714t2.714-6.429z" />
190
- <glyph unicode="&#xf0cb;" d="M108.857 12.572q0-22.857-15.572-36t-38.715-13.143q-30.285 0-49.143 18.857l16.285 25.143q14-12.857 30.285-12.857 8.285 0 14.428 4.143t6.143 12.143q0 18.286-30 16l-7.428 16q2.285 2.857 9.285 12.428t12.143 15.428 10.572 11v0.286q-4.572 0-13.857-0.286t-13.857-0.286v-15.143h-30.285v43.428h95.143v-25.143l-27.143-32.857q14.572-3.428 23.143-14t8.572-25.143zM109.428 191.714v-45.428h-103.428q-1.715 10.286-1.715 15.428 0 14.572 6.715 26.572t16.143 19.428 18.857 13.572 16.143 12.428 6.715 12.857q0 7.143-4.143 11t-11.285 3.857q-13.143 0-23.143-16.572l-24.285 16.857q6.857 14.572 20.428 22.715t30.143 8.143q20.857 0 35.143-11.857t14.285-32.143q0-14.286-9.715-26.143t-21.428-18.428-21.572-14.428-10.143-15h36.285v17.143h30zM512 100.572v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-347.428q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 4 2.571 6.572t6.571 2.572h347.428q3.714 0 6.428-2.714t2.714-6.428zM109.715 357.429v-28.286h-95.715v28.286h30.572q0 11.714 0.143 34.857t0.143 34.572v3.428h-0.572q-2.285-4.857-14.285-15.428l-20.285 21.714 38.857 36.286h30.285v-115.428h30.857zM512 246.857v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-347.428q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 4 2.571 6.572t6.571 2.571h347.428q3.714 0 6.428-2.714t2.714-6.428zM512 393.143v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-347.428q-3.714 0-6.428 2.714t-2.714 6.428v54.857q0 3.714 2.714 6.429t6.428 2.714h347.428q3.714 0 6.428-2.714t2.714-6.429z" />
191
- <glyph unicode="&#xf0cc;" d="M502.857 219.429q4 0 6.572-2.572t2.571-6.572v-18.286q0-4-2.572-6.572t-6.572-2.572h-493.714q-4 0-6.572 2.572t-2.571 6.572v18.286q0 4 2.571 6.572t6.572 2.572h493.714zM138 237.714q-8 10-14.572 22.857-13.715 27.715-13.715 53.715 0 51.714 38.286 88.286 38 36.285 112.286 36.285 14.286 0 47.714-5.428 18.857-3.428 50.572-13.714 2.857-10.857 6-33.714 4-35.143 4-52.286 0-5.143-1.428-12.857l-3.428-0.857-24 1.714-4 0.571q-14.286 42.572-29.428 58.572-25.143 26-60 26-32.572 0-52-16.857-19.143-16.572-19.143-41.715 0-20.857 18.857-40t79.714-36.857q19.714-5.714 49.428-18.857 16.572-8 27.143-14.857h-212.286zM282.857 164.572h117.428q2-11.143 2-26.286 0-31.714-11.714-60.572-6.572-15.714-20.286-29.714-10.572-10-31.143-23.143-22.857-13.714-43.714-18.857-22.857-6-58-6-32.572 0-55.714 6.572l-40 11.428q-16.285 4.572-20.572 8-2.285 2.286-2.285 6.286v3.714q0 30.857-0.572 44.572-0.285 8.572 0 19.428l0.572 10.572v12.572l29.143 0.572q4.286-9.714 8.572-20.286t6.428-16 3.571-7.714q10-16.286 22.857-26.857 12.286-10.286 30-16.286 16.857-6.286 37.714-6.286 18.286 0 39.714 7.714 22 7.428 34.857 24.572 13.428 17.428 13.428 36.857 0 24-23.143 44.857-9.714 8.286-39.143 20.286z" />
192
- <glyph unicode="&#xf0cd;" d="M13.714 411.714q-10.572 0.572-12.857 1.143l-0.857 25.143q3.715 0.285 11.428 0.285 17.143 0 32-1.143 37.715-2 47.428-2 24.572 0 48 0.857 33.143 1.143 41.714 1.429 16 0 24.572 0.571l-0.286-4 0.571-18.286v-2.571q-17.143-2.572-35.429-2.572-17.143 0-22.572-7.143-3.714-4-3.714-37.715 0-3.714 0.143-9.285t0.143-7.286l0.286-65.428 4-80q1.714-35.428 14.572-57.714 10-16.857 27.428-26.286 25.143-13.428 50.572-13.428 29.714 0 54.572 8 16 5.143 28.286 14.572 13.714 10.286 18.572 18.286 10.286 16 15.143 32.572 6 20.857 6 65.428 0 22.572-1 36.572t-3.143 35-3.857 45.572l-1.143 16.857q-1.428 19.143-6.857 25.143-9.714 10-22 9.714l-28.572-0.572-4 0.857 0.572 24.571h24l58.572-2.857q21.714-0.857 56 2.857l5.143-0.571q1.714-10.857 1.714-14.572 0-2-1.143-8.857-12.857-3.428-24-3.714-20.857-3.143-22.572-4.857-4.286-4.286-4.286-11.715 0-2 0.428-7.714t0.428-8.857q2.286-5.428 6.286-113.143 1.714-55.714-4.286-86.857-4.286-21.714-11.714-34.857-10.857-18.572-32-35.143-21.428-16.286-52-25.428-31.143-9.428-72.857-9.428-47.715 0-81.143 13.143-34 13.428-51.143 34.857-17.428 21.714-23.715 55.714-4.572 22.857-4.572 67.714v95.143q0 53.714-4.857 60.857-7.143 10.285-42 11.143zM438.857 9.143v18.286q0 4-2.572 6.572t-6.572 2.572h-420.572q-4 0-6.572-2.572t-2.571-6.572v-18.286q0-4 2.571-6.572t6.572-2.572h420.572q4 0 6.572 2.572t2.572 6.572z" />
193
- <glyph unicode="&#xf0ce;" d="M146.286 82.286v54.857q0 4-2.571 6.572t-6.571 2.572h-91.428q-4 0-6.572-2.572t-2.572-6.572v-54.857q0-4 2.572-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.571 6.572zM146.286 192v54.857q0 4-2.571 6.572t-6.571 2.571h-91.428q-4 0-6.572-2.571t-2.572-6.572v-54.857q0-4 2.572-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.571 6.572zM292.572 82.286v54.857q0 4-2.572 6.572t-6.572 2.572h-91.428q-4 0-6.572-2.572t-2.571-6.572v-54.857q0-4 2.571-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.572 6.572zM146.286 301.714v54.857q0 4-2.571 6.572t-6.571 2.572h-91.428q-4 0-6.572-2.572t-2.572-6.572v-54.857q0-4 2.572-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.571 6.572zM292.572 192v54.857q0 4-2.572 6.572t-6.572 2.571h-91.428q-4 0-6.572-2.571t-2.571-6.572v-54.857q0-4 2.571-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.572 6.572zM438.857 82.286v54.857q0 4-2.572 6.572t-6.572 2.572h-91.428q-4 0-6.572-2.572t-2.572-6.572v-54.857q0-4 2.572-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.572 6.572zM292.572 301.714v54.857q0 4-2.572 6.572t-6.572 2.572h-91.428q-4 0-6.572-2.572t-2.571-6.572v-54.857q0-4 2.571-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.572 6.572zM438.857 192v54.857q0 4-2.572 6.572t-6.572 2.571h-91.428q-4 0-6.572-2.571t-2.572-6.572v-54.857q0-4 2.572-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.572 6.572zM438.857 301.714v54.857q0 4-2.572 6.572t-6.572 2.572h-91.428q-4 0-6.572-2.572t-2.572-6.572v-54.857q0-4 2.572-6.572t6.572-2.572h91.428q4 0 6.572 2.572t2.572 6.572zM475.428 393.143v-310.857q0-18.857-13.428-32.286t-32.286-13.428h-384q-18.857 0-32.285 13.428t-13.428 32.286v310.857q0 18.857 13.428 32.286t32.285 13.428h384q18.857 0 32.286-13.428t13.428-32.286z" horiz-adv-x="476" />
194
- <glyph unicode="&#xf0d0;" d="M340 309.429l83.714 83.714-30.572 30.572-83.714-83.714zM467.714 393.143q0-7.714-5.143-12.857l-367.428-367.428q-5.143-5.143-12.857-5.143t-12.857 5.143l-56.572 56.572q-5.143 5.143-5.143 12.857t5.143 12.857l367.428 367.428q5.143 5.143 12.857 5.143t12.857-5.143l56.572-56.572q5.143-5.143 5.143-12.857zM81.715 447.429l28-8.572-28-8.572-8.572-28-8.572 28-28 8.572 28 8.572 8.572 28zM181.714 401.143l56-17.143-56-17.143-17.143-56-17.143 56-56 17.143 56 17.143 17.143 56zM447.428 264.572l28-8.571-28-8.572-8.572-28-8.572 28-28 8.572 28 8.572 8.572 28zM264.572 447.429l28-8.572-28-8.572-8.572-28-8.572 28-28 8.572 28 8.572 8.572 28z" horiz-adv-x="476" />
195
- <glyph unicode="&#xf0d1;" d="M182.857 73.143q0 14.857-10.857 25.714t-25.714 10.857-25.715-10.857-10.857-25.714 10.857-25.714 25.715-10.857 25.714 10.857 10.857 25.714zM73.143 219.429h109.715v73.143h-45.143q-3.714 0-6.286-2.571l-55.715-55.714q-2.572-2.572-2.572-6.286v-8.572zM438.857 73.143q0 14.857-10.857 25.714t-25.714 10.857-25.714-10.857-10.857-25.714 10.857-25.714 25.714-10.857 25.714 10.857 10.857 25.714zM512 384v-292.572q0-4.286-1.143-7.572t-3.857-5.286-4.714-3.286-6.714-1.714-6.428-0.572-7.286 0-6.428 0.143q0-30.286-21.428-51.714t-51.714-21.428-51.714 21.428-21.428 51.714h-109.714q0-30.286-21.428-51.714t-51.714-21.428-51.715 21.428-21.428 51.714h-18.285q-0.857 0-6.428-0.143t-7.285 0-6.428 0.572-6.715 1.714-4.715 3.286-3.857 5.286-1.143 7.572q0 7.428 5.428 12.857t12.857 5.428v91.428q0 2.286-0.143 10t0 10.857 0.715 9.857 1.857 10.572 4 8.714 6.428 8.572l56.572 56.572q5.428 5.428 14.428 9.143t16.715 3.714h45.715v54.857q0 7.428 5.428 12.857t12.857 5.429h292.572q7.428 0 12.857-5.429t5.428-12.857z" />
196
- <glyph unicode="&#xf0d2;" d="M438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428q-31.715 0-62.285 9.143 16.857 26.572 22.286 46.857 2.571 9.714 15.428 60.286 5.714-11.143 20.857-19.286t32.571-8.143q34.572 0 61.714 19.572t42 53.857 14.857 77.143q0 32.572-17 61.143t-49.286 46.572-72.857 18q-30 0-56-8.286t-44.143-22-31.143-31.572-19.143-37-6.143-38.286q0-29.714 11.428-52.286t33.428-31.714q8.572-3.428 10.857 5.714 0.572 2 2.286 8.857t2.286 8.572q1.714 6.572-3.143 12.286-14.572 17.428-14.572 43.143 0 43.143 29.857 74.143t78.143 31q43.143 0 67.285-23.428t24.143-60.857q0-48.571-19.572-82.571t-50.143-34q-17.429 0-28 12.428t-6.571 29.857q2.286 10 7.572 26.714t8.572 29.428 3.286 21.572q0 14.286-7.714 23.714t-22 9.428q-17.714 0-30-16.286t-12.286-40.572q0-20.857 7.143-34.857l-28.285-119.428q-4.857-20-3.714-50.572-58.857 26-95.143 80.286t-36.285 120.857q0 59.715 29.428 110.143t79.857 79.857 110.143 29.429 110.143-29.429 79.857-79.857 29.428-110.143z" />
197
- <glyph unicode="&#xf0d3;" d="M356.572 438.857q34 0 58.143-24.143t24.143-58.143v-274.286q0-34-24.143-58.143t-58.143-24.143h-207.143q24.285 34.857 30.857 60 2.571 9.714 15.143 59.714 6-11.143 21-19.143t32.143-8q51.714 0 84.428 42.143t32.714 106.714q0 24-10 46.428t-27.572 39.714-43.572 27.714-56.286 10.428q-29.714 0-55.572-8.143t-43.714-21.857-30.715-31.285-19-36.572-6.143-37.857q0-29.143 11.285-51.428t33.285-31.428q3.715-1.428 6.715 0t4.143 5.428q2.857 12.572 4.286 17.428 1.714 6.572-3.143 12-14.285 17.714-14.285 42.857 0 42.857 29.572 73.286t77.286 30.428q42.572 0 66.428-23.143t23.857-60q0-48-19.286-81.714t-49.572-33.714q-17.143 0-27.714 12.428t-6.572 29.572q2.286 9.714 7.572 26.428t8.428 29.143 3.143 21.286q0 14-7.571 23.286t-21.572 9.286q-17.428 0-29.572-16.143t-12.143-39.857q0-20.572 6.857-34.572l-28-118.286q-6.857-28.572-2-72.572h-52.285q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286z" />
198
- <glyph unicode="&#xf0d4;" d="M193.714 20.286q0-10.857-2.857-20.286h-108.572q-27.143 0-49 16.143t-29.572 42.143q6.857 12.857 19.715 22.143t28.572 14.143 30.572 6.857 30.572 2q9.143 0 14-0.572 1.714-1.143 8.714-6t9.429-6.572 8.857-6.572 9.143-7.286 7.857-7.286 7.571-8.428 6-8.714 5-9.857 2.714-10.286 1.286-11.572zM110 120.572q-66.857-2-110-24.286v123.714q29.428-33.714 78-33.714 9.143 0 20 1.428-6-17.428-6-24.572 0-19.143 18-42.572zM159.429 266.572q0-28.571-12.429-45.857t-40.143-17.286q-14.572 0-27.715 7.428t-22.285 19.286-16 26.714-10.143 29.714-3.285 28.286q0 27.428 14.715 47.143t41.285 19.714q18.857 0 34-11.714t24-29.714 13.428-37.143 4.572-36.571zM438.857 292.572v-210.286q0-34-24.143-58.143t-58.143-24.143h-133.714q11.143 20.857 11.143 44.857 0 18.857-6.286 35t-15.857 26.572-20.572 20.286-20.572 17-15.857 15.572-6.286 17q0 10.286 6.571 19.428t16 17.572 18.714 18.428 15.857 26.572 6.571 37.428-7.572 41.572-21.572 33.857q-1.714 1.714-4 3.143t-3.571 2.143-2.857 2.715-3 4.857h38.572l38.572 18.286h-124.857q-39.428 0-69.857-11t-52.143-38.143q0 36 23.143 60.857t59.143 24.857h274.286q34 0 58.143-24.143t24.143-58.143v-27.428h-73.143v73.143h-36.572v-73.143h-73.143v-36.572h73.143v-73.143h36.572v73.143h73.143z" />
199
- <glyph unicode="&#xf0d5;" d="M250.286 56.857q0 6-1.286 11.572t-2.714 10.286-5 9.857-6 8.714-7.572 8.428-7.857 7.286-9.143 7.286-8.857 6.572-9.429 6.572-8.714 6q-4.857 0.572-14.286 0.572-15.428 0-30.286-2t-30.857-7.143-28-13.143-19.715-21.428-7.715-30.572q0-19.428 10.143-34.714t26.572-24 34.428-13 36.285-4.286q16.857 0 32.143 3.572t28.715 11.143 21.286 21 7.857 31.428zM216 303.143q0 17.143-4.714 36.428t-13.428 37.286-24 29.714-34.143 11.714q-26.572 0-41.143-19.714t-14.572-47.143q0-13.428 3.285-28.285t10.143-29.714 16-26.714 22.285-19.286 27.714-7.428q27.714 0 40.143 17.286t12.429 45.857zM178.571 438.857h124.857l-38.572-22.572h-38.572q20.286-12.857 31.428-36t11.143-48.285q0-21.143-6.572-37.572t-16-26.428-18.857-18.428-16-17.428-6.571-19.286q0-7.428 4.714-14.572t12.286-13.714 16.714-13.714 18.286-15.857 16.714-18.857 12.286-24.286 4.714-30.428q0-45.714-40-80.572-43.428-37.429-120-37.429-16.857 0-34.143 2.857t-34.857 9.572-31 16.572-22 25.428-8.572 34.714q0 17.428 10.572 38.572 9.143 18.286 27.428 31.572t41.428 20.286 44.285 10.286 42.857 3.857q-18.286 23.714-18.286 42.572 0 3.428 0.571 6.714t1.429 5.572 2.286 6.143 2 6.143q-11.428-1.428-20-1.428-42.572 0-73 28t-30.428 70.286q0 40 27.143 71.572t66.857 40.428q26.857 5.714 53.428 5.714zM475.428 365.714v-36.571h-73.143v-73.143h-36.572v73.143h-73.143v36.571h73.143v73.143h36.572v-73.143h73.143z" horiz-adv-x="476" />
200
- <glyph unicode="&#xf0d6;" d="M219.429 146.286h109.715v27.428h-36.572v128h-32.572l-42.286-39.143 22-22.857q12 10.572 15.714 16.286h0.572v-82.286h-36.572v-27.428zM365.714 219.429q0-20-6-40.572t-17-38.286-29-28.857-39.428-11.143-39.428 11.143-29 28.857-17 38.286-6 40.572 6 40.572 17 38.286 29 28.857 39.428 11.143 39.428-11.143 29-28.857 17-38.286 6-40.572zM512 146.286v146.286q-30.286 0-51.714 21.428t-21.428 51.714h-329.143q0-30.286-21.428-51.714t-51.715-21.428v-146.286q30.285 0 51.715-21.428t21.428-51.714h329.143q0 30.286 21.428 51.714t51.714 21.428zM548.572 384v-329.143q0-7.428-5.428-12.857t-12.857-5.428h-512q-7.428 0-12.857 5.428t-5.428 12.857v329.143q0 7.428 5.428 12.857t12.857 5.429h512q7.428 0 12.857-5.429t5.428-12.857z" horiz-adv-x="549" />
201
- <glyph unicode="&#xf0d7;" d="M292.572 274.286q0-7.428-5.428-12.857l-128-128q-5.428-5.428-12.857-5.428t-12.857 5.428l-128 128q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h256q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="293" />
202
- <glyph unicode="&#xf0d8;" d="M292.572 128q0-7.428-5.428-12.857t-12.857-5.428h-256q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857l128 128q5.429 5.428 12.857 5.428t12.857-5.428l128-128q5.428-5.428 5.428-12.857z" horiz-adv-x="293" />
203
- <glyph unicode="&#xf0d9;" d="M182.857 347.429v-256q0-7.428-5.429-12.857t-12.857-5.428-12.857 5.428l-128 128q-5.428 5.428-5.428 12.857t5.428 12.857l128 128q5.428 5.428 12.857 5.428t12.857-5.428 5.428-12.857z" horiz-adv-x="183" />
204
- <glyph unicode="&#xf0da;" d="M164.571 219.429q0-7.428-5.429-12.857l-128-128q-5.428-5.428-12.857-5.428t-12.857 5.428-5.428 12.857v256q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428l128-128q5.428-5.428 5.428-12.857z" horiz-adv-x="183" />
205
- <glyph unicode="&#xf0db;" d="M45.715 36.572h173.714v329.143h-182.857v-320q0-3.714 2.715-6.428t6.428-2.714zM438.857 45.714v320h-182.857v-329.143h173.714q3.714 0 6.428 2.714t2.714 6.428zM475.428 393.143v-347.428q0-18.857-13.428-32.286t-32.286-13.428h-384q-18.857 0-32.285 13.428t-13.428 32.286v347.428q0 18.857 13.428 32.286t32.285 13.428h384q18.857 0 32.286-13.428t13.428-32.286z" horiz-adv-x="476" />
206
- <glyph unicode="&#xf0dc;" d="M292.572 164.572q0-7.428-5.428-12.857l-128-128q-5.428-5.428-12.857-5.428t-12.857 5.428l-128 128q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h256q7.428 0 12.857-5.428t5.428-12.857zM292.572 274.286q0-7.428-5.428-12.857t-12.857-5.428h-256q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857l128 128q5.429 5.428 12.857 5.428t12.857-5.428l128-128q5.428-5.428 5.428-12.857z" horiz-adv-x="293" />
207
- <glyph unicode="&#xf0dd;" d="M292.572 164.572q0-7.428-5.428-12.857l-128-128q-5.428-5.428-12.857-5.428t-12.857 5.428l-128 128q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428h256q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="293" />
208
- <glyph unicode="&#xf0de;" d="M292.572 274.286q0-7.428-5.428-12.857t-12.857-5.428h-256q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857l128 128q5.429 5.428 12.857 5.428t12.857-5.428l128-128q5.428-5.428 5.428-12.857z" horiz-adv-x="293" />
209
- <glyph unicode="&#xf0e0;" d="M512 272.572v-226.857q0-18.857-13.428-32.286t-32.286-13.428h-420.572q-18.857 0-32.285 13.428t-13.428 32.286v226.857q12.572-14 28.857-24.857 103.429-70.286 142-98.572 16.285-12 26.429-18.714t27-13.714 31.428-7h0.572q14.572 0 31.428 7t27 13.714 26.428 18.714q48.572 35.143 142.286 98.572 16.286 11.143 28.572 24.857zM512 356.572q0-22.571-14-43.143t-34.857-35.143q-107.428-74.571-133.714-92.857-2.857-2-12.143-8.714t-15.428-10.857-14.857-9.286-16.428-7.714-14.286-2.572h-0.571q-6.571 0-14.286 2.572t-16.429 7.714-14.857 9.286-15.429 10.857-12.143 8.714q-26 18.286-74.857 52.143t-58.572 40.715q-17.715 12-33.428 33t-15.714 39q0 22.285 11.857 37.143t33.857 14.857h420.572q18.572 0 32.143-13.428t13.572-32.286z" />
210
- <glyph unicode="&#xf0e1;" d="M99.715 296.857v-283.143h-94.285v283.143h94.285zM105.715 384.286q0.285-20.857-14.428-34.857t-38.715-14h-0.572q-23.428 0-37.715 14t-14.286 34.857q0 21.143 14.714 35t38.428 13.857 38-13.857 14.572-35zM438.857 176v-162.286h-94v151.429q0 30-11.572 47t-36.143 17q-18 0-30.143-9.857t-18.143-24.428q-3.143-8.572-3.143-23.143v-158h-94q0.571 114 0.571 184.857t-0.286 84.572l-0.286 13.714h94v-41.143h-0.571q5.714 9.143 11.714 16t16.143 14.857 24.857 12.428 32.714 4.428q48.857 0 78.572-32.428t29.714-95z" />
211
- <glyph unicode="&#xf0e2;" d="M438.857 219.429q0-44.572-17.428-85.143t-46.857-70-70-46.857-85.143-17.428q-49.143 0-93.428 20.714t-75.428 58.428q-2 2.857-1.857 6.428t2.428 5.857l39.143 39.428q2.857 2.572 7.143 2.572 4.572-0.572 6.572-3.428 20.857-27.143 51.143-42t64.286-14.857q29.714 0 56.714 11.572t46.714 31.286 31.286 46.714 11.572 56.714-11.572 56.714-31.286 46.714-46.714 31.286-56.714 11.571q-28 0-53.714-10.143t-45.715-29l39.143-39.428q8.857-8.572 4-19.714-4.857-11.428-16.857-11.428h-128q-7.428 0-12.857 5.428t-5.428 12.857v128q0 12 11.428 16.857 11.143 4.857 19.715-4l37.143-36.857q30.572 28.857 69.857 44.714t81.286 15.857q44.572 0 85.143-17.428t70-46.857 46.857-70 17.428-85.143z" />
212
- <glyph unicode="&#xf0e3;" d="M506 36.572q0-15.143-10.572-25.714l-30.572-30.857q-11.143-10.572-26-10.572-15.143 0-25.714 10.572l-103.714 104q-10.857 10.286-10.857 25.714 0 15.143 12.286 27.428l-73.143 73.143-36-36q-4-4-9.714-4t-9.714 4q0.571-0.572 3.571-3.428t3.571-3.714 2.857-3.286 2.857-3.857 1.714-3.857 1.571-4.714 0.429-5.143q0-10.857-8-19.428-0.857-0.857-4.714-5.143t-5.429-5.857-5.286-4.714-6.286-4.428-6.286-2.572-7.428-1.286q-11.428 0-19.428 8l-116.572 116.572q-8 8-8 19.428 0 3.714 1.286 7.428t2.572 6.286 4.428 6.286 4.715 5.286 5.857 5.428 5.143 4.714q8.572 8 19.428 8 2.857 0 5.143-0.429t4.715-1.571 3.857-1.714 3.857-2.857 3.285-2.857 3.715-3.572 3.428-3.571q-4 4-4 9.714t4 9.714l99.429 99.428q4 4 9.714 4t9.714-4q-0.571 0.572-3.571 3.428t-3.571 3.714-2.857 3.286-2.857 3.857-1.714 3.857-1.571 4.715-0.429 5.143q0 10.857 8 19.428 0.857 0.857 4.714 5.143t5.428 5.857 5.286 4.714 6.286 4.429 6.286 2.571 7.428 1.286q11.428 0 19.428-8l116.572-116.571q8-8 8-19.428 0-3.714-1.286-7.428t-2.572-6.286-4.428-6.286-4.714-5.286-5.857-5.428-5.143-4.714q-8.572-8-19.428-8-2.857 0-5.143 0.428t-4.714 1.572-3.857 1.714-3.857 2.857-3.286 2.857-3.714 3.571-3.428 3.572q4-4 4-9.714t-4-9.714l-36-36 73.143-73.143q12.286 12.286 27.428 12.286 14.857 0 26-10.572l103.714-103.714q10.572-11.143 10.572-26z" />
213
- <glyph unicode="&#xf0e4;" d="M109.715 146.286q0 15.143-10.715 25.857t-25.857 10.714-25.857-10.714-10.715-25.857 10.715-25.857 25.857-10.714 25.857 10.714 10.715 25.857zM164.571 274.286q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.715-25.857 10.715-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM286.857 136.857l28.857 109.143q1.714 7.429-2.143 13.857t-11 8.428-13.714-1.857-8.572-11.286l-28.857-109.143q-17.143-1.428-30.571-12.428t-18-28.143q-5.714-22 5.714-41.714t33.428-25.428 41.714 5.714 25.428 33.428q4.572 17.143-1.714 33.428t-20.572 26zM475.428 146.286q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.714-25.857 10.714-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM292.572 329.143q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.714-25.857 10.714-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM420.572 274.286q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.714-25.857 10.714-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM512 146.286q0-74.572-40.286-138-5.428-8.286-15.428-8.286h-400.572q-10 0-15.428 8.286-40.285 63.143-40.285 138 0 52 20.285 99.428t54.572 81.714 81.715 54.572 99.428 20.285 99.428-20.285 81.714-54.572 54.572-81.714 20.286-99.428z" />
214
- <glyph unicode="&#xf0e5;" d="M256 365.714q-58.286 0-109-19.857t-80.572-53.572-29.857-72.857q0-32 20.428-61t57.572-50.143l24.857-14.286-7.714-27.428q-6.857-26-20-49.143 43.428 18 78.572 48.857l12.286 10.857 16.286-1.714q19.714-2.286 37.143-2.286 58.285 0 109 19.857t80.572 53.572 29.857 72.857-29.857 72.857-80.572 53.572-109 19.857zM512 219.429q0-49.714-34.286-91.857t-93.143-66.572-128.572-24.428q-20 0-41.428 2.286-56.572-50-131.429-69.143-14-4-32.572-6.286h-1.428q-4.285 0-7.715 3t-4.572 7.857v0.286q-0.857 1.143-0.143 3.428t0.572 2.857 1.285 2.714l1.715 2.572t2 2.428 2.285 2.572q2 2.286 8.857 9.857t9.857 10.857 8.857 11.286 9.285 14.572 7.715 16.857 7.428 21.714q-44.857 25.428-70.715 62.857t-25.857 80.286q0 49.714 34.285 91.857t93.143 66.572 128.571 24.428 128.571-24.428 93.143-66.572 34.286-91.857z" />
215
- <glyph unicode="&#xf0e6;" d="M201.143 365.714q-43.715 0-81.715-14.857t-60.428-40.286-22.428-54.571q0-23.428 15.143-45.143t42.572-37.714l27.715-16-10-24q9.715 5.714 17.715 11.143l12.571 8.857 15.143-2.857q22.285-4 43.715-4 43.714 0 81.714 14.857t60.428 40.286 22.428 54.572-22.428 54.572-60.428 40.286-81.714 14.857zM201.143 402.286q54.571 0 101-19.572t73.286-53.285 26.857-73.428-26.857-73.428-73.286-53.286-101-19.572q-24.572 0-50.286 4.572-35.428-25.143-79.428-36.572-10.285-2.572-24.572-4.572h-0.857q-3.143 0-5.857 2.286t-3.285 6q-0.285 0.857-0.285 1.857t0.143 1.857 0.572 1.714l0.715 1.428t1 1.572 1.143 1.428 1.285 1.428 1.143 1.286q1.428 1.714 6.572 7.143t7.428 8.428 6.428 8.286 7.143 11 5.857 12.572q-35.428 20.572-55.715 50.572t-20.285 64q0 39.714 26.857 73.428t73.285 53.285 101 19.572zM436 68.286q2.857-6.857 5.857-12.572t7.143-11 6.428-8.286 7.428-8.428 6.572-7.143q0.286-0.286 1.143-1.286t1.286-1.428 1.143-1.428 1-1.572l0.714-1.428t0.572-1.714 0.143-1.857-0.286-1.857q-0.857-4-3.714-6.286t-6.286-2q-14.286 2-24.572 4.572-44 11.428-79.428 36.572-25.714-4.572-50.286-4.572-77.428 0-134.857 37.714 16.571-1.143 25.143-1.143 46 0 88.286 12.857t75.428 36.857q35.714 26.286 54.857 60.572t19.143 72.572q0 22-6.572 43.428 36.857-20.286 58.286-50.857t21.429-65.714q0-34.286-20.286-64.143t-55.714-50.428z" />
216
- <glyph unicode="&#xf0e7;" d="M252.857 313.714q5.143-5.714 2-12.572l-154.286-330.572q-3.715-7.143-12-7.143-1.143 0-4 0.572-4.857 1.428-7.285 5.428t-1.285 8.572l56.286 230.857-116-28.857q-1.143-0.286-3.428-0.286-5.143 0-8.857 3.143-5.143 4.286-3.715 11.143l57.428 235.714q1.143 4 4.572 6.571t8 2.572h93.714q5.428 0 9.143-3.572t3.714-8.428q0-2.285-1.429-5.143l-48.857-132.286 113.143 28q2.286 0.571 3.429 0.571 5.429 0 9.714-4.286z" horiz-adv-x="256" />
217
- <glyph unicode="&#xf0e8;" d="M512 118.857v-91.428q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v91.428q0 11.428 8 19.428t19.428 8h27.428v54.857h-146.286v-54.857h27.428q11.428 0 19.428-8t8-19.428v-91.428q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v91.428q0 11.428 8 19.428t19.428 8h27.428v54.857h-146.286v-54.857h27.428q11.428 0 19.428-8t8-19.428v-91.428q0-11.428-8-19.428t-19.428-8h-91.428q-11.428 0-19.428 8t-8 19.428v91.428q0 11.428 8 19.428t19.428 8h27.428v54.857q0 14.857 10.857 25.714t25.715 10.857h146.286v54.857h-27.428q-11.428 0-19.428 8t-8 19.428v91.428q0 11.428 8 19.428t19.428 8h91.428q11.428 0 19.428-8t8-19.428v-91.428q0-11.428-8-19.428t-19.428-8h-27.428v-54.857h146.286q14.857 0 25.714-10.857t10.857-25.714v-54.857h27.428q11.428 0 19.428-8t8-19.428z" />
218
- <glyph unicode="&#xf0e9;" d="M256 238.857v-165.714q0-29.714-21.714-51.428t-51.428-21.714-51.428 21.714-21.715 51.428q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428 5.428-12.857q0-14.286 11.143-25.428t25.429-11.143 25.428 11.143 11.143 25.428v165.714q9.429 3.143 18.285 3.143t18.286-3.143zM475.428 231.143q0-3.714-2.714-6.428t-6.428-2.714q-3.143 0-6.572 2.857-14 13.143-26.572 19.715t-29.143 6.572q-19.428 0-36.572-10.572t-29.428-27.714q-2-2.857-5-8t-4.143-6.857q-3.143-4.857-8-4.857-5.143 0-8.286 4.857-1.143 1.714-4.143 6.857t-5 8q-12.286 17.143-29.286 27.714t-36.428 10.572-36.428-10.572-29.286-27.714q-2-2.857-5-8t-4.143-6.857q-3.143-4.857-8.286-4.857-4.857 0-8 4.857-1.143 1.714-4.143 6.857t-5 8q-12.285 17.143-29.428 27.714t-36.572 10.572q-16.572 0-29.143-6.572t-26.572-19.714q-3.428-2.857-6.572-2.857-3.715 0-6.428 2.714t-2.715 6.429q0 1.428 0.285 2 12.857 52.286 49.285 91.286t85.143 58.428 103 19.428q40 0 78.429-11.428t70.428-32.428 55.572-53.428 33-71.857q0.286-0.571 0.286-2zM256 438.857v-28q-12 0.572-18.286 0.572t-18.286-0.572v28q0 7.428 5.428 12.857t12.857 5.429 12.857-5.429 5.428-12.857z" horiz-adv-x="476" />
219
- <glyph unicode="&#xf0ea;" d="M219.429 0h256v182.857h-118.857q-11.428 0-19.428 8t-8 19.428v118.857h-109.714v-329.143zM292.572 411.429v18.285q0 3.715-2.714 6.429t-6.428 2.714h-201.143q-3.715 0-6.428-2.714t-2.715-6.429v-18.285q0-3.715 2.715-6.428t6.428-2.715h201.143q3.714 0 6.428 2.715t2.714 6.428zM365.714 219.429h85.428l-85.428 85.428v-85.428zM512 182.857v-192q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v45.714h-155.429q-11.428 0-19.428 8t-8 19.428v384q0 11.428 8 19.428t19.428 8h310.857q11.428 0 19.428-8t8-19.428v-93.714q6-3.715 10.286-8l116.572-116.572q8-8 13.714-21.714t5.715-25.143z" />
220
- <glyph unicode="&#xf0eb;" d="M210.286 310.857q0-3.714-2.714-6.428t-6.428-2.714-6.428 2.714-2.714 6.428q0 13.143-15.428 20.286t-30.286 7.143q-3.714 0-6.428 2.714t-2.714 6.429 2.714 6.428 6.428 2.714q14.286 0 28.428-4.571t24.857-15.429 10.714-25.714zM256 310.857q0 20.572-9.857 38.286t-25.715 29-35.143 17.714-39 6.428-39-6.428-35.143-17.714-25.715-29-9.857-38.286q0-28.857 19.428-51.428 2.857-3.143 8.715-9.428t8.715-9.428q36.572-43.714 40.285-85.143h65.143q3.714 41.428 40.286 85.143 2.857 3.143 8.714 9.429t8.714 9.428q19.428 22.572 19.428 51.428zM292.572 310.857q0-44.285-29.428-76.571-12.857-14-21.286-24.857t-17-27.286-9.714-30.714q13.428-8 13.428-23.428 0-10.572-7.143-18.286 7.143-7.714 7.143-18.286 0-14.857-12.857-23.143 3.714-6.572 3.714-13.428 0-13.143-9-20.286t-22.143-7.143q-5.714-12.572-17.143-20t-24.857-7.428-24.857 7.428-17.143 20q-13.143 0-22.143 7.143t-9 20.286q0 6.857 3.715 13.428-12.857 8.286-12.857 23.143 0 10.572 7.143 18.286-7.143 7.714-7.143 18.286 0 15.428 13.428 23.428-1.143 14.286-9.715 30.714t-17 27.286-21.285 24.857q-29.428 32.286-29.428 76.572 0 28.286 12.714 52.714t33.428 40.572 46.857 25.428 53.285 9.286 53.286-9.286 46.857-25.428 33.429-40.572 12.714-52.714z" horiz-adv-x="293" />
221
- <glyph unicode="&#xf0ec;" d="M512 137.143v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-393.143v-54.857q0-3.714-2.715-6.428t-6.428-2.714q-3.428 0-6.857 2.857l-91.143 91.428q-2.571 2.572-2.571 6.286 0 4 2.571 6.572l91.428 91.428q2.572 2.572 6.572 2.572 3.715 0 6.428-2.714t2.715-6.428v-54.857h393.143q3.714 0 6.428-2.714t2.714-6.428zM512 292.572q0-4-2.572-6.571l-91.428-91.428q-2.572-2.572-6.572-2.572-3.714 0-6.428 2.714t-2.714 6.428v54.857h-393.143q-3.715 0-6.428 2.714t-2.715 6.429v54.857q0 3.714 2.715 6.429t6.428 2.714h393.143v54.857q0 4 2.572 6.572t6.572 2.572q3.428 0 6.857-2.857l91.143-91.143q2.572-2.572 2.572-6.572z" />
222
- <glyph unicode="&#xf0ed;" d="M365.714 210.286q0 4-2.572 6.572t-6.572 2.571h-64v100.572q0 3.714-2.714 6.428t-6.428 2.714h-54.857q-3.714 0-6.429-2.714t-2.714-6.428v-100.572h-64q-3.714 0-6.428-2.714t-2.714-6.428q0-4 2.571-6.572l100.571-100.572q2.571-2.572 6.572-2.572t6.572 2.572l100.286 100.286q2.857 3.428 2.857 6.857zM548.572 146.286q0-45.428-32.143-77.572t-77.572-32.143h-310.857q-52.857 0-90.428 37.572t-37.572 90.428q0 37.143 20 68.572t53.715 47.143q-0.572 8.572-0.572 12.286 0 60.572 42.857 103.428t103.428 42.857q44.572 0 81.572-24.857t53.857-66q20.286 17.715 47.428 17.715 30.286 0 51.714-21.428t21.428-51.714q0-21.714-11.714-39.428 37.143-8.857 61-38.714t23.857-68.143z" horiz-adv-x="549" />
223
- <glyph unicode="&#xf0ee;" d="M365.714 228.572q0 4-2.572 6.572l-100.572 100.572q-2.572 2.571-6.572 2.571t-6.572-2.571l-100.286-100.286q-2.857-3.429-2.857-6.857 0-4 2.571-6.571t6.572-2.572h64v-100.571q0-3.714 2.714-6.428t6.428-2.714h54.857q3.714 0 6.428 2.714t2.714 6.428v100.572h64q3.714 0 6.428 2.714t2.714 6.428zM548.572 146.286q0-45.428-32.143-77.572t-77.572-32.143h-310.857q-52.857 0-90.428 37.572t-37.572 90.428q0 37.143 20 68.572t53.715 47.143q-0.572 8.572-0.572 12.286 0 60.572 42.857 103.428t103.428 42.857q44.572 0 81.572-24.857t53.857-66q20.286 17.715 47.428 17.715 30.286 0 51.714-21.428t21.428-51.714q0-21.714-11.714-39.428 37.143-8.857 61-38.714t23.857-68.143z" horiz-adv-x="549" />
224
- <glyph unicode="&#xf0f0;" d="M109.715 91.429q0-7.428-5.428-12.857t-12.857-5.428-12.857 5.428-5.428 12.857 5.428 12.857 12.857 5.428 12.857-5.428 5.428-12.857zM402.286 74q0-34.572-20.857-54.286t-55.428-19.714h-249.714q-34.572 0-55.428 19.714t-20.857 54.286q0 19.428 1.571 37.428t6.857 39.428 13.572 37.857 23.143 29.428 34.285 17.286q-6.285-14.857-6.285-34.286v-58q-16.572-5.714-26.572-20t-10-31.714q0-22.857 16-38.857t38.857-16 38.857 16 16 38.857q0 17.428-10.143 31.714t-26.428 20v58q0 17.714 7.143 26.572 37.715-29.714 84.285-29.714t84.285 29.714q7.143-8.857 7.143-26.572v-18.286q-30.286 0-51.714-21.428t-21.428-51.714v-25.428q-9.143-8.286-9.143-20.286 0-11.428 8-19.428t19.429-8 19.428 8 8 19.428q0 12-9.143 20.286v25.428q0 14.857 10.857 25.714t25.714 10.857 25.714-10.857 10.857-25.714v-25.428q-9.143-8.286-9.143-20.286 0-11.428 8-19.428t19.428-8 19.428 8 8 19.428q0 12-9.143 20.286v25.428q0 19.428-9.857 36.428t-26.714 26.714q0 2.857 0.143 12.143t0 13.714-0.714 11.857-2 13.428-3.714 11.428q19.428-4.286 34.286-17.286t23.143-29.428 13.572-37.857 6.857-39.428 1.572-37.428zM310.857 329.143q0-45.428-32.143-77.572t-77.572-32.143-77.572 32.143-32.143 77.572 32.143 77.571 77.572 32.143 77.572-32.143 32.143-77.571z" horiz-adv-x="403" />
225
- <glyph unicode="&#xf0f1;" d="M365.714 274.286q0 7.429-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM402.286 274.286q0-17.714-10.143-31.714t-26.428-20v-112.857q0-45.428-37.572-77.572t-90.428-32.143-90.428 32.143-37.572 77.572v37.714q-46.857 5.714-78.285 36.572t-31.428 72v146.286q0 7.428 5.428 12.857t12.857 5.428q1.715 0 4.572-0.571 4.857 8.571 13.428 13.714t18.572 5.143q15.143 0 25.857-10.715t10.715-25.857-10.715-25.857-25.857-10.714q-9.428 0-18.285 5.143v-114.857q0-30.286 26.857-51.714t64.571-21.428 64.572 21.428 26.857 51.714v114.857q-8.857-5.143-18.285-5.143-15.143 0-25.857 10.714t-10.714 25.857 10.714 25.857 25.857 10.714q10 0 18.572-5.143t13.428-13.715q2.857 0.572 4.572 0.572 7.428 0 12.857-5.428t5.429-12.857v-146.286q0-41.143-31.428-72t-78.286-36.572v-37.714q0-30.286 26.857-51.714t64.571-21.428 64.572 21.428 26.857 51.714v112.857q-16.286 6-26.428 20t-10.143 31.715q0 22.857 16 38.857t38.857 16 38.857-16 16-38.857z" horiz-adv-x="403" />
226
- <glyph unicode="&#xf0f2;" d="M182.857 365.714h146.286v36.572h-146.286v-36.572zM82.285 365.714v-365.714h-18.285q-26.285 0-45.143 18.857t-18.857 45.143v237.714q0 26.286 18.857 45.143t45.143 18.857h18.285zM402.286 365.714v-365.714h-292.572v365.714h36.572v45.714q0 11.428 8 19.428t19.428 8h164.571q11.428 0 19.428-8t8-19.428v-45.714h36.572zM512 301.714v-237.714q0-26.286-18.857-45.143t-45.143-18.857h-18.286v365.714h18.286q26.286 0 45.143-18.857t18.857-45.143z" />
227
- <glyph unicode="&#xf0f3;" d="M242.286-9.143q0 4.572-4.572 4.572-16.857 0-29 12.143t-12.143 29q0 4.572-4.571 4.572t-4.572-4.572q0-20.857 14.714-35.572t35.572-14.714q4.572 0 4.572 4.572zM475.428 73.143q0-14.857-10.857-25.714t-25.714-10.857h-128q0-30.286-21.428-51.714t-51.714-21.429-51.714 21.429-21.428 51.714h-128q-14.857 0-25.715 10.857t-10.857 25.714q54.285 46 82 113.572t27.715 142.428q0 47.143 27.429 74.857t75.428 33.428q-2.286 5.143-2.286 10.572 0 11.428 8 19.428t19.428 8 19.428-8 8-19.428q0-5.428-2.286-10.572 48-5.714 75.428-33.428t27.428-74.857q0-74.857 27.714-142.428t82-113.572z" horiz-adv-x="476" />
228
- <glyph unicode="&#xf0f4;" d="M475.428 292.572q0 22.857-16 38.857t-38.857 16h-18.286v-109.714h18.286q22.857 0 38.857 16t16 38.857zM0 73.143h512q0-30.286-21.428-51.714t-51.714-21.428h-365.714q-30.285 0-51.715 21.428t-21.428 51.714zM530.285 292.572q0-45.428-32.143-77.571t-77.572-32.143h-18.286v-9.143q0-26.286-18.857-45.143t-45.143-18.857h-201.143q-26.285 0-45.143 18.857t-18.857 45.143v210.286q0 7.428 5.428 12.857t12.857 5.429h329.143q45.428 0 77.572-32.143t32.143-77.572z" horiz-adv-x="549" />
229
- <glyph unicode="&#xf0f5;" d="M182.857 457.143v-182.857q0-17.428-10.143-31.714t-26.428-20v-222.572q0-14.857-10.857-25.714t-25.715-10.857h-36.572q-14.857 0-25.715 10.857t-10.857 25.714v222.571q-16.285 5.714-26.428 20t-10.143 31.715v182.857q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428 5.428-12.857v-118.857q0-7.428 5.428-12.857t12.857-5.428 12.857 5.428 5.428 12.857v118.857q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428 5.428-12.857v-118.857q0-7.428 5.428-12.857t12.857-5.428 12.857 5.428 5.428 12.857v118.857q0 7.428 5.428 12.857t12.857 5.428 12.857-5.428 5.428-12.857zM402.286 457.143v-457.143q0-14.857-10.857-25.714t-25.714-10.857h-36.572q-14.857 0-25.714 10.857t-10.857 25.714v146.286h-64q-3.714 0-6.428 2.714t-2.714 6.428v228.571q0 37.715 26.857 64.572t64.571 26.857h73.143q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="403" />
230
- <glyph unicode="&#xf0f6;" d="M292.572 137.143v-18.286q0-4-2.572-6.572t-6.572-2.572h-201.143q-4 0-6.572 2.572t-2.572 6.572v18.286q0 4 2.572 6.572t6.572 2.572h201.143q4 0 6.572-2.572t2.572-6.572zM292.572 210.286v-18.286q0-4-2.572-6.572t-6.572-2.572h-201.143q-4 0-6.572 2.572t-2.572 6.572v18.286q0 4 2.572 6.572t6.572 2.571h201.143q4 0 6.572-2.571t2.572-6.572zM36.572 36.572h292.572v219.428h-118.857q-11.429 0-19.429 8t-8 19.429v118.857h-146.286v-365.714zM219.429 292.572h107.429q-2.857 8.286-6.286 11.714l-89.428 89.428q-3.429 3.429-11.714 6.286v-107.428zM365.714 283.429v-256q0-11.428-8-19.428t-19.428-8h-310.857q-11.428 0-19.428 8t-8 19.428v384q0 11.428 8 19.428t19.428 8h182.857q11.429 0 25.143-5.714t21.714-13.714l89.143-89.143q8-8 13.714-21.714t5.714-25.143z" horiz-adv-x="366" />
231
- <glyph unicode="&#xf0f7;" d="M109.715 100.572v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM109.715 173.714v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM182.857 173.714v-18.286q0-3.714-2.714-6.428t-6.429-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM109.715 246.857v-18.285q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM329.143 100.572v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 173.714v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM182.857 246.857v-18.285q0-3.714-2.714-6.428t-6.429-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM109.715 320v-18.285q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM329.143 173.714v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 246.857v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM182.857 320v-18.285q0-3.714-2.714-6.428t-6.429-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM109.715 393.143v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM329.143 246.857v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 320v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM182.857 393.143v-18.286q0-3.714-2.714-6.428t-6.429-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM329.143 320v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 393.143v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM329.143 393.143v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 0h109.714v438.857h-329.143v-438.857h109.714v64q0 3.714 2.714 6.428t6.428 2.714h91.428q3.714 0 6.428-2.714t2.714-6.428v-64zM402.286 457.143v-475.428q0-7.428-5.428-12.857t-12.857-5.428h-365.714q-7.428 0-12.857 5.428t-5.428 12.857v475.428q0 7.428 5.428 12.857t12.857 5.428h365.714q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="403" />
232
- <glyph unicode="&#xf0f8;" d="M109.715 100.572v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM109.715 173.714v-18.286q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM182.857 173.714v-18.286q0-3.714-2.714-6.428t-6.429-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM109.715 246.857v-18.285q0-3.714-2.715-6.428t-6.428-2.714h-18.285q-3.715 0-6.428 2.714t-2.715 6.428v18.286q0 3.714 2.715 6.428t6.428 2.714h18.285q3.715 0 6.428-2.714t2.715-6.428zM329.143 100.572v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 173.714v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM182.857 246.857v-18.285q0-3.714-2.714-6.428t-6.429-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM329.143 173.714v-18.286q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 246.857v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM329.143 246.857v-18.285q0-3.714-2.714-6.428t-6.428-2.714h-18.286q-3.714 0-6.428 2.714t-2.714 6.428v18.286q0 3.714 2.714 6.428t6.428 2.714h18.286q3.714 0 6.428-2.714t2.714-6.428zM256 0h109.714v329.143h-73.143v-9.143q0-11.428-8-19.428t-19.428-8h-128q-11.428 0-19.428 8t-8 19.428v9.143h-73.143v-329.143h109.715v64q0 3.714 2.714 6.428t6.429 2.714h91.428q3.714 0 6.428-2.714t2.714-6.428v-64zM256 338.286v91.428q0 3.715-2.714 6.429t-6.428 2.714h-18.286q-3.714 0-6.428-2.714t-2.714-6.429v-27.428h-36.572v27.428q0 3.715-2.714 6.429t-6.428 2.714h-18.286q-3.714 0-6.428-2.714t-2.714-6.429v-91.428q0-3.714 2.714-6.428t6.428-2.714h18.286q3.714 0 6.428 2.714t2.714 6.428v27.428h36.572v-27.428q0-3.714 2.714-6.428t6.428-2.714h18.286q3.714 0 6.428 2.714t2.714 6.428zM402.286 347.429v-365.714q0-7.428-5.428-12.857t-12.857-5.428h-365.714q-7.428 0-12.857 5.428t-5.428 12.857v365.714q0 7.428 5.428 12.857t12.857 5.429h91.428v82.285q0 11.428 8 19.428t19.428 8h128q11.428 0 19.428-8t8-19.428v-82.285h91.428q7.428 0 12.857-5.429t5.428-12.857z" horiz-adv-x="403" />
233
- <glyph unicode="&#xf0f9;" d="M182.857 73.143q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.715-25.857 10.715-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM73.143 219.429h109.715v73.143h-45.143q-4-0.571-6.286-2.571l-55.715-55.714q-2-3.429-2.572-6.286v-8.572zM438.857 73.143q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.714-25.857 10.714-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM475.428 265.143v54.857q0 4-2.572 6.572t-6.572 2.571h-64v64q0 4-2.572 6.572t-6.572 2.572h-54.857q-4 0-6.572-2.572t-2.572-6.572v-64h-64q-4 0-6.572-2.571t-2.571-6.572v-54.857q0-4 2.571-6.571t6.572-2.572h64v-64q0-4 2.572-6.572t6.572-2.572h54.857q4 0 6.572 2.572t2.572 6.572v64h64q4 0 6.572 2.571t2.572 6.572zM548.572 420.572v-329.143q0-7.428-5.428-12.857t-12.857-5.428h-54.857q0-30.286-21.428-51.714t-51.714-21.428-51.714 21.428-21.428 51.714h-109.714q0-30.286-21.428-51.714t-51.714-21.428-51.715 21.428-21.428 51.714h-36.572q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857 12.857 5.428v118.857q0 7.429 3.715 16.572t9.143 14.572l56.572 56.572q5.428 5.428 14.572 9.143t16.572 3.714h45.714v91.428q0 7.429 5.428 12.857t12.857 5.428h329.143q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="549" />
234
- <glyph unicode="&#xf0fa;" d="M365.714 155.429v54.857q0 4-2.572 6.572t-6.572 2.572h-64v64q0 4-2.572 6.572t-6.572 2.571h-54.857q-4 0-6.571-2.571t-2.571-6.572v-64h-64q-4 0-6.571-2.572t-2.571-6.572v-54.857q0-4 2.571-6.572t6.572-2.572h64v-64q0-4 2.571-6.572t6.571-2.572h54.857q4 0 6.572 2.572t2.572 6.572v64h64q4 0 6.572 2.572t2.572 6.572zM182.857 365.714h146.286v36.572h-146.286v-36.572zM73.143 365.714v-365.714h-9.143q-26.285 0-45.143 18.857t-18.857 45.143v237.714q0 26.286 18.857 45.143t45.143 18.857h9.143zM411.428 365.714v-365.714h-310.857v365.714h45.714v45.714q0 11.428 8 19.428t19.428 8h164.572q11.428 0 19.428-8t8-19.428v-45.714h45.714zM512 301.714v-237.714q0-26.286-18.857-45.143t-45.143-18.857h-9.143v365.714h9.143q26.286 0 45.143-18.857t18.857-45.143z" />
235
- <glyph unicode="&#xf0fb;" d="M548.572 201.143q-0.285-9.143-82.286-27.428l-100.572-9.143-64-18.286h-18.286l-83.714-100.572h19.714q7.428 0 12.857-1.286t5.429-3.286-5.428-3.286-12.857-1.286h-91.429v9.143h18.286v118.857h-45.715l-54.857-64h-27.428l-9.143 9.143v54.857h9.143v9.143h36.572v2.286l-54.857 6.857v36.572l54.857 6.857v2.286h-36.572v9.143h-9.143v54.857l9.143 9.143h27.428l54.857-64h45.715v118.857h-18.286v9.143h91.428q7.428 0 12.857-1.286t5.429-3.286-5.428-3.286-12.857-1.285h-19.715l83.714-100.572h18.286l64-18.286 100.572-9.143q74.571-16.571 82-26.571z" horiz-adv-x="549" />
236
- <glyph unicode="&#xf0fc;" d="M182.857 219.429v109.714h-73.143v-73.143q0-15.143 10.715-25.857t25.857-10.714h36.572zM475.428 91.429v-54.857h-329.143v54.857l36.572 54.857h-36.572q-45.428 0-77.572 32.143t-32.143 77.572v91.428l-18.285 18.286 9.143 36.571h137.143l9.143 36.572h274.285l9.143-54.857-18.286-9.143v-228.571z" horiz-adv-x="476" />
237
- <glyph unicode="&#xf0fd;" d="M365.714 91.429v256q0 7.428-5.428 12.857t-12.857 5.428h-36.572q-7.428 0-12.857-5.428t-5.428-12.857v-91.428h-146.286v91.428q0 7.428-5.428 12.857t-12.857 5.429h-36.572q-7.428 0-12.857-5.429t-5.428-12.857v-256q0-7.428 5.428-12.857t12.857-5.428h36.572q7.429 0 12.857 5.428t5.428 12.857v91.428h146.286v-91.428q0-7.428 5.428-12.857t12.857-5.428h36.572q7.428 0 12.857 5.428t5.428 12.857zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
238
- <glyph unicode="&#xf0fe;" d="M365.714 201.143v36.572q0 7.428-5.428 12.857t-12.857 5.429h-91.428v91.428q0 7.428-5.428 12.857t-12.857 5.429h-36.571q-7.428 0-12.857-5.429t-5.429-12.857v-91.428h-91.428q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h91.428v-91.428q0-7.428 5.428-12.857t12.857-5.428h36.571q7.428 0 12.857 5.428t5.429 12.857v91.428h91.428q7.428 0 12.857 5.428t5.428 12.857zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
239
- <glyph unicode="&#xf100;" d="M179.143 82.286q0-3.714-2.857-6.572l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.571t-2.857-6.572l-112.285-112.286 112.285-112.286q2.857-2.857 2.857-6.572zM288.857 82.286q0-3.714-2.857-6.572l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.571t-2.857-6.572l-112.286-112.286 112.286-112.286q2.857-2.857 2.857-6.572z" horiz-adv-x="293" />
240
- <glyph unicode="&#xf101;" d="M170 201.143q0-3.714-2.857-6.572l-133.143-133.143q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.286 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l112.285 112.286-112.285 112.286q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572zM279.714 201.143q0-3.714-2.857-6.572l-133.143-133.143q-2.857-2.857-6.571-2.857t-6.572 2.857l-14.285 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l112.285 112.286-112.285 112.286q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572z" horiz-adv-x="293" />
241
- <glyph unicode="&#xf102;" d="M307.143 100.572q0-3.714-2.857-6.572l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-112.286 112.286-112.285-112.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.285 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.571 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572zM307.143 210.286q0-3.714-2.857-6.572l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-112.286 112.286-112.285-112.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.285 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.571 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572z" horiz-adv-x="329" />
242
- <glyph unicode="&#xf103;" d="M307.143 228.572q0-3.714-2.857-6.571l-133.143-133.143q-2.857-2.857-6.571-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l112.285-112.286 112.285 112.286q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.572zM307.143 338.286q0-3.714-2.857-6.571l-133.143-133.143q-2.857-2.857-6.571-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l112.285-112.286 112.285 112.286q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.572z" horiz-adv-x="329" />
243
- <glyph unicode="&#xf104;" d="M179.143 320q0-3.714-2.857-6.571l-112.285-112.286 112.285-112.286q2.857-2.857 2.857-6.572t-2.857-6.572l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.571z" horiz-adv-x="183" />
244
- <glyph unicode="&#xf105;" d="M170 201.143q0-3.714-2.857-6.572l-133.143-133.143q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.286 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l112.285 112.286-112.285 112.286q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572z" horiz-adv-x="183" />
245
- <glyph unicode="&#xf106;" d="M307.143 137.143q0-3.714-2.857-6.572l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-112.286 112.286-112.285-112.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.285 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.571 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572z" horiz-adv-x="329" />
246
- <glyph unicode="&#xf107;" d="M307.143 265.143q0-3.714-2.857-6.572l-133.143-133.143q-2.857-2.857-6.571-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l112.285-112.286 112.285 112.286q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.572z" horiz-adv-x="329" />
247
- <glyph unicode="&#xf108;" d="M512 192v237.714q0 3.714-2.714 6.428t-6.428 2.714h-457.143q-3.715 0-6.428-2.714t-2.715-6.428v-237.714q0-3.714 2.715-6.428t6.428-2.714h457.143q3.714 0 6.428 2.714t2.714 6.428zM548.572 429.714v-310.857q0-18.857-13.428-32.286t-32.286-13.428h-155.429q0-10.572 4.572-22.143t9.143-20.286 4.572-12.428q0-7.428-5.428-12.857t-12.857-5.428h-146.286q-7.428 0-12.857 5.428t-5.429 12.857q0 4 4.572 12.572t9.143 20 4.571 22.286h-155.429q-18.857 0-32.285 13.428t-13.428 32.286v310.857q0 18.857 13.428 32.286t32.285 13.428h457.143q18.857 0 32.285-13.428t13.428-32.286z" horiz-adv-x="549" />
248
- <glyph unicode="&#xf109;" d="M118.857 109.714q-18.857 0-32.285 13.428t-13.428 32.286v201.143q0 18.857 13.428 32.286t32.285 13.428h310.857q18.857 0 32.286-13.428t13.428-32.286v-201.143q0-18.857-13.428-32.286t-32.286-13.428h-310.857zM109.715 356.572v-201.143q0-3.714 2.715-6.428t6.428-2.714h310.857q3.714 0 6.428 2.714t2.714 6.428v201.143q0 3.714-2.714 6.429t-6.428 2.714h-310.857q-3.715 0-6.428-2.714t-2.715-6.429zM502.857 91.429h45.714v-27.428q0-11.428-13.428-19.428t-32.286-8h-457.143q-18.857 0-32.285 8t-13.428 19.428v27.428h502.857zM297.143 64q4.572 0 4.572 4.572t-4.572 4.572h-45.714q-4.572 0-4.572-4.572t4.572-4.572h45.714z" horiz-adv-x="549" />
249
- <glyph unicode="&#xf10a;" d="M182.857 73.143q0 7.428-5.429 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM292.572 118.857v274.286q0 3.714-2.714 6.428t-6.428 2.714h-237.714q-3.715 0-6.428-2.714t-2.715-6.428v-274.286q0-3.714 2.715-6.428t6.428-2.714h237.714q3.714 0 6.428 2.714t2.714 6.428zM329.143 393.143v-310.857q0-18.857-13.428-32.286t-32.286-13.428h-237.714q-18.857 0-32.285 13.428t-13.428 32.286v310.857q0 18.857 13.428 32.286t32.285 13.428h237.714q18.857 0 32.286-13.428t13.428-32.286z" horiz-adv-x="329" />
250
- <glyph unicode="&#xf10b;" d="M132.571 73.143q0 9.428-6.715 16.143t-16.143 6.714-16.143-6.714-6.715-16.143 6.715-16.143 16.143-6.714 16.143 6.714 6.715 16.143zM192 118.857v201.143q0 3.714-2.714 6.429t-6.428 2.714h-146.286q-3.715 0-6.428-2.714t-2.715-6.428v-201.143q0-3.714 2.715-6.428t6.428-2.714h146.286q3.714 0 6.428 2.714t2.714 6.428zM137.143 361.143q0 4.572-4.571 4.572h-45.715q-4.572 0-4.572-4.572t4.572-4.572h45.715q4.572 0 4.572 4.572zM219.429 365.714v-292.571q0-14.857-10.857-25.714t-25.714-10.857h-146.286q-14.857 0-25.715 10.857t-10.857 25.714v292.572q0 14.857 10.857 25.714t25.715 10.857h146.286q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="220" />
251
- <glyph unicode="&#xf10c;" d="M219.429 374.857q-42.285 0-78-20.857t-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78-20.857 78-56.572 56.572-78 20.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
252
- <glyph unicode="&#xf10d;" d="M219.429 201.143v-109.714q0-22.857-16-38.857t-38.857-16h-109.715q-22.857 0-38.857 16t-16 38.857v201.143q0 29.715 11.572 56.714t31.285 46.715 46.715 31.285 56.714 11.572h18.286q7.428 0 12.857-5.428t5.429-12.857v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-18.285q-30.285 0-51.715-21.428t-21.428-51.714v-9.143q0-11.428 8-19.428t19.428-8h64q22.857 0 38.857-16t16-38.857zM475.428 201.143v-109.714q0-22.857-16-38.857t-38.857-16h-109.714q-22.857 0-38.857 16t-16 38.857v201.143q0 29.715 11.572 56.714t31.286 46.715 46.714 31.285 56.714 11.572h18.286q7.428 0 12.857-5.428t5.428-12.857v-36.572q0-7.428-5.428-12.857t-12.857-5.428h-18.286q-30.286 0-51.714-21.428t-21.428-51.714v-9.143q0-11.428 8-19.428t19.428-8h64q22.857 0 38.857-16t16-38.857z" horiz-adv-x="476" />
253
- <glyph unicode="&#xf10e;" d="M219.429 384v-201.143q0-29.714-11.571-56.714t-31.286-46.714-46.714-31.286-56.715-11.572h-18.285q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h18.285q30.285 0 51.715 21.428t21.428 51.714v9.143q0 11.428-8 19.428t-19.428 8h-64q-22.857 0-38.857 16t-16 38.857v109.715q0 22.857 16 38.857t38.857 16h109.715q22.857 0 38.857-16t16-38.857zM475.428 384v-201.143q0-29.714-11.572-56.714t-31.286-46.714-46.714-31.286-56.714-11.572h-18.286q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h18.286q30.286 0 51.714 21.428t21.428 51.714v9.143q0 11.428-8 19.428t-19.428 8h-64q-22.857 0-38.857 16t-16 38.857v109.715q0 22.857 16 38.857t38.857 16h109.714q22.857 0 38.857-16t16-38.857z" horiz-adv-x="476" />
254
- <glyph unicode="&#xf110;" d="M141.714 91.429q0-17.143-12.143-29.143t-29-12q-17.143 0-29.143 12t-12 29.143 12 29.143 29.143 12q16.857 0 29-12t12.143-29.143zM265.143 36.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.714 25.857 10.714 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM91.428 219.429q0-18.857-13.428-32.286t-32.285-13.428-32.285 13.428-13.428 32.286 13.428 32.286 32.285 13.428 32.285-13.428 13.428-32.286zM388.572 91.429q0-13.143-9.428-22.572t-22.572-9.428-22.572 9.428-9.428 22.572 9.428 22.572 22.572 9.428 22.572-9.428 9.428-22.572zM150.857 347.429q0-20.857-14.714-35.572t-35.572-14.714-35.572 14.714-14.715 35.572 14.715 35.572 35.572 14.714 35.572-14.714 14.714-35.572zM283.428 402.286q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857 16 38.857 38.857 16 38.857-16 16-38.857zM438.857 219.429q0-11.428-8-19.428t-19.428-8-19.428 8-8 19.428 8 19.428 19.428 8 19.428-8 8-19.428zM379.428 347.429q0-9.428-6.714-16.143t-16.143-6.714-16.143 6.714-6.714 16.143 6.714 16.143 16.143 6.714 16.143-6.714 6.714-16.143z" horiz-adv-x="448" />
255
- <glyph unicode="&#xf111;" d="M438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
256
- <glyph unicode="&#xf112;" d="M512 155.429q0-47.428-36.286-128.857-0.857-2-3-6.857t-3.857-8.572-3.714-6.286q-3.428-4.857-8-4.857-4.286 0-6.714 2.857t-2.428 7.143q0 2.572 0.714 7.572t0.714 6.714q1.428 19.428 1.428 35.143 0 28.857-5 51.714t-13.857 39.572-22.857 28.857-30.143 19.857-38 12.143-44 6.143-50.143 1.714h-64v-73.143q0-7.428-5.429-12.857t-12.857-5.428-12.857 5.428l-146.286 146.286q-5.428 5.428-5.428 12.857t5.428 12.857l146.286 146.286q5.428 5.428 12.857 5.428t12.857-5.428 5.428-12.857v-73.143h64q203.714 0 250-115.143 15.143-38.285 15.143-95.143z" />
257
- <glyph unicode="&#xf113;" d="M182.857 128q0-11.428-3.571-23.428t-12.286-21.714-20.714-9.714-20.715 9.714-12.285 21.714-3.572 23.428 3.572 23.428 12.285 21.714 20.715 9.714 20.714-9.714 12.286-21.714 3.571-23.428zM365.714 128q0-11.428-3.572-23.428t-12.286-21.714-20.714-9.714-20.714 9.714-12.286 21.714-3.572 23.428 3.572 23.428 12.286 21.714 20.714 9.714 20.714-9.714 12.286-21.714 3.572-23.428zM411.428 128q0 34.286-19.714 58.286t-53.428 24q-11.714 0-55.714-6-20.286-3.143-44.857-3.143t-44.857 3.143q-43.428 6-55.714 6-33.715 0-53.428-24t-19.715-58.286q0-25.143 9.143-43.857t23.143-29.428 34.857-17.143 40-8.428 42.572-2h48q23.428 0 42.572 2t40 8.428 34.857 17.143 23.143 29.428 9.143 43.857zM475.428 178.286q0-59.143-17.428-94.572-10.857-22-30.143-38t-40.286-24.572-48.572-13.572-49-6.286-47.714-1.286q-22.286 0-40.572 0.857t-42.143 3.572-43.572 8.572-39.143 14.714-34.572 23.143-24.572 32.857q-17.715 35.143-17.715 94.572 0 67.714 38.857 113.143-7.715 23.429-7.715 48.572 0 33.143 14.572 62.286 30.857 0 54.285-11.286t54-35.286q42 10 88.286 10 42.286 0 80-9.143 30 23.429 53.428 34.572t54 11.143q14.572-29.143 14.572-62.286 0-24.857-7.714-48 38.857-45.714 38.857-113.714z" horiz-adv-x="476" />
258
- <glyph unicode="&#xf114;" d="M438.857 100.572v201.143q0 11.429-8 19.429t-19.428 8h-201.143q-11.429 0-19.429 8t-8 19.428v18.286q0 11.428-8 19.428t-19.428 8h-91.428q-11.428 0-19.428-8t-8-19.428v-274.286q0-11.428 8-19.428t19.428-8h347.428q11.428 0 19.428 8t8 19.428zM475.428 301.714v-201.143q0-26.286-18.857-45.143t-45.143-18.857h-347.428q-26.285 0-45.143 18.857t-18.857 45.143v274.286q0 26.286 18.857 45.143t45.143 18.857h91.428q26.286 0 45.143-18.857t18.857-45.143v-9.143h192q26.286 0 45.143-18.857t18.857-45.143z" horiz-adv-x="476" />
259
- <glyph unicode="&#xf115;" d="M508.857 209.429q0 10-15.143 10h-310.857q-11.428 0-24.428-6.143t-20.428-15l-84-103.714q-5.143-6.857-5.143-11.428 0-10 15.143-10h310.857q11.428 0 24.572 6.286t20.286 15.143l84 103.714q5.143 6.286 5.143 11.143zM182.857 256h219.429v45.715q0 11.428-8 19.428t-19.428 8h-164.571q-11.429 0-19.429 8t-8 19.428v18.286q0 11.428-8 19.428t-19.428 8h-91.428q-11.428 0-19.428-8t-8-19.428v-243.714l73.143 90q12.572 15.143 33.143 25t40 9.857zM545.428 209.429q0-17.714-13.143-34.286l-84.286-103.714q-12.286-15.143-33.143-25t-40-9.857h-310.857q-26.285 0-45.143 18.857t-18.857 45.143v274.286q0 26.286 18.857 45.143t45.143 18.857h91.428q26.286 0 45.143-18.857t18.857-45.143v-9.143h155.429q26.286 0 45.143-18.857t18.857-45.143v-45.714h54.857q15.428 0 28.285-7t19.143-20.143q4.285-9.143 4.285-19.428z" horiz-adv-x="549" />
260
- <glyph unicode="&#xf118;" d="M324 168.286q-10.572-34.572-39.428-55.714t-65.143-21.143-65.143 21.143-39.428 55.714q-2.285 7.143 1.143 13.857t10.857 9q7.143 2.286 13.857-1.143t9-10.857q7.143-22.857 26.428-37t43.286-14.143 43.286 14.143 26.428 37q2.286 7.428 9.143 10.857t14 1.143 10.572-9 1.143-13.857zM182.857 292.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.715 25.857 10.715 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM329.143 292.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.714 25.857 10.714 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM402.286 219.429q0 37.143-14.572 71t-39 58.285-58.286 39-71 14.572-71-14.572-58.285-39-39-58.285-14.572-71 14.572-71 39-58.286 58.285-39 71-14.572 71 14.572 58.286 39 39 58.286 14.572 71zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
261
- <glyph unicode="&#xf119;" d="M324 124.286q2.286-7.143-1.143-13.857t-10.572-9-14 1.143-9.143 10.857q-7.143 22.857-26.428 37t-43.286 14.143-43.286-14.143-26.428-37q-2.286-7.428-9-10.857t-13.857-1.143q-7.428 2.286-10.857 9t-1.143 13.857q10.572 34.572 39.429 55.714t65.143 21.143 65.143-21.143 39.428-55.714zM182.857 292.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.715 25.857 10.715 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM329.143 292.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.714 25.857 10.714 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM402.286 219.429q0 37.143-14.572 71t-39 58.285-58.286 39-71 14.572-71-14.572-58.285-39-39-58.285-14.572-71 14.572-71 39-58.286 58.285-39 71-14.572 71 14.572 58.286 39 39 58.286 14.572 71zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
262
- <glyph unicode="&#xf11a;" d="M329.143 164.572q0-7.428-5.428-12.857t-12.857-5.428h-182.857q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857 12.857 5.428h182.857q7.428 0 12.857-5.428t5.428-12.857zM182.857 292.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.715 25.857 10.715 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM329.143 292.572q0-15.143-10.714-25.857t-25.857-10.714-25.857 10.714-10.714 25.857 10.714 25.857 25.857 10.714 25.857-10.714 10.714-25.857zM402.286 219.429q0 37.143-14.572 71t-39 58.285-58.286 39-71 14.572-71-14.572-58.285-39-39-58.285-14.572-71 14.572-71 39-58.286 58.285-39 71-14.572 71 14.572 58.286 39 39 58.286 14.572 71zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
263
- <glyph unicode="&#xf11b;" d="M237.714 164.572v36.572q0 4-2.571 6.572t-6.571 2.572h-54.857v54.857q0 4-2.571 6.572t-6.572 2.571h-36.572q-4 0-6.572-2.571t-2.572-6.572v-54.857h-54.857q-4 0-6.572-2.572t-2.572-6.572v-36.572q0-4 2.572-6.572t6.572-2.572h54.857v-54.857q0-4 2.572-6.572t6.572-2.572h36.572q4 0 6.572 2.572t2.571 6.572v54.857h54.857q4 0 6.572 2.572t2.571 6.572zM402.286 146.286q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.714-25.857 10.714-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM475.428 219.429q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.714-25.857 10.714-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM548.572 182.857q0-60.572-42.857-103.428t-103.428-42.857q-54.857 0-96.572 36.572h-62.857q-41.715-36.572-96.571-36.572-60.572 0-103.428 42.857t-42.857 103.428 42.857 103.428 103.428 42.857h256q60.572 0 103.428-42.857t42.857-103.428z" horiz-adv-x="549" />
264
- <glyph unicode="&#xf11c;" d="M109.715 141.714v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM146.286 214.857v-27.428q0-4.572-4.572-4.572h-64q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h64q4.572 0 4.572-4.572zM109.715 288v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM402.286 141.714v-27.428q0-4.572-4.572-4.572h-246.857q-4.571 0-4.571 4.572v27.428q0 4.572 4.572 4.572h246.857q4.572 0 4.572-4.572zM219.429 214.857v-27.428q0-4.572-4.571-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM182.857 288v-27.428q0-4.572-4.571-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM292.572 214.857v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM256 288v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM365.714 214.857v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM475.428 141.714v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM329.143 288v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM402.286 288v-27.428q0-4.572-4.572-4.572h-27.428q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM475.428 288v-100.571q0-4.572-4.572-4.572h-64q-4.572 0-4.572 4.572v27.428q0 4.572 4.572 4.572h32v68.572q0 4.572 4.572 4.572h27.428q4.572 0 4.572-4.572zM512 73.143v256h-475.428v-256h475.428zM548.572 329.143v-256q0-15.143-10.715-25.857t-25.857-10.714h-475.428q-15.143 0-25.857 10.714t-10.714 25.857v256q0 15.143 10.714 25.857t25.857 10.715h475.428q15.143 0 25.857-10.715t10.715-25.857z" horiz-adv-x="549" />
265
- <glyph unicode="&#xf11d;" d="M475.428 176.857v176q-48.286-26-87.428-26-23.428 0-41.428 9.143-28.572 14-52.572 21.857t-50.857 7.857q-49.429 0-115.143-36.285v-171.143q70 32.286 123.714 32.286 15.714 0 29.572-2.143t28-7.428 22-8.857 23.572-11.286l8-4q12.572-6.286 28.857-6.286 34.286 0 83.714 26.286zM91.428 402.286q0-10-5-18.285t-13.285-13.143v-361.714q0-4-2.572-6.572t-6.572-2.572h-18.285q-4 0-6.572 2.572t-2.572 6.572v361.714q-8.285 4.857-13.285 13.143t-5 18.286q0 15.143 10.715 25.857t25.857 10.715 25.857-10.715 10.715-25.857zM512 384v-218q0-11.143-10-16.286-2.857-1.428-4.857-2.572-62.286-33.143-105.428-33.143-25.143 0-45.143 10l-8 4q-18.286 9.428-28.286 13.714t-26 8.286-32.572 4q-29.143 0-67.286-12.572t-65.285-29.143q-4.285-2.572-9.428-2.572-4.572 0-9.143 2.286-9.143 5.428-9.143 16v212q0 10 8.857 15.714 10 6 22.428 12.143t32.572 14.857 43.571 14.143 44.286 5.428q32 0 59.714-8.857t59.714-24.571q10.857-5.429 25.428-5.429 34.857 0 88.572 32 6.286 3.429 8.857 4.857 8.857 4.572 17.714-0.572 8.857-5.714 8.857-15.714z" />
266
- <glyph unicode="&#xf11e;" d="M237.714 189.714v54.857q-51.714-4.571-109.715-33.428v-52.857q58.572 27.428 109.715 31.428zM237.714 309.143v56.286q-49.143-2.286-109.715-36v-54q61.428 31.714 109.715 33.714zM475.428 176.857v52.572q-67.143-33.143-109.714-20.286v64q-5.714 1.714-11.143 4.286-1.428 0.857-9.428 4.857t-9.857 4.857-9 4.286-9.857 4.428-9.286 3.714-10.286 3.571-10 2.429-11.286 2.143-11.286 1.143-12.572 0.571q-6.572 0-14-0.857v-63.428h5.428q29.143 0 55-8.286t56.428-23.428q5.428-2.572 11.143-4.286v-53.714q12-4.857 26-4.857 34.286 0 83.714 26.286zM475.428 298.857v54q-48.286-26-87.428-26-12.857 0-22.286 2.286v-56q42.286-12 109.714 25.715zM91.428 402.286q0-10-5-18.285t-13.285-13.143v-361.714q0-4-2.572-6.572t-6.572-2.572h-18.285q-4 0-6.572 2.572t-2.572 6.572v361.714q-8.285 4.857-13.285 13.143t-5 18.286q0 15.143 10.715 25.857t25.857 10.715 25.857-10.715 10.715-25.857zM512 384v-218q0-11.143-10-16.286-2.857-1.428-4.857-2.572-62.286-33.143-105.428-33.143-25.143 0-45.143 10l-8 4q-18.286 9.428-28.286 13.714t-26 8.286-32.572 4q-29.143 0-67.286-12.572t-65.285-29.143q-4.285-2.572-9.428-2.572-4.572 0-9.143 2.286-9.143 5.428-9.143 16v212q0 10 8.857 15.714 10 6 22.428 12.143t32.572 14.857 43.571 14.143 44.286 5.428q32 0 59.714-8.857t59.714-24.571q10.857-5.429 25.428-5.429 34.857 0 88.572 32 6.286 3.429 8.857 4.857 8.857 4.572 17.714-0.572 8.857-5.714 8.857-15.714z" />
267
- <glyph unicode="&#xf120;" d="M167.143 194.572l-133.143-133.143q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.286 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l112.285 112.286-112.285 112.286q-2.857 2.857-2.857 6.572t2.857 6.572l14.285 14.286q2.857 2.857 6.572 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572t-2.857-6.572zM475.428 64v-18.286q0-4-2.572-6.572t-6.572-2.572h-274.286q-4 0-6.572 2.572t-2.571 6.572v18.286q0 4 2.571 6.572t6.572 2.572h274.286q4 0 6.572-2.572t2.572-6.572z" horiz-adv-x="476" />
268
- <glyph unicode="&#xf121;" d="M176.286 75.714l-14.286-14.286q-2.857-2.857-6.572-2.857t-6.572 2.857l-133.143 133.143q-2.857 2.857-2.857 6.572t2.857 6.572l133.143 133.143q2.857 2.857 6.572 2.857t6.572-2.857l14.286-14.286q2.857-2.857 2.857-6.571t-2.857-6.572l-112.285-112.286 112.285-112.286q2.857-2.857 2.857-6.572t-2.857-6.572zM345.143 380.572l-106.572-368.857q-1.143-3.714-4.428-5.572t-6.714-0.714l-17.714 4.857q-3.714 1.143-5.572 4.428t-0.714 7l106.572 368.857q1.143 3.714 4.428 5.571t6.714 0.715l17.714-4.857q3.714-1.143 5.572-4.428t0.714-7zM532.857 194.572l-133.143-133.143q-2.857-2.857-6.572-2.857t-6.572 2.857l-14.286 14.286q-2.857 2.857-2.857 6.572t2.857 6.572l112.286 112.286-112.286 112.286q-2.857 2.857-2.857 6.572t2.857 6.572l14.286 14.286q2.857 2.857 6.572 2.857t6.572-2.857l133.143-133.143q2.857-2.857 2.857-6.572t-2.857-6.572z" horiz-adv-x="549" />
269
- <glyph unicode="&#xf122;" d="M182.857 166.286v-20q0-12-11.143-16.857-3.714-1.428-7.143-1.428-7.714 0-12.857 5.428l-146.286 146.286q-5.428 5.428-5.428 12.857t5.428 12.857l146.286 146.286q8.286 8.857 20 4 11.143-4.857 11.143-16.857v-19.714l-113.428-113.714q-5.428-5.428-5.428-12.857t5.428-12.857zM512 155.429q0-16.572-4.857-38.143t-11-39.428-13.714-35.714-11.572-25.857l-5.714-11.428q-2.286-4.857-8-4.857-1.714 0-2.572 0.286-7.143 2.286-6.572 9.714 12.286 114.286-30.286 161.429-18.286 20.286-48.714 31.572t-76.428 15v-71.714q0-12-11.143-16.857-3.714-1.428-7.143-1.428-7.714 0-12.857 5.428l-146.286 146.286q-5.428 5.428-5.428 12.857t5.428 12.857l146.286 146.286q8.286 8.857 20 4 11.143-4.857 11.143-16.857v-74.857q117.428-8 171.143-63.143 48.286-49.428 48.286-145.428z" />
270
- <glyph unicode="&#xf123;" d="M338.857 202l73.428 71.428-120.572 17.714-8.572 17.143-45.428 92v-275.143l16.857-8.857 90.857-48-17.143 101.428-3.428 18.857zM468 276.857l-103.714-101.143 24.572-142.857q1.428-9.428-1.714-14.714t-9.714-5.286q-4.857 0-11.428 3.428l-128.286 67.428-128.286-67.428q-6.572-3.428-11.428-3.428-6.572 0-9.715 5.286t-1.715 14.714l24.572 142.857-104 101.143q-9.143 9.143-6.572 17t15.428 9.857l143.429 20.857 64.286 130q5.714 11.714 14 11.714 8 0 14-11.714l64.286-130 143.429-20.857q12.857-2 15.428-9.857t-6.857-17z" horiz-adv-x="476" />
271
- <glyph unicode="&#xf124;" d="M400.286 375.714l-182.857-365.714q-4.857-10-16.285-10-1.429 0-4.286 0.572-6.286 1.428-10.143 6.428t-3.857 11.286v164.571h-164.571q-6.285 0-11.286 3.857t-6.428 10.143 1.143 12 8.286 8.572l365.714 182.857q3.714 2 8.286 2 7.714 0 12.857-5.428 4.286-4 5.286-9.857t-1.857-11.286z" horiz-adv-x="403" />
272
- <glyph unicode="&#xf125;" d="M159.143 109.714h170v170zM146.286 122.572l170 170h-170v-170zM475.428 100.572v-54.857q0-4-2.572-6.572t-6.572-2.572h-64v-64q0-4-2.572-6.572t-6.572-2.572h-54.857q-4 0-6.572 2.572t-2.572 6.572v64h-246.857q-4 0-6.572 2.572t-2.572 6.572v246.857h-64q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h64v64q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.572-2.571t2.571-6.572v-64h243.143l70.286 70.572q2.857 2.571 6.572 2.571t6.572-2.571q2.572-2.857 2.572-6.572t-2.572-6.572l-70.572-70.286v-243.143h64q4 0 6.572-2.572t2.572-6.572z" horiz-adv-x="476" />
273
- <glyph unicode="&#xf126;" d="M82.285 54.857q0 11.428-8 19.428t-19.428 8-19.428-8-8-19.428 8-19.428 19.428-8 19.428 8 8 19.428zM82.285 384q0 11.428-8 19.428t-19.428 8-19.428-8-8-19.428 8-19.429 19.428-8 19.428 8 8 19.429zM265.143 347.429q0 11.428-8 19.428t-19.428 8-19.428-8-8-19.428 8-19.428 19.428-8 19.428 8 8 19.428zM292.572 347.429q0-14.857-7.428-27.572t-20-19.857q-0.572-82-64.572-118.285-19.428-10.857-58-23.143-36.572-11.428-48.428-20.286t-11.857-28.572v-7.428q12.572-7.143 20-19.857t7.428-27.572q0-22.857-16-38.857t-38.857-16-38.857 16-16 38.857q0 14.857 7.428 27.572t20 19.857v234.286q-12.572 7.143-20 19.857t-7.428 27.572q0 22.857 16 38.857t38.857 16 38.857-16 16-38.857q0-14.857-7.428-27.572t-20-19.857v-142q15.428 7.428 44 16.286 15.715 4.857 25 8.428t20.143 8.857 16.857 11.286 11.572 14.572 8 19.857 2.429 26.143q-12.571 7.143-20 19.857t-7.429 27.572q0 22.857 16 38.857t38.857 16 38.857-16 16-38.857z" horiz-adv-x="293" />
274
- <glyph unicode="&#xf127;" d="M125.428 112.286l-73.143-73.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572-2.572 2.857-2.572 6.572t2.572 6.572l73.143 73.143q2.857 2.572 6.572 2.572t6.572-2.572q2.572-2.857 2.572-6.572t-2.572-6.572zM173.714 100.572v-91.428q0-4-2.571-6.572t-6.571-2.572-6.572 2.572-2.571 6.572v91.428q0 4 2.571 6.572t6.572 2.572 6.572-2.572 2.571-6.572zM109.715 164.572q0-4-2.572-6.572t-6.572-2.572h-91.428q-4 0-6.572 2.572t-2.571 6.572 2.571 6.572 6.572 2.572h91.428q4 0 6.572-2.572t2.572-6.572zM470.857 128q0-34.286-24.286-58l-42-41.714q-23.714-23.714-58-23.714-34.572 0-58.286 24.286l-95.428 95.714q-6 6-12 16l68.286 5.143 78-78.286q7.714-7.714 19.428-7.857t19.428 7.572l42 41.714q8 8 8 19.143 0 11.428-8 19.428l-78.286 78.572 5.143 68.286q10-6 16-12l96-96q24-24.572 24-58.286zM294.572 334.857l-68.286-5.143-78 78.286q-8 8-19.428 8-11.143 0-19.428-7.715l-42-41.714q-8-8-8-19.143 0-11.428 8-19.428l78.285-78.286-5.143-68.572q-10 6-16 12l-96 96q-24 24.572-24 58.286 0 34.285 24.285 58l42 41.714q23.715 23.714 58 23.714 34.572 0 58.286-24.285l95.428-95.715q6-6 12-16zM475.428 310.857q0-4-2.572-6.571t-6.572-2.572h-91.428q-4 0-6.572 2.572t-2.572 6.572 2.572 6.572 6.572 2.571h91.428q4 0 6.572-2.571t2.572-6.572zM320 466.286v-91.428q0-4-2.572-6.572t-6.572-2.572-6.572 2.572-2.572 6.572v91.428q0 4 2.572 6.572t6.572 2.572 6.572-2.572 2.572-6.572zM436.286 423.143l-73.143-73.143q-3.143-2.572-6.572-2.572t-6.572 2.572q-2.572 2.857-2.572 6.571t2.572 6.572l73.143 73.143q2.857 2.572 6.572 2.572t6.572-2.572q2.572-2.857 2.572-6.571t-2.572-6.572z" horiz-adv-x="476" />
275
- <glyph unicode="&#xf128;" d="M201.143 116.572v-68.572q0-4.572-3.429-8t-8-3.428h-68.572q-4.572 0-8 3.428t-3.428 8v68.572q0 4.572 3.428 8t8 3.428h68.572q4.572 0 8-3.428t3.429-8zM291.428 288q0-15.428-4.428-28.857t-10-21.857-15.714-17-16.428-12.428-17.428-10.143q-11.714-6.572-19.572-18.572t-7.857-19.143q0-4.857-3.429-9.286t-8-4.428h-68.572q-4.285 0-7.285 5.286t-3 10.714v12.857q0 23.714 18.571 44.714t40.857 31q16.857 7.714 24 16t7.143 21.714q0 12-13.286 21.143t-30.714 9.143q-18.572 0-30.857-8.286-10-7.143-30.572-32.857-3.715-4.571-8.857-4.571-3.428 0-7.143 2.286l-46.857 35.714q-3.715 2.857-4.428 7.143t1.572 8q45.715 76 132.571 76 22.857 0 46-8.857t41.714-23.714 30.286-36.429 11.714-45.285z" horiz-adv-x="293" />
276
- <glyph unicode="&#xf129;" d="M182.857 91.429v-36.572q0-7.428-5.429-12.857t-12.857-5.428h-146.286q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.428h18.285v109.714h-18.285q-7.428 0-12.857 5.428t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h109.715q7.428 0 12.857-5.428t5.429-12.857v-164.571h18.286q7.428 0 12.857-5.428t5.429-12.857zM146.286 420.572v-54.857q0-7.429-5.428-12.857t-12.857-5.428h-73.143q-7.428 0-12.857 5.428t-5.428 12.857v54.857q0 7.429 5.428 12.857t12.857 5.428h73.143q7.429 0 12.857-5.428t5.428-12.857z" horiz-adv-x="183" />
277
- <glyph unicode="&#xf12a;" d="M146.286 118.857v-64q0-7.428-5.428-12.857t-12.857-5.428h-73.143q-7.428 0-12.857 5.428t-5.428 12.857v64q0 7.428 5.428 12.857t12.857 5.428h73.143q7.429 0 12.857-5.428t5.428-12.857zM154.857 420.572l-8-219.428q-0.286-7.428-5.857-12.857t-13-5.428h-73.143q-7.428 0-13 5.428t-5.857 12.857l-8 219.428q-0.285 7.428 5 12.857t12.715 5.428h91.428q7.429 0 12.714-5.428t5-12.857z" horiz-adv-x="183" />
278
- <glyph unicode="&#xf12b;" d="M256.286 84.286v-47.714h-70.857l-45.429 72-6.857 12q-2.286 2.572-3.143 6h-0.857l-2.572-6q-2.857-5.714-7.143-12.572l-44.285-71.428h-73.715v47.714h36.572l56.285 83.143-52.857 77.714h-39.143v48h78.857l39.715-65.143q0.572-1.143 6.572-12 2.285-2.572 3.143-6h0.857q0.857 2.572 3.143 6l7.143 12 40 65.143h73.428v-48h-35.714l-52.572-76.285 58.286-84.572h31.143zM438.286 278.286v-58.857h-146.857l-0.857 7.714q-1.143 8-1.143 13.143 0 18.286 7.428 33.429t18.572 24.714 24 18.572 24 15.572 18.572 15.428 7.428 18.286q0 10.857-8.428 17.857t-20.143 7q-14.572 0-27.714-11.143-4-3.143-10.286-10.857l-30 26.286q7.428 10.572 18 18.857 23.714 18.572 53.714 18.572 31.428 0 50.857-17t19.428-45.285q0-16-7-29.429t-17.714-21.857-23.286-16.714-23.428-14.428-18.714-14.714-8.714-18h66.286v22.857h36z" />
279
- <glyph unicode="&#xf12c;" d="M256.286 84.286v-47.714h-70.857l-45.429 72-6.857 12q-2.286 2.572-3.143 6h-0.857l-2.572-6q-2.857-5.714-7.143-12.572l-44.285-71.428h-73.715v47.714h36.572l56.285 83.143-52.857 77.714h-39.143v48h78.857l39.715-65.143q0.572-1.143 6.572-12 2.285-2.572 3.143-6h0.857q0.857 2.572 3.143 6l7.143 12 40 65.143h73.428v-48h-35.714l-52.572-76.285 58.286-84.572h31.143zM438.857 22.286v-58.857h-146.857l-1.143 7.714q-0.857 12.857-0.857 13.143 0 18.286 7.428 33.428t18.572 24.714 24 18.572 24 15.572 18.572 15.428 7.428 18.286q0 10.857-8.428 17.857t-20.143 7q-14.572 0-27.714-11.143-4-3.143-10.286-10.857l-30 26.286q7.428 10.572 18 18.857 22.857 18.572 53.714 18.572 31.428 0 50.857-17t19.428-45.286q0-18.857-9.857-33.857t-24-24.572-28.428-17.857-24.857-18-11.714-20.857h66.286v22.857h36z" />
280
- <glyph unicode="&#xf12d;" d="M256 73.143l96 109.714h-219.429l-96-109.714h219.429zM545.428 380.857q4.285-9.714 2.715-20.428t-8.715-18.714l-256-292.572q-10.857-12.572-27.428-12.572h-219.429q-10.857 0-19.857 5.857t-13.572 15.572q-4.285 9.714-2.715 20.428t8.715 18.714l256 292.572q10.857 12.571 27.428 12.571h219.429q10.857 0 19.857-5.857t13.572-15.572z" horiz-adv-x="549" />
281
- <glyph unicode="&#xf12e;" d="M475.428 161.714q0-23.143-12.714-38.572t-35.286-15.428q-11.714 0-22.143 5t-16.857 10.857-16.143 10.857-20.286 5q-31.428 0-31.428-35.428 0-11.143 4.572-32.857t4.286-32.857v-1.428q-6.286 0-9.428-0.286-9.714-0.857-27.857-3.286t-33-3.857-28-1.428q-17.428 0-29.428 7.572t-12 23.857q0 10.572 5 20.286t10.857 16.143 10.857 16.857 5 22.143q0 22.572-15.428 35.286t-38.572 12.714q-24 0-40.857-13t-16.857-36.428q0-12.286 4.285-23.714t9.572-18.428 9.571-15.143 4.286-14.428q0-12.857-13.143-25.428-10.572-10-33.428-10-27.143 0-70 6.857-2.572 0.572-7.857 1.143t-7.857 1.143l-3.715 0.572q-0.285 0-0.857 0.286-0.572 0-0.572 0.286v292.572q0.572-0.286 5-1t9.714-1.429 6.143-1q42.857-6.857 70-6.857 22.857 0 33.428 10 13.143 12.572 13.143 25.428 0 6.286-4.286 14.428t-9.572 15.143-9.572 18.428-4.285 23.714q0 23.429 16.857 36.429t41.143 13q22.857 0 38.286-12.715t15.428-35.285q0-11.715-5-22.143t-10.857-16.857-10.857-16.143-5-20.286q0-16.285 12-23.857t29.428-7.572q18.286 0 51.428 4.286t46.572 4.857v-0.571q-0.286-0.572-1-5t-1.428-9.714-1-6.143q-6.857-42.857-6.857-70 0-22.857 10-33.428 12.572-13.143 25.428-13.143 6.286 0 14.428 4.286t15.143 9.572 18.428 9.572 23.714 4.286q23.428 0 36.428-16.857t13-40.857z" horiz-adv-x="476" />
282
- <glyph unicode="&#xf130;" d="M329.143 274.286v-36.571q0-63.143-42.143-109.857t-104.143-53.572v-37.714h73.143q7.428 0 12.857-5.428t5.428-12.857-5.428-12.857-12.857-5.428h-182.857q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857 12.857 5.428h73.143v37.714q-62 6.857-104.143 53.572t-42.143 109.857v36.572q0 7.428 5.428 12.857t12.857 5.429 12.857-5.428 5.428-12.857v-36.571q0-52.857 37.572-90.428t90.428-37.572 90.428 37.572 37.572 90.428v36.572q0 7.428 5.428 12.857t12.857 5.429 12.857-5.428 5.428-12.857zM256 384v-146.286q0-37.714-26.857-64.572t-64.571-26.857-64.572 26.857-26.857 64.572v146.286q0 37.714 26.857 64.571t64.572 26.857 64.572-26.857 26.857-64.571z" horiz-adv-x="329" />
283
- <glyph unicode="&#xf131;" d="M77.428 205.429l-28.857-28.857q-12 29.428-12 61.143v36.572q0 7.428 5.428 12.857t12.857 5.429 12.857-5.428 5.428-12.857v-36.571q0-15.143 4.285-32.286zM395.714 377.429l-103.143-103.143v-36.571q0-37.714-26.857-64.572t-64.572-26.857q-15.714 0-31.143 5.428l-27.429-27.428q27.714-14.572 58.572-14.572 52.857 0 90.428 37.572t37.572 90.428v36.572q0 7.428 5.428 12.857t12.857 5.429 12.857-5.428 5.428-12.857v-36.571q0-63.143-42.143-109.857t-104.143-53.572v-37.714h73.143q7.428 0 12.857-5.428t5.428-12.857-5.428-12.857-12.857-5.428h-182.857q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857 12.857 5.428h73.143v37.714q-35.714 3.714-67.143 23.143l-72.572-72.572q-2.857-2.857-6.572-2.857t-6.572 2.857l-23.428 23.428q-2.857 2.857-2.857 6.572t2.857 6.572l352.572 352.572q2.857 2.857 6.572 2.857t6.572-2.857l23.428-23.428q2.857-2.857 2.857-6.572t-2.857-6.572zM287.143 415.143l-177.429-177.428v146.286q0 37.714 26.857 64.572t64.572 26.857q29.143 0 52.714-16.857t33.286-43.429z" horiz-adv-x="403" />
284
- <glyph unicode="&#xf132;" d="M310.857 201.143v182.857h-128v-324.857q34 18 60.857 39.143 67.143 52.572 67.143 102.857zM365.714 420.572v-219.428q0-24.572-9.572-48.714t-23.714-42.857-33.714-36.428-36.143-29.428-34.572-22.143-25.572-14.143-12.143-5.714q-3.429-1.714-7.429-1.714t-7.428 1.714q-4.572 2-12.143 5.714t-25.571 14.143-34.572 22.143-36.143 29.428-33.715 36.428-23.715 42.857-9.572 48.714v219.428q0 7.429 5.428 12.857t12.857 5.428h329.143q7.428 0 12.857-5.428t5.428-12.857z" horiz-adv-x="366" />
285
- <glyph unicode="&#xf133;" d="M36.572 0h402.286v292.572h-402.286v-292.572zM146.286 347.429v82.285q0 4-2.571 6.572t-6.571 2.572h-18.285q-4 0-6.572-2.572t-2.572-6.572v-82.285q0-4 2.572-6.572t6.572-2.572h18.285q4 0 6.572 2.572t2.571 6.572zM365.714 347.429v82.285q0 4-2.572 6.572t-6.572 2.572h-18.286q-4 0-6.572-2.572t-2.572-6.572v-82.285q0-4 2.572-6.572t6.572-2.572h18.286q4 0 6.572 2.572t2.572 6.572zM475.428 365.714v-365.714q0-14.857-10.857-25.714t-25.714-10.857h-402.286q-14.857 0-25.715 10.857t-10.857 25.714v365.714q0 14.857 10.857 25.714t25.715 10.857h36.572v27.428q0 18.857 13.428 32.285t32.285 13.429h18.285q18.857 0 32.285-13.429t13.428-32.285v-27.428h109.714v27.428q0 18.857 13.428 32.285t32.286 13.429h18.286q18.857 0 32.286-13.429t13.428-32.285v-27.428h36.572q14.857 0 25.714-10.857t10.857-25.714z" horiz-adv-x="476" />
286
- <glyph unicode="&#xf134;" d="M146.286 420.572q0 7.429-5.428 12.857t-12.857 5.428-12.857-5.428-5.428-12.857 5.428-12.857 12.857-5.429 12.857 5.429 5.428 12.857zM402.286 429.714v-91.428q0-4.571-3.428-7.143-2.286-2-5.714-2-1.143 0-2 0.286l-128 27.428q-3.143 0.572-5.143 3.143t-2 5.714h-73.143v-29.143q31.715-6.571 52.429-31.714t20.714-58v-228.572q0-7.428-5.428-12.857t-12.857-5.428h-146.286q-7.428 0-12.857 5.428t-5.428 12.857v228.571q0 30.286 17.857 54.429t46.143 32.714v31.714h-9.143q-16.857 0-32.857-6.714t-26.143-15.143-18.857-19-11.572-15.286-4-7q-4.857-10-16.285-10-4.572 0-8.286 2-6.572 3.429-9 10.572t1 14q1.429 2.857 4.143 7.428t10.715 15.286 17.286 20 24.285 19.143 31 15q-7.143 12-7.143 24.572 0 18.857 13.428 32.286t32.285 13.428 32.285-13.428 13.428-32.286q0-9.428-4-18.286h86.286q0 3.143 2 5.714t5.143 3.143l128 27.428q0.857 0.286 2 0.286 3.428 0 5.714-2 3.428-2.572 3.428-7.143z" horiz-adv-x="403" />
287
- <glyph unicode="&#xf135;" d="M411.428 347.429q0 11.428-8 19.428t-19.428 8-19.428-8-8-19.428 8-19.428 19.428-8 19.428 8 8 19.428zM475.428 429.714q0-71.143-21.572-123t-72.428-103q-23.143-22.857-55.714-50.286l-5.714-108.286q-0.572-4.572-4.572-7.428l-109.714-64q-2-1.143-4.572-1.143-3.429 0-6.572 2.572l-18.286 18.286q-3.714 4-2.286 9.143l24.286 78.857-80.285 80.286-78.857-24.286q-0.857-0.286-2.572-0.286-4 0-6.572 2.572l-18.285 18.286q-4.857 5.428-1.428 11.143l64 109.714q2.857 4 7.428 4.572l108.285 5.714q27.428 32.572 50.286 55.714 53.714 53.428 102.286 73.714t123.143 20.286q4 0 6.857-2.714t2.857-6.429z" horiz-adv-x="476" />
288
- <glyph unicode="&#xf136;" d="M498.572 254.572l-46.857-218h-95.428l50.857 237.714q3.714 16-4.286 25.143-7.714 9.429-23.714 9.429h-48.286l-58.286-272.286h-95.428l58.286 272.286h-81.714l-58.285-272.286h-95.428l58.285 272.286-43.715 93.428h364.572q28.857 0 54.143-11.572t42.143-32.428q17.143-20.857 23.143-48.143t0-55.572z" />
289
- <glyph unicode="&#xf137;" d="M259.714 76.857l29.143 29.143q5.428 5.428 5.428 12.857t-5.428 12.857l-87.714 87.714 87.714 87.714q5.428 5.428 5.428 12.857t-5.428 12.857l-29.143 29.143q-5.428 5.428-12.857 5.428t-12.857-5.428l-129.714-129.714q-5.428-5.428-5.428-12.857t5.428-12.857l129.714-129.714q5.428-5.428 12.857-5.428t12.857 5.428zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
290
- <glyph unicode="&#xf138;" d="M204.857 76.857l129.715 129.714q5.428 5.428 5.428 12.857t-5.428 12.857l-129.714 129.714q-5.428 5.429-12.857 5.429t-12.857-5.429l-29.143-29.143q-5.429-5.428-5.429-12.857t5.428-12.857l87.714-87.714-87.714-87.714q-5.428-5.428-5.428-12.857t5.428-12.857l29.143-29.143q5.429-5.428 12.857-5.428t12.857 5.428zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
291
- <glyph unicode="&#xf139;" d="M332.857 150l29.143 29.143q5.428 5.428 5.428 12.857t-5.428 12.857l-129.714 129.714q-5.428 5.428-12.857 5.428t-12.857-5.428l-129.714-129.714q-5.428-5.428-5.428-12.857t5.428-12.857l29.143-29.143q5.428-5.428 12.857-5.428t12.857 5.428l87.715 87.714 87.714-87.714q5.428-5.428 12.857-5.428t12.857 5.428zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
292
- <glyph unicode="&#xf13a;" d="M232.286 104.286l129.714 129.714q5.428 5.428 5.428 12.857t-5.428 12.857l-29.143 29.143q-5.428 5.429-12.857 5.429t-12.857-5.428l-87.714-87.714-87.714 87.714q-5.428 5.428-12.857 5.428t-12.857-5.428l-29.143-29.143q-5.428-5.428-5.428-12.857t5.428-12.857l129.714-129.714q5.429-5.428 12.857-5.428t12.857 5.428zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
293
- <glyph unicode="&#xf13b;" d="M322.857 304.857l4.572 50h-252.571l13.428-152.571h174.857l-6.286-65.143-56.286-15.143-56 15.143-3.714 40h-50l6.285-79.428 103.428-28.572h1.143v0.286l102.571 28.286 14.286 155.428h-184l-4.286 51.715h192.571zM0 438.857h402.286l-36.572-410.857-165.143-46.286-164 46.286z" horiz-adv-x="403" />
294
- <glyph unicode="&#xf13c;" d="M78.572 438.857h430l-76-380.857-229.714-76.286-199.429 76.286 20.285 101.714h84.857l-8.285-42 120.572-46 138.857 46 19.428 96.857h-345.143l16.572 84.857h345.428l10.857 54.572h-345.143z" />
295
- <glyph unicode="&#xf13d;" d="M274.286 402.286q0 7.428-5.428 12.857t-12.857 5.428-12.857-5.428-5.429-12.857 5.428-12.857 12.857-5.428 12.857 5.428 5.428 12.857zM512 137.143v-100.572q0-6.286-5.714-8.572-2.286-0.572-3.428-0.572-3.714 0-6.572 2.572l-26.572 26.572q-34-40.857-91-64.714t-122.714-23.857-122.714 23.857-91 64.714l-26.572-26.572q-2.572-2.572-6.572-2.572-1.143 0-3.428 0.572-5.715 2.286-5.715 8.572v100.572q0 4 2.571 6.572t6.572 2.572h100.572q6.285 0 8.572-5.714 2.285-5.428-2-10l-28.572-28.572q19.143-26 54.143-43.857t77.572-23.572v184.857h-54.857q-7.429 0-12.857 5.429t-5.428 12.857v36.572q0 7.428 5.428 12.857t12.857 5.429h54.857v46.572q-16.572 9.714-26.572 26.428t-10 36.714q0 30.286 21.428 51.714t51.714 21.429 51.714-21.429 21.428-51.714q0-20-10-36.714t-26.572-26.428v-46.572h54.857q7.428 0 12.857-5.428t5.428-12.857v-36.571q0-7.428-5.428-12.857t-12.857-5.428h-54.857v-184.857q42.572 5.714 77.572 23.572t54.143 43.857l-28.572 28.572q-4.286 4.572-2 10 2.286 5.714 8.572 5.714h100.572q4 0 6.572-2.572t2.572-6.572z" />
296
- <glyph unicode="&#xf13e;" d="M301.714 256q11.428 0 19.428-8t8-19.428v-164.571q0-11.428-8-19.428t-19.428-8h-274.286q-11.428 0-19.428 8t-8 19.428v164.571q0 11.429 8 19.429t19.428 8h9.143v91.428q0 52.857 37.572 90.428t90.428 37.572 90.429-37.572 37.572-90.428q0-7.428-5.428-12.857t-12.857-5.428h-18.286q-7.428 0-12.857 5.428t-5.429 12.857q0 30.286-21.428 51.715t-51.714 21.428-51.715-21.428-21.428-51.715v-91.428h210.285z" horiz-adv-x="329" />
297
- <glyph unicode="&#xf140;" d="M292.572 219.429q0-30.286-21.428-51.714t-51.714-21.428-51.714 21.428-21.428 51.714 21.428 51.714 51.714 21.428 51.714-21.428 21.428-51.714zM329.143 219.429q0 45.428-32.143 77.572t-77.572 32.143-77.572-32.143-32.143-77.572 32.143-77.572 77.572-32.143 77.572 32.143 32.143 77.572zM365.714 219.429q0-60.572-42.857-103.428t-103.428-42.857-103.428 42.857-42.857 103.428 42.857 103.428 103.428 42.857 103.428-42.857 42.857-103.428zM402.286 219.429q0 37.143-14.572 71t-39 58.285-58.286 39-71 14.572-71-14.572-58.285-39-39-58.285-14.572-71 14.572-71 39-58.286 58.285-39 71-14.572 71 14.572 58.286 39 39 58.286 14.572 71zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
298
- <glyph unicode="&#xf141;" d="M109.715 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h54.857q11.428 0 19.428-8t8-19.428zM256 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.429 0-19.429 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h54.857q11.429 0 19.429-8t8-19.428zM402.286 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h54.857q11.428 0 19.428-8t8-19.428z" horiz-adv-x="403" />
299
- <glyph unicode="&#xf142;" d="M109.715 118.857v-54.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h54.857q11.428 0 19.428-8t8-19.428zM109.715 265.143v-54.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.428 0-19.428 8t-8 19.428v54.857q0 11.429 8 19.429t19.428 8h54.857q11.428 0 19.428-8t8-19.428zM109.715 411.429v-54.857q0-11.428-8-19.428t-19.428-8h-54.857q-11.428 0-19.428 8t-8 19.428v54.857q0 11.428 8 19.428t19.428 8h54.857q11.428 0 19.428-8t8-19.428z" horiz-adv-x="110" />
300
- <glyph unicode="&#xf143;" d="M146.286 109.714q0 15.143-10.714 25.857t-25.857 10.714-25.857-10.714-10.715-25.857 10.715-25.857 25.857-10.714 25.857 10.714 10.714 25.857zM246.571 82.857q-3.714 66.286-50.571 113.143t-113.143 50.572q-4 0.286-6.857-2.572t-2.857-6.571v-36.572q0-3.714 2.428-6.286t6.143-2.857q44-3.143 75.428-34.572t34.571-75.428q0.286-3.714 2.857-6.143t6.286-2.428h36.571q3.714 0 6.572 2.857t2.571 6.857zM356.286 82.572q-1.428 44-16 85t-39.857 74.286-58.572 58.572-74.286 39.857-85 16q-4 0.286-6.572-2.572-2.857-2.857-2.857-6.571v-36.572q0-3.714 2.572-6.286t6.285-2.857q58.285-2 108-31.857t79.572-79.572 31.857-108q0.286-3.714 2.857-6.286t6.286-2.572h36.572q3.714 0 6.572 2.857 3.143 2.572 2.572 6.572zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
301
- <glyph unicode="&#xf144;" d="M219.429 438.857q59.715 0 110.143-29.428t79.857-79.857 29.428-110.143-29.428-110.143-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428zM329.143 203.714q9.143 5.143 9.143 15.714t-9.143 15.714l-155.429 91.428q-8.857 5.428-18.285 0.286-9.143-5.428-9.143-16v-182.857q0-10.572 9.143-16 4.572-2.286 9.143-2.286 4.857 0 9.143 2.572z" />
302
- <glyph unicode="&#xf145;" d="M292.572 346.286l90.286-90.285-163.429-163.428-90.285 90.286zM232.286 66.572l176.571 176.571q5.428 5.429 5.428 12.857t-5.428 12.857l-103.428 103.429q-5.143 5.143-12.857 5.143t-12.857-5.143l-176.571-176.572q-5.428-5.428-5.428-12.857t5.428-12.857l103.429-103.428q5.143-5.143 12.857-5.143t12.857 5.143zM486.286 248.572l-259.143-259.428q-10.572-10.572-25.857-10.572t-25.857 10.572l-36 36q16 16 16 38.857t-16 38.857-38.857 16-38.857-16l-35.715 36q-10.572 10.572-10.572 25.857t10.572 25.857l259.143 258.857q10.572 10.571 25.857 10.571t25.857-10.571l35.714-35.714q-16-16-16-38.857t16-38.857 38.857-16 38.857 16l36-35.714q10.572-10.572 10.572-25.857t-10.572-25.857z" />
303
- <glyph unicode="&#xf146;" d="M365.714 201.143v36.572q0 7.428-5.428 12.857t-12.857 5.429h-256q-7.428 0-12.857-5.428t-5.428-12.857v-36.571q0-7.428 5.428-12.857t12.857-5.428h256q7.428 0 12.857 5.428t5.428 12.857zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
304
- <glyph unicode="&#xf147;" d="M329.143 246.857v-18.285q0-4-2.572-6.572t-6.572-2.572h-237.714q-4 0-6.572 2.572t-2.572 6.572v18.286q0 4 2.572 6.572t6.572 2.571h237.714q4 0 6.572-2.571t2.572-6.572zM365.714 118.857v237.714q0 18.857-13.428 32.286t-32.286 13.428h-237.714q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.714q18.857 0 32.286 13.428t13.428 32.286zM402.286 356.572v-237.714q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h237.714q34 0 58.143-24.143t24.143-58.143z" horiz-adv-x="403" />
305
- <glyph unicode="&#xf148;" d="M290.857 303.143q-5.143-10.572-16.572-10.572h-54.857v-246.857q0-4-2.571-6.572t-6.572-2.572h-201.143q-6 0-8.286 5.143-2.285 5.714 1.143 10l45.715 54.857q2.572 3.143 7.143 3.143h91.428v182.857h-54.857q-11.428 0-16.572 10.572-4.857 10.572 2.572 19.428l91.429 109.714q5.143 6.286 14 6.286t14-6.286l91.428-109.714q7.714-9.143 2.572-19.428z" horiz-adv-x="293" />
306
- <glyph unicode="&#xf149;" d="M9.143 402.286h201.143q3.714 0 6.428-2.714t2.714-6.714v-246.572h54.857q11.428 0 16.572-10.572t-2.572-19.714l-91.428-109.714q-5.143-6.286-14-6.286t-14 6.286l-91.428 109.714q-7.428 8.857-2.572 19.714 5.143 10.572 16.572 10.572h54.857v182.857h-91.428q-4 0-7.143 3.143l-45.715 54.857q-3.715 4-1.143 9.715 2.571 5.428 8.286 5.428z" horiz-adv-x="293" />
307
- <glyph unicode="&#xf14a;" d="M195.714 104.286l175.429 175.428q5.428 5.429 5.428 12.857t-5.428 12.857l-29.143 29.143q-5.428 5.428-12.857 5.428t-12.857-5.428l-133.429-133.428-60.285 60.286q-5.428 5.428-12.857 5.428t-12.857-5.428l-29.143-29.143q-5.428-5.428-5.428-12.857t5.428-12.857l102.285-102.286q5.428-5.428 12.857-5.428t12.857 5.428zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
308
- <glyph unicode="&#xf14b;" d="M115.428 158.857l43.428-43.428-14.857-14.857h-16v27.428h-27.428v16zM233.714 270.286q4-3.714-0.857-8.571l-83.143-83.143q-4.857-4.857-8.572-0.857-4 3.714 0.857 8.572l83.143 83.143q4.857 4.857 8.572 0.857zM155.429 73.143l155.429 155.428-82.286 82.286-155.429-155.428v-82.286h82.285zM329.143 246.857l26.286 26.286q8 8 8 19.428t-8 19.428l-43.428 43.428q-8 8-19.428 8t-19.428-8l-26.286-26.286zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
309
- <glyph unicode="&#xf14c;" d="M365.714 210.286v137.143q0 7.428-5.428 12.857t-12.857 5.428h-137.143q-12 0-16.857-11.143-4.857-11.715 4-20l41.143-41.143-152.571-152.571q-5.428-5.428-5.428-12.857t5.428-12.857l29.143-29.143q5.428-5.428 12.857-5.428t12.857 5.428l152.571 152.571 41.143-41.143q5.143-5.428 12.857-5.428 3.428 0 7.143 1.428 11.143 4.857 11.143 16.857zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
310
- <glyph unicode="&#xf14d;" d="M287.143 160.857l100.572 100.572q5.428 5.428 5.428 12.857t-5.428 12.857l-100.572 100.571q-8.572 8.857-19.714 4-11.428-4.857-11.428-16.857v-45.714q-34 0-61.714-5.572t-46.428-14.572-32.572-22.572-21.857-27.286-12.715-31.143-6.143-31.857-1.428-31.572q0-51.714 47.715-115.428 2.857-3.428 7.143-3.428 2 0 3.714 0.857 6.286 2.572 5.429 9.428-12.572 101.143 17.714 135.143 13.143 14.857 37.143 21.572t64 6.714v-45.714q0-12 11.428-16.857 3.428-1.428 6.857-1.428 7.428 0 12.857 5.428zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
311
- <glyph unicode="&#xf14e;" d="M182.857 164.572l73.143 36.572-73.143 36.572v-73.143zM292.572 333.429v-154.857l-146.286-73.143v154.857zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
312
- <glyph unicode="&#xf150;" d="M327.143 282.572q5.143-10-1.428-18.857l-91.428-128q-5.428-7.714-14.857-7.714t-14.857 7.714l-91.428 128q-6.572 8.857-1.428 18.857 4.857 10 16.285 10h182.857q11.428 0 16.286-10zM365.714 82.286v274.286q0 3.714-2.714 6.428t-6.428 2.714h-274.286q-3.715 0-6.428-2.714t-2.715-6.428v-274.286q0-3.714 2.715-6.428t6.428-2.714h274.286q3.714 0 6.428 2.714t2.714 6.428zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
313
- <glyph unicode="&#xf151;" d="M327.143 156.286q-4.857-10-16.286-10h-182.857q-11.428 0-16.285 10-5.143 10 1.428 18.857l91.428 128q5.428 7.714 14.857 7.714t14.857-7.714l91.428-128q6.572-8.857 1.428-18.857zM365.714 82.286v274.286q0 3.714-2.714 6.428t-6.428 2.714h-274.286q-3.715 0-6.428-2.714t-2.715-6.428v-274.286q0-3.714 2.715-6.428t6.428-2.714h274.286q3.714 0 6.428 2.714t2.714 6.428zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
314
- <glyph unicode="&#xf152;" d="M310.857 219.429q0-9.428-7.714-14.857l-128-91.428q-8.857-6.572-18.857-1.428-10 4.857-10 16.286v182.857q0 11.429 10 16.286 10 5.143 18.857-1.429l128-91.428q7.714-5.428 7.714-14.857zM365.714 82.286v274.286q0 4-2.572 6.572t-6.572 2.571h-274.286q-4 0-6.572-2.571t-2.572-6.572v-274.286q0-4 2.572-6.572t6.572-2.572h274.286q4 0 6.572 2.572t2.572 6.572zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
315
- <glyph unicode="&#xf153;" d="M278.857 102l10-45.428q0.857-3.428-0.857-6.428t-4.857-4.143l-1.428-0.286q-1.143-0.572-3-1t-4.572-1.286-6.143-1.572-7.286-1.428-8.572-1.428-9.572-1.286-10.428-0.857-11-0.286q-66.857 0-116.857 37.286t-68 100.428h-27.143q-3.715 0-6.428 2.714t-2.715 6.428v32.286q0 3.714 2.715 6.428t6.428 2.714h18.857q-0.572 16.286 0.285 30h-19.143q-4 0-6.572 2.571t-2.571 6.572v32.572q0 4 2.571 6.572t6.572 2.571h28q19.143 60 69.572 96.572t114.429 36.572q29.143 0 55.428-6.572 3.143-0.857 5.714-4.286 1.714-3.143 0.857-6.857l-12.286-45.429q-0.857-3.714-4-5.571t-6.857-0.714l-1.143 0.285q-1.143 0.286-3.286 0.715l-5 1t-6.428 1-7.428 0.857-8.286 0.714-8.428 0.286q-36 0-64.572-18.286t-42.857-50.285h133.714q4.571 0 7.143-3.429 2.857-3.428 2-7.428l-6.857-32.572q-1.429-7.428-9.143-7.428h-139.429q-0.857-10.572 0-30h131.143q4.286 0 7.143-3.429 2.571-3.428 1.714-7.714l-6.857-32q-0.571-3.143-3.143-5.286t-5.714-2.143h-110.572q13.715-33.428 42.715-53t65.286-19.572q5.143 0 10.286 0.428t9.572 1 8.428 1.286 7 1.428 5.286 1.286l3.428 0.857 1.428 0.572q3.714 1.428 7.428-0.572 3.428-2 4.286-6z" horiz-adv-x="293" />
316
- <glyph unicode="&#xf154;" d="M291.428 150.572v-104.857q0-4-2.572-6.572t-6.572-2.572h-273.143q-4 0-6.572 2.572t-2.571 6.572v42.857q0 3.714 2.715 6.428t6.428 2.714h27.715v109.428h-27.143q-4 0-6.572 2.714t-2.571 6.428v37.428q0 4 2.571 6.572t6.572 2.571h27.143v63.715q0 48.857 35.285 80.571t89.857 31.715q52.857 0 95.715-35.715 2.572-2.285 2.857-5.857t-2-6.428l-29.428-36.286q-2.571-3.143-6.286-3.428-3.714-0.572-6.572 2-1.429 1.428-7.428 5.428t-19.714 9.143-26.572 5.143q-24.286 0-39.143-13.428t-14.857-35.143v-61.428h87.143q3.714 0 6.429-2.572t2.714-6.571v-37.428q0-3.714-2.714-6.428t-6.428-2.714h-87.143v-108.286h118.285v51.714q0 3.714 2.571 6.428t6.571 2.714h46.286q4 0 6.572-2.714t2.572-6.428z" horiz-adv-x="293" />
317
- <glyph unicode="&#xf155;" d="M279.428 136.857q0-43.714-28.428-75.286t-73.857-39v-50q0-4-2.571-6.572t-6.572-2.571h-38.572q-3.715 0-6.428 2.714t-2.715 6.429v50q-18.857 2.572-36.428 8.857t-29 12.714-21.143 13.714-13.285 10.714-5 5.143q-4.857 6-0.572 11.714l29.428 38.572q2 2.857 6.572 3.428 4.285 0.572 6.857-2.572l0.572-0.572q32.285-28.286 69.428-35.714 10.572-2.286 21.143-2.286 23.143 0 40.714 12.286t17.572 34.857q0 8-4.286 15.143t-9.572 12-16.714 10.714-18.857 9.143-22.857 9.286q-11.143 4.572-17.572 7.143t-17.572 7.572-17.857 8.857-16.143 10.143-15.285 12.143-12.428 14-10.143 16.572-6 19-2.428 22.286q0 39.428 28 69.143t72.857 38.286v51.428q0 3.715 2.715 6.428t6.429 2.715h38.572q4 0 6.572-2.572t2.571-6.572v-50.285q16.285-1.715 31.571-6.572t24.857-9.572 18.143-10.714 11.143-8.286 4.286-4q4.857-5.143 1.428-10.857l-23.143-41.715q-2.286-4.286-6.571-4.571-4-0.857-7.714 2-0.857 0.857-4.143 3.428t-11.143 7.572-16.714 9.143-21.286 7.428-24.428 3.286q-27.143 0-44.285-12.286t-17.143-31.714q0-7.428 2.428-13.714t8.428-11.857 11.285-9.428 16-8.857 17.286-7.714 20-7.857q15.143-5.714 23.143-9t21.715-10 21.572-12.143 17.714-14.286 15.143-18.143 9-21.857 3.714-26.857z" horiz-adv-x="293" />
318
- <glyph unicode="&#xf156;" d="M256.572 341.143v-29.143q0-4-2.571-6.571t-6.571-2.572h-48q-6.572-41.143-36.857-66.857t-78.857-31.428q47.714-50.857 131.143-153.143 4-4.572 1.143-9.714-2.286-5.143-8.286-5.143h-55.714q-4.572 0-7.143 3.428-87.428 104.857-142.286 163.143-2.571 2.572-2.571 6.286v36.286q0 3.714 2.715 6.428t6.428 2.714h32q37.715 0 60.715 12.286t29.285 35.714h-122q-4 0-6.572 2.571t-2.571 6.572v29.143q0 4 2.571 6.572t6.572 2.572h118q-16.285 32.286-76.572 32.286h-41.428q-3.715 0-6.428 2.714t-2.715 6.428v38q0 4 2.571 6.572t6.572 2.571h237.714q4 0 6.572-2.571t2.572-6.572v-29.143q0-4-2.571-6.572t-6.571-2.572h-66.572q13.428-17.428 18.286-41.143h48.857q4 0 6.571-2.571t2.572-6.572z" horiz-adv-x="257" />
319
- <glyph unicode="&#xf157;" d="M172.286 36.572h-49.143q-3.715 0-6.428 2.572t-2.715 6.572v94.286h-82.285q-3.715 0-6.428 2.572t-2.715 6.572v29.428q0 3.714 2.715 6.428t6.428 2.714h82.285v24.286h-82.285q-3.715 0-6.428 2.572t-2.715 6.572v29.714q0 3.714 2.715 6.428t6.428 2.714h61.143l-91.715 165.143q-2.285 4.572 0 9.143 2.857 4.571 8 4.571h55.428q5.428 0 8.285-5.143l61.429-121.428q5.428-10.857 16-35.714 2.857 6.857 8.714 19.428t7.857 17.428l54.571 120q2.286 5.428 8.286 5.428h54.572q4.857 0 7.714-4.572 2.572-4 0.286-8.857l-89.428-165.429h61.428q3.714 0 6.428-2.714t2.714-6.428v-29.714q0-4-2.714-6.572t-6.428-2.572h-82.857v-24.286h82.857q3.714 0 6.428-2.714t2.714-6.428v-29.428q0-4-2.714-6.572t-6.428-2.572h-82.857v-94.286q0-3.714-2.714-6.428t-6.429-2.714z" horiz-adv-x="294" />
320
- <glyph unicode="&#xf158;" d="M298 314q0 28.572-18.572 46.286t-48.857 17.714h-91.429v-128h91.428q30.286 0 48.857 17.715t18.572 46.286zM365.714 314q0-55.143-36.143-90t-93.286-34.857h-97.143v-33.714h144.285q4 0 6.572-2.572t2.572-6.572v-36.572q0-4-2.572-6.572t-6.572-2.572h-144.286v-54.857q0-4-2.714-6.572t-6.428-2.572h-47.715q-4 0-6.572 2.572t-2.572 6.572v54.857h-64q-4 0-6.572 2.572t-2.571 6.572v36.572q0 4 2.571 6.572t6.572 2.572h64v33.714h-64q-4 0-6.572 2.572t-2.571 6.572v42.572q0 3.714 2.571 6.428t6.572 2.714h64v179.714q0 4 2.572 6.571t6.572 2.572h154q57.143 0 93.286-34.857t36.143-90z" horiz-adv-x="366" />
321
- <glyph unicode="&#xf159;" d="M146.857 134l23.143 85.428h-45.428l21.428-85.714q0.286-0.286 0.286-0.857t0.286-0.857q0 0.286 0.143 1t0.143 1zM180 256l10 36.572h-83.428l9.143-36.572h64.285zM234.857 256h39.715l-10 36.572h-20zM363.143 133.714l22.286 85.714h-46.286l23.143-85.428q0-0.286 0.143-1t0.428-1q0 0.286 0.143 0.857t0.143 0.857zM394.857 256l9.428 36.572h-84.857l9.714-36.572h65.714zM512 246.857v-18.285q0-4-2.572-6.572t-6.572-2.572h-60.857l-46.857-176q-2-6.857-8.857-6.857h-45.428q-6.857 0-8.857 6.857l-47.428 176h-59.714l-47.714-176q-2-6.857-8.857-6.857h-45.428q-3.143 0-5.572 2t-3 4.857l-45.715 176h-59.428q-4 0-6.572 2.571t-2.571 6.572v18.286q0 4 2.571 6.572t6.572 2.571h50l-9.428 36.572h-40.572q-4 0-6.572 2.571t-2.571 6.572v18.286q0 4 2.571 6.572t6.572 2.571h31.143l-25.428 98.286q-1.428 4.286 1.428 8 2.857 3.428 7.428 3.428h39.143q7.428 0 8.857-6.857l25.715-102.857h102.572l27.714 102.857q2 6.857 8.857 6.857h36q6.857 0 8.857-6.857l28-102.857h104.286l26.572 102.857q1.428 6.857 8.857 6.857h39.143q4.572 0 7.428-3.428 2.857-3.714 1.428-8l-26-98.286h31.714q4 0 6.572-2.571t2.571-6.572v-18.286q0-4-2.572-6.572t-6.572-2.572h-41.428l-9.714-36.571h51.143q4 0 6.572-2.572t2.572-6.571z" />
322
- <glyph unicode="&#xf15a;" d="M333.428 292.572q5.143-52-37.428-73.714 33.428-8 50-29.428t12.857-61.143q-2-20.286-9.286-35.714t-18.428-25.428-27.714-16.714-34.714-9.857-41.572-4.286v-72.857h-44v71.714q-22.857 0-34.857 0.286v-72h-44v72.857q-5.143 0-15.428 0.143t-15.715 0.143h-57.143l8.857 52.286h31.715q14.285 0 16.572 14.572v114.857h4.572q-1.715 0.286-4.572 0.286v82q-3.715 19.428-25.428 19.428h-31.715v46.857l60.572-0.286q18.285 0 27.715 0.286v72h44v-70.571q23.429 0.571 34.857 0.571v70h44v-72q22.572-2 40-6.428t32.286-12.857 23.572-22.285 10.428-32.714zM272 136.857q0 10.286-4.286 18.286t-10.572 13.143-16.428 8.714-18.714 5.286-21.143 2.572-19.715 0.857-18.428-0.286-13.572-0.286v-96.572q2.286 0 10.572-0.143t13.714-0.143 15.143 0.428 16.715 1.143 16.286 2.428 15.857 4 13.571 6 11.286 8.572 7 11.428 2.714 14.572zM251.714 272.857q0 9.429-3.571 16.715t-8.714 12-13.714 8-15.714 4.714-17.571 2.286-16.572 0.714-15.428-0.286-11.286-0.143v-87.714q1.429 0 9.857-0.143t13.286 0 14.286 0.572 15.714 1.571 14.714 3.143 13.857 5.286 10.572 7.714 7.714 11 2.571 14.572z" horiz-adv-x="366" />
323
- <glyph unicode="&#xf15b;" d="M365.714 256v-228.571q0-11.428-8-19.428t-19.428-8h-310.857q-11.428 0-19.428 8t-8 19.428v384q0 11.428 8 19.428t19.428 8h155.429v-155.428q0-11.428 8-19.428t19.429-8h155.429zM364.857 292.572h-145.429v145.429q23.429-4.286 37.715-18.572l89.143-89.143q14.286-14.286 18.572-37.714z" horiz-adv-x="366" />
324
- <glyph unicode="&#xf15c;" d="M292.572 82.286v18.286q0 4-2.572 6.572t-6.572 2.572h-201.143q-4 0-6.572-2.572t-2.572-6.572v-18.286q0-4 2.572-6.572t6.572-2.572h201.143q4 0 6.572 2.572t2.572 6.572zM292.572 155.429v18.286q0 4-2.572 6.572t-6.572 2.572h-201.143q-4 0-6.572-2.572t-2.572-6.572v-18.286q0-4 2.572-6.572t6.572-2.572h201.143q4 0 6.572 2.572t2.572 6.572zM365.714 256v-228.571q0-11.428-8-19.428t-19.428-8h-310.857q-11.428 0-19.428 8t-8 19.428v384q0 11.428 8 19.428t19.428 8h155.429v-155.428q0-11.428 8-19.428t19.429-8h155.429zM364.857 292.572h-145.429v145.429q23.429-4.286 37.715-18.572l89.143-89.143q14.286-14.286 18.572-37.714z" horiz-adv-x="366" />
325
- <glyph unicode="&#xf15d;" d="M340.286 358.857h50.572l-20.572 62.286-3.428 13.428q-0.572 4.572-0.572 5.714h-1.143l-0.857-5.714q0-0.286-1-5.143t-2.143-8.286zM210.286 64q0-3.428-2.857-6.857l-91.143-91.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v393.143q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-393.143h54.857q4 0 6.572-2.572t2.571-6.572zM449.143 30v-66.572h-166.857v25.714l105.428 151.143q3.428 5.143 6 7.714l3.143 2.572v0.857q-0.572 0-1.857-0.143t-2.143-0.143q-3.428-0.857-8.572-0.857h-66.286v-32.857h-34.286v65.428h162v-25.428l-105.428-151.428q-1.714-2.286-6-7.428l-3.143-3.143v-0.572l4 0.572q2.572 0.572 8.572 0.572h70.857v34h34.572zM474.572 286.286v-30.285h-82.286v30.286h21.428l-13.428 41.143h-69.428l-13.428-41.143h21.428v-30.286h-82v30.286h20l65.714 189.143h46.286l65.714-189.143h20z" horiz-adv-x="476" />
326
- <glyph unicode="&#xf15e;" d="M340.286 66.286h50.572l-20.572 62.286-3.428 13.428q-0.572 4.572-0.572 5.714h-1.143l-0.857-5.714q0-0.286-1-5.143t-2.143-8.286zM210.286 64q0-3.428-2.857-6.857l-91.143-91.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v393.143q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-393.143h54.857q4 0 6.572-2.572t2.571-6.572zM474.572-6.286v-30.286h-82.286v30.286h21.428l-13.428 41.143h-69.428l-13.428-41.143h21.428v-30.285h-82v30.286h20l65.714 189.143h46.286l65.714-189.143h20zM449.143 322.572v-66.571h-166.857v25.714l105.428 151.143q3.428 5.143 6 7.715l3.143 2.571v0.857q-0.572 0-1.857-0.143t-2.143-0.143q-3.428-0.857-8.572-0.857h-66.286v-32.857h-34.286v65.428h162v-25.428l-105.428-151.429q-1.714-2.286-6-7.428l-3.143-2.857v-0.857l4 0.857q2.572 0.286 8.572 0.286h70.857v34h34.572z" horiz-adv-x="476" />
327
- <glyph unicode="&#xf160;" d="M210.286 64q0-3.428-2.857-6.857l-91.143-91.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v393.143q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-393.143h54.857q4 0 6.572-2.572t2.571-6.572zM512 27.429v-54.857q0-4-2.572-6.572t-6.572-2.572h-237.714q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h237.714q4 0 6.572-2.572t2.572-6.572zM457.143 173.714v-54.857q0-4-2.572-6.572t-6.572-2.572h-182.857q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h182.857q4 0 6.572-2.572t2.572-6.572zM402.286 320v-54.857q0-4-2.572-6.572t-6.572-2.572h-128q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.571h128q4 0 6.572-2.571t2.572-6.572zM347.428 466.286v-54.857q0-4-2.572-6.572t-6.572-2.572h-73.143q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h73.143q4 0 6.572-2.572t2.572-6.572z" />
328
- <glyph unicode="&#xf161;" d="M347.428 27.429v-54.857q0-4-2.572-6.572t-6.572-2.572h-73.143q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h73.143q4 0 6.572-2.572t2.572-6.572zM210.286 64q0-3.428-2.857-6.857l-91.143-91.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v393.143q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-393.143h54.857q4 0 6.572-2.572t2.571-6.572zM402.286 173.714v-54.857q0-4-2.572-6.572t-6.572-2.572h-128q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h128q4 0 6.572-2.572t2.572-6.572zM457.143 320v-54.857q0-4-2.572-6.572t-6.572-2.572h-182.857q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.571h182.857q4 0 6.572-2.571t2.572-6.572zM512 466.286v-54.857q0-4-2.572-6.572t-6.572-2.572h-237.714q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.572h237.714q4 0 6.572-2.572t2.572-6.572z" />
329
- <glyph unicode="&#xf162;" d="M384.572 100.286q0 18-12.572 33.143t-29.428 15.143q-14.857 0-23.714-10.572t-8.857-26.857 10.428-27.143 29.857-10.857q14.286 0 24.286 7.714t10 19.428zM210.286 64q0-3.428-2.857-6.857l-91.143-91.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v393.143q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-393.143h54.857q4 0 6.572-2.572t2.571-6.572zM424.572 83.714q0-17.714-3.714-34.714t-11.714-32.572-19.428-27.286-28.143-18.714-36.428-7q-17.714 0-30.857 4.572-6.857 2.286-12 4.286l11.143 32.286q4.286-2 8.857-3.143 10.572-3.714 21.428-3.714 24 0 38.428 16.714t19 41.572h-0.572q-6-6.572-17.572-10.572t-24.143-4q-30.286 0-49.428 20.428t-19.143 49.286q0 30 20.572 50.857t51.714 20.857q35.143 0 58.572-27t23.428-72.143zM416 288.572v-32.571h-134v32.572h47.714v123.428q0 2 0.143 5.428t0.143 4.857v4.571h-0.572l-2-3.428q-2.286-3.714-7.428-8.857l-17.714-16.572-23.428 24.572 54.857 52.857h35.143v-186.857h47.143z" />
330
- <glyph unicode="&#xf163;" d="M384.572 392.857q0 18-12.572 33.143t-29.428 15.143q-14.857 0-23.714-10.572t-8.857-26.857 10.428-27.143 29.857-10.857q14.286 0 24.286 7.714t10 19.428zM210.286 64q0-3.428-2.857-6.857l-91.143-91.143q-2.857-2.572-6.572-2.572-3.428 0-6.572 2.572l-91.428 91.428q-4.285 4.572-2 10 2.285 5.714 8.572 5.714h54.857v393.143q0 4 2.572 6.572t6.572 2.571h54.857q4 0 6.571-2.571t2.571-6.572v-393.143h54.857q4 0 6.572-2.572t2.571-6.572zM416-4v-32.572h-134v32.572h47.714v123.428q0 2 0.143 5.428t0.143 4.857v4.572h-0.572l-2-3.428q-2.286-3.714-7.428-8.857l-17.714-16.572-23.428 24.572 54.857 52.857h35.143v-186.857h47.143zM424.572 376.286q0-17.714-3.714-34.714t-11.714-32.572-19.428-27.286-28.143-18.714-36.428-7q-17.714 0-30.857 4.572-6.857 2.286-12 4.286l11.143 32.286q4.286-2 8.857-3.143 10.572-3.714 21.428-3.714 24 0 38.428 16.715t19 41.572h-0.572q-6-6.572-17.572-10.572t-24.143-4q-30.286 0-49.428 20.428t-19.143 49.286q0 30 20.572 50.857t51.714 20.857q35.143 0 58.572-27t23.428-72.143z" />
331
- <glyph unicode="&#xf164;" d="M73.143 91.429q0 7.428-5.428 12.857t-12.857 5.428q-7.715 0-13-5.428t-5.285-12.857q0-7.714 5.285-13t13-5.286q7.428 0 12.857 5.286t5.428 13zM118.857 237.714v-182.857q0-7.428-5.428-12.857t-12.857-5.428h-82.285q-7.428 0-12.857 5.428t-5.428 12.857v182.857q0 7.429 5.428 12.857t12.857 5.428h82.285q7.428 0 12.857-5.428t5.428-12.857zM457.143 237.714q0-24.572-15.714-42.572 4.286-12.572 4.286-21.714 0.857-21.714-12.286-39.143 4.857-16 0-33.428-4.286-16.286-15.428-26.857 2.572-32-14-51.714-18.286-21.714-56.286-22.286h-36.857q-18.857 0-41.143 4.428t-34.714 8.286-34.428 11.286q-35.143 12.286-45.143 12.572-7.429 0.286-12.857 5.572t-5.428 12.714v183.143q0 7.143 5.143 12.429t12.286 5.857q6.857 0.572 21.715 16.857t28.857 34.572q19.429 24.857 28.857 34.286 5.143 5.143 8.857 13.714t5 13.857 3.857 17.286q2 11.143 3.571 17.429t5.571 14.857 9.714 14.286q5.428 5.428 12.857 5.428 13.143 0 23.572-3t17.143-7.428 11.428-11.572 6.857-12.857 3.428-14.285 1.428-12.857 0.143-11.143q0-10.857-2.714-21.714t-5.428-17.143-7.857-16q-0.857-1.714-2.857-5.143t-3.143-6.286-2.286-6.857h79.143q22.286 0 38.572-16.285t16.286-38.572z" horiz-adv-x="476" />
332
- <glyph unicode="&#xf165;" d="M73.143 310.857q0-7.428-5.428-12.857t-12.857-5.428q-7.715 0-13 5.428t-5.285 12.857q0 7.714 5.285 13t13 5.286q7.428 0 12.857-5.286t5.428-13zM118.857 164.572v182.857q0 7.429-5.428 12.857t-12.857 5.428h-82.285q-7.428 0-12.857-5.428t-5.428-12.857v-182.857q0-7.428 5.428-12.857t12.857-5.428h82.285q7.428 0 12.857 5.428t5.428 12.857zM441.428 207.143q15.714-17.428 15.714-42.572-0.286-22.286-16.428-38.572t-38.428-16.286h-79.143q1.143-4 2.286-6.857t3.143-6.286 2.857-5.143q5.143-10.572 7.714-16.286t5.428-16.714 2.857-21.857q0-6.857-0.143-11.143t-1.428-12.857-3.428-14.286-6.857-12.857-11.428-11.572-17.143-7.428-23.572-3q-7.428 0-12.857 5.428-5.714 5.714-9.714 14.286t-5.572 14.857-3.571 17.428q-2.571 12-3.857 17.286t-5 13.857-8.857 13.714q-9.429 9.428-28.857 34.286-14 18.286-28.857 34.572t-21.715 16.857q-7.143 0.572-12.286 5.857t-5.143 12.428v183.143q0 7.428 5.429 12.715t12.857 5.571q10 0.286 45.143 12.572 22 7.428 34.428 11.286t34.714 8.285 41.143 4.429h36.857q38-0.572 56.286-22.286 16.572-19.714 14-51.714 11.143-10.572 15.428-26.857 4.857-17.428 0-33.428 13.143-17.428 12.286-39.143 0-9.143-4.286-21.714z" horiz-adv-x="476" />
333
- <glyph unicode="&#xf166;" d="M262.572 103.143v44.857q0 14.286-8.286 14.286-4.857 0-9.428-4.572v-64q4.572-4.572 9.428-4.572 8.286 0 8.286 14zM315.143 138h18.857v9.714q0 14.572-9.428 14.572t-9.428-14.572v-9.714zM152 214v-20h-22.857v-120.857h-21.143v120.857h-22.285v20h66.285zM209.429 178v-104.857h-19.143v11.428q-11.143-12.857-21.714-12.857-9.428 0-12 8-1.714 4.572-1.714 15.428v82.857h18.857v-77.143q0-6.857 0.286-7.428 0.286-4.286 4.286-4.286 5.714 0 12 8.857v80h19.143zM281.428 146.286v-41.714q0-14.857-2-20.857-3.428-12-15.143-12-10 0-19.428 11.714v-10.286h-19.143v140.857h19.143v-46q9.143 11.428 19.428 11.428 11.714 0 15.143-12 2-6 2-21.143zM353.143 109.429v-2.572q0-8.286-0.572-12.286-0.857-6.286-4.286-11.428-7.714-11.428-22.857-11.428-14.857 0-23.143 10.857-6 7.714-6 24.572v36.857q0 16.857 5.714 24.572 8.286 10.857 22.857 10.857t22.286-10.857q6-8 6-24.572v-21.714h-38v-18.572q0-14.572 9.714-14.572 6.857 0 8.572 7.428 0 0.286 0.143 2t0.143 4.714v6.143h19.428zM224.286 344.857v-44.571q0-14.572-9.143-14.572t-9.143 14.572v44.572q0 14.857 9.143 14.857t9.143-14.857zM376.572 141.143q0 50.572-5.428 74.286-2.857 12.572-12.286 21t-21.714 9.857q-38.857 4.286-117.714 4.286-78.572 0-117.428-4.286-12.572-1.428-21.857-9.857t-12.143-21q-5.715-24.857-5.715-74.286 0-50.286 5.715-74.286 2.857-12.286 12.143-20.857t21.572-10q39.143-4.286 117.714-4.286t117.714 4.286q12.286 1.428 21.572 10t12.143 20.857q5.714 24 5.714 74.286zM160.857 327.143l25.715 84.571h-21.428l-14.572-55.714-15.143 55.714h-22.285l6.857-19.714t6.572-19.714q10-29.428 13.143-45.143v-57.428h21.143v57.428zM243.429 304v37.143q0 16.571-6 24.857-8.286 10.857-22.285 10.857-14.572 0-22.286-10.857-6-8.286-6-24.857v-37.143q0-16.571 6-24.857 7.714-10.857 22.286-10.857 14 0 22.286 10.857 6 7.714 6 24.857zM295.143 269.714h19.143v105.714h-19.143v-80.857q-6.286-8.857-12-8.857-4.286 0-4.572 4.572-0.286 0.571-0.286 7.428v77.714h-19.143v-83.714q0-10.572 1.714-15.714 3.143-7.714 12.286-7.714 10.286 0 22 12.857v-11.428zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
334
- <glyph unicode="&#xf167;" d="M277.428 120v-60.286q0-19.143-11.143-19.143-6.572 0-12.857 6.286v86q6.285 6.286 12.857 6.286 11.143 0 11.143-19.143zM374 119.714v-13.143h-25.714v13.143q0 19.428 12.857 19.428t12.857-19.428zM98 182h30.572v26.857h-89.143v-26.857h30v-162.572h28.572v162.572zM180.286 19.429h25.428v141.143h-25.428v-108q-8.572-12-16.286-12-5.143 0-6 6-0.286 0.857-0.286 10v104h-25.428v-111.714q0-14 2.286-20.857 3.429-10.572 16.572-10.572 13.714 0 29.143 17.428v-15.428zM302.857 61.714v56.286q0 20.857-2.572 28.286-4.857 16-20.286 16-14.286 0-26.572-15.428v62h-25.428v-189.429h25.428v13.714q12.857-15.714 26.572-15.714 15.428 0 20.286 15.714 2.572 7.714 2.572 28.572zM399.428 64.572v3.714h-26q0-14.572-0.572-17.428-2-10.286-11.428-10.286-13.143 0-13.143 19.714v24.857h51.143v29.428q0 22.572-7.714 33.143-11.143 14.572-30.286 14.572-19.428 0-30.572-14.572-8-10.572-8-33.143v-49.428q0-22.572 8.286-33.143 11.143-14.572 30.857-14.572 20.572 0 30.857 15.143 5.143 7.714 6 15.428 0.572 2.572 0.572 16.572zM225.714 325.429v60q0 19.714-12.286 19.714t-12.286-19.714v-60q0-20 12.286-20t12.286 20zM431.143 110.857q0-66.857-7.428-100-4-16.857-16.572-28.286t-29.143-13.143q-52.572-6-158.571-6t-158.571 6q-16.572 1.714-29.285 13.143t-16.428 28.286q-7.428 32-7.428 100 0 66.857 7.428 100 4 16.857 16.572 28.286t29.428 13.428q52.285 5.714 158.286 5.714t158.571-5.714q16.572-2 29.286-13.428t16.428-28.286q7.428-32 7.428-100zM146 475.429h29.143l-34.571-114v-77.428h-28.572v77.428q-4 21.143-17.428 60.572-10.572 29.428-18.572 53.428h30.285l20.285-75.143zM251.714 380.286v-50q0-23.143-8-33.714-10.572-14.572-30.286-14.572-19.143 0-30 14.572-8 10.857-8 33.714v50q0 22.857 8 33.428 10.857 14.572 30 14.572 19.714 0 30.286-14.572 8-10.572 8-33.428zM347.428 426.572v-142.571h-26v15.714q-15.143-17.714-29.428-17.714-13.143 0-16.857 10.572-2.286 6.857-2.286 21.428v112.572h26v-104.857q0-9.428 0.286-10 0.857-6.286 6-6.286 7.714 0 16.286 12.286v108.857h26z" />
335
- <glyph unicode="&#xf168;" d="M170.571 284.857q-2.857-5.143-73.428-130.285-7.715-13.143-18.572-13.143h-68.285q-6 0-8.857 4.857t0 10.286l72.285 128q0.285 0 0 0.286l-46 79.714q-3.428 6.286-0.285 10.572 2.572 4.285 9.143 4.285h68.285q11.428 0 18.857-12.857zM400.857 468.286q3.143-4.572 0-10.572l-150.857-266.857v-0.286l96-175.714q3.143-5.714 0.286-10.572-2.857-4.286-9.143-4.286h-68.286q-12 0-18.857 12.857l-96.857 177.714q5.143 9.143 151.714 269.143 7.143 12.857 18.286 12.857h68.857q6.286 0 8.857-4.285z" horiz-adv-x="403" />
336
- <glyph unicode="&#xf169;" d="M195.714 256.857q0 0.286-36 63.429-6 9.714-14.857 9.714h-52.572q-5.143 0-7.428-3.143-2-3.428 0.285-8.286l35.715-61.714v-0.286l-56-98.857q-2.572-4 0-8 2.285-3.714 6.857-3.714h52.857q8.857 0 14.286 10.286zM374 398.857q-2 3.428-6.857 3.428h-53.428q-8.572 0-14-10l-117.428-208.285q0.286-0.572 74.857-137.428 5.714-10 14.857-10h52.572q5.143 0 7.143 3.428 2.286 3.714-0.286 8l-74.286 136v0.286l116.857 206.571q2.286 4.572 0 8zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
337
- <glyph unicode="&#xf16a;" d="M365.714 219.429q0 10.572-8.572 15.428l-146.286 91.428q-8.857 5.714-18.572 0.571-9.428-5.143-9.428-16v-182.857q0-10.857 9.428-16 4.572-2.286 8.857-2.286 5.714 0 9.714 2.857l146.285 91.428q8.572 4.857 8.572 15.428zM512 219.429q0-27.428-0.286-42.857t-2.428-39-6.428-42.143q-4.572-20.857-19.714-35.143t-35.428-16.572q-63.428-7.143-191.714-7.143t-191.714 7.143q-20.285 2.286-35.572 16.572t-19.857 35.143q-4 18.572-6.143 42.143t-2.429 39-0.285 42.857 0.285 42.857 2.429 39 6.428 42.143q4.572 20.857 19.715 35.143t35.428 16.572q63.428 7.143 191.714 7.143t191.714-7.143q20.286-2.286 35.572-16.572t19.857-35.143q4-18.571 6.143-42.143t2.428-39 0.286-42.857z" />
338
- <glyph unicode="&#xf16b;" d="M114.857 273.429l141.143-87.143-97.714-81.428-140 91.143zM396.572 114.857v-30.857l-140-83.714v-0.286l-0.286 0.286-0.286-0.286v0.286l-139.714 83.714v30.857l42-27.428 97.714 81.143v0.572l0.286-0.286 0.286 0.286v-0.572l98-81.143zM158.286 441.714l97.714-81.428-141.143-86.857-96.572 77.143zM397.143 273.429l96.572-77.428-139.714-91.143-98 81.428zM354 441.714l139.714-91.143-96.572-77.143-141.143 86.857z" />
339
- <glyph unicode="&#xf16c;" d="M265.143 75.143v-43.143l-202-0.286v43.143zM334 174v-200.286l-0.286-10v-0.285l-333.714 0.285v210.286h34.572v-176.572h265.143v176.572h34.286zM68.857 148.857l201.143-18.572-3.714-42.857-201.429 18.572zM88.285 239.143l195.143-52.286-11.143-41.714-195.143 52.286zM134.857 338.857l174-102.857-22-37.143-174 102.857zM237.714 433.429l113.714-167.143-35.428-24.285-114 166.857zM367.143 475.429l34.572-199.143-42.572-7.428-34.572 199.143z" horiz-adv-x="403" />
340
- <glyph unicode="&#xf16d;" d="M389.143 68v185.143h-38.572q5.714-18 5.714-37.428 0-36-18.286-66.428t-49.714-48.143-68.572-17.714q-56.286 0-96.285 38.714t-40 93.572q0 19.428 5.715 37.428h-40.285v-185.143q0-7.428 5-12.428t12.428-5h305.428q7.143 0 12.286 5t5.143 12.428zM308 220.286q0 35.429-25.857 60.429t-62.428 25q-36.286 0-62.143-25t-25.857-60.428 25.857-60.428 62.143-25q36.572 0 62.428 25t25.857 60.428zM389.143 323.143v47.143q0 8-5.714 13.857t-14 5.857h-49.714q-8.286 0-14-5.857t-5.714-13.857v-47.143q0-8.286 5.714-14t14-5.714h49.714q8.286 0 14 5.714t5.714 14zM438.857 382.572v-326.286q0-23.143-16.572-39.714t-39.714-16.572h-326.286q-23.143 0-39.715 16.572t-16.572 39.714v326.286q0 23.143 16.572 39.714t39.715 16.572h326.286q23.143 0 39.714-16.572t16.572-39.714z" />
341
- <glyph unicode="&#xf16e;" d="M356.572 438.857q34 0 58.143-24.143t24.143-58.143v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286zM199.429 219.429q0 25.143-17.715 42.857t-42.857 17.715-42.857-17.714-17.715-42.857 17.715-42.857 42.857-17.714 42.857 17.714 17.714 42.857zM360.572 219.429q0 25.143-17.714 42.857t-42.857 17.715-42.857-17.714-17.714-42.857 17.714-42.857 42.857-17.714 42.857 17.714 17.714 42.857z" />
342
- <glyph unicode="&#xf170;" d="M219.429 297.714l57.429-87.428h-114.857zM323.714 146.286h26.857l-131.143 197.428-131.143-197.428h26.857l29.715 45.714h149.143zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
343
- <glyph unicode="&#xf171;" d="M232.857 230q2.286-18-14.429-28.857t-31.857-1.714q-11.143 4.857-15.286 16.572t-0.143 23.428 14.857 16.572q10.286 5.143 20.715 3.428t18.286-10.143 7.857-19.286zM264.572 236q-4 30.572-32.286 46.857t-56.286 3.714q-18-8-28.714-25.286t-9.857-37q1.143-26 22.143-44.286t47.286-16q26 2.286 43.428 24t14.286 48zM332.857 390.857q-5.714 7.714-16 12.714t-16.572 6.286-20.286 3.572q-83.143 13.428-161.714-0.572-12.285-2-18.857-3.428t-15.715-6.286-14.285-12.286q8.572-8 21.715-13t21-6.285 25-3.286q65.143-8.286 128-0.286 18 2.286 25.572 3.428t20.714 6.143 21.428 13.285zM349.143 95.143q-2.286-7.428-4.428-21.857t-4-24-8.143-20-16.572-16.143q-24.572-13.714-54.143-20.428t-57.714-6.286-57.572 5.286q-13.143 2.286-23.285 5.143t-21.857 7.714-20.857 12.428-14.857 17.572q-7.143 27.428-16.285 83.428l1.715 4.572 5.143 2.572q63.715-42.286 144.714-42.286t145 42.286q6-1.714 6.857-6.572t-1.428-12.857-2.286-10.572zM400.857 369.714q-7.428-47.714-31.714-187.143-1.428-8.572-7.714-16t-12.428-11.428-15.572-8.857q-72-36-174.286-25.143-70.857 7.714-112.572 39.714-4.285 3.428-7.285 7.572t-4.857 10-2.572 9.714-1.715 11.286-1.572 10q-2.572 14.286-7.572 42.857t-8 46.143-6.715 42.143-6.285 45.143q0.857 7.428 5 13.857t9 10.715 12.857 8.571 13.143 6.429 13.715 5.285q35.715 13.143 89.428 18.286 108.286 10.572 193.143-14.286 44.286-13.143 61.428-34.857 4.572-5.715 4.714-14.572t-1.572-15.428z" horiz-adv-x="403" />
344
- <glyph unicode="&#xf172;" d="M242.286 226.857q0 12.286-11.714 18.857t-22 0.286q-12.286-5.714-12.143-20.714t12.429-20.143q11.143-6.572 23.143 1.143t10.286 20.572zM265.143 231.429q2.286-18.857-10.286-34.572t-31.428-17.428-34 11.428-16 32.286q-0.571 14 7.286 26.572t20.714 18.286q20 8.857 40.428-2.857t23.286-33.714zM314.286 343.143q-5.714-6-15.286-9.714t-15.143-4.572-18.143-2.286q-44.286-5.714-92.572 0-12.572 1.714-18 2.714t-15 4.572-15.572 9.286q3.715 5.428 10.285 8.857t11.428 4.429 13.428 2.428q56.572 10 116.572 0.285 9.428-1.428 14.572-2.428t12.286-4.572 11.143-9zM326.286 130q0 2 1.572 7.572t0.857 9.143-5 4.714q-46-30.286-104.286-30.286t-104.572 30.286l-3.428-1.714-1.428-3.428q7.428-44 11.715-60 13.428-23.143 58.286-30.857 71.143-13.143 122.286 15.143 9.714 5.428 14 14.714t6.428 24.428 3.572 20.286zM363.428 328q2.572 15.143-2.286 21.429-12.286 15.714-44.286 25.143-61.714 18-139.143 10.286-37.715-3.428-64.572-13.143-10.857-4.285-17-7.143t-13.428-9.714-8.428-15.429q2.285-19.428 5.428-39.428t8.285-48.857 6.857-39.143q0.285-1.428 1.428-8.857t2-10.286 3.428-7.714 6.285-8q30-22.857 81.143-28.572 74-8 125.715 18 6.857 3.714 11.286 6.572t8.857 8.286 5.572 11.428q13.714 76.286 22.857 135.143zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
345
- <glyph unicode="&#xf173;" d="M111.428 438.857h62.572v-110.857h104v-68.857h-104v-112.571q0-38.857 4-49.143 3.714-10.572 14.857-17.143 14.286-8.857 33.429-8.857 33.428 0 66.286 21.714v-69.143q-29.143-13.714-50.857-18.572-22-5.428-49.429-5.428-30 0-53.143 7.714-22.285 7.143-39.428 21.428-16.572 14.572-22.572 30-6.285 15.428-6.285 46v154h-48.572v62q26 8.572 44.285 24 18.285 15.714 29.428 37.714t15.428 56z" horiz-adv-x="293" />
346
- <glyph unicode="&#xf174;" d="M320.857 72.857v51.714q-25.143-16-49.714-16-14.572 0-25.143 6.572-8.286 4.857-11.143 12.857-3.143 8.572-3.143 36.857v84.286h78.285v51.714h-78.286v83.143h-46.857q-3.143-25.714-11.429-42t-22.286-28.285q-13.714-11.428-33.143-18v-46.572h36.285v-115.428q0-22.286 4.857-34.572 4.857-12 16.857-22.286 12.286-10.572 29.714-16.286 17.714-5.714 40-5.714 19.143 0 36.857 4 16.286 3.714 38.286 14zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
347
- <glyph unicode="&#xf175;" d="M218.571 104.286q2.286-5.428-1.429-10l-100-109.714q-2.857-2.857-6.572-2.857-4 0-6.857 2.857l-101.428 109.714q-3.715 4.572-1.429 10 2.571 5.428 8.286 5.428h64v356.572q0 4 2.572 6.571t6.572 2.572h54.857q4 0 6.572-2.572t2.571-6.571v-356.572h64q6 0 8.286-5.428z" horiz-adv-x="220" />
348
- <glyph unicode="&#xf176;" d="M218.571 334.572q-2.571-5.428-8.286-5.428h-64v-356.572q0-4-2.571-6.572t-6.572-2.571h-54.857q-4 0-6.572 2.572t-2.572 6.572v356.572h-64q-6 0-8.286 5.428t1.429 10l100 109.714q2.857 2.857 6.572 2.857 4 0 6.857-2.857l101.428-109.714q3.714-4.572 1.429-10z" horiz-adv-x="220" />
349
- <glyph unicode="&#xf177;" d="M512 246.857v-54.857q0-4-2.572-6.572t-6.572-2.572h-356.572v-64q0-6-5.428-8.286t-10 1.428l-109.715 100q-2.857 2.857-2.857 6.572 0 4 2.857 6.857l109.715 101.143q4.572 4 10 1.714 5.428-2.572 5.428-8.286v-64h356.572q4 0 6.572-2.572t2.572-6.571z" />
350
- <glyph unicode="&#xf178;" d="M493.714 220.286q0-4-2.857-6.857l-109.714-101.143q-4.572-4-10-1.714-5.428 2.572-5.428 8.286v64h-356.572q-4 0-6.572 2.572t-2.571 6.572v54.857q0 4 2.571 6.572t6.572 2.571h356.572v64q0 6 5.428 8.286t10-1.428l109.714-100q2.857-2.857 2.857-6.572z" />
351
- <glyph unicode="&#xf179;" d="M398 128.286q-11.143-35.714-35.143-71.428-36.857-56-73.428-56-14 0-40 9.143-24.572 9.143-43.143 9.143-17.429 0-40.571-9.428-23.143-9.714-37.715-9.714-43.428 0-86 74-42 74.572-42 143.714 0 65.143 32.285 106.857 32 41.143 81.143 41.143 20.572 0 50.572-8.572 29.714-8.572 39.428-8.572 12.857 0 40.857 9.715 29.143 9.714 49.429 9.714 34 0 60.857-18.572 14.857-10.286 29.714-28.572-22.572-19.143-32.572-33.714-18.572-26.857-18.572-59.143 0-35.428 19.714-63.714t45.143-36zM290.572 463.429q0-17.428-8.286-38.857-8.572-21.428-26.572-39.428-15.428-15.428-30.857-20.572-10.571-3.143-29.715-4.857 0.857 42.571 22.286 73.428 21.143 30.572 71.428 42.286 0.286-0.857 0.714-3.143t0.714-3.143q0-1.143 0.143-2.857t0.143-2.857z" horiz-adv-x="403" />
352
- <glyph unicode="&#xf17a;" d="M194.857 188v-186l-194.857 26.857v159.143h194.857zM194.857 400.286v-188.285h-194.857v161.428zM475.428 188v-224.572l-259.143 35.714v188.857h259.143zM475.428 438.857v-226.857h-259.143v191.143z" horiz-adv-x="476" />
353
- <glyph unicode="&#xf17b;" d="M140.857 337.429q4.571 0 7.857 3.286t3.286 7.857-3.286 7.857-7.857 3.285-7.714-3.285-3.143-7.857 3.143-7.857 7.714-3.286zM261.428 337.429q4.572 0 7.714 3.286t3.143 7.857-3.143 7.857-7.714 3.285-7.857-3.285-3.286-7.857 3.286-7.857 7.857-3.286zM29.428 284.857q12 0 20.572-8.571t8.572-20.572v-122.857q0-12.286-8.428-20.857t-20.715-8.572-20.857 8.572-8.572 20.857v122.857q0 12 8.572 20.572t20.857 8.572zM332.286 279.429v-190.286q0-13.143-9.143-22.286t-22-9.143h-21.428v-64.857q0-12.286-8.572-20.857t-20.857-8.572-20.857 8.572-8.572 20.857v64.857h-39.428v-64.857q0-12.286-8.572-20.857t-20.857-8.572q-12 0-20.571 8.572t-8.572 20.857l-0.285 64.857h-21.143q-13.143 0-22.285 9.143t-9.143 22.286v190.286h262.286zM266 395.143q30.572-15.714 48.857-43.857t18.286-61.571h-264.286q0 33.428 18.285 61.571t49.143 43.857l-20.285 37.428q-2 3.714 1.428 5.714 3.715 1.715 5.715-1.714l20.572-37.714q27.143 12 57.429 12t57.428-12l20.572 37.714q2 3.429 5.714 1.714 3.428-2 1.428-5.714zM402.286 255.714v-122.857q0-12.286-8.572-20.857t-20.857-8.572q-12 0-20.572 8.572t-8.572 20.857v122.857q0 12.286 8.572 20.715t20.572 8.428q12.286 0 20.857-8.428t8.572-20.714z" horiz-adv-x="403" />
354
- <glyph unicode="&#xf17c;" d="M189.429 358q-3.143-0.286-4.429-3t-2.429-2.715q-1.429-0.285-1.429 1.428 0 3.429 5.428 4.286h2.857zM214.286 354q-1.143-0.286-3.286 1.857t-5 1.286q6.857 3.143 9.143-0.572 0.857-1.714-0.857-2.572zM114 232q-1.143 0.286-1.715-0.857t-1.285-3.572-1.572-3.857-2.857-3.714q-2-2.857-0.285-3.428 1.143-0.286 3.572 2t3.572 5.143q0.285 0.857 0.572 2t0.572 1.714 0.428 1.286 0.143 1.143v0.857t-0.285 0.714-0.857 0.572zM358.286 129.429q0 5.143-15.714 12 1.143 4.286 2.143 7.857t1.428 7.428 0.857 6.143 0.143 6.428-0.286 5.572-1 6.286-1.143 5.857-1.428 7.143-1.572 7.572q-2.857 13.714-13.428 29.428t-20.572 21.428q6.857-5.714 16.286-23.714 24.857-46.286 15.428-79.428-3.143-11.428-14.286-12-8.857-1.143-11 5.286t-2.286 23.857-3.286 30.572q-2.572 11.143-5.572 19.714t-5.572 13-4.428 7-3.714 4.286-2.143 2q-4 17.714-8.857 29.428t-8.428 16-6.714 9.428-4.286 11.428q-1.143 6 1.714 15.286t1.286 14.143-12.714 7.143q-4.286 0.857-12.714 5.143t-10.143 4.572q-2.286 0.286-3.143 7.428t2.286 14.572 10.286 7.714q10.572 0.857 14.572-8.572t1.143-16.571q-3.143-5.429-0.571-7.572t8.572-0.143q3.714 1.143 3.714 10.285v10.572q-1.428 8.572-3.857 14.286t-6 8.714-6.714 4.286-7.714 2.143q-30.572-2.285-25.428-38.285 0-4.286-0.286-4.286-2.571 2.571-8.428 3t-9.428-0.143-4.428 1.429q0.286 16.285-4.572 25.714t-12.857 9.714q-7.714 0.286-11.857-7.857t-4.714-17q-0.286-4.286 1-10.572t3.714-10.715 4.428-3.857q2.857 0.857 4.572 4 1.143 2.572-2 2.286-2 0-4.428 4.143t-2.714 9.572q-0.286 6.286 2.571 10.572t9.714 4q4.857 0 7.714-6t2.714-11.143-0.429-6.285q-6.286-4.286-8.857-8.286-2.286-3.429-7.857-6.714t-5.857-3.572q-3.714-4-4.429-7.714t2.143-5.143q4-2.286 7.143-5.572t4.572-5.428 5.286-3.714 10.143-1.857q13.429-0.571 29.143 4.286 0.571 0.286 6.572 2t9.857 3 8.429 3.714 6 5q2.571 4 5.714 2.286 1.429-0.857 1.857-2.428t-0.857-3.429-4.714-2.714q-5.714-1.714-16.143-6.143t-13-5.572q-12.571-5.428-20-6.572-7.143-1.429-22.571 0.571-2.857 0.572-2.571-0.571t4.857-5.428q7.143-6.572 19.143-6.286 4.857 0.286 10.286 2t10.286 4 9.571 5 8.572 4.857 7 3.429 5 0.714 2.429-3.143q0-0.571-0.286-1.286t-1.143-1.428-1.714-1.286-2.429-1.429-2.571-1.286-2.857-1.428-2.714-1.286q-8-4-19.285-12.572t-19-12.286-14-0.286q-6 3.143-18 20.857-6.286 8.857-7.143 6.286-0.286-0.857-0.286-2.857 0-7.143-4.286-16.143t-8.429-15.857-6-16.572 3.286-18q-6.572-1.714-17.857-25.714t-13.572-40.286q-0.572-5.143-0.428-19.714t-1.572-16.857q-2.285-6.857-8.285-0.857-9.143 8.857-10.285 26.857-0.572 8 1.143 16 1.143 5.428-0.285 5.143l-1.143-1.428q-10.285-18.572 2.857-47.428 1.428-3.428 7.143-8t6.857-5.714q5.715-6.572 29.714-25.857t26.572-21.857q4.572-4.286 5-10.857t-4-12.286-13-6.572q2.286-4.286 8.286-12.714t8-15.428 2-20.143q13.143 6.857 2 26.286-1.143 2.286-3 4.572t-2.714 3.428-0.571 1.714q0.857 1.428 3.714 2.714t5.714-0.714q13.143-14.857 47.429-10.286 38 4.286 50.572 24.857 6.572 10.857 9.714 8.572 3.428-1.714 2.857-14.857-0.286-7.143-6.572-26.286-2.572-6.572-1.714-10.714t6.857-4.428q0.857 5.428 4.143 22t3.857 25.714q0.572 6-1.857 21t-2.143 27.714 6.572 20.143q4.286 5.143 14.572 5.143 0.286 10.572 9.857 15.143t20.714 3 17.143-6.428zM178.857 365.714q0.857 4.857-0.714 8.572t-3.286 4.286q-2.571 0.572-2.571-2 0.571-1.428 1.429-1.714 2.857 0 2-4.286-0.857-5.714 2.286-5.714 0.857 0 0.857 0.857zM298.572 309.429q-0.572 2.286-1.857 3.286t-3.714 1.428-4.143 1.572q-1.428 0.857-2.714 2.286t-2 2.286-1.572 1.857-1.143 1.143-1.143-0.429q-4-4.571 2-12.428t11.143-9q2.572-0.286 4.143 2.286t1 5.714zM247.714 370.286q0 3.143-1.429 5.572t-3.143 3.572-2.571 0.857q-4-0.285-2-2l1.143-0.572q4-1.143 5.143-8.857 0-0.857 2.286 0.572zM263.143 436.857q0 0.572-0.714 1.428t-2.572 2-2.714 1.715q-4.286 4.285-6.857 4.285-2.571-0.285-3.286-2.143t-0.286-3.714-0.143-3.572q-0.286-1.143-1.714-3t-1.714-2.572 0.857-2.428q1.143-0.857 2.286 0t3.143 2.572 4.286 2.571q0.286 0.286 2.572 0.286t4.286 0.572 2.572 2zM424.572 53.714q5.714-3.428 8.857-7t3.428-6.857-0.714-6.428-4.428-6.286-6.714-5.572-8.572-5.286-9-4.714-9.143-4.428-7.714-3.714q-10.857-5.428-24.428-16t-21.572-18.286q-4.857-4.572-19.428-5.572t-25.428 4.143q-5.143 2.572-8.428 6.714t-4.714 7.286-6.286 5.572-13.428 2.714q-12.572 0.286-37.143 0.286-5.429 0-16.285-0.428t-16.572-0.714q-12.572-0.286-22.714-4.286t-15.286-8.572-12.428-8.143-15.286-3.286q-8.285 0.286-31.715 8.857t-41.715 12.286q-5.428 1.143-14.572 2.714t-14.285 2.572-11.285 2.714-9.572 4.143-4.857 5.572q-2.857 6.572 2 19t5.143 15.572q0.286 4.572-1.143 11.428t-2.857 12.143-1.285 10.428 3 7.714q4 3.428 16.285 4t17.143 3.428q8.572 5.143 12 10t3.428 14.572q6-20.857-9.143-30.286-9.143-5.714-23.715-4.286-9.714 0.857-12.286-2.857-3.715-4.286 1.428-16.286 0.572-1.714 2.286-5.143t2.428-5.143 1.285-4.857 0.285-6.286q0-4.286-4.857-14t-4-13.714q0.857-4.857 10.572-7.428 5.715-1.714 24.143-5.286t28.428-5.857q6.857-1.714 21.143-6.286t23.572-6.572 15.857-1.143q12.286 1.714 18.428 8t6.572 13.714-2.143 16.714-5.429 14.857-5.714 10.428q-34.572 54.286-48.285 69.143-19.428 21.143-32.285 11.428-3.143-2.572-4.285 4.286-0.857 4.572-0.572 10.857 0.285 8.286 2.857 14.857t6.857 13.428 6.285 12q2.285 6 7.572 20.572t8.428 22.286 8.572 17.428 11.143 15.428q31.428 40.857 35.428 55.714-3.429 32-4.572 88.572-0.571 25.714 6.857 43.285t30.285 29.857q11.143 6 29.714 6 15.143 0.286 30.286-3.857t25.428-11.857q16.286-12 26.143-34.715t8.428-42.143q-1.428-27.143 8.572-61.143 9.714-32.286 38-62.286 15.714-16.857 28.428-46.572t17-54.572q2.286-14 1.428-24.143t-3.428-15.857-5.714-6.286q-2.857-0.572-6.714-5.428t-7.714-10.143-11.572-9.572-17.428-4q-5.143 0.286-9 1.428t-6.428 3.857-3.857 4.428-3.286 5.857-2.572 5.572q-6.286 10.572-11.714 8.572t-8-14 2-27.714q5.714-20 0.286-55.714-2.857-18.572 5.143-28.714t20.857-9.428 24.286 10.143q16.857 14 25.572 19t29.572 12.143q15.143 5.143 22 10.428t5.286 9.857-7.143 8.143-14.714 6.714q-9.428 3.143-14.143 13.714t-4.286 20.714 4.428 13.572q0.286-8.857 2.286-16.143t4.143-11.572 5.857-8.143 6-5.428 6.143-3.714 4.714-2.714z" />
355
- <glyph unicode="&#xf17d;" d="M292.572 46.857q-12 68.857-40 142.286h-0.571l-0.571-0.286q-4.572-1.714-12.286-4.714t-28.857-14-39.143-23.428-37.428-32.714-29.428-42.286l-4.285 3.143q52.572-42.857 119.428-42.857 37.714 0 73.143 14.857zM239.714 220.286q-6 14-15.143 31.715-88.857-26.572-192.286-26.572-0.285-2-0.285-6 0-35.428 12.572-67.572t35.428-57.572q14.285 25.428 35.285 47.572t40.715 35.572 37.286 23.143 28.428 13.714l10.572 3.714q1.143 0.286 3.714 1t3.714 1.286zM209.143 280.857q-34.285 60.857-69.715 108-39.428-18.572-66.857-53.143t-36.572-77.714q86.285 0 173.143 22.857zM404.572 189.714q-60 17.143-116.857 8.286 24.857-68.286 36.572-134 31.714 21.428 52.857 54.143t27.428 71.572zM174.571 401.429q-0.286 0-0.571-0.286 0.286 0.286 0.571 0.286zM343.143 360q-52.857 46.857-123.714 46.857-21.714 0-44.286-5.428 37.428-48.572 70.286-109.143 19.714 7.429 37.143 17.286t27.572 17.572 18.714 16.286 10.714 11.572zM406.857 221.429q-0.857 66.286-42.572 117.143l-0.286-0.286q-2.572-3.428-5.428-7t-12.428-12.714-20.286-17.285-28.572-18.572-37.572-18.428q7.143-15.143 12.572-27.143 0.572-1.714 1.857-5t2.143-4.714q10.286 1.429 21.286 2t21 0.572 19.714-0.429 18.286-1.143 16.143-1.572 13.714-1.857 10.428-1.714 7.143-1.286zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
356
- <glyph unicode="&#xf17e;" d="M335.143 171.714q0 14.286-5.572 26.143t-13.857 19.572-20.857 14-23.572 9.714-25 6.572l-29.714 6.857q-8.572 2-12.572 3t-10 3.286-8.572 4.572-4.714 6-2.143 8.572q0 22 41.143 22 12.286 0 22-3.429t15.428-8.143 10.857-9.572 11.428-8.286 13.714-3.429q13.428 0 21.572 9.143t8.143 22q0 15.714-16 28.428t-40.572 19.285-52 6.572q-19.428 0-37.714-4.428t-34.143-13.428-25.428-24.857-9.572-36.714q0-17.428 5.428-30.428t16-21.572 22.857-13.857 29.429-9.286l41.714-10.286q25.714-6.286 32-10.286 9.143-5.714 9.143-17.143 0-11.143-11.428-18.428t-30-7.286q-14.572 0-26.143 4.572t-18.571 11-13 12.857-13.143 11-15.429 4.572q-14.285 0-21.572-8.572t-7.285-21.428q0-26.286 34.857-45t83.143-18.714q20.857 0 40 5.286t35 15.286 25.286 26.714 9.428 37.572zM438.857 109.714q0-45.428-32.143-77.572t-77.572-32.143q-37.143 0-66.857 22.857-22-4.572-42.857-4.572-40.857 0-78.143 15.857t-64.285 42.857-42.857 64.286-15.857 78.143q0 20.857 4.572 42.857-22.857 29.715-22.857 66.857 0 45.428 32.143 77.571t77.572 32.143q37.143 0 66.857-22.857 22 4.571 42.857 4.571 40.857 0 78.143-15.857t64.286-42.857 42.857-64.285 15.857-78.143q0-20.857-4.572-42.857 22.857-29.714 22.857-66.857z" />
357
- <glyph unicode="&#xf180;" d="M423.714 182.857l-167.714-167.714q-14.857-15.143-36.428-15.143t-36.714 15.143l-167.714 167.714q-15.143 15.143-15.143 36.572t15.143 36.572l167.714 167.714q15.143 15.143 36.572 15.143t36.572-15.143l75.714-75.715-113.714-114-53.714 53.714q-12 12-28.286 12-16.857 0-28.572-11.714l-34.285-34.572q-12-11.428-12-28.286 0-16.572 12-28.572l116-116.572q8.571-8 19.143-10.572l1.714-1.143h8q17.143 0 28.286 11.714l176.857 176.857 0.572-0.857q15.143-15.143 15.143-36.572t-15.143-36.572zM401.714 361.714l34.286-34.285q4-4.286 4-10.286t-4-10.286l-208.571-208.572q-4.857-4.286-10.571-4.286v0q-1.143 0-1.714 0.286-5.143 0.572-8.572 4l-116.285 116.572q-4 4.286-4 10.286t4 10l34.572 34.286q3.714 4.286 10 4.286t10.286-4.286l72-72 164 164.286q4.286 4.286 10.286 4.286t10.286-4.286z" horiz-adv-x="476" />
358
- <glyph unicode="&#xf181;" d="M201.143 91.429v292.572q0 4-2.571 6.572t-6.572 2.571h-137.143q-4 0-6.572-2.571t-2.572-6.572v-292.572q0-4 2.572-6.572t6.572-2.572h137.143q4 0 6.572 2.572t2.571 6.572zM393.143 201.143v182.857q0 4-2.572 6.572t-6.572 2.572h-137.143q-4 0-6.571-2.572t-2.571-6.572v-182.857q0-4 2.571-6.572t6.572-2.572h137.143q4 0 6.572 2.572t2.572 6.572zM438.857 420.572v-402.286q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v402.286q0 7.428 5.428 12.857t12.857 5.429h402.286q7.428 0 12.857-5.429t5.428-12.857z" />
359
- <glyph unicode="&#xf182;" d="M365.714 173.714q0-11.428-8-19.428t-19.428-8q-14.572 0-22.857 12.286l-64.857 97.428h-12.857v-37.714l70.572-117.428q2.572-4.286 2.572-9.428 0-7.428-5.428-12.857t-12.857-5.428h-54.857v-77.714q0-13.143-9.429-22.572t-22.572-9.429h-45.714q-13.143 0-22.572 9.428t-9.428 22.572v77.714h-54.857q-7.428 0-12.857 5.428t-5.428 12.857q0 5.143 2.572 9.428l70.571 117.428v37.714h-12.857l-64.857-97.428q-8.285-12.286-22.857-12.286-11.428 0-19.428 8t-8 19.428q0 8.286 4.572 15.143l73.143 109.714q20.857 30.572 50.285 30.572h109.714q29.428 0 50.286-30.572l73.143-109.714q4.572-6.857 4.572-15.143zM246.857 402.286q0-26.572-18.715-45.285t-45.286-18.715-45.286 18.715-18.715 45.285 18.715 45.286 45.286 18.714 45.286-18.714 18.714-45.286z" horiz-adv-x="366" />
360
- <glyph unicode="&#xf183;" d="M292.572 274.286v-118.857q0-11.428-8-19.428t-19.428-8-19.428 8-8 19.428v100.572h-18.286v-260.572q0-13.143-9.428-22.572t-22.572-9.428-22.572 9.428-9.428 22.572v132.572h-18.286v-132.572q0-13.143-9.428-22.572t-22.572-9.428-22.572 9.428-9.428 22.572v260.572h-18.285v-100.572q0-11.428-8-19.428t-19.428-8-19.428 8-8 19.428v118.857q0 22.857 16 38.857t38.857 16h182.857q22.857 0 38.857-16t16-38.857zM210.286 402.286q0-26.572-18.714-45.285t-45.286-18.715-45.285 18.715-18.715 45.285 18.715 45.286 45.285 18.714 45.286-18.714 18.714-45.286z" horiz-adv-x="293" />
361
- <glyph unicode="&#xf184;" d="M220.857 103.429l100 135.143q4.572 6.286 7 16.857t-1.714 24.286-17.572 22.572q-11.428 7.428-23.714 7.286t-21-5-15.572-12.857q-10.286-11.428-27.428-11.428-16.857 0-27.143 11.428-6.857 8-15.571 12.857t-21 5-24-7.286q-13.143-8.857-17.285-22.571t-1.715-24.286 7-16.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
362
- <glyph unicode="&#xf185;" d="M420.572 219.429q0 33.428-13 63.857t-35.143 52.572-52.572 35.143-63.857 13-63.857-13-52.572-35.143-35.143-52.572-13-63.857 13-63.857 35.143-52.572 52.572-35.143 63.857-13 63.857 13 52.572 35.143 35.143 52.572 13 63.857zM499.428 140.286q-1.143-4.286-5.714-5.714l-83.428-27.428v-87.428q0-4.572-3.714-7.428-4.286-2.857-8.286-1.143l-83.428 26.857-51.428-70.857q-2.857-3.715-7.428-3.715t-7.428 3.714l-51.428 70.857-83.428-26.857q-4-1.714-8.285 1.143-3.715 2.857-3.715 7.428v87.428l-83.428 27.428q-4.572 1.428-5.715 5.714-1.428 4.857 1.143 8.286l51.428 70.857-51.428 70.857q-2.572 3.714-1.143 8.286 1.143 4.286 5.715 5.714l83.428 27.429v87.428q0 4.572 3.715 7.428 4.285 2.857 8.285 1.143l83.428-26.857 51.428 70.857q2.571 3.428 7.428 3.428t7.428-3.428l51.428-70.857 83.428 26.857q4 1.714 8.286-1.143 3.714-2.857 3.714-7.428v-87.428l83.428-27.428q4.572-1.429 5.714-5.714 1.428-4.572-1.143-8.286l-51.428-70.857 51.428-70.857q2.572-3.428 1.143-8.286z" />
363
- <glyph unicode="&#xf186;" d="M360.572 103.143q-15.428-2.572-31.428-2.572-52 0-96.286 25.714t-70 70-25.714 96.286q0 54.857 29.714 102-57.428-17.143-93.857-65.428t-36.428-109.714q0-37.143 14.572-71t39-58.286 58.286-39 71-14.572q41.143 0 78.143 17.572t63 49zM418.572 127.429q-26.857-58-81-92.714t-118.143-34.714q-44.571 0-85.143 17.428t-70 46.857-46.857 70-17.428 85.143q0 43.714 16.428 83.572t44.572 69 67.285 47 82.857 19.572q12.571 0.571 17.429-11.143 5.143-11.714-4.286-20.572-24.572-22.285-37.572-51.857t-13-62.428q0-42.286 20.857-78t56.571-56.572 78-20.857q33.714 0 65.143 14.572 11.714 5.143 20.572-3.714 4-4 5-9.714t-1.286-10.857z" />
364
- <glyph unicode="&#xf187;" d="M310.857 237.714q0 7.428-5.428 12.857t-12.857 5.429h-73.143q-7.429 0-12.857-5.428t-5.428-12.857 5.428-12.857 12.857-5.428h73.143q7.428 0 12.857 5.428t5.428 12.857zM475.428 292.572v-274.286q0-7.428-5.428-12.857t-12.857-5.428h-402.286q-7.428 0-12.857 5.428t-5.428 12.857v274.286q0 7.428 5.428 12.857t12.857 5.429h402.286q7.428 0 12.857-5.428t5.428-12.857zM493.714 420.572v-73.143q0-7.428-5.428-12.857t-12.857-5.428h-438.857q-7.428 0-12.857 5.428t-5.428 12.857v73.143q0 7.428 5.428 12.857t12.857 5.429h438.857q7.428 0 12.857-5.429t5.428-12.857z" />
365
- <glyph unicode="&#xf188;" d="M466.286 201.143q0-7.428-5.428-12.857t-12.857-5.428h-64q0-48.857-19.143-82.857l59.428-59.714q5.428-5.428 5.428-12.857t-5.428-12.857q-5.143-5.428-12.857-5.428t-12.857 5.428l-56.572 56.286q-1.428-1.428-4.286-3.714t-12-8.143-18.572-10.428-23.428-8.286-27.714-3.714v256h-36.572v-256q-14.572 0-29 3.857t-24.857 9.428-18.857 11.143-12.428 9.286l-4.286 4-52.285-59.143q-5.715-6-13.715-6-6.857 0-12.285 4.572-5.428 5.143-5.857 12.714t4.428 13.286l57.715 64.857q-16.572 32.572-16.572 78.286h-64q-7.428 0-12.857 5.428t-5.428 12.857 5.428 12.857 12.857 5.428h64v84l-49.428 49.428q-5.428 5.428-5.428 12.857t5.428 12.857 12.857 5.428 12.857-5.428l49.428-49.428h241.143l49.428 49.428q5.428 5.428 12.857 5.428t12.857-5.428 5.428-12.857-5.428-12.857l-49.428-49.428v-84h64q7.428 0 12.857-5.428t5.428-12.857zM329.143 365.714h-182.857q0 38 26.715 64.715t64.714 26.714 64.714-26.714 26.714-64.715z" horiz-adv-x="476" />
366
- <glyph unicode="&#xf189;" d="M547.715 326.857q6.572-18.285-42.857-84-6.857-9.143-18.572-24.285-22.286-28.572-25.714-37.428-4.857-11.714 4-23.143 4.857-6 23.143-23.428h0.286l1.143-1.143q40.285-37.428 54.572-63.143 0.857-1.428 1.857-3.572t2-7.572-0.143-9.714-7.143-7.857-16.857-3.572l-73.143-1.143q-6.857-1.428-16 1.428t-14.857 6.286l-5.714 3.428q-8.572 6-20 18.286t-19.572 22.143-17.428 16.572-16.143 4.428q-0.857-0.286-2.286-1t-4.857-4.143-6.143-8.428-4.857-14.857-1.857-22.143q0-4.286-1-7.857t-2.143-5.286l-1.143-1.428q-5.143-5.428-15.143-6.286h-32.857q-20.286-1.143-41.714 4.714t-37.572 15.143-29.428 18.857-20.143 16.428l-7.143 6.857q-2.857 2.857-7.857 8.572t-20.428 26-30.285 43.143-35 60.286-37.285 77.714q-1.714 4.572-1.714 7.714t0.857 4.572l1.143 1.714q4.285 5.428 16.285 5.428l78.285 0.571q3.428-0.571 6.572-1.857t4.572-2.429l1.428-0.857q4.572-3.143 6.857-9.143 5.715-14.286 13.143-29.571t11.714-23.286l4.572-8.286q8.286-17.143 16-29.714t13.857-19.572 11.857-11 9.714-4 7.714 1.428q0.571 0.286 1.429 1.428t3.429 6.286 3.857 13.428 2.714 23.143 0 35.715q-0.571 11.428-2.571 20.857t-4 13.143l-1.714 3.428q-7.143 9.714-24.286 12.286-3.714 0.572 1.429 6.857 4.857 5.428 10.857 8.572 15.143 7.428 68.286 6.857 23.428-0.285 38.572-3.714 5.714-1.428 9.572-3.857t5.857-6.857 3-9.143 1-13-0.286-15.714-0.714-20.143-0.428-23.571q0-3.143-0.286-12t-0.143-13.714 1-11.572 3.286-11.143 6.428-7q2.286-0.572 4.857-1.143t7.428 3.143 10.857 9.857 14.857 19.143 19.428 30.715q17.143 29.714 30.572 64.286 1.143 2.857 2.857 5t3.143 3l1.143 0.857 1.428 0.714t3.714 0.857 5.714 0.143l82.286 0.572q11.143 1.428 18.285-0.714t8.857-4.714z" horiz-adv-x="549" />
367
- <glyph unicode="&#xf18a;" d="M192.857 108.572q6 9.714 3.143 19.714t-12.857 14.286q-9.714 4-20.857 0.286t-17.143-13.143q-6.286-9.714-3.714-19.572t12.286-14.428 21.285-0.714 17.857 13.572zM219.714 143.143q2.286 3.714 1 7.572t-5 5.286q-4 1.428-8.143-0.143t-6.143-5.286q-4.857-8.857 3.714-12.857 4-1.428 8.286 0.143t6.286 5.286zM269.428 112.572q-12.857-29.143-45.143-42.857t-64-3.428q-30.571 9.714-42.143 36.143t1.857 53.572q13.429 26.572 43.285 39.714t60.143 5.428q31.715-8.286 45.285-34.143t0.714-54.428zM358.572 158.286q-2.572 27.428-25.428 48.572t-59.572 31.143-78.428 6q-63.714-6.571-105.572-40.428t-37.857-75.572q2.572-27.428 25.428-48.572t59.572-31.143 78.428-6q63.714 6.572 105.572 40.428t37.857 75.572zM446.572 157.143q0-19.428-10.572-39.857t-31.143-39.143-48.143-33.572-64.572-23.714-77.286-8.857-78.572 9.572-68.715 26.572-49 43.143-18.572 57q0 32.857 19.857 70t56.428 73.714q48.285 48.286 97.572 67.428t70.429-2q18.572-18.286 5.714-59.714-1.143-4-0.286-5.714t2.857-2 4.143 0.143 3.857 1l1.714 0.572q39.714 16.857 70.286 16.857t43.714-17.428q12.857-18 0-50.857-0.572-3.714-1.286-5.714t1.286-3.571 3.428-2.143 4.857-1.714q16.286-5.143 29.428-13.428t22.857-23.286 9.714-33.286zM425.428 335.429q12-13.428 15.572-31t-1.857-33.572q-2.286-6.572-8.428-9.714t-12.714-1.143q-6.572 2.286-9.714 8.429t-1.143 12.714q5.714 18-6.857 31.714t-30.572 10q-6.857-1.429-12.857 2.286t-7.143 10.572q-1.428 6.857 2.286 12.714t10.572 7.286q17.143 3.714 34-1.572t28.857-18.714zM477.143 382q24.857-27.429 32.143-63.572t-3.857-69q-2.572-7.714-9.714-11.428t-14.857-1.143-11.428 9.714-1.428 14.857q8 23.428 2.857 49.143t-22.857 45.143q-17.714 19.714-42.286 27.286t-49.428 2.428q-8-1.715-14.857 2.714t-8.572 12.428 2.714 14.714 12.428 8.429q35.143 7.428 69.714-3.286t59.428-38.428z" />
368
- <glyph unicode="&#xf18b;" d="M323.714 26.857q-48.857-26.857-105.143-26.857-56 0-104.857 26.857 39.428 24.857 67.286 60.286t37.572 76.572q10-41.143 37.857-76.572t67.286-60.286zM182.286 434.857v-138.571q0-72-36.143-131.286t-94.428-87.572q-51.715 61.428-51.715 141.428 0 53.428 23.857 99.857t65.572 77 92.857 39.143zM438.857 218.857q0-80-51.714-141.428-58.286 28.286-94.428 87.572t-36.143 131.286v138.571q51.143-8.572 92.857-39.143t65.572-77 23.857-99.857z" />
369
- <glyph unicode="&#xf18c;" d="M400.572 160.286q-9.143-22.857-21.714-39.428t-26-25.286-28.286-13.286-29-4.143-27.572 2.428-24.714 6.286-19.857 7.857-13.143 6.428l-4.857 2.857q-32.285-65.143-82.715-102.714t-109.857-37.857q-5.428 0-9.143 3.714t-3.715 9.143 3.715 9 9.143 3.572q49.428 0.286 92.143 30.714t71.857 84.143q-10.286-4-20.572-6.572t-23.714-3.714-26 0.714-26.572 8.143-26.285 16.857-24.143 28.572-21.285 41.714q32.572 13.428 61.143 16.286t47.857-2.143 35.572-16.143 25.286-22 16.143-23.428q15.143 37.428 22.571 83.143-2-0.286-5.143-0.714t-13.286-0.714-19.857 0.143-23.286 2.857-25.286 6.572-24 12.143-21.428 18.572-15.572 27-8.143 36.428q20 8 38.143 10.428t32.143-0.286 26.285-8.572 21-14.286 16-17.428 12-18 7.857-16 4.571-11.286l1.143-4.572q3.429 34.857 3.429 55.714-2.286 1.714-6.143 4.572t-14 12.714-18.143 20.428-15.428 26.571-9.428 32.143 3.429 36.286 20 39.571q20.857-7.143 36.429-17.571t24.143-21.857 13.715-24.285 5.857-25.429-0.143-24.428-3.714-21.857-5.428-17.714-4.857-12l-2-4.286q0.286-1.429 0.286-14.428t-0.286-20.428q0.857 2 2.857 5.286t8.714 12.286 14.428 16.572 20.286 15.857 26.143 12.714 32 4.143 37.857-6.857q-0.572-22.285-6.143-40.428t-14.286-29.857-19.857-20.428-23.286-13-24.143-6.857-22.857-2.714-19.286 0.286-13.286 1.286l-4.857 0.857q-6.571-42-20.857-80.857 1.714 2 5.143 5.286t14.143 11.714 22.143 15 28.428 12 33.572 5.714 36.857-6.714 39.143-22.143z" horiz-adv-x="403" />
370
- <glyph unicode="&#xf18d;" d="M359.714 117.429v-18.857q0-24.286-16.428-41.286t-39.572-17h-16.286l-74.286-76.857v76.857h-151.143q-23.143 0-39.572 17t-16.428 41.286v18.857h353.714zM359.714 210.572v-72.857h-353.714v72.857h353.714zM359.714 304.286v-72.857h-353.714v72.857h353.714zM359.714 344.286v-19.143h-353.714v19.143q0 24 16.428 41t39.572 17h241.714q23.143 0 39.572-17t16.428-41z" horiz-adv-x="366" />
371
- <glyph unicode="&#xf18e;" d="M329.143 219.429q0-4-2.572-6.572l-91.428-91.428q-2.571-2.572-6.572-2.572-3.714 0-6.428 2.714t-2.714 6.428v54.857h-100.572q-3.715 0-6.428 2.714t-2.715 6.428v54.857q0 3.714 2.715 6.429t6.428 2.714h100.572v54.857q0 4 2.571 6.572t6.571 2.571q3.429 0 6.857-2.857l91.143-91.143q2.572-2.571 2.572-6.571zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
372
- <glyph unicode="&#xf190;" d="M329.143 246.857v-54.857q0-3.714-2.714-6.428t-6.428-2.714h-100.572v-54.857q0-4-2.571-6.572t-6.571-2.572q-3.429 0-6.857 2.857l-91.143 91.143q-2.572 2.572-2.572 6.572t2.572 6.572l91.428 91.428q2.571 2.571 6.572 2.571 3.714 0 6.428-2.714t2.714-6.428v-54.857h100.572q3.714 0 6.428-2.714t2.714-6.428zM374.857 219.429q0 42.286-20.857 78t-56.572 56.572-78 20.857-78-20.857-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
373
- <glyph unicode="&#xf191;" d="M292.572 310.857v-182.857q0-7.428-5.428-12.857t-12.857-5.428q-5.714 0-10.572 3.428l-128 91.428q-7.714 5.428-7.714 14.857t7.714 14.857l128 91.428q4.857 3.428 10.572 3.428 7.428 0 12.857-5.428t5.428-12.857zM365.714 82.286v274.286q0 3.714-2.714 6.428t-6.428 2.714h-274.286q-3.715 0-6.428-2.714t-2.715-6.428v-274.286q0-3.714 2.715-6.428t6.428-2.714h274.286q3.714 0 6.428 2.714t2.714 6.428zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
374
- <glyph unicode="&#xf192;" d="M292.572 219.429q0-30.286-21.428-51.714t-51.714-21.428-51.714 21.428-21.428 51.714 21.428 51.714 51.714 21.428 51.714-21.428 21.428-51.714zM219.429 374.857q-42.285 0-78-20.857t-56.572-56.572-20.857-78 20.857-78 56.572-56.572 78-20.857 78 20.857 56.572 56.572 20.857 78-20.857 78-56.572 56.572-78 20.857zM438.857 219.429q0-59.714-29.428-110.143t-79.857-79.857-110.143-29.428-110.143 29.428-79.857 79.857-29.428 110.143 29.428 110.143 79.857 79.857 110.143 29.428 110.143-29.428 79.857-79.857 29.428-110.143z" />
375
- <glyph unicode="&#xf193;" d="M292.286 136.286l29.143-58.286q-16.572-51.143-60-82.857t-96.857-31.715q-44.572 0-82.428 22.143t-60 60-22.143 82.428q0 51.714 29.857 94.286t78.428 60.286l4.857-37.428q-34.857-15.428-55.715-47.286t-20.857-69.857q0-52.857 37.572-90.428t90.428-37.572q36 0 66.428 18.572t47.143 50.143 14.143 67.572zM448.857 107.714l16.572-32.572-73.143-36.572q-3.714-2-8.286-2-11.428 0-16.286 10l-68.286 136.286h-134.857q-6.857 0-12.143 4.714t-6.143 11.572l-27.428 222.571q-0.572 4.572 1.715 12 4 14.572 16.285 23.572t27.714 9q18.857 0 32.286-13.428t13.428-32.286q0-19.714-14.857-33.572t-34.285-11.857l10.572-82.572h120.857v-36.572h-116.286l4.572-36.572h130q11.428 0 16.286-10l65.143-130z" horiz-adv-x="476" />
376
- <glyph unicode="&#xf194;" d="M358.286 293.429q4.572 24.286-6 37.714-14.857 18.571-53.428 12.857-4.857-0.857-11.714-3.571t-16.428-8.714-18.428-13.857-17-20-12.714-26.143q22.857 2 32.428-4.572t7.572-28.286q-1.428-14.857-14.857-40.857-12.286-22.286-20.285-28.286-12.572-9.143-24.857 4-6.571 6.857-10.714 18.428t-5.429 20.857-2.857 24-2.429 20.428q-6.572 36.857-9.714 46.857-3.429 10.572-10.143 19.715t-14.429 11.428q-16.286 4.572-36.285-7.143-15.428-9.143-39-30.285t-35-29.143v-2q4.572-2.286 7.285-7.428t6.143-5.714q6-0.857 15.572 2.428t16.572 3 11.857-8.571q3.143-5.143 5.285-11t4.285-13.714 3.572-11.572q4.857-13.143 15.143-53.428 10.285-41.714 16.285-56.286 12-28.286 29.428-35.714 12.286-3.428 24.286-0.428t21.714 9q37.428 22 71.428 67.714 29.714 39.714 49.286 83.572t23.572 64.714zM438.857 356.572v-274.286q0-34-24.143-58.143t-58.143-24.143h-274.286q-34 0-58.143 24.143t-24.143 58.143v274.286q0 34 24.143 58.143t58.143 24.143h274.286q34 0 58.143-24.143t24.143-58.143z" />
377
- <glyph unicode="&#xf195;" d="M329.143 237.714q0-54.572-27-100.857t-73.286-73.286-100.857-27h-45.715q-4 0-6.572 2.572t-2.572 6.572v174.571l-61.428-18.857q-0.857-0.286-2.572-0.286-2.857 0-5.428 1.714-3.715 2.857-3.715 7.428v36.572q0 6.572 6.572 8.857l66.572 20.286v26.572l-61.428-18.857q-0.857-0.286-2.572-0.286-2.857 0-5.428 1.714-3.715 2.857-3.715 7.429v36.572q0 6.572 6.572 8.857l66.572 20.286v71.428q0 4 2.572 6.572t6.572 2.572h45.715q4 0 6.571-2.572t2.571-6.572v-51.714l107.143 33.143q4.286 1.429 8-1.428t3.714-7.428v-36.572q0-6.572-6.572-8.857l-112.286-34.572v-26.572l107.143 33.143q4.286 1.429 8-1.428t3.715-7.428v-36.572q0-6.572-6.572-8.857l-112.286-34.571v-139.143q53.714 3.714 90.857 43.143t37.143 93.714q0 4 2.572 6.572t6.572 2.571h45.714q4 0 6.572-2.571t2.572-6.572z" horiz-adv-x="329" />
378
- <glyph unicode="&#xf196;" d="M329.143 246.857v-18.285q0-4-2.572-6.572t-6.572-2.572h-100.572v-100.571q0-4-2.571-6.572t-6.571-2.572h-18.286q-4 0-6.572 2.572t-2.571 6.572v100.572h-100.572q-4 0-6.572 2.571t-2.572 6.572v18.286q0 4 2.572 6.572t6.572 2.571h100.572v100.572q0 4 2.571 6.572t6.572 2.572h18.286q4 0 6.572-2.572t2.571-6.572v-100.572h100.571q4 0 6.572-2.571t2.572-6.572zM365.714 118.857v237.714q0 18.857-13.428 32.286t-32.286 13.428h-237.714q-18.857 0-32.285-13.428t-13.428-32.286v-237.714q0-18.857 13.428-32.286t32.285-13.428h237.714q18.857 0 32.286 13.428t13.428 32.286zM402.286 356.572v-237.714q0-34-24.143-58.143t-58.143-24.143h-237.714q-34 0-58.143 24.143t-24.143 58.143v237.714q0 34 24.143 58.143t58.143 24.143h237.714q34 0 58.143-24.143t24.143-58.143z" horiz-adv-x="403" />
379
- </font></defs></svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/fonts/option-tree-font.ttf DELETED
Binary file
admin/assets/fonts/option-tree-font.woff DELETED
Binary file
admin/assets/images/icon.png DELETED
Binary file
admin/assets/images/layout/dual-sidebar.png DELETED
Binary file
admin/assets/images/layout/full-width.png DELETED
Binary file
admin/assets/images/layout/left-dual-sidebar.png DELETED
Binary file
admin/assets/images/layout/left-sidebar.png DELETED
Binary file
admin/assets/images/layout/right-dual-sidebar.png DELETED
Binary file
admin/assets/images/layout/right-sidebar.png DELETED
Binary file
admin/assets/images/nx-icon.png DELETED
Binary file
admin/assets/images/nx-logo.png DELETED
Binary file
admin/assets/images/ot-pre-bg.gif DELETED
Binary file
admin/assets/images/ot-select-hover-rtl.png DELETED
Binary file
admin/assets/images/ot-select-hover.png DELETED
Binary file
admin/assets/images/ot-select-rtl.png DELETED
Binary file
admin/assets/images/ot-select.png DELETED
Binary file
admin/assets/images/weforms-logo-white.png DELETED
Binary file
admin/assets/js/ot-admin.js DELETED
@@ -1,1335 +0,0 @@
1
- /**
2
- * Option Tree UI
3
- *
4
- * Dependencies: jQuery, jQuery UI, ColorPicker
5
- *
6
- * @author Derek Herman (derek@valendesigns.com)
7
- */
8
- ;(function($) {
9
- OT_UI = {
10
- processing: false,
11
- init: function() {
12
- this.init_hide_body();
13
- this.init_sortable();
14
- this.init_add();
15
- this.init_edit();
16
- this.init_remove();
17
- this.init_edit_title();
18
- this.init_edit_id();
19
- this.init_activate_layout();
20
- this.init_conditions();
21
- this.init_upload();
22
- this.init_upload_remove();
23
- this.init_numeric_slider();
24
- this.init_tabs();
25
- this.init_radio_image_select();
26
- this.init_select_wrapper();
27
- this.bind_select_wrapper();
28
- this.init_google_fonts();
29
- this.fix_upload_parent();
30
- this.fix_textarea();
31
- this.replicate_ajax();
32
- this.reset_settings();
33
- this.css_editor_mode();
34
- this.javascript_editor_mode();
35
- },
36
- init_hide_body: function(elm,type) {
37
- var css = '.option-tree-setting-body';
38
- if ( type == 'parent' ) {
39
- $(css).not( elm.parent().parent().children(css) ).hide();
40
- } else if ( type == 'child' ) {
41
- elm.closest('ul').find(css).not( elm.parent().parent().children(css) ).hide();
42
- } else if ( type == 'child-add' ) {
43
- elm.children().find(css).hide();
44
- } else if ( type == 'toggle' ) {
45
- elm.parent().parent().children(css).toggle();
46
- } else {
47
- $(css).hide();
48
- }
49
- },
50
- init_remove_active: function(elm,type) {
51
- var css = '.option-tree-setting-edit';
52
- if ( type == 'parent' ) {
53
- $(css).not(elm).removeClass('active');
54
- } else if ( type == 'child' ) {
55
- elm.closest('ul').find(css).not(elm).removeClass('active');
56
- } else if ( type == 'child-add' ) {
57
- elm.children().find(css).removeClass('active');
58
- } else {
59
- $(css).removeClass('active');
60
- }
61
- },
62
- init_sortable: function(scope) {
63
- scope = scope || document;
64
- $('.option-tree-sortable', scope).each( function() {
65
- if ( $(this).children('li').length ) {
66
- var elm = $(this);
67
- elm.show();
68
- elm.sortable({
69
- items: 'li:not(.ui-state-disabled)',
70
- handle: 'div.open',
71
- placeholder: 'ui-state-highlight',
72
- start: function (event, ui) {
73
- ui.placeholder.height(ui.item.height()-2);
74
- },
75
- stop: function(evt, ui) {
76
- setTimeout(
77
- function(){
78
- OT_UI.update_ids(elm);
79
- },
80
- 200
81
- )
82
- }
83
- });
84
- }
85
- });
86
- },
87
- init_add: function() {
88
- $(document).on('click', '.option-tree-section-add', function(e) {
89
- e.preventDefault();
90
- OT_UI.add(this,'section');
91
- });
92
- $(document).on('click', '.option-tree-setting-add', function(e) {
93
- e.preventDefault();
94
- OT_UI.add(this,'setting');
95
- });
96
- $(document).on('click', '.option-tree-help-add', function(e) {
97
- e.preventDefault();
98
- OT_UI.add(this,'the_contextual_help');
99
- });
100
- $(document).on('click', '.option-tree-choice-add', function(e) {
101
- e.preventDefault();
102
- OT_UI.add(this,'choice');
103
- });
104
- $(document).on('click', '.option-tree-list-item-add', function(e) {
105
- e.preventDefault();
106
- OT_UI.add(this,'list_item');
107
- });
108
- $(document).on('click', '.option-tree-social-links-add', function(e) {
109
- e.preventDefault();
110
- OT_UI.add(this,'social_links');
111
- });
112
- $(document).on('click', '.option-tree-list-item-setting-add', function(e) {
113
- e.preventDefault();
114
- if ( $(this).parents('ul').parents('ul').hasClass('ui-sortable') ) {
115
- alert(option_tree.setting_limit);
116
- return false;
117
- }
118
- OT_UI.add(this,'list_item_setting');
119
- });
120
- },
121
- init_edit: function() {
122
- $(document).on('click', '.option-tree-setting-edit', function(e) {
123
- e.preventDefault();
124
- if ( $(this).parents().hasClass('option-tree-setting-body') ) {
125
- OT_UI.init_remove_active($(this),'child');
126
- OT_UI.init_hide_body($(this),'child');
127
- } else {
128
- OT_UI.init_remove_active($(this),'parent');
129
- OT_UI.init_hide_body($(this), 'parent');
130
- }
131
- $(this).toggleClass('active');
132
- OT_UI.init_hide_body($(this), 'toggle');
133
- });
134
- },
135
- init_remove: function() {
136
- $(document).on('click', '.option-tree-setting-remove', function(event) {
137
- event.preventDefault();
138
- if ( $(this).parents('li').hasClass('ui-state-disabled') ) {
139
- alert(option_tree.remove_no);
140
- return false;
141
- }
142
- var agree = confirm(option_tree.remove_agree);
143
- if (agree) {
144
- var list = $(this).parents('ul');
145
- OT_UI.remove(this);
146
- setTimeout( function() {
147
- OT_UI.update_ids(list);
148
- }, 200 );
149
- }
150
- return false;
151
- });
152
- },
153
- init_edit_title: function() {
154
- $(document).on('keyup', '.option-tree-setting-title', function() {
155
- OT_UI.edit_title(this);
156
- });
157
- // Automatically fill option IDs with clean versions of their respective option labels
158
- $(document).on('blur', '.option-tree-setting-title', function() {
159
- var optionId = $(this).parents('.option-tree-setting-body').find('[type="text"][name$="id]"]')
160
- if ( optionId.val() === '' ) {
161
- optionId.val($(this).val().replace(/[^a-z0-9]/gi,'_').toLowerCase());
162
- }
163
- });
164
- },
165
- init_edit_id: function() {
166
- $(document).on('keyup', '.section-id', function(){
167
- OT_UI.update_id(this);
168
- });
169
- },
170
- init_activate_layout: function() {
171
- $(document).on('click', '.option-tree-layout-activate', function() {
172
- var active = $(this).parents('.option-tree-setting').find('.open').text();
173
- $('.option-tree-layout-activate').removeClass('active');
174
- $(this).toggleClass('active');
175
- $('.active-layout-input').attr({'value':active});
176
- });
177
- $(document).on('change', '#option-tree-options-layouts-form select', function() {
178
- var agree = confirm(option_tree.activate_layout_agree);
179
- if (agree) {
180
- $('#option-tree-options-layouts-form').submit();
181
- } else {
182
- var active = $('#the_current_layout').attr('value');
183
- $('#option-tree-options-layouts-form select option[value="' + active + '"]').attr({'selected':'selected'});
184
- $('#option-tree-options-layouts-form select').prev('span').replaceWith('<span>' + active + '</span>');
185
- }
186
- });
187
- },
188
- add: function(elm,type) {
189
- var self = this,
190
- list = '',
191
- list_class = '',
192
- name = '',
193
- post_id = 0,
194
- get_option = '',
195
- settings = '';
196
- if ( type == 'the_contextual_help' ) {
197
- list = $(elm).parent().find('ul:last');
198
- list_class = 'list-contextual-help';
199
- } else if ( type == 'choice' ) {
200
- list = $(elm).parent().children('ul');
201
- list_class = 'list-choice';
202
- } else if ( type == 'list_item' ) {
203
- list = $(elm).parent().children('ul');
204
- list_class = 'list-sub-setting';
205
- } else if ( type == 'list_item_setting' ) {
206
- list = $(elm).parent().children('ul');
207
- list_class = 'list-sub-setting';
208
- } else if ( type == 'social_links' ) {
209
- list = $(elm).parent().children('ul');
210
- list_class = 'list-sub-setting';
211
- } else {
212
- list = $(elm).parent().find('ul:first');
213
- list_class = ( type == 'section' ) ? 'list-section' : 'list-setting';
214
- }
215
- name = list.data('name');
216
- post_id = list.data('id');
217
- get_option = list.data('getOption');
218
- settings = $('#'+name+'_settings_array').val();
219
- if ( this.processing === false ) {
220
- this.processing = true;
221
- var count = parseInt(list.children('li').length);
222
- if ( type == 'list_item' || type == 'social_links' ) {
223
- list.find('li input.option-tree-setting-title', self).each(function(){
224
- var setting = $(this).attr('name'),
225
- regex = /\[([0-9]+)\]/,
226
- matches = setting.match(regex),
227
- id = null != matches ? parseInt(matches[1]) : 0;
228
- id++;
229
- if ( id > count) {
230
- count = id;
231
- }
232
- });
233
- }
234
- $.ajax({
235
- url: option_tree.ajax,
236
- type: 'post',
237
- data: {
238
- action: 'add_' + type,
239
- count: count,
240
- name: name,
241
- post_id: post_id,
242
- get_option: get_option,
243
- settings: settings,
244
- type: type,
245
- nonce: option_tree.nonce
246
- },
247
- complete: function( data ) {
248
- if ( type == 'choice' || type == 'list_item_setting' ) {
249
- OT_UI.init_remove_active(list,'child-add');
250
- OT_UI.init_hide_body(list,'child-add');
251
- } else {
252
- OT_UI.init_remove_active();
253
- OT_UI.init_hide_body();
254
- }
255
- var listItem = $('<li class="ui-state-default ' + list_class + '">' + data.responseText + '</li>');
256
- list.append(listItem);
257
- list.children().last().find('.option-tree-setting-edit').toggleClass('active');
258
- list.children().last().find('.option-tree-setting-body').toggle();
259
- list.children().last().find('.option-tree-setting-title').focus();
260
- if ( type != 'the_contextual_help' ) {
261
- OT_UI.update_ids(list);
262
- }
263
- OT_UI.init_sortable(listItem);
264
- OT_UI.init_select_wrapper(listItem);
265
- OT_UI.init_numeric_slider(listItem);
266
- OT_UI.parse_condition();
267
- self.processing = false;
268
- }
269
- });
270
- }
271
- },
272
- remove: function(e) {
273
- $(e).parent().parent().parent('li').remove();
274
- },
275
- edit_title: function(e) {
276
- if ( this.timer ) {
277
- clearTimeout(e.timer);
278
- }
279
- this.timer = setTimeout( function() {
280
- $(e).parent().parent().parent().parent().parent().children('.open').text(e.value);
281
- }, 100);
282
- return true;
283
- },
284
- update_id: function(e) {
285
- if ( this.timer ) {
286
- clearTimeout(e.timer);
287
- }
288
- this.timer = setTimeout( function() {
289
- OT_UI.update_ids($(e).parents('ul'));
290
- }, 100);
291
- return true;
292
- },
293
- update_ids: function(list) {
294
- var last_section, section, list_items = list.children('li');
295
- list_items.each(function(index) {
296
- if ( $(this).hasClass('list-section') ) {
297
- section = $(this).find('.section-id').val().trim().toLowerCase().replace(/[^a-z0-9]/gi,'_');
298
- if (!section) {
299
- section = $(this).find('.section-title').val().trim().toLowerCase().replace(/[^a-z0-9]/gi,'_');
300
- }
301
- if (!section) {
302
- section = last_section;
303
- }
304
- }
305
- if ($(this).hasClass('list-setting') ) {
306
- $(this).find('.hidden-section').attr({'value':section});
307
- }
308
- last_section = section;
309
- });
310
- },
311
- condition_objects: function() {
312
- return 'select, input[type="radio"]:checked, input[type="text"], input[type="hidden"], input.ot-numeric-slider-hidden-input';
313
- },
314
- match_conditions: function(condition) {
315
- var match;
316
- var regex = /(.+?):(is|not|contains|less_than|less_than_or_equal_to|greater_than|greater_than_or_equal_to)\((.*?)\),?/g;
317
- var conditions = [];
318
-
319
- while( match = regex.exec( condition ) ) {
320
- conditions.push({
321
- 'check': match[1],
322
- 'rule': match[2],
323
- 'value': match[3] || ''
324
- });
325
- }
326
-
327
- return conditions;
328
- },
329
- parse_condition: function() {
330
- $( '.format-settings[id^="setting_"][data-condition]' ).each(function() {
331
-
332
- var passed;
333
- var conditions = OT_UI.match_conditions( $( this ).data( 'condition' ) );
334
- var operator = ( $( this ).data( 'operator' ) || 'and' ).toLowerCase();
335
-
336
- $.each( conditions, function( index, condition ) {
337
-
338
- var target = $( '#setting_' + condition.check );
339
- var targetEl = !! target.length && target.find( OT_UI.condition_objects() ).first();
340
-
341
- if ( ! target.length || ( ! targetEl.length && condition.value.toString() != '' ) ) {
342
- return;
343
- }
344
-
345
- var v1 = targetEl.length ? targetEl.val().toString() : '';
346
- var v2 = condition.value.toString();
347
- var result;
348
-
349
- switch ( condition.rule ) {
350
- case 'less_than':
351
- result = ( parseInt( v1 ) < parseInt( v2 ) );
352
- break;
353
- case 'less_than_or_equal_to':
354
- result = ( parseInt( v1 ) <= parseInt( v2 ) );
355
- break;
356
- case 'greater_than':
357
- result = ( parseInt( v1 ) > parseInt( v2 ) );
358
- break;
359
- case 'greater_than_or_equal_to':
360
- result = ( parseInt( v1 ) >= parseInt( v2 ) );
361
- break;
362
- case 'contains':
363
- result = ( v1.indexOf(v2) !== -1 ? true : false );
364
- break;
365
- case 'is':
366
- result = ( v1 == v2 );
367
- break;
368
- case 'not':
369
- result = ( v1 != v2 );
370
- break;
371
- }
372
-
373
- if ( 'undefined' == typeof passed ) {
374
- passed = result;
375
- }
376
-
377
- switch ( operator ) {
378
- case 'or':
379
- passed = ( passed || result );
380
- break;
381
- case 'and':
382
- default:
383
- passed = ( passed && result );
384
- break;
385
- }
386
-
387
- });
388
-
389
- if ( passed ) {
390
- $(this).animate({opacity: 'show' , height: 'show'}, 200);
391
- } else {
392
- $(this).animate({opacity: 'hide' , height: 'hide'}, 200);
393
- }
394
-
395
- delete passed;
396
-
397
- });
398
- },
399
- init_conditions: function() {
400
- var delay = (function() {
401
- var timer = 0;
402
- return function(callback, ms) {
403
- clearTimeout(timer);
404
- timer = setTimeout(callback, ms);
405
- };
406
- })();
407
-
408
- $('.format-settings[id^="setting_"]').on( 'change.conditionals, keyup.conditionals', OT_UI.condition_objects(), function(e) {
409
- if (e.type === 'keyup') {
410
- // handle keyup event only once every 500ms
411
- delay(function() {
412
- OT_UI.parse_condition();
413
- }, 500);
414
- } else {
415
- OT_UI.parse_condition();
416
- }
417
- OT_UI.load_editors();
418
- });
419
- OT_UI.parse_condition();
420
- },
421
- init_upload: function() {
422
- $(document).on('click', '.ot_upload_media', function() {
423
- var field_id = $(this).parent('.option-tree-ui-upload-parent').find('input').attr('id'),
424
- post_id = $(this).attr('rel'),
425
- save_attachment_id = $('#'+field_id).hasClass('ot-upload-attachment-id'),
426
- btnContent = '';
427
- if ( window.wp && wp.media ) {
428
- window.ot_media_frame = window.ot_media_frame || new wp.media.view.MediaFrame.Select({
429
- title: $(this).attr('title'),
430
- button: {
431
- text: option_tree.upload_text
432
- },
433
- multiple: false
434
- });
435
- window.ot_media_frame.on('select', function() {
436
- var attachment = window.ot_media_frame.state().get('selection').first(),
437
- href = attachment.attributes.url,
438
- attachment_id = attachment.attributes.id,
439
- mime = attachment.attributes.mime,
440
- regex = /^image\/(?:jpe?g|png|gif|x-icon)$/i;
441
- if ( mime.match(regex) ) {
442
- btnContent += '<div class="option-tree-ui-image-wrap"><img src="'+href+'" alt="" /></div>';
443
- }
444
- btnContent += '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button button button-secondary light" title="'+option_tree.remove_media_text+'"><span class="icon ot-icon-minus-circle"></span>'+option_tree.remove_media_text+'</a>';
445
- $('#'+field_id).val( ( save_attachment_id ? attachment_id : href ) );
446
- $('#'+field_id+'_media').remove();
447
- $('#'+field_id).parent().parent('div').append('<div class="option-tree-ui-media-wrap" id="'+field_id+'_media" />');
448
- $('#'+field_id+'_media').append(btnContent).slideDown();
449
- window.ot_media_frame.off('select');
450
- }).open();
451
- } else {
452
- var backup = window.send_to_editor,
453
- intval = window.setInterval(
454
- function() {
455
- if ( $('#TB_iframeContent').length > 0 && $('#TB_iframeContent').attr('src').indexOf( "&field_id=" ) !== -1 ) {
456
- $('#TB_iframeContent').contents().find('#tab-type_url').hide();
457
- }
458
- $('#TB_iframeContent').contents().find('.savesend .button').val(option_tree.upload_text);
459
- }, 50);
460
- tb_show('', 'media-upload.php?post_id='+post_id+'&field_id='+field_id+'&type=image&TB_iframe=1');
461
- window.send_to_editor = function(html) {
462
- var href = $(html).find('img').attr('src');
463
- if ( typeof href == 'undefined') {
464
- href = $(html).attr('src');
465
- }
466
- if ( typeof href == 'undefined') {
467
- href = $(html).attr('href');
468
- }
469
- var image = /\.(?:jpe?g|png|gif|ico)$/i;
470
- if (href.match(image) && OT_UI.url_exists(href)) {
471
- btnContent += '<div class="option-tree-ui-image-wrap"><img src="'+href+'" alt="" /></div>';
472
- }
473
- btnContent += '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button button button-secondary light" title="'+option_tree.remove_media_text+'"><span class="icon ot-icon-minus-circle"></span>'+option_tree.remove_media_text+'</a>';
474
- $('#'+field_id).val(href);
475
- $('#'+field_id+'_media').remove();
476
- $('#'+field_id).parent().parent('div').append('<div class="option-tree-ui-media-wrap" id="'+field_id+'_media" />');
477
- $('#'+field_id+'_media').append(btnContent).slideDown();
478
- OT_UI.fix_upload_parent();
479
- tb_remove();
480
- window.clearInterval(intval);
481
- window.send_to_editor = backup;
482
- };
483
- }
484
- return false;
485
- });
486
- },
487
- init_upload_remove: function() {
488
- $(document).on('click', '.option-tree-ui-remove-media', function(event) {
489
- event.preventDefault();
490
- var agree = confirm(option_tree.remove_agree);
491
- if (agree) {
492
- OT_UI.remove_image(this);
493
- return false;
494
- }
495
- return false;
496
- });
497
- },
498
- init_upload_fix: function(elm) {
499
- var id = $(elm).attr('id'),
500
- val = $(elm).val(),
501
- img = $(elm).parent().next('.option-tree-ui-media-wrap').find('img'),
502
- src = img.attr('src'),
503
- btnContent = '';
504
- if ( val == src ) {
505
- return;
506
- }
507
- if ( val != src ) {
508
- img.attr('src', val);
509
- }
510
- if ( val !== '' && ( typeof src == 'undefined' || src == false ) && OT_UI.url_exists(val) ) {
511
- var image = /\.(?:jpe?g|png|gif|ico)$/i;
512
- if (val.match(image)) {
513
- btnContent += '<div class="option-tree-ui-image-wrap"><img src="'+val+'" alt="" /></div>';
514
- }
515
- btnContent += '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button button button-secondary light" title="'+option_tree.remove_media_text+'"><span class="icon ot-icon-minus-circle">'+option_tree.remove_media_text+'</span></a>';
516
- $('#'+id).val(val);
517
- $('#'+id+'_media').remove();
518
- $('#'+id).parent().parent('div').append('<div class="option-tree-ui-media-wrap" id="'+id+'_media" />');
519
- $('#'+id+'_media').append(btnContent).slideDown();
520
- } else if ( val == '' || ! OT_UI.url_exists(val) ) {
521
- $(elm).parent().next('.option-tree-ui-media-wrap').remove();
522
- }
523
- },
524
- init_numeric_slider: function(scope) {
525
- scope = scope || document;
526
- $(".ot-numeric-slider-wrap", scope).each(function() {
527
- var hidden = $(".ot-numeric-slider-hidden-input", this),
528
- value = hidden.val(),
529
- helper = $(".ot-numeric-slider-helper-input", this);
530
- if ( ! value ) {
531
- value = hidden.data("min");
532
- helper.val(value)
533
- }
534
- $(".ot-numeric-slider", this).slider({
535
- min: hidden.data("min"),
536
- max: hidden.data("max"),
537
- step: hidden.data("step"),
538
- value: value,
539
- slide: function(event, ui) {
540
- hidden.add(helper).val(ui.value).trigger('change');
541
- },
542
- create: function() {
543
- hidden.val($(this).slider('value'));
544
- },
545
- change: function() {
546
- OT_UI.parse_condition();
547
- }
548
- });
549
- });
550
- },
551
- init_tabs: function() {
552
- $(".wrap.settings-wrap .ui-tabs").tabs({
553
- fx: {
554
- opacity: "toggle",
555
- duration: "fast"
556
- },
557
- activate: function(event, ui) {
558
- localStorage.setItem('nifty-active-tab', $('.wrap.settings-wrap .ui-tabs').tabs('option', 'active'));
559
- },
560
- active: localStorage.getItem('nifty-active-tab'),
561
- });
562
-
563
- $(".wrap.settings-wrap .ui-tabs a.ui-tabs-anchor").on("click", function(event, ui) {
564
- var obj = "input[name='_wp_http_referer']";
565
- if ( $(obj).length > 0 ) {
566
- var url = $(obj).val(),
567
- hash = $(this).attr('href');
568
- if ( url.indexOf("#") != -1 ) {
569
- var o = url.split("#")[1],
570
- n = hash.split("#")[1];
571
- url = url.replace(o, n);
572
- } else {
573
- url = url + hash;
574
- }
575
- $(obj).val(url);
576
- }
577
- });
578
- },
579
- init_radio_image_select: function() {
580
- $(document).on('click', '.option-tree-ui-radio-image', function() {
581
- $(this).closest('.type-radio-image').find('.option-tree-ui-radio-image').removeClass('option-tree-ui-radio-image-selected');
582
- $(this).toggleClass('option-tree-ui-radio-image-selected');
583
- $(this).parent().find('.option-tree-ui-radio').prop('checked', true).trigger('change');
584
- });
585
- },
586
- init_select_wrapper: function(scope) {
587
- scope = scope || document;
588
- $('.option-tree-ui-select', scope).each(function () {
589
- if ( ! $(this).parent().hasClass('select-wrapper') ) {
590
- $(this).wrap('<div class="select-wrapper" />');
591
- $(this).parent('.select-wrapper').prepend('<span>' + $(this).find('option:selected').text() + '</span>');
592
- }
593
- });
594
- },
595
- bind_select_wrapper: function() {
596
- $(document).on('change', '.option-tree-ui-select', function () {
597
- $(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
598
- });
599
- },
600
- init_google_fonts: function() {
601
- var update_items = function(input, items, element) {
602
- var itemsUI = input.closest('.type-google-font-group').find(element);
603
- if ( itemsUI.length ) {
604
- itemsUI.empty();
605
- itemsUI.append($.map(items, function(item) {
606
- var input = document.createElement('input'),
607
- label = document.createElement('label');
608
- input.type = 'checkbox';
609
- input.id = ( itemsUI.data('field-id-prefix') || '' ) + item;
610
- input.name = ( itemsUI.data('field-name') || '' ) + '[]';
611
- input.value = item;
612
- label.innerHTML = item;
613
- $( label ).attr( 'for', input.id );
614
- return $( document.createElement('p') ).addClass('checkbox-wrap').append([input, label]);
615
- }));
616
- }
617
- };
618
- $(document).on('change', '.option-tree-google-font-family select', function() {
619
- var input = $(this);
620
- $.ajax({
621
- url: option_tree.ajax,
622
- type: 'POST',
623
- dataType: 'json',
624
- data: {
625
- action: 'ot_google_font',
626
- family: input.val(),
627
- field_id: input.attr('id')
628
- }
629
- }).done(function(response) {
630
- if ( response.hasOwnProperty('variants') ) {
631
- update_items( input, response.variants, '.option-tree-google-font-variants' );
632
- }
633
- if ( response.hasOwnProperty('subsets') ) {
634
- update_items( input, response.subsets, '.option-tree-google-font-subsets' );
635
- }
636
- });
637
- });
638
- $('.js-add-google-font').on('click', function (event) {
639
- var $group = $(this).parent('.format-setting-inner').find('.type-google-font-group'),
640
- $el_clone = $(this).prev('.type-google-font-group-clone'),
641
- $clone = $el_clone.clone(true),
642
- $count = $group.length ? $group.length : 0;
643
- $clone.attr('class', 'type-google-font-group');
644
- var replacer = function(index, elm) {
645
- return elm.replace('%key%', $count);
646
- }
647
- $('select', $clone).each( function() {
648
- $(this).attr('id', replacer ).attr('name', replacer );
649
- });
650
- $('.option-tree-google-font-variants', $clone).each( function() {
651
- $(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer );
652
- });
653
- $('.option-tree-google-font-subsets', $clone).each( function() {
654
- $(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer );
655
- });
656
- $el_clone.before($clone)
657
- event.preventDefault()
658
- });
659
- $('.js-remove-google-font').on('click', function (event) {
660
- $(this).parents('.type-google-font-group').remove();
661
- event.preventDefault();
662
- });
663
- },
664
- bind_colorpicker: function(field_id) {
665
- $('#'+field_id).wpColorPicker({
666
- change: function() {
667
- OT_UI.parse_condition();
668
- },
669
- clear: function() {
670
- OT_UI.parse_condition();
671
- }
672
- });
673
- },
674
- bind_date_picker: function(field_id, date_format) {
675
- $('#'+field_id).datepicker({
676
- showOtherMonths: true,
677
- showButtonPanel: true,
678
- currentText: option_tree.date_current,
679
- closeText: option_tree.date_close,
680
- dateFormat: date_format
681
- });
682
- },
683
- bind_date_time_picker: function(field_id, date_format) {
684
- $('#'+field_id).datetimepicker({
685
- showOtherMonths: true,
686
- closeText: option_tree.date_close,
687
- dateFormat: date_format
688
- });
689
- },
690
- fix_upload_parent: function() {
691
- $('.option-tree-ui-upload-input').not('.ot-upload-attachment-id').on('focus blur', function(){
692
- $(this).parent('.option-tree-ui-upload-parent').toggleClass('focus');
693
- OT_UI.init_upload_fix(this);
694
- });
695
- },
696
- remove_image: function(e) {
697
- $(e).parent().parent().find('.option-tree-ui-upload-input').attr('value','');
698
- $(e).parent('.option-tree-ui-media-wrap').remove();
699
- },
700
- fix_textarea: function() {
701
- $('.wp-editor-area').focus( function(){
702
- $(this).parent('div').css({borderColor:'#bbb'});
703
- }).blur( function(){
704
- $(this).parent('div').css({borderColor:'#ccc'});
705
- });
706
- },
707
- replicate_ajax: function() {
708
- if (location.href.indexOf("#") != -1) {
709
- var url = $("input[name=\'_wp_http_referer\']").val(),
710
- hash = location.href.substr(location.href.indexOf("#"));
711
- $("input[name=\'_wp_http_referer\']").val( url + hash );
712
- this.scroll_to_top();
713
- }
714
- setTimeout( function() {
715
- $(".wrap.settings-wrap .fade").fadeOut("fast");
716
- }, 3000 );
717
- },
718
- reset_settings: function() {
719
- $(document).on("click", ".reset-settings", function(event){
720
- var agree = confirm(option_tree.reset_agree);
721
- if (agree) {
722
- return true;
723
- } else {
724
- return false;
725
- }
726
- event.preventDefault();
727
- });
728
- },
729
- css_editor_mode: function() {
730
- $('.ot-css-editor').each(function() {
731
- var editor = ace.edit($(this).attr('id'));
732
- var this_textarea = $('#textarea_' + $(this).attr('id'));
733
- editor.setTheme("ace/theme/chrome");
734
- editor.getSession().setMode("ace/mode/css");
735
- editor.setShowPrintMargin( false );
736
-
737
- editor.getSession().setValue(this_textarea.val());
738
- editor.getSession().on('change', function(){
739
- this_textarea.val(editor.getSession().getValue());
740
- });
741
- this_textarea.on('change', function(){
742
- editor.getSession().setValue(this_textarea.val());
743
- });
744
- });
745
- },
746
- javascript_editor_mode: function() {
747
- $('.ot-javascript-editor').each(function() {
748
- var editor = ace.edit($(this).attr('id'));
749
- var this_textarea = $('#textarea_' + $(this).attr('id'));
750
- editor.setTheme("ace/theme/chrome");
751
- editor.getSession().setMode("ace/mode/javascript");
752
- editor.setShowPrintMargin( false );
753
-
754
- editor.getSession().setValue(this_textarea.val());
755
- editor.getSession().on('change', function(){
756
- this_textarea.val(editor.getSession().getValue());
757
- });
758
- this_textarea.on('change', function(){
759
- editor.getSession().setValue(this_textarea.val());
760
- });
761
- });
762
- },
763
- load_editors: function() {
764
- OT_UI.css_editor_mode();
765
- OT_UI.javascript_editor_mode();
766
- },
767
- url_exists: function(url) {
768
- var link = document.createElement('a')
769
- link.href = url
770
- if ( link.hostname != window.location.hostname ) {
771
- return true; // Stop the code from checking across domains.
772
- }
773
- var http = new XMLHttpRequest();
774
- http.open('HEAD', url, false);
775
- http.send();
776
- return http.status!=404;
777
- },
778
- scroll_to_top: function() {
779
- setTimeout( function() {
780
- $(this).scrollTop(0);
781
- }, 50 );
782
- }
783
- };
784
- $(document).ready( function() {
785
- OT_UI.init();
786
- });
787
- })(jQuery);
788
-
789
- /* Gallery */
790
- !function ($) {
791
-
792
- ot_gallery = {
793
-
794
- frame: function (elm) {
795
-
796
- var selection = this.select(elm)
797
-
798
- this._frame = wp.media({
799
- id: 'ot-gallery-frame'
800
- , frame: 'post'
801
- , state: 'gallery-edit'
802
- , title: wp.media.view.l10n.editGalleryTitle
803
- , editing: true
804
- , multiple: true
805
- , selection: selection
806
- })
807
-
808
- this._frame.on('update', function () {
809
- var controller = ot_gallery._frame.states.get('gallery-edit')
810
- , library = controller.get('library')
811
- , ids = library.pluck('id')
812
- , parent = $(elm).parents('.format-setting-inner')
813
- , input = parent.children('.ot-gallery-value')
814
- , shortcode = wp.media.gallery.shortcode( selection ).string().replace(/\"/g,"'")
815
-
816
- input.attr('value', ids)
817
-
818
- if ( parent.children('.ot-gallery-list').length <= 0 )
819
- input.after('<ul class="ot-gallery-list" />')
820
-
821
- $.ajax({
822
- type: 'POST',
823
- url: ajaxurl,
824
- dataType: 'html',
825
- data: {
826
- action: 'gallery_update'
827
- , ids: ids
828
- },
829
- success: function(res) {
830
- parent.children('.ot-gallery-list').html(res);
831
- if ( input.hasClass('ot-gallery-shortcode') ) {
832
- input.val(shortcode);
833
- }
834
- if ( $(elm).parent().children('.ot-gallery-delete').length <= 0 ) {
835
- $(elm).parent().append('<a href="#" class="option-tree-ui-button button button-secondary hug-left ot-gallery-delete">' + option_tree.delete + '</a>');
836
- }
837
- $(elm).text(option_tree.edit);
838
- OT_UI.parse_condition();
839
- }
840
- })
841
- })
842
-
843
- return this._frame
844
-
845
- }
846
-
847
- , select: function (elm) {
848
- var input = $(elm).parents('.format-setting-inner').children('.ot-gallery-value')
849
- , ids = input.attr('value')
850
- , _shortcode = input.hasClass('ot-gallery-shortcode') ? ids : '[gallery ids=\'' + ids + '\]'
851
- , shortcode = wp.shortcode.next('gallery', ( ids ? _shortcode : wp.media.view.settings.ot_gallery.shortcode ) )
852
- , defaultPostId = wp.media.gallery.defaults.id
853
- , attachments
854
- , selection
855
-
856
- // Bail if we didn't match the shortcode or all of the content.
857
- if ( ! shortcode )
858
- return
859
-
860
- // Ignore the rest of the match object.
861
- shortcode = shortcode.shortcode
862
-
863
- if ( _.isUndefined( shortcode.get('id') ) && ! _.isUndefined( defaultPostId ) )
864
- shortcode.set( 'id', defaultPostId )
865
-
866
- if ( _.isUndefined( shortcode.get('ids') ) && ! input.hasClass('ot-gallery-shortcode') && ids )
867
- shortcode.set( 'ids', ids )
868
-
869
- if ( _.isUndefined( shortcode.get('ids') ) )
870
- shortcode.set( 'ids', '0' )
871
-
872
- attachments = wp.media.gallery.attachments( shortcode )
873
-
874
- selection = new wp.media.model.Selection( attachments.models, {
875
- props: attachments.props.toJSON()
876
- , multiple: true
877
- })
878
-
879
- selection.gallery = attachments.gallery
880
-
881
- // Fetch the query's attachments, and then break ties from the query to allow for sorting.
882
- selection.more().done( function () {
883
- selection.props.set({ query: false })
884
- selection.unmirror()
885
- selection.props.unset('orderby')
886
- })
887
-
888
- return selection
889
-
890
- }
891
-
892
- , open: function (elm) {
893
-
894
- ot_gallery.frame(elm).open()
895
-
896
- }
897
-
898
- , remove: function (elm) {
899
-
900
- if ( confirm( option_tree.confirm ) ) {
901
-
902
- $(elm).parents('.format-setting-inner').children('.ot-gallery-value').attr('value', '');
903
- $(elm).parents('.format-setting-inner').children('.ot-gallery-list').remove();
904
- $(elm).next('.ot-gallery-edit').text( option_tree.create );
905
- $(elm).remove();
906
- OT_UI.parse_condition();
907
-
908
- }
909
-
910
- }
911
-
912
- }
913
-
914
- // Gallery delete
915
- $(document).on('click.ot_gallery.data-api', '.ot-gallery-delete', function (e) {
916
- e.preventDefault()
917
- ot_gallery.remove($(this))
918
- })
919
-
920
- // Gallery edit
921
- $(document).on('click.ot_gallery.data-api', '.ot-gallery-edit', function (e) {
922
- e.preventDefault()
923
- ot_gallery.open($(this))
924
- })
925
-
926
- }(window.jQuery);
927
-
928
- /*!
929
- * Adds metabox tabs
930
- */
931
- !function ($) {
932
-
933
- $(document).on('ready', function () {
934
-
935
- // Loop over the metaboxes
936
- $('.ot-metabox-wrapper').each( function() {
937
-
938
- // Only if there is a tab option
939
- if ( $(this).find('.type-tab').length ) {
940
-
941
- // Add .ot-metabox-panels
942
- $(this).find('.type-tab').parents('.ot-metabox-wrapper').wrapInner('<div class="ot-metabox-panels" />')
943
-
944
- // Wrapp with .ot-metabox-tabs & add .ot-metabox-nav before .ot-metabox-panels
945
- $(this).find('.ot-metabox-panels').wrap('<div class="ot-metabox-tabs" />').before('<ul class="ot-metabox-nav" />')
946
-
947
- // Loop over settings and build the tabs nav
948
- $(this).find('.format-settings').each( function() {
949
-
950
- if ( $(this).find('.type-tab').length > 0 ) {
951
- var title = $(this).find('.type-tab').prev().find('label').text()
952
- , id = $(this).attr('id')
953
-
954
- // Add a class, hide & append nav item
955
- $(this).addClass('is-panel').hide()
956
- $(this).parents('.ot-metabox-panels').prev('.ot-metabox-nav').append('<li><a href="#' + id + '">' + title + '</a></li>')
957
-
958
- }
959
-
960
- })
961
-
962
- // Loop over the panels and wrap and ID them.
963
- $(this).find('.is-panel').each( function() {
964
- var id = $(this).attr('id')
965
-
966
- $(this).add( $(this).nextUntil('.is-panel') ).wrapAll('<div id="' + id + '" class="tab-content" />')
967
-
968
- })
969
-
970
- // Create the tabs
971
- $(this).find('.ot-metabox-tabs').tabs({
972
- activate: function( event, ui ) {
973
- var parent = $(this).outerHeight(),
974
- child = $(this).find('.ot-metabox-panels').outerHeight() + 8,
975
- minHeight = parent - 34
976
- if ( $(this).find('.ot-metabox-panels').css('padding') == '12px' && child < parent ) {
977
- $(this).find('.ot-metabox-panels').css({ minHeight: minHeight })
978
- }
979
- OT_UI.load_editors();
980
- }
981
- })
982
-
983
- // Move the orphaned settings to the top
984
- $(this).find('.ot-metabox-panels > .format-settings').prependTo($(this))
985
-
986
- // Remove a bunch of classes to stop style conflicts.
987
- $(this).find('.ot-metabox-tabs').removeClass('ui-widget ui-widget-content ui-corner-all')
988
- $(this).find('.ot-metabox-nav').removeClass('ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all')
989
- $(this).find('.ot-metabox-nav li').removeClass('ui-state-default ui-corner-top ui-tabs-active ui-tabs-active')
990
- $(this).find('.ot-metabox-nav li').on('mouseenter mouseleave', function() { $(this).removeClass('ui-state-hover') })
991
-
992
- }
993
-
994
- })
995
-
996
- })
997
-
998
- }(window.jQuery);
999
-
1000
- /*!
1001
- * Adds theme option tabs
1002
- */
1003
- !function ($) {
1004
-
1005
- $(document).on('ready', function () {
1006
-
1007
- // Loop over the theme options
1008
- $('#option-tree-settings-api .inside').each( function() {
1009
-
1010
- // Only if there is a tab option
1011
- if ( $(this).find('.type-tab').length ) {
1012
-
1013
- // Add .ot-theme-option-panels
1014
- $(this).find('.type-tab').parents('.inside').wrapInner('<div class="ot-theme-option-panels" />')
1015
-
1016
- // Wrap with .ot-theme-option-tabs & add .ot-theme-option-nav before .ot-theme-option-panels
1017
- $(this).find('.ot-theme-option-panels').wrap('<div class="ot-theme-option-tabs" />').before('<ul class="ot-theme-option-nav" />')
1018
-
1019
- // Loop over settings and build the tabs nav
1020
- $(this).find('.format-settings').each( function() {
1021
-
1022
- if ( $(this).find('.type-tab').length > 0 ) {
1023
- var title = $(this).find('.type-tab').prev().find('.label').text()
1024
- , id = $(this).attr('id')
1025
-
1026
- // Add a class, hide & append nav item
1027
- $(this).addClass('is-panel').hide()
1028
- $(this).parents('.ot-theme-option-panels').prev('.ot-theme-option-nav').append('<li><a href="#' + id + '">' + title + '</a></li>')
1029
-
1030
- } else {
1031
-
1032
- }
1033
-
1034
- })
1035
-
1036
- // Loop over the panels and wrap and ID them.
1037
- $(this).find('.is-panel').each( function() {
1038
- var id = $(this).attr('id')
1039
-
1040
- $(this).add( $(this).nextUntil('.is-panel') ).wrapAll('<div id="' + id + '" class="tab-content" />')
1041
-
1042
- })
1043
-
1044
- // Create the tabs
1045
- $(this).find('.ot-theme-option-tabs').tabs({
1046
- activate: function( event, ui ) {
1047
- OT_UI.load_editors();
1048
- }
1049
- })
1050
-
1051
- // Move the orphaned settings to the top
1052
- $(this).find('.ot-theme-option-panels > .format-settings').prependTo($(this).find('.ot-theme-option-tabs'))
1053
-
1054
- }
1055
-
1056
- })
1057
-
1058
- })
1059
-
1060
- }(window.jQuery);
1061
-
1062
- /*!
1063
- * Fixes the state of metabox radio buttons after a Drag & Drop event.
1064
- */
1065
- !function ($) {
1066
-
1067
- $(document).on('ready', function () {
1068
-
1069
- // detect mousedown and store all checked radio buttons
1070
- $('.hndle').on('mousedown', function () {
1071
-
1072
- // get parent element of .hndle selected.
1073
- // We only need to monitor radios insde the object that is being moved.
1074
- var parent_id = $(this).closest('div').attr('id')
1075
-
1076
- // set live event listener for mouse up on the content .wrap
1077
- // then give the dragged div time to settle before firing the reclick function
1078
- $('.wrap').on('mouseup', function () {
1079
-
1080
- var ot_checked_radios = {}
1081
-
1082
- // loop over all checked radio buttons inside of parent element
1083
- $('#' + parent_id + ' input[type="radio"]').each( function () {
1084
-
1085
- // stores checked radio buttons
1086
- if ( $(this).is(':checked') ) {
1087
-
1088
- ot_checked_radios[$(this).attr('name')] = $(this).val()
1089
-
1090
- }
1091
-
1092
- // write to the object
1093
- $(document).data('ot_checked_radios', ot_checked_radios)
1094
-
1095
- })
1096
-
1097
- // restore all checked radio buttons
1098
- setTimeout( function () {
1099
-
1100
- // get object of checked radio button names and values
1101
- var checked = $(document).data('ot_checked_radios')
1102
-
1103
- // step thru each object element and trigger a click on it's corresponding radio button
1104
- for ( key in checked ) {
1105
-
1106
- $('input[name="' + key + '"]').filter('[value="' + checked[key] + '"]').trigger('click')
1107
-
1108
- }
1109
-
1110
- $('.wrap').unbind('mouseup')
1111
-
1112
- }, 50 )
1113
-
1114
- })
1115
-
1116
- })
1117
-
1118
- })
1119
-
1120
- }(window.jQuery);
1121
-
1122
- /*!
1123
- * Adds opacity to the default colorpicker
1124
- *
1125
- * Derivative work of the Codestar WP Color Picker.
1126
- */
1127
- ;(function ( $, window, document, undefined ) {
1128
- 'use strict';
1129
-
1130
- // adding alpha support for Automattic Color.js toString function.
1131
- if( typeof Color.fn.toString !== undefined ) {
1132
-
1133
- Color.fn.toString = function () {
1134
-
1135
- // check for alpha
1136
- if ( this._alpha < 1 ) {
1137
- return this.toCSS('rgba', this._alpha).replace(/\s+/g, '');
1138
- }
1139
-
1140
- var hex = parseInt( this._color, 10 ).toString( 16 );
1141
-
1142
- if ( this.error ) { return ''; }
1143
-
1144
- // maybe left pad it
1145
- if ( hex.length < 6 ) {
1146
- for (var i = 6 - hex.length - 1; i >= 0; i--) {
1147
- hex = '0' + hex;
1148
- }
1149
- }
1150
-
1151
- return '#' + hex;
1152
-
1153
- };
1154
-
1155
- }
1156
-
1157
- $.ot_ParseColorValue = function( val ) {
1158
-
1159
- var value = val.replace(/\s+/g, ''),
1160
- alpha = ( value.indexOf('rgba') !== -1 ) ? parseFloat( value.replace(/^.*,(.+)\)/, '$1') * 100 ) : 100,
1161
- rgba = ( alpha < 100 ) ? true : false;
1162
-
1163
- return { value: value, alpha: alpha, rgba: rgba };
1164
-
1165
- };
1166
-
1167
- $.fn.ot_wpColorPicker = function() {
1168
-
1169
- return this.each(function() {
1170
-
1171
- var $this = $(this);
1172
-
1173
- // check for rgba enabled/disable
1174
- if( $this.data('rgba') !== false ) {
1175
-
1176
- // parse value
1177
- var picker = $.ot_ParseColorValue( $this.val() );
1178
-
1179
- // wpColorPicker core
1180
- $this.wpColorPicker({
1181
-
1182
- // wpColorPicker: change
1183
- change: function( event, ui ) {
1184
-
1185
- // update checkerboard background color
1186
- $this.closest('.wp-picker-container').find('.option-tree-opacity-slider-offset').css('background-color', ui.color.toString());
1187
- $this.trigger('keyup');
1188
-
1189
- },
1190
-
1191
- // wpColorPicker: create
1192
- create: function( event, ui ) {
1193
-
1194
- // set variables for alpha slider
1195
- var a8cIris = $this.data('a8cIris'),
1196
- $container = $this.closest('.wp-picker-container'),
1197
-
1198
- // appending alpha wrapper
1199
- $alpha_wrap = $('<div class="option-tree-opacity-wrap">' +
1200
- '<div class="option-tree-opacity-slider"></div>' +
1201
- '<div class="option-tree-opacity-slider-offset"></div>' +
1202
- '<div class="option-tree-opacity-text"></div>' +
1203
- '</div>').appendTo( $container.find('.wp-picker-holder') ),
1204
-
1205
- $alpha_slider = $alpha_wrap.find('.option-tree-opacity-slider'),
1206
- $alpha_text = $alpha_wrap.find('.option-tree-opacity-text'),
1207
- $alpha_offset = $alpha_wrap.find('.option-tree-opacity-slider-offset');
1208
-
1209
- // alpha slider
1210
- $alpha_slider.slider({
1211
-
1212
- // slider: slide
1213
- slide: function( event, ui ) {
1214
-
1215
- var slide_value = parseFloat( ui.value / 100 );
1216
-
1217
- // update iris data alpha && wpColorPicker color option && alpha text
1218
- a8cIris._color._alpha = slide_value;
1219
- $this.wpColorPicker( 'color', a8cIris._color.toString() );
1220
- $alpha_text.text( ( slide_value < 1 ? slide_value : '' ) );
1221
-
1222
- },
1223
-
1224
- // slider: create
1225
- create: function() {
1226
-
1227
- var slide_value = parseFloat( picker.alpha / 100 ),
1228
- alpha_text_value = slide_value < 1 ? slide_value : '';
1229
-
1230
- // update alpha text && checkerboard background color
1231
- $alpha_text.text(alpha_text_value);
1232
- $alpha_offset.css('background-color', picker.value);
1233
-
1234
- // wpColorPicker clear button for update iris data alpha && alpha text && slider color option
1235
- $container.on('click', '.wp-picker-clear', function() {
1236
-
1237
- a8cIris._color._alpha = 1;
1238
- $alpha_text.text('');
1239
- $alpha_slider.slider('option', 'value', 100).trigger('slide');
1240
-
1241
- });
1242
-
1243
- // wpColorPicker default button for update iris data alpha && alpha text && slider color option
1244
- $container.on('click', '.wp-picker-default', function() {
1245
-
1246
- var default_picker = $.ot_ParseColorValue( $this.data('default-color') ),
1247
- default_value = parseFloat( default_picker.alpha / 100 ),
1248
- default_text = default_value < 1 ? default_value : '';
1249
-
1250
- a8cIris._color._alpha = default_value;
1251
- $alpha_text.text(default_text);
1252
- $alpha_slider.slider('option', 'value', default_picker.alpha).trigger('slide');
1253
-
1254
- });
1255
-
1256
- // show alpha wrapper on click color picker button
1257
- $container.on('click', '.wp-color-result', function() {
1258
- $alpha_wrap.toggle();
1259
- });
1260
-
1261
- // hide alpha wrapper on click body
1262
- $('body').on( 'click.wpcolorpicker', function() {
1263
- $alpha_wrap.hide();
1264
- });
1265
-
1266
- },
1267
-
1268
- // slider: options
1269
- value: picker.alpha,
1270
- step: 1,
1271
- min: 1,
1272
- max: 100
1273
-
1274
- });
1275
- }
1276
-
1277
- });
1278
-
1279
- } else {
1280
-
1281
- // wpColorPicker default picker
1282
- $this.wpColorPicker({
1283
- change: function() {
1284
- $this.trigger('keyup');
1285
- }
1286
- });
1287
-
1288
- }
1289
-
1290
- });
1291
-
1292
- };
1293
-
1294
- $(document).ready( function(){
1295
- $('.hide-color-picker.ot-colorpicker-opacity').ot_wpColorPicker();
1296
-
1297
-
1298
- function ot_fix_dialog_close(event, ui) {
1299
- jQuery('.ui-widget-overlay').bind('click', function(){
1300
- jQuery('#' + event.target.id).dialog('close');
1301
- });
1302
- } // ot_fix_dialog_close
1303
-
1304
- $('#page-niftycs_options').on('click', '.change_tab', function(e) {
1305
- e.preventDefault();
1306
-
1307
- $(".wrap.settings-wrap .ui-tabs").tabs('option', 'active', $(this).data('tab'));
1308
-
1309
- // get the link anchor and scroll to it
1310
- var target = this.href.split('#')[1];
1311
- if (target) {
1312
- jQuery.scrollTo('#' + target, 500, {offset: {top:-100, left:0}});
1313
- }
1314
-
1315
- return false;
1316
- });
1317
-
1318
-
1319
-
1320
-
1321
- });
1322
-
1323
-
1324
-
1325
-
1326
- })( jQuery, window, document );
1327
-
1328
-
1329
- /**
1330
- * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
1331
- * Licensed under MIT
1332
- * @author Ariel Flesler
1333
- * @version 2.1.2
1334
- */
1335
- ;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/js/ot-postformats.js DELETED
@@ -1,119 +0,0 @@
1
- /*!
2
- * postformats.js v1.0.1
3
- */
4
- !function ($) {
5
-
6
- "use strict"; // jshint ;_;
7
-
8
- /* POSTFORMATS CLASS DEFINITION
9
- * ====================== */
10
- var formats = "input.post-format"
11
- , metaboxes = [
12
- '#ot-post-format-aside'
13
- , '#ot-post-format-audio'
14
- , '#ot-post-format-chat'
15
- , '#ot-post-format-gallery'
16
- , '#ot-post-format-image'
17
- , '#ot-post-format-link'
18
- , '#ot-post-format-quote'
19
- , '#ot-post-format-status'
20
- , '#ot-post-format-video'
21
- ]
22
- , ids = metaboxes.join(',')
23
- , insertAfter = '#titlediv'
24
- , imageBox = '#postimagediv'
25
- , placeholder = 'postimagediv-placeholder'
26
- , Postformats = function (element, options) {
27
- this.$element = $(element)
28
- .on('click.postformats.data-api', $.proxy(this.toggle, this))
29
- this.$id = this.$element.attr('id')
30
- this.init()
31
- }
32
-
33
- Postformats.prototype = {
34
-
35
- constructor: Postformats
36
-
37
- , init: function () {
38
-
39
- // Moves the metaboxes into place
40
- $( '#ot-' + this.$id ).insertAfter( $( insertAfter ) ).hide()
41
-
42
- // Show the checked metabox
43
- if ( this.$element.is(':checked') ) {
44
-
45
- this.show()
46
-
47
- }
48
-
49
- }
50
-
51
- , toggle: function () {
52
-
53
- // Hides all the post format metaboxes
54
- $(ids).each(function() {
55
-
56
- $(this).hide()
57
-
58
- })
59
-
60
- // Shows the clicked post format metabox
61
- this.show()
62
-
63
- }
64
-
65
- , show: function () {
66
-
67
- // Featured image is never really hidden so it requires different code
68
- if ( this.$id == 'post-format-image' ) {
69
-
70
- if ( $( '#' + placeholder ).length == 0 )
71
- $( imageBox ).after( '<div id="' + placeholder + '"></div>' ).insertAfter( insertAfter ).css({'marginTop':'20px','marginBottom':'0px'}).find('h3 span').text(option_tree.with)
72
-
73
- // Revert image
74
- } else {
75
-
76
- $( '#' + placeholder ).replaceWith( $( imageBox ).css({'marginTop':'0px','marginBottom':'20px'}) )
77
- $( imageBox ).find('h3 span').text(option_tree.replace)
78
-
79
- }
80
-
81
- // Show the metabox
82
- $( '#ot-' + this.$id ).css({'marginTop':'20px','marginBottom':'0px'}).show()
83
-
84
- }
85
-
86
- }
87
-
88
- /* POSTFORMATS PLUGIN DEFINITION
89
- * ======================= */
90
- var old = $.fn.postformats
91
-
92
- $.fn.postformats = function (option) {
93
- return this.each(function () {
94
- var $this = $(this)
95
- , data = $this.data('postformats')
96
- , options = typeof option == 'object' && option
97
- if (!data) $this.data('postformats', (data = new Postformats(this, options)))
98
- if (typeof option == 'string') data[option]()
99
- })
100
- }
101
-
102
- $.fn.postformats.Constructor = Postformats
103
-
104
- /* POSTFORMATS NO CONFLICT
105
- * ================= */
106
- $.fn.postformats.noConflict = function () {
107
- $.fn.postformats = old
108
- return this
109
- }
110
-
111
- /* POSTFORMATS DATA-API
112
- * ============== */
113
- $(document).on('ready.postformats.data-api', function () {
114
- $(formats).each(function () {
115
- $(this).postformats()
116
- })
117
- })
118
-
119
- }(window.jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/assets/js/vendor/jquery/jquery-ui-timepicker.js DELETED
@@ -1,5 +0,0 @@
1
- /*! jQuery Timepicker Addon - v1.4.3 - 2013-11-30
2
- * http://trentrichardson.com/examples/timepicker
3
- * Copyright (c) 2013 Trent Richardson; Licensed MIT */
4
- (function($){if($.ui.timepicker=$.ui.timepicker||{},!$.ui.timepicker.version){$.extend($.ui,{timepicker:{version:"1.4.3"}});var Timepicker=function(){this.regional=[],this.regional[""]={currentText:"Now",closeText:"Done",amNames:["AM","A"],pmNames:["PM","P"],timeFormat:"HH:mm",timeSuffix:"",timeOnlyTitle:"Choose Time",timeText:"Time",hourText:"Hour",minuteText:"Minute",secondText:"Second",millisecText:"Millisecond",microsecText:"Microsecond",timezoneText:"Time Zone",isRTL:!1},this._defaults={showButtonPanel:!0,timeOnly:!1,showHour:null,showMinute:null,showSecond:null,showMillisec:null,showMicrosec:null,showTimezone:null,showTime:!0,stepHour:1,stepMinute:1,stepSecond:1,stepMillisec:1,stepMicrosec:1,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMin:0,minuteMin:0,secondMin:0,millisecMin:0,microsecMin:0,hourMax:23,minuteMax:59,secondMax:59,millisecMax:999,microsecMax:999,minDateTime:null,maxDateTime:null,onSelect:null,hourGrid:0,minuteGrid:0,secondGrid:0,millisecGrid:0,microsecGrid:0,alwaysSetTime:!0,separator:" ",altFieldTimeOnly:!0,altTimeFormat:null,altSeparator:null,altTimeSuffix:null,pickerTimeFormat:null,pickerTimeSuffix:null,showTimepicker:!0,timezoneList:null,addSliderAccess:!1,sliderAccessArgs:null,controlType:"slider",defaultValue:null,parse:"strict"},$.extend(this._defaults,this.regional[""])};$.extend(Timepicker.prototype,{$input:null,$altInput:null,$timeObj:null,inst:null,hour_slider:null,minute_slider:null,second_slider:null,millisec_slider:null,microsec_slider:null,timezone_select:null,hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null,hourMinOriginal:null,minuteMinOriginal:null,secondMinOriginal:null,millisecMinOriginal:null,microsecMinOriginal:null,hourMaxOriginal:null,minuteMaxOriginal:null,secondMaxOriginal:null,millisecMaxOriginal:null,microsecMaxOriginal:null,ampm:"",formattedDate:"",formattedTime:"",formattedDateTime:"",timezoneList:null,units:["hour","minute","second","millisec","microsec"],support:{},control:null,setDefaults:function(e){return extendRemove(this._defaults,e||{}),this},_newInst:function($input,opts){var tp_inst=new Timepicker,inlineSettings={},fns={},overrides,i;for(var attrName in this._defaults)if(this._defaults.hasOwnProperty(attrName)){var attrValue=$input.attr("time:"+attrName);if(attrValue)try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}overrides={beforeShow:function(e,t){return $.isFunction(tp_inst._defaults.evnts.beforeShow)?tp_inst._defaults.evnts.beforeShow.call($input[0],e,t,tp_inst):void 0},onChangeMonthYear:function(e,t,i){tp_inst._updateDateTime(i),$.isFunction(tp_inst._defaults.evnts.onChangeMonthYear)&&tp_inst._defaults.evnts.onChangeMonthYear.call($input[0],e,t,i,tp_inst)},onClose:function(e,t){tp_inst.timeDefined===!0&&""!==$input.val()&&tp_inst._updateDateTime(t),$.isFunction(tp_inst._defaults.evnts.onClose)&&tp_inst._defaults.evnts.onClose.call($input[0],e,t,tp_inst)}};for(i in overrides)overrides.hasOwnProperty(i)&&(fns[i]=opts[i]||null);tp_inst._defaults=$.extend({},this._defaults,inlineSettings,opts,overrides,{evnts:fns,timepicker:tp_inst}),tp_inst.amNames=$.map(tp_inst._defaults.amNames,function(e){return e.toUpperCase()}),tp_inst.pmNames=$.map(tp_inst._defaults.pmNames,function(e){return e.toUpperCase()}),tp_inst.support=detectSupport(tp_inst._defaults.timeFormat+(tp_inst._defaults.pickerTimeFormat?tp_inst._defaults.pickerTimeFormat:"")+(tp_inst._defaults.altTimeFormat?tp_inst._defaults.altTimeFormat:"")),"string"==typeof tp_inst._defaults.controlType?("slider"===tp_inst._defaults.controlType&&$.ui.slider===void 0&&(tp_inst._defaults.controlType="select"),tp_inst.control=tp_inst._controls[tp_inst._defaults.controlType]):tp_inst.control=tp_inst._defaults.controlType;var timezoneList=[-720,-660,-600,-570,-540,-480,-420,-360,-300,-270,-240,-210,-180,-120,-60,0,60,120,180,210,240,270,300,330,345,360,390,420,480,525,540,570,600,630,660,690,720,765,780,840];null!==tp_inst._defaults.timezoneList&&(timezoneList=tp_inst._defaults.timezoneList);var tzl=timezoneList.length,tzi=0,tzv=null;if(tzl>0&&"object"!=typeof timezoneList[0])for(;tzl>tzi;tzi++)tzv=timezoneList[tzi],timezoneList[tzi]={value:tzv,label:$.timepicker.timezoneOffsetString(tzv,tp_inst.support.iso8601)};return tp_inst._defaults.timezoneList=timezoneList,tp_inst.timezone=null!==tp_inst._defaults.timezone?$.timepicker.timezoneOffsetNumber(tp_inst._defaults.timezone):-1*(new Date).getTimezoneOffset(),tp_inst.hour=tp_inst._defaults.hour<tp_inst._defaults.hourMin?tp_inst._defaults.hourMin:tp_inst._defaults.hour>tp_inst._defaults.hourMax?tp_inst._defaults.hourMax:tp_inst._defaults.hour,tp_inst.minute=tp_inst._defaults.minute<tp_inst._defaults.minuteMin?tp_inst._defaults.minuteMin:tp_inst._defaults.minute>tp_inst._defaults.minuteMax?tp_inst._defaults.minuteMax:tp_inst._defaults.minute,tp_inst.second=tp_inst._defaults.second<tp_inst._defaults.secondMin?tp_inst._defaults.secondMin:tp_inst._defaults.second>tp_inst._defaults.secondMax?tp_inst._defaults.secondMax:tp_inst._defaults.second,tp_inst.millisec=tp_inst._defaults.millisec<tp_inst._defaults.millisecMin?tp_inst._defaults.millisecMin:tp_inst._defaults.millisec>tp_inst._defaults.millisecMax?tp_inst._defaults.millisecMax:tp_inst._defaults.millisec,tp_inst.microsec=tp_inst._defaults.microsec<tp_inst._defaults.microsecMin?tp_inst._defaults.microsecMin:tp_inst._defaults.microsec>tp_inst._defaults.microsecMax?tp_inst._defaults.microsecMax:tp_inst._defaults.microsec,tp_inst.ampm="",tp_inst.$input=$input,tp_inst._defaults.altField&&(tp_inst.$altInput=$(tp_inst._defaults.altField).css({cursor:"pointer"}).focus(function(){$input.trigger("focus")})),(0===tp_inst._defaults.minDate||0===tp_inst._defaults.minDateTime)&&(tp_inst._defaults.minDate=new Date),(0===tp_inst._defaults.maxDate||0===tp_inst._defaults.maxDateTime)&&(tp_inst._defaults.maxDate=new Date),void 0!==tp_inst._defaults.minDate&&tp_inst._defaults.minDate instanceof Date&&(tp_inst._defaults.minDateTime=new Date(tp_inst._defaults.minDate.getTime())),void 0!==tp_inst._defaults.minDateTime&&tp_inst._defaults.minDateTime instanceof Date&&(tp_inst._defaults.minDate=new Date(tp_inst._defaults.minDateTime.getTime())),void 0!==tp_inst._defaults.maxDate&&tp_inst._defaults.maxDate instanceof Date&&(tp_inst._defaults.maxDateTime=new Date(tp_inst._defaults.maxDate.getTime())),void 0!==tp_inst._defaults.maxDateTime&&tp_inst._defaults.maxDateTime instanceof Date&&(tp_inst._defaults.maxDate=new Date(tp_inst._defaults.maxDateTime.getTime())),tp_inst.$input.bind("focus",function(){tp_inst._onFocus()}),tp_inst},_addTimePicker:function(e){var t=this.$altInput&&this._defaults.altFieldTimeOnly?this.$input.val()+" "+this.$altInput.val():this.$input.val();this.timeDefined=this._parseTime(t),this._limitMinMaxDateTime(e,!1),this._injectTimePicker()},_parseTime:function(e,t){if(this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),t||!this._defaults.timeOnly){var i=$.datepicker._get(this.inst,"dateFormat");try{var s=parseDateTimeInternal(i,this._defaults.timeFormat,e,$.datepicker._getFormatConfig(this.inst),this._defaults);if(!s.timeObj)return!1;$.extend(this,s.timeObj)}catch(a){return $.timepicker.log("Error parsing the date/time string: "+a+"\ndate/time string = "+e+"\ntimeFormat = "+this._defaults.timeFormat+"\ndateFormat = "+i),!1}return!0}var n=$.datepicker.parseTime(this._defaults.timeFormat,e,this._defaults);return n?($.extend(this,n),!0):!1},_injectTimePicker:function(){var e=this.inst.dpDiv,t=this.inst.settings,i=this,s="",a="",n=null,r={},l={},o=null,c=0,u=0;if(0===e.find("div.ui-timepicker-div").length&&t.showTimepicker){var m=' style="display:none;"',d='<div class="ui-timepicker-div'+(t.isRTL?" ui-timepicker-rtl":"")+'"><dl>'+'<dt class="ui_tpicker_time_label"'+(t.showTime?"":m)+">"+t.timeText+"</dt>"+'<dd class="ui_tpicker_time"'+(t.showTime?"":m)+"></dd>";for(c=0,u=this.units.length;u>c;c++){if(s=this.units[c],a=s.substr(0,1).toUpperCase()+s.substr(1),n=null!==t["show"+a]?t["show"+a]:this.support[s],r[s]=parseInt(t[s+"Max"]-(t[s+"Max"]-t[s+"Min"])%t["step"+a],10),l[s]=0,d+='<dt class="ui_tpicker_'+s+'_label"'+(n?"":m)+">"+t[s+"Text"]+"</dt>"+'<dd class="ui_tpicker_'+s+'"><div class="ui_tpicker_'+s+'_slider"'+(n?"":m)+"></div>",n&&t[s+"Grid"]>0){if(d+='<div style="padding-left: 1px"><table class="ui-tpicker-grid-label"><tr>',"hour"===s)for(var p=t[s+"Min"];r[s]>=p;p+=parseInt(t[s+"Grid"],10)){l[s]++;var h=$.datepicker.formatTime(this.support.ampm?"hht":"HH",{hour:p},t);d+='<td data-for="'+s+'">'+h+"</td>"}else for(var _=t[s+"Min"];r[s]>=_;_+=parseInt(t[s+"Grid"],10))l[s]++,d+='<td data-for="'+s+'">'+(10>_?"0":"")+_+"</td>";d+="</tr></table></div>"}d+="</dd>"}var f=null!==t.showTimezone?t.showTimezone:this.support.timezone;d+='<dt class="ui_tpicker_timezone_label"'+(f?"":m)+">"+t.timezoneText+"</dt>",d+='<dd class="ui_tpicker_timezone" '+(f?"":m)+"></dd>",d+="</dl></div>";var g=$(d);for(t.timeOnly===!0&&(g.prepend('<div class="ui-widget-header ui-helper-clearfix ui-corner-all"><div class="ui-datepicker-title">'+t.timeOnlyTitle+"</div>"+"</div>"),e.find(".ui-datepicker-header, .ui-datepicker-calendar").hide()),c=0,u=i.units.length;u>c;c++)s=i.units[c],a=s.substr(0,1).toUpperCase()+s.substr(1),n=null!==t["show"+a]?t["show"+a]:this.support[s],i[s+"_slider"]=i.control.create(i,g.find(".ui_tpicker_"+s+"_slider"),s,i[s],t[s+"Min"],r[s],t["step"+a]),n&&t[s+"Grid"]>0&&(o=100*l[s]*t[s+"Grid"]/(r[s]-t[s+"Min"]),g.find(".ui_tpicker_"+s+" table").css({width:o+"%",marginLeft:t.isRTL?"0":o/(-2*l[s])+"%",marginRight:t.isRTL?o/(-2*l[s])+"%":"0",borderCollapse:"collapse"}).find("td").click(function(){var e=$(this),t=e.html(),a=parseInt(t.replace(/[^0-9]/g),10),n=t.replace(/[^apm]/gi),r=e.data("for");"hour"===r&&(-1!==n.indexOf("p")&&12>a?a+=12:-1!==n.indexOf("a")&&12===a&&(a=0)),i.control.value(i,i[r+"_slider"],s,a),i._onTimeChange(),i._onSelectHandler()}).css({cursor:"pointer",width:100/l[s]+"%",textAlign:"center",overflow:"hidden"}));if(this.timezone_select=g.find(".ui_tpicker_timezone").append("<select></select>").find("select"),$.fn.append.apply(this.timezone_select,$.map(t.timezoneList,function(e){return $("<option />").val("object"==typeof e?e.value:e).text("object"==typeof e?e.label:e)})),this.timezone!==void 0&&null!==this.timezone&&""!==this.timezone){var M=-1*new Date(this.inst.selectedYear,this.inst.selectedMonth,this.inst.selectedDay,12).getTimezoneOffset();M===this.timezone?selectLocalTimezone(i):this.timezone_select.val(this.timezone)}else this.hour!==void 0&&null!==this.hour&&""!==this.hour?this.timezone_select.val(t.timezone):selectLocalTimezone(i);this.timezone_select.change(function(){i._onTimeChange(),i._onSelectHandler()});var v=e.find(".ui-datepicker-buttonpane");if(v.length?v.before(g):e.append(g),this.$timeObj=g.find(".ui_tpicker_time"),null!==this.inst){var k=this.timeDefined;this._onTimeChange(),this.timeDefined=k}if(this._defaults.addSliderAccess){var T=this._defaults.sliderAccessArgs,D=this._defaults.isRTL;T.isRTL=D,setTimeout(function(){if(0===g.find(".ui-slider-access").length){g.find(".ui-slider:visible").sliderAccess(T);var e=g.find(".ui-slider-access:eq(0)").outerWidth(!0);e&&g.find("table:visible").each(function(){var t=$(this),i=t.outerWidth(),s=(""+t.css(D?"marginRight":"marginLeft")).replace("%",""),a=i-e,n=s*a/i+"%",r={width:a,marginRight:0,marginLeft:0};r[D?"marginRight":"marginLeft"]=n,t.css(r)})}},10)}i._limitMinMaxDateTime(this.inst,!0)}},_limitMinMaxDateTime:function(e,t){var i=this._defaults,s=new Date(e.selectedYear,e.selectedMonth,e.selectedDay);if(this._defaults.showTimepicker){if(null!==$.datepicker._get(e,"minDateTime")&&void 0!==$.datepicker._get(e,"minDateTime")&&s){var a=$.datepicker._get(e,"minDateTime"),n=new Date(a.getFullYear(),a.getMonth(),a.getDate(),0,0,0,0);(null===this.hourMinOriginal||null===this.minuteMinOriginal||null===this.secondMinOriginal||null===this.millisecMinOriginal||null===this.microsecMinOriginal)&&(this.hourMinOriginal=i.hourMin,this.minuteMinOriginal=i.minuteMin,this.secondMinOriginal=i.secondMin,this.millisecMinOriginal=i.millisecMin,this.microsecMinOriginal=i.microsecMin),e.settings.timeOnly||n.getTime()===s.getTime()?(this._defaults.hourMin=a.getHours(),this.hour<=this._defaults.hourMin?(this.hour=this._defaults.hourMin,this._defaults.minuteMin=a.getMinutes(),this.minute<=this._defaults.minuteMin?(this.minute=this._defaults.minuteMin,this._defaults.secondMin=a.getSeconds(),this.second<=this._defaults.secondMin?(this.second=this._defaults.secondMin,this._defaults.millisecMin=a.getMilliseconds(),this.millisec<=this._defaults.millisecMin?(this.millisec=this._defaults.millisecMin,this._defaults.microsecMin=a.getMicroseconds()):(this.microsec<this._defaults.microsecMin&&(this.microsec=this._defaults.microsecMin),this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)):(this._defaults.hourMin=this.hourMinOriginal,this._defaults.minuteMin=this.minuteMinOriginal,this._defaults.secondMin=this.secondMinOriginal,this._defaults.millisecMin=this.millisecMinOriginal,this._defaults.microsecMin=this.microsecMinOriginal)}if(null!==$.datepicker._get(e,"maxDateTime")&&void 0!==$.datepicker._get(e,"maxDateTime")&&s){var r=$.datepicker._get(e,"maxDateTime"),l=new Date(r.getFullYear(),r.getMonth(),r.getDate(),0,0,0,0);(null===this.hourMaxOriginal||null===this.minuteMaxOriginal||null===this.secondMaxOriginal||null===this.millisecMaxOriginal)&&(this.hourMaxOriginal=i.hourMax,this.minuteMaxOriginal=i.minuteMax,this.secondMaxOriginal=i.secondMax,this.millisecMaxOriginal=i.millisecMax,this.microsecMaxOriginal=i.microsecMax),e.settings.timeOnly||l.getTime()===s.getTime()?(this._defaults.hourMax=r.getHours(),this.hour>=this._defaults.hourMax?(this.hour=this._defaults.hourMax,this._defaults.minuteMax=r.getMinutes(),this.minute>=this._defaults.minuteMax?(this.minute=this._defaults.minuteMax,this._defaults.secondMax=r.getSeconds(),this.second>=this._defaults.secondMax?(this.second=this._defaults.secondMax,this._defaults.millisecMax=r.getMilliseconds(),this.millisec>=this._defaults.millisecMax?(this.millisec=this._defaults.millisecMax,this._defaults.microsecMax=r.getMicroseconds()):(this.microsec>this._defaults.microsecMax&&(this.microsec=this._defaults.microsecMax),this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)):(this._defaults.hourMax=this.hourMaxOriginal,this._defaults.minuteMax=this.minuteMaxOriginal,this._defaults.secondMax=this.secondMaxOriginal,this._defaults.millisecMax=this.millisecMaxOriginal,this._defaults.microsecMax=this.microsecMaxOriginal)}if(void 0!==t&&t===!0){var o=parseInt(this._defaults.hourMax-(this._defaults.hourMax-this._defaults.hourMin)%this._defaults.stepHour,10),c=parseInt(this._defaults.minuteMax-(this._defaults.minuteMax-this._defaults.minuteMin)%this._defaults.stepMinute,10),u=parseInt(this._defaults.secondMax-(this._defaults.secondMax-this._defaults.secondMin)%this._defaults.stepSecond,10),m=parseInt(this._defaults.millisecMax-(this._defaults.millisecMax-this._defaults.millisecMin)%this._defaults.stepMillisec,10),d=parseInt(this._defaults.microsecMax-(this._defaults.microsecMax-this._defaults.microsecMin)%this._defaults.stepMicrosec,10);this.hour_slider&&(this.control.options(this,this.hour_slider,"hour",{min:this._defaults.hourMin,max:o}),this.control.value(this,this.hour_slider,"hour",this.hour-this.hour%this._defaults.stepHour)),this.minute_slider&&(this.control.options(this,this.minute_slider,"minute",{min:this._defaults.minuteMin,max:c}),this.control.value(this,this.minute_slider,"minute",this.minute-this.minute%this._defaults.stepMinute)),this.second_slider&&(this.control.options(this,this.second_slider,"second",{min:this._defaults.secondMin,max:u}),this.control.value(this,this.second_slider,"second",this.second-this.second%this._defaults.stepSecond)),this.millisec_slider&&(this.control.options(this,this.millisec_slider,"millisec",{min:this._defaults.millisecMin,max:m}),this.control.value(this,this.millisec_slider,"millisec",this.millisec-this.millisec%this._defaults.stepMillisec)),this.microsec_slider&&(this.control.options(this,this.microsec_slider,"microsec",{min:this._defaults.microsecMin,max:d}),this.control.value(this,this.microsec_slider,"microsec",this.microsec-this.microsec%this._defaults.stepMicrosec))}}},_onTimeChange:function(){if(this._defaults.showTimepicker){var e=this.hour_slider?this.control.value(this,this.hour_slider,"hour"):!1,t=this.minute_slider?this.control.value(this,this.minute_slider,"minute"):!1,i=this.second_slider?this.control.value(this,this.second_slider,"second"):!1,s=this.millisec_slider?this.control.value(this,this.millisec_slider,"millisec"):!1,a=this.microsec_slider?this.control.value(this,this.microsec_slider,"microsec"):!1,n=this.timezone_select?this.timezone_select.val():!1,r=this._defaults,l=r.pickerTimeFormat||r.timeFormat,o=r.pickerTimeSuffix||r.timeSuffix;"object"==typeof e&&(e=!1),"object"==typeof t&&(t=!1),"object"==typeof i&&(i=!1),"object"==typeof s&&(s=!1),"object"==typeof a&&(a=!1),"object"==typeof n&&(n=!1),e!==!1&&(e=parseInt(e,10)),t!==!1&&(t=parseInt(t,10)),i!==!1&&(i=parseInt(i,10)),s!==!1&&(s=parseInt(s,10)),a!==!1&&(a=parseInt(a,10)),n!==!1&&(n=""+n);var c=r[12>e?"amNames":"pmNames"][0],u=e!==parseInt(this.hour,10)||t!==parseInt(this.minute,10)||i!==parseInt(this.second,10)||s!==parseInt(this.millisec,10)||a!==parseInt(this.microsec,10)||this.ampm.length>0&&12>e!=(-1!==$.inArray(this.ampm.toUpperCase(),this.amNames))||null!==this.timezone&&n!==""+this.timezone;u&&(e!==!1&&(this.hour=e),t!==!1&&(this.minute=t),i!==!1&&(this.second=i),s!==!1&&(this.millisec=s),a!==!1&&(this.microsec=a),n!==!1&&(this.timezone=n),this.inst||(this.inst=$.datepicker._getInst(this.$input[0])),this._limitMinMaxDateTime(this.inst,!0)),this.support.ampm&&(this.ampm=c),this.formattedTime=$.datepicker.formatTime(r.timeFormat,this,r),this.$timeObj&&(l===r.timeFormat?this.$timeObj.text(this.formattedTime+o):this.$timeObj.text($.datepicker.formatTime(l,this,r)+o)),this.timeDefined=!0,u&&(this._updateDateTime(),this.$input.focus())}},_onSelectHandler:function(){var e=this._defaults.onSelect||this.inst.settings.onSelect,t=this.$input?this.$input[0]:null;e&&t&&e.apply(t,[this.formattedDateTime,this])},_updateDateTime:function(e){e=this.inst||e;var t=e.currentYear>0?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(e.selectedYear,e.selectedMonth,e.selectedDay),i=$.datepicker._daylightSavingAdjust(t),s=$.datepicker._get(e,"dateFormat"),a=$.datepicker._getFormatConfig(e),n=null!==i&&this.timeDefined;this.formattedDate=$.datepicker.formatDate(s,null===i?new Date:i,a);var r=this.formattedDate;if(""===e.lastVal&&(e.currentYear=e.selectedYear,e.currentMonth=e.selectedMonth,e.currentDay=e.selectedDay),this._defaults.timeOnly===!0?r=this.formattedTime:this._defaults.timeOnly!==!0&&(this._defaults.alwaysSetTime||n)&&(r+=this._defaults.separator+this.formattedTime+this._defaults.timeSuffix),this.formattedDateTime=r,this._defaults.showTimepicker)if(this.$altInput&&this._defaults.timeOnly===!1&&this._defaults.altFieldTimeOnly===!0)this.$altInput.val(this.formattedTime),this.$input.val(this.formattedDate);else if(this.$altInput){this.$input.val(r);var l="",o=this._defaults.altSeparator?this._defaults.altSeparator:this._defaults.separator,c=this._defaults.altTimeSuffix?this._defaults.altTimeSuffix:this._defaults.timeSuffix;this._defaults.timeOnly||(l=this._defaults.altFormat?$.datepicker.formatDate(this._defaults.altFormat,null===i?new Date:i,a):this.formattedDate,l&&(l+=o)),l+=this._defaults.altTimeFormat?$.datepicker.formatTime(this._defaults.altTimeFormat,this,this._defaults)+c:this.formattedTime+c,this.$altInput.val(l)}else this.$input.val(r);else this.$input.val(this.formattedDate);this.$input.trigger("change")},_onFocus:function(){if(!this.$input.val()&&this._defaults.defaultValue){this.$input.val(this._defaults.defaultValue);var e=$.datepicker._getInst(this.$input.get(0)),t=$.datepicker._get(e,"timepicker");if(t&&t._defaults.timeOnly&&e.input.val()!==e.lastVal)try{$.datepicker._updateDatepicker(e)}catch(i){$.timepicker.log(i)}}},_controls:{slider:{create:function(e,t,i,s,a,n,r){var l=e._defaults.isRTL;return t.prop("slide",null).slider({orientation:"horizontal",value:l?-1*s:s,min:l?-1*n:a,max:l?-1*a:n,step:r,slide:function(t,s){e.control.value(e,$(this),i,l?-1*s.value:s.value),e._onTimeChange()},stop:function(){e._onSelectHandler()}})},options:function(e,t,i,s,a){if(e._defaults.isRTL){if("string"==typeof s)return"min"===s||"max"===s?void 0!==a?t.slider(s,-1*a):Math.abs(t.slider(s)):t.slider(s);var n=s.min,r=s.max;return s.min=s.max=null,void 0!==n&&(s.max=-1*n),void 0!==r&&(s.min=-1*r),t.slider(s)}return"string"==typeof s&&void 0!==a?t.slider(s,a):t.slider(s)},value:function(e,t,i,s){return e._defaults.isRTL?void 0!==s?t.slider("value",-1*s):Math.abs(t.slider("value")):void 0!==s?t.slider("value",s):t.slider("value")}},select:{create:function(e,t,i,s,a,n,r){for(var l='<select class="ui-timepicker-select" data-unit="'+i+'" data-min="'+a+'" data-max="'+n+'" data-step="'+r+'">',o=e._defaults.pickerTimeFormat||e._defaults.timeFormat,c=a;n>=c;c+=r)l+='<option value="'+c+'"'+(c===s?" selected":"")+">",l+="hour"===i?$.datepicker.formatTime($.trim(o.replace(/[^ht ]/gi,"")),{hour:c},e._defaults):"millisec"===i||"microsec"===i||c>=10?c:"0"+(""+c),l+="</option>";return l+="</select>",t.children("select").remove(),$(l).appendTo(t).change(function(){e._onTimeChange(),e._onSelectHandler()}),t},options:function(e,t,i,s,a){var n={},r=t.children("select");if("string"==typeof s){if(void 0===a)return r.data(s);n[s]=a}else n=s;return e.control.create(e,t,r.data("unit"),r.val(),n.min||r.data("min"),n.max||r.data("max"),n.step||r.data("step"))},value:function(e,t,i,s){var a=t.children("select");return void 0!==s?a.val(s):a.val()}}}}),$.fn.extend({timepicker:function(e){e=e||{};var t=Array.prototype.slice.call(arguments);return"object"==typeof e&&(t[0]=$.extend(e,{timeOnly:!0})),$(this).each(function(){$.fn.datetimepicker.apply($(this),t)})},datetimepicker:function(e){e=e||{};var t=arguments;return"string"==typeof e?"getDate"===e?$.fn.datepicker.apply($(this[0]),t):this.each(function(){var e=$(this);e.datepicker.apply(e,t)}):this.each(function(){var t=$(this);t.datepicker($.timepicker._newInst(t,e)._defaults)})}}),$.datepicker.parseDateTime=function(e,t,i,s,a){var n=parseDateTimeInternal(e,t,i,s,a);if(n.timeObj){var r=n.timeObj;n.date.setHours(r.hour,r.minute,r.second,r.millisec),n.date.setMicroseconds(r.microsec)}return n.date},$.datepicker.parseTime=function(e,t,i){var s=extendRemove(extendRemove({},$.timepicker._defaults),i||{});-1!==e.replace(/\'.*?\'/g,"").indexOf("Z");var a=function(e,t,i){var s,a=function(e,t){var i=[];return e&&$.merge(i,e),t&&$.merge(i,t),i=$.map(i,function(e){return e.replace(/[.*+?|()\[\]{}\\]/g,"\\$&")}),"("+i.join("|")+")?"},n=function(e){var t=e.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|c{1}|t{1,2}|z|'.*?')/g),i={h:-1,m:-1,s:-1,l:-1,c:-1,t:-1,z:-1};if(t)for(var s=0;t.length>s;s++)-1===i[(""+t[s]).charAt(0)]&&(i[(""+t[s]).charAt(0)]=s+1);return i},r="^"+(""+e).replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(e){var t=e.length;switch(e.charAt(0).toLowerCase()){case"h":return 1===t?"(\\d?\\d)":"(\\d{"+t+"})";case"m":return 1===t?"(\\d?\\d)":"(\\d{"+t+"})";case"s":return 1===t?"(\\d?\\d)":"(\\d{"+t+"})";case"l":return"(\\d?\\d?\\d)";case"c":return"(\\d?\\d?\\d)";case"z":return"(z|[-+]\\d\\d:?\\d\\d|\\S+)?";case"t":return a(i.amNames,i.pmNames);default:return"("+e.replace(/\'/g,"").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g,function(e){return"\\"+e})+")?"}}).replace(/\s/g,"\\s?")+i.timeSuffix+"$",l=n(e),o="";s=t.match(RegExp(r,"i"));var c={hour:0,minute:0,second:0,millisec:0,microsec:0};return s?(-1!==l.t&&(void 0===s[l.t]||0===s[l.t].length?(o="",c.ampm=""):(o=-1!==$.inArray(s[l.t].toUpperCase(),i.amNames)?"AM":"PM",c.ampm=i["AM"===o?"amNames":"pmNames"][0])),-1!==l.h&&(c.hour="AM"===o&&"12"===s[l.h]?0:"PM"===o&&"12"!==s[l.h]?parseInt(s[l.h],10)+12:Number(s[l.h])),-1!==l.m&&(c.minute=Number(s[l.m])),-1!==l.s&&(c.second=Number(s[l.s])),-1!==l.l&&(c.millisec=Number(s[l.l])),-1!==l.c&&(c.microsec=Number(s[l.c])),-1!==l.z&&void 0!==s[l.z]&&(c.timezone=$.timepicker.timezoneOffsetNumber(s[l.z])),c):!1},n=function(e,t,i){try{var s=new Date("2012-01-01 "+t);if(isNaN(s.getTime())&&(s=new Date("2012-01-01T"+t),isNaN(s.getTime())&&(s=new Date("01/01/2012 "+t),isNaN(s.getTime()))))throw"Unable to parse time with native Date: "+t;return{hour:s.getHours(),minute:s.getMinutes(),second:s.getSeconds(),millisec:s.getMilliseconds(),microsec:s.getMicroseconds(),timezone:-1*s.getTimezoneOffset()}}catch(n){try{return a(e,t,i)}catch(r){$.timepicker.log("Unable to parse \ntimeString: "+t+"\ntimeFormat: "+e)}}return!1};return"function"==typeof s.parse?s.parse(e,t,s):"loose"===s.parse?n(e,t,s):a(e,t,s)},$.datepicker.formatTime=function(e,t,i){i=i||{},i=$.extend({},$.timepicker._defaults,i),t=$.extend({hour:0,minute:0,second:0,millisec:0,microsec:0,timezone:null},t);var s=e,a=i.amNames[0],n=parseInt(t.hour,10);return n>11&&(a=i.pmNames[0]),s=s.replace(/(?:HH?|hh?|mm?|ss?|[tT]{1,2}|[zZ]|[lc]|'.*?')/g,function(e){switch(e){case"HH":return("0"+n).slice(-2);case"H":return n;case"hh":return("0"+convert24to12(n)).slice(-2);case"h":return convert24to12(n);case"mm":return("0"+t.minute).slice(-2);case"m":return t.minute;case"ss":return("0"+t.second).slice(-2);case"s":return t.second;case"l":return("00"+t.millisec).slice(-3);case"c":return("00"+t.microsec).slice(-3);case"z":return $.timepicker.timezoneOffsetString(null===t.timezone?i.timezone:t.timezone,!1);case"Z":return $.timepicker.timezoneOffsetString(null===t.timezone?i.timezone:t.timezone,!0);case"T":return a.charAt(0).toUpperCase();case"TT":return a.toUpperCase();case"t":return a.charAt(0).toLowerCase();case"tt":return a.toLowerCase();default:return e.replace(/'/g,"")}})},$.datepicker._base_selectDate=$.datepicker._selectDate,$.datepicker._selectDate=function(e,t){var i=this._getInst($(e)[0]),s=this._get(i,"timepicker");s?(s._limitMinMaxDateTime(i,!0),i.inline=i.stay_open=!0,this._base_selectDate(e,t),i.inline=i.stay_open=!1,this._notifyChange(i),this._updateDatepicker(i)):this._base_selectDate(e,t)},$.datepicker._base_updateDatepicker=$.datepicker._updateDatepicker,$.datepicker._updateDatepicker=function(e){var t=e.input[0];if(!($.datepicker._curInst&&$.datepicker._curInst!==e&&$.datepicker._datepickerShowing&&$.datepicker._lastInput!==t||"boolean"==typeof e.stay_open&&e.stay_open!==!1)){this._base_updateDatepicker(e);var i=this._get(e,"timepicker");i&&i._addTimePicker(e)}},$.datepicker._base_doKeyPress=$.datepicker._doKeyPress,$.datepicker._doKeyPress=function(e){var t=$.datepicker._getInst(e.target),i=$.datepicker._get(t,"timepicker");if(i&&$.datepicker._get(t,"constrainInput")){var s=i.support.ampm,a=null!==i._defaults.showTimezone?i._defaults.showTimezone:i.support.timezone,n=$.datepicker._possibleChars($.datepicker._get(t,"dateFormat")),r=(""+i._defaults.timeFormat).replace(/[hms]/g,"").replace(/TT/g,s?"APM":"").replace(/Tt/g,s?"AaPpMm":"").replace(/tT/g,s?"AaPpMm":"").replace(/T/g,s?"AP":"").replace(/tt/g,s?"apm":"").replace(/t/g,s?"ap":"")+" "+i._defaults.separator+i._defaults.timeSuffix+(a?i._defaults.timezoneList.join(""):"")+i._defaults.amNames.join("")+i._defaults.pmNames.join("")+n,l=String.fromCharCode(void 0===e.charCode?e.keyCode:e.charCode);return e.ctrlKey||" ">l||!n||r.indexOf(l)>-1}return $.datepicker._base_doKeyPress(e)},$.datepicker._base_updateAlternate=$.datepicker._updateAlternate,$.datepicker._updateAlternate=function(e){var t=this._get(e,"timepicker");if(t){var i=t._defaults.altField;if(i){var s=(t._defaults.altFormat||t._defaults.dateFormat,this._getDate(e)),a=$.datepicker._getFormatConfig(e),n="",r=t._defaults.altSeparator?t._defaults.altSeparator:t._defaults.separator,l=t._defaults.altTimeSuffix?t._defaults.altTimeSuffix:t._defaults.timeSuffix,o=null!==t._defaults.altTimeFormat?t._defaults.altTimeFormat:t._defaults.timeFormat;n+=$.datepicker.formatTime(o,t,t._defaults)+l,t._defaults.timeOnly||t._defaults.altFieldTimeOnly||null===s||(n=t._defaults.altFormat?$.datepicker.formatDate(t._defaults.altFormat,s,a)+r+n:t.formattedDate+r+n),$(i).val(n)}}else $.datepicker._base_updateAlternate(e)},$.datepicker._base_doKeyUp=$.datepicker._doKeyUp,$.datepicker._doKeyUp=function(e){var t=$.datepicker._getInst(e.target),i=$.datepicker._get(t,"timepicker");if(i&&i._defaults.timeOnly&&t.input.val()!==t.lastVal)try{$.datepicker._updateDatepicker(t)}catch(s){$.timepicker.log(s)}return $.datepicker._base_doKeyUp(e)},$.datepicker._base_gotoToday=$.datepicker._gotoToday,$.datepicker._gotoToday=function(e){var t=this._getInst($(e)[0]),i=t.dpDiv;this._base_gotoToday(e);var s=this._get(t,"timepicker");selectLocalTimezone(s);var a=new Date;this._setTime(t,a),$(".ui-datepicker-today",i).click()},$.datepicker._disableTimepickerDatepicker=function(e){var t=this._getInst(e);if(t){var i=this._get(t,"timepicker");$(e).datepicker("getDate"),i&&(t.settings.showTimepicker=!1,i._defaults.showTimepicker=!1,i._updateDateTime(t))}},$.datepicker._enableTimepickerDatepicker=function(e){var t=this._getInst(e);if(t){var i=this._get(t,"timepicker");$(e).datepicker("getDate"),i&&(t.settings.showTimepicker=!0,i._defaults.showTimepicker=!0,i._addTimePicker(t),i._updateDateTime(t))}},$.datepicker._setTime=function(e,t){var i=this._get(e,"timepicker");if(i){var s=i._defaults;i.hour=t?t.getHours():s.hour,i.minute=t?t.getMinutes():s.minute,i.second=t?t.getSeconds():s.second,i.millisec=t?t.getMilliseconds():s.millisec,i.microsec=t?t.getMicroseconds():s.microsec,i._limitMinMaxDateTime(e,!0),i._onTimeChange(),i._updateDateTime(e)}},$.datepicker._setTimeDatepicker=function(e,t,i){var s=this._getInst(e);if(s){var a=this._get(s,"timepicker");if(a){this._setDateFromField(s);var n;t&&("string"==typeof t?(a._parseTime(t,i),n=new Date,n.setHours(a.hour,a.minute,a.second,a.millisec),n.setMicroseconds(a.microsec)):(n=new Date(t.getTime()),n.setMicroseconds(t.getMicroseconds())),"Invalid Date"==""+n&&(n=void 0),this._setTime(s,n))}}},$.datepicker._base_setDateDatepicker=$.datepicker._setDateDatepicker,$.datepicker._setDateDatepicker=function(e,t){var i=this._getInst(e);if(i){"string"==typeof t&&(t=new Date(t),t.getTime()||$.timepicker.log("Error creating Date object from string."));var s,a=this._get(i,"timepicker");t instanceof Date?(s=new Date(t.getTime()),s.setMicroseconds(t.getMicroseconds())):s=t,a&&s&&(a.support.timezone||null!==a._defaults.timezone||(a.timezone=-1*s.getTimezoneOffset()),t=$.timepicker.timezoneAdjust(t,a.timezone),s=$.timepicker.timezoneAdjust(s,a.timezone)),this._updateDatepicker(i),this._base_setDateDatepicker.apply(this,arguments),this._setTimeDatepicker(e,s,!0)}},$.datepicker._base_getDateDatepicker=$.datepicker._getDateDatepicker,$.datepicker._getDateDatepicker=function(e,t){var i=this._getInst(e);if(i){var s=this._get(i,"timepicker");if(s){void 0===i.lastVal&&this._setDateFromField(i,t);var a=this._getDate(i);return a&&s._parseTime($(e).val(),s.timeOnly)&&(a.setHours(s.hour,s.minute,s.second,s.millisec),a.setMicroseconds(s.microsec),null!=s.timezone&&(s.support.timezone||null!==s._defaults.timezone||(s.timezone=-1*a.getTimezoneOffset()),a=$.timepicker.timezoneAdjust(a,s.timezone))),a
5
- }return this._base_getDateDatepicker(e,t)}},$.datepicker._base_parseDate=$.datepicker.parseDate,$.datepicker.parseDate=function(e,t,i){var s;try{s=this._base_parseDate(e,t,i)}catch(a){if(!(a.indexOf(":")>=0))throw a;s=this._base_parseDate(e,t.substring(0,t.length-(a.length-a.indexOf(":")-2)),i),$.timepicker.log("Error parsing the date string: "+a+"\ndate string = "+t+"\ndate format = "+e)}return s},$.datepicker._base_formatDate=$.datepicker._formatDate,$.datepicker._formatDate=function(e){var t=this._get(e,"timepicker");return t?(t._updateDateTime(e),t.$input.val()):this._base_formatDate(e)},$.datepicker._base_optionDatepicker=$.datepicker._optionDatepicker,$.datepicker._optionDatepicker=function(e,t,i){var s,a=this._getInst(e);if(!a)return null;var n=this._get(a,"timepicker");if(n){var r,l=null,o=null,c=null,u=n._defaults.evnts,m={};if("string"==typeof t){if("minDate"===t||"minDateTime"===t)l=i;else if("maxDate"===t||"maxDateTime"===t)o=i;else if("onSelect"===t)c=i;else if(u.hasOwnProperty(t)){if(i===void 0)return u[t];m[t]=i,s={}}}else if("object"==typeof t){t.minDate?l=t.minDate:t.minDateTime?l=t.minDateTime:t.maxDate?o=t.maxDate:t.maxDateTime&&(o=t.maxDateTime);for(r in u)u.hasOwnProperty(r)&&t[r]&&(m[r]=t[r])}for(r in m)m.hasOwnProperty(r)&&(u[r]=m[r],s||(s=$.extend({},t)),delete s[r]);if(s&&isEmptyObject(s))return;l?(l=0===l?new Date:new Date(l),n._defaults.minDate=l,n._defaults.minDateTime=l):o?(o=0===o?new Date:new Date(o),n._defaults.maxDate=o,n._defaults.maxDateTime=o):c&&(n._defaults.onSelect=c)}return void 0===i?this._base_optionDatepicker.call($.datepicker,e,t):this._base_optionDatepicker.call($.datepicker,e,s||t,i)};var isEmptyObject=function(e){var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0},extendRemove=function(e,t){$.extend(e,t);for(var i in t)(null===t[i]||void 0===t[i])&&(e[i]=t[i]);return e},detectSupport=function(e){var t=e.replace(/'.*?'/g,"").toLowerCase(),i=function(e,t){return-1!==e.indexOf(t)?!0:!1};return{hour:i(t,"h"),minute:i(t,"m"),second:i(t,"s"),millisec:i(t,"l"),microsec:i(t,"c"),timezone:i(t,"z"),ampm:i(t,"t")&&i(e,"h"),iso8601:i(e,"Z")}},convert24to12=function(e){return e%=12,0===e&&(e=12),e+""},computeEffectiveSetting=function(e,t){return e&&e[t]?e[t]:$.timepicker._defaults[t]},splitDateTime=function(e,t){var i=computeEffectiveSetting(t,"separator"),s=computeEffectiveSetting(t,"timeFormat"),a=s.split(i),n=a.length,r=e.split(i),l=r.length;return l>1?{dateString:r.splice(0,l-n).join(i),timeString:r.splice(0,n).join(i)}:{dateString:e,timeString:""}},parseDateTimeInternal=function(e,t,i,s,a){var n,r,l;if(r=splitDateTime(i,a),n=$.datepicker._base_parseDate(e,r.dateString,s),""===r.timeString)return{date:n};if(l=$.datepicker.parseTime(t,r.timeString,a),!l)throw"Wrong time format";return{date:n,timeObj:l}},selectLocalTimezone=function(e,t){if(e&&e.timezone_select){var i=t||new Date;e.timezone_select.val(-i.getTimezoneOffset())}};$.timepicker=new Timepicker,$.timepicker.timezoneOffsetString=function(e,t){if(isNaN(e)||e>840||-720>e)return e;var i=e,s=i%60,a=(i-s)/60,n=t?":":"",r=(i>=0?"+":"-")+("0"+Math.abs(a)).slice(-2)+n+("0"+Math.abs(s)).slice(-2);return"+00:00"===r?"Z":r},$.timepicker.timezoneOffsetNumber=function(e){var t=(""+e).replace(":","");return"Z"===t.toUpperCase()?0:/^(\-|\+)\d{4}$/.test(t)?("-"===t.substr(0,1)?-1:1)*(60*parseInt(t.substr(1,2),10)+parseInt(t.substr(3,2),10)):e},$.timepicker.timezoneAdjust=function(e,t){var i=$.timepicker.timezoneOffsetNumber(t);return isNaN(i)||e.setMinutes(e.getMinutes()+-e.getTimezoneOffset()-i),e},$.timepicker.timeRange=function(e,t,i){return $.timepicker.handleRange("timepicker",e,t,i)},$.timepicker.datetimeRange=function(e,t,i){$.timepicker.handleRange("datetimepicker",e,t,i)},$.timepicker.dateRange=function(e,t,i){$.timepicker.handleRange("datepicker",e,t,i)},$.timepicker.handleRange=function(e,t,i,s){function a(a,n){var r=t[e]("getDate"),l=i[e]("getDate"),o=a[e]("getDate");if(null!==r){var c=new Date(r.getTime()),u=new Date(r.getTime());c.setMilliseconds(c.getMilliseconds()+s.minInterval),u.setMilliseconds(u.getMilliseconds()+s.maxInterval),s.minInterval>0&&c>l?i[e]("setDate",c):s.maxInterval>0&&l>u?i[e]("setDate",u):r>l&&n[e]("setDate",o)}}function n(t,i,a){if(t.val()){var n=t[e].call(t,"getDate");null!==n&&s.minInterval>0&&("minDate"===a&&n.setMilliseconds(n.getMilliseconds()+s.minInterval),"maxDate"===a&&n.setMilliseconds(n.getMilliseconds()-s.minInterval)),n.getTime&&i[e].call(i,"option",a,n)}}return s=$.extend({},{minInterval:0,maxInterval:0,start:{},end:{}},s),$.fn[e].call(t,$.extend({onClose:function(){a($(this),i)},onSelect:function(){n($(this),i,"minDate")}},s,s.start)),$.fn[e].call(i,$.extend({onClose:function(){a($(this),t)},onSelect:function(){n($(this),t,"maxDate")}},s,s.end)),a(t,i),n(t,i,"minDate"),n(i,t,"maxDate"),$([t.get(0),i.get(0)])},$.timepicker.log=function(e){window.console&&window.console.log(e)},$.timepicker._util={_extendRemove:extendRemove,_isEmptyObject:isEmptyObject,_convert24to12:convert24to12,_detectSupport:detectSupport,_selectLocalTimezone:selectLocalTimezone,_computeEffectiveSetting:computeEffectiveSetting,_splitDateTime:splitDateTime,_parseDateTimeInternal:parseDateTimeInternal},Date.prototype.getMicroseconds||(Date.prototype.microseconds=0,Date.prototype.getMicroseconds=function(){return this.microseconds},Date.prototype.setMicroseconds=function(e){return this.setMilliseconds(this.getMilliseconds()+Math.floor(e/1e3)),this.microseconds=e%1e3,this}),$.timepicker.version="1.4.3"}})(jQuery);
 
 
 
 
 
admin/includes/class-ot-cleanup.php DELETED
@@ -1,306 +0,0 @@
1
- <?php
2
- /**
3
- * OptionTree Cleanup.
4
- *
5
- * @package OptionTree
6
- */
7
-
8
- if ( ! defined( 'OT_VERSION' ) ) {
9
- exit( 'No direct script access allowed' );
10
- }
11
-
12
- if ( ! class_exists( 'OT_Cleanup' ) ) {
13
-
14
- /**
15
- * OptionTree Cleanup class.
16
- *
17
- * This class loads all the OptionTree Cleanup methods and helpers.
18
- */
19
- class OT_Cleanup {
20
-
21
- /**
22
- * Class constructor.
23
- *
24
- * This method adds other methods of the class to specific hooks within WordPress.
25
- *
26
- * @uses add_action()
27
- *
28
- * @access public
29
- * @since 2.4.6
30
- */
31
- public function __construct() {
32
- if ( ! is_admin() ) {
33
- return;
34
- }
35
-
36
- // Load styles.
37
- add_action( 'admin_head', array( $this, 'styles' ), 1 );
38
-
39
- // Maybe Clean up OptionTree.
40
- add_action( 'admin_menu', array( $this, 'maybe_cleanup' ), 100 );
41
-
42
- // Increase timeout if allowed.
43
- add_action( 'ot_pre_consolidate_posts', array( $this, 'increase_timeout' ) );
44
-
45
- add_action( 'admin_footer', array( $this, 'admin_footer' ) );
46
- }
47
-
48
-
49
- public function admin_footer() {
50
- $screen = get_current_screen();
51
-
52
-
53
- }
54
-
55
- /**
56
- * Adds the cleanup styles to the admin head
57
- *
58
- * @access public
59
- * @since 2.5.0
60
- */
61
- public function styles() {
62
- echo '<style>#toplevel_page_ot-cleanup{display:none;}</style>';
63
- }
64
-
65
- /**
66
- * Check if OptionTree needs to be cleaned up from a previous install.
67
- *
68
- * @access public
69
- * @since 2.4.6
70
- */
71
- public function maybe_cleanup() {
72
- global $wpdb, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
73
-
74
- $table_name = $wpdb->prefix . 'option_tree';
75
- $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore
76
- $ot_maybe_cleanup_posts = count( $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree' LIMIT 2" ) ) > 1; // phpcs:ignore
77
- $ot_maybe_cleanup_table = $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) == $table_name; // phpcs:ignore
78
-
79
- if ( ! $ot_maybe_cleanup_posts && ! $ot_maybe_cleanup_table && 'ot-cleanup' === $page ) {
80
- wp_safe_redirect( apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) . '?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) );
81
- exit;
82
- }
83
-
84
- if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
85
-
86
- if ( 'ot-cleanup' !== $page ) {
87
- add_action( 'admin_notices', array( $this, 'cleanup_notice' ) );
88
- }
89
-
90
- $theme_check_bs = 'add_menu_' . 'page'; // phpcs:ignore
91
-
92
- $theme_check_bs( apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ), 'edit_theme_options', 'ot-cleanup', array( $this, 'options_page' ) );
93
- }
94
- }
95
-
96
- /**
97
- * Adds an admin nag.
98
- *
99
- * @access public
100
- * @since 2.4.6
101
- */
102
- public function cleanup_notice() {
103
-
104
- if ( 'appearance_page_ot-cleanup' !== get_current_screen()->id ) {
105
- $link = sprintf( '<a href="%s">%s</a>', admin_url( 'themes.php?page=ot-cleanup' ), apply_filters( 'ot_cleanup_menu_title', esc_html__( 'OptionTree Cleanup', 'option-tree' ) ) );
106
-
107
- /* translators: %s: internal admin page URL */
108
- echo '<div class="update-nag">' . sprintf( esc_html__( 'OptionTree has outdated data that should be removed. Please go to %s for more information.', 'option-tree' ), $link ) . '</div>'; // phpcs:ignore
109
- }
110
- }
111
-
112
- /**
113
- * Adds a Tools sub page to clean up the database with.
114
- *
115
- * @access public
116
- * @since 2.4.6
117
- */
118
- public function options_page() {
119
- global $wpdb, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
120
-
121
- // Option ID.
122
- $option_id = 'ot_media_post_ID';
123
-
124
- // Get the media post ID.
125
- $post_ID = get_option( $option_id, false );
126
-
127
- // Zero loop count.
128
- $count = 0;
129
-
130
- // Check for safe mode.
131
- $safe_mode = ini_get( 'safe_mode' ); // phpcs:ignore
132
-
133
- echo '<div class="wrap">';
134
-
135
- echo '<h2>' . apply_filters( 'ot_cleanup_page_title', esc_html__( 'OptionTree Cleanup', 'option-tree' ) ) . '</h2>'; // phpcs:ignore
136
-
137
- if ( $ot_maybe_cleanup_posts ) {
138
-
139
- $posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree'" ); // phpcs:ignore
140
-
141
- echo '<h3>' . esc_html__( 'Multiple Media Posts', 'option-tree' ) . '</h3>';
142
-
143
- /* translators: %1$s: number of media posts, %2$s: media post type, %3$s: table name */
144
- $string = esc_html__( 'There are currently %1$s OptionTree media posts in your database. At some point in the past, a version of OptionTree added multiple %2$s media post objects cluttering up your %3$s table. There is no associated risk or harm that these posts have caused other than to add size to your overall database. Thankfully, there is a way to remove all these orphaned media posts and get your database cleaned up.', 'option-tree' );
145
- echo '<p>' . sprintf( $string, '<code>' . number_format( count( $posts ) ) . '</code>', '<tt>option-tree</tt>', '<tt>' . $wpdb->posts . '</tt>' ) . '</p>'; // phpcs:ignore
146
-
147
- /* translators: %s: number of media posts being deleted */
148
- echo '<p>' . sprintf( esc_html__( 'By clicking the button below, OptionTree will delete %s records and consolidate them into one single OptionTree media post for uploading attachments to. Additionally, the attachments will have their parent ID updated to the correct media post.', 'option-tree' ), '<code>' . number_format( count( $posts ) - 1 ) . '</code>' ) . '</p>';
149
-
150
- echo '<p><strong>' . esc_html__( 'This could take a while to fully process depending on how many records you have in your database, so please be patient and wait for the script to finish.', 'option-tree' ) . '</strong></p>';
151
-
152
- /* translators: %1$s: the word Note wrapped in a strong attribute, %2$s: number of posts being deleted */
153
- $string = __( '%1$s: Your server is running in safe mode. Which means this page will automatically reload after deleting %2$s posts, you can filter this number using %3$s if your server is having trouble processing that many at one time.', 'option-tree' );
154
- echo $safe_mode ? '<p>' . sprintf( $string, '<strong>' . esc_html__( 'Note', 'option-tree' ) . '</strong>:', apply_filters( 'ot_consolidate_posts_reload', 500 ), '<tt>ot_consolidate_posts_reload</tt>' ) . '</p>' : ''; // phpcs:ignore
155
-
156
- echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'consolidate-posts' ) . '">' . esc_html__( 'Consolidate Posts', 'option-tree' ) . '</a></p>'; // phpcs:ignore
157
-
158
- if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'consolidate-posts' ) ) { // phpcs:ignore
159
-
160
- if ( false === $post_ID || empty( $post_ID ) ) {
161
- $post_ID = isset( $posts[0]->ID ) ? $posts[0]->ID : null;
162
-
163
- // Add to the DB.
164
- if ( null !== $post_ID ) {
165
- update_option( $option_id, $post_ID );
166
- }
167
- }
168
-
169
- // Do pre consolidation action to increase timeout.
170
- do_action( 'ot_pre_consolidate_posts' );
171
-
172
- // Loop over posts.
173
- foreach ( $posts as $post ) {
174
-
175
- // Don't destroy the correct post.
176
- if ( $post_ID === $post->ID ) {
177
- continue;
178
- }
179
-
180
- // Update count.
181
- $count++;
182
-
183
- // Reload script in safe mode.
184
- if ( $safe_mode && $count > absint( apply_filters( 'ot_consolidate_posts_reload', 500 ) ) ) {
185
- echo '<br />' . esc_html__( 'Reloading...', 'option-tree' );
186
- echo '
187
- <script>
188
- setTimeout( ot_script_reload, 3000 )
189
- function ot_script_reload() {
190
- window.location = "' . esc_url_raw( self_admin_url( 'themes.php?page=ot-cleanup&_wpnonce=' . wp_create_nonce( 'consolidate-posts' ) ) ) . '"
191
- }
192
- </script>';
193
- break;
194
- }
195
-
196
- // Get the attachments.
197
- $attachments = get_children( 'post_type=attachment&post_parent=' . $post->ID );
198
-
199
- // Update the attachments parent ID.
200
- if ( ! empty( $attachments ) ) {
201
-
202
- /* translators: %1$s: the post type, %2$s: the post ID */
203
- $string = esc_html__( 'Updating Attachments parent ID for %1$s post %2$s.', 'option-tree' );
204
- echo sprintf( $string . '<br />', '<tt>option-tree</tt>', '<tt>#' . $post->ID . '</tt>' ); // phpcs:ignore
205
-
206
- foreach ( $attachments as $attachment_id => $attachment ) {
207
- wp_update_post(
208
- array(
209
- 'ID' => $attachment_id,
210
- 'post_parent' => $post_ID,
211
- )
212
- );
213
- }
214
- }
215
-
216
- /* translators: %1$s: the post type, %2$s: the post ID */
217
- $string = esc_html__( 'Deleting %1$s post %2$s.', 'option-tree' );
218
-
219
- // Delete post.
220
- echo sprintf( $string . '<br />', '<tt>option-tree</tt>', '<tt>#' . $post->ID . '</tt>' ); // phpcs:ignore
221
- wp_delete_post( $post->ID, true );
222
-
223
- }
224
-
225
- echo '<br />' . esc_html__( 'Clean up script has completed, the page will now reload...', 'option-tree' );
226
-
227
- echo '
228
- <script>
229
- setTimeout( ot_script_reload, 3000 )
230
- function ot_script_reload() {
231
- window.location = "' . esc_url_raw( self_admin_url( 'themes.php?page=ot-cleanup' ) ) . '"
232
- }
233
- </script>';
234
-
235
- }
236
- }
237
-
238
- if ( $ot_maybe_cleanup_table ) {
239
-
240
- $table_name = $wpdb->prefix . 'option_tree';
241
-
242
- echo $ot_maybe_cleanup_posts ? '<hr />' : '';
243
-
244
- echo '<h3>' . esc_html__( 'Outdated Table', 'option-tree' ) . '</h3>';
245
-
246
- /* translators: %s: table name */
247
- $string = esc_html__( 'If you have upgraded from an old 1.x version of OptionTree at some point, you have an extra %s table in your database that can be removed. It\'s not hurting anything, but does not need to be there. If you want to remove it. Click the button below.', 'option-tree' );
248
-
249
- echo '<p>' . sprintf( $string, '<tt>' . $table_name . '</tt>' ) . '</p>'; // phpcs:ignore
250
-
251
- echo '<p><a class="button button-primary" href="' . esc_url_raw( wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'drop-table' ) ) . '">' . esc_html__( 'Drop Table', 'option-tree' ) . '</a></p>';
252
-
253
- if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'drop-table' ) ) { // phpcs:ignore
254
-
255
- /* translators: %s: table name */
256
- $string = esc_html__( 'Deleting the outdated and unused %s table...', 'option-tree' );
257
-
258
- echo '<p>' . sprintf( $string, '<tt>' . $table_name . '</tt>' ) . '</p>'; // phpcs:ignore
259
-
260
- $wpdb->query( "DROP TABLE IF EXISTS $table_name" ); // phpcs:ignore
261
-
262
- if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ) != $table_name ) { // phpcs:ignore
263
-
264
- /* translators: %s: table name */
265
- $string = esc_html__( 'The %s table has been successfully deleted. The page will now reload...', 'option-tree' );
266
-
267
- echo '<p>' . sprintf( $string, '<tt>' . $table_name . '</tt>' ) . '</p>'; // phpcs:ignore
268
-
269
- echo '
270
- <script>
271
- setTimeout( ot_script_reload, 3000 )
272
- function ot_script_reload() {
273
- window.location = "' . esc_url_raw( self_admin_url( 'themes.php?page=ot-cleanup' ) ) . '"
274
- }
275
- </script>';
276
-
277
- } else {
278
-
279
- /* translators: %s: table name */
280
- $string = esc_html__( 'Something went wrong. The %s table was not deleted.', 'option-tree' );
281
-
282
- echo '<p>' . sprintf( $string, '<tt>' . $table_name . '</tt>' ) . '</p>'; // phpcs:ignore
283
- }
284
- }
285
- }
286
-
287
- echo '</div>';
288
- }
289
-
290
- /**
291
- * Increase PHP timeout.
292
- *
293
- * This is to prevent bulk operations from timing out
294
- *
295
- * @access public
296
- * @since 2.4.6
297
- */
298
- public function increase_timeout() {
299
- if ( ! ini_get( 'safe_mode' ) ) { // phpcs:ignore
300
- @set_time_limit( 0 ); // phpcs:ignore
301
- }
302
- }
303
- }
304
- }
305
-
306
- new OT_Cleanup();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/class-ot-meta-box.php DELETED
@@ -1,375 +0,0 @@
1
- <?php
2
- /**
3
- * OptionTree Meta Box.
4
- *
5
- * @package OptionTree
6
- */
7
-
8
- if ( ! defined( 'OT_VERSION' ) ) {
9
- exit( 'No direct script access allowed' );
10
- }
11
-
12
- if ( ! class_exists( 'OT_Meta_Box' ) ) {
13
-
14
- /**
15
- * OptionTree Meta Box class.
16
- *
17
- * This class loads all the methods and helpers specific to build a meta box.
18
- */
19
- class OT_Meta_Box {
20
-
21
- /**
22
- * Stores the meta box config array.
23
- *
24
- * @var string
25
- */
26
- private $meta_box;
27
-
28
- /**
29
- * Class constructor.
30
- *
31
- * This method adds other methods of the class to specific hooks within WordPress.
32
- *
33
- * @uses add_action()
34
- *
35
- * @access public
36
- * @since 1.0
37
- *
38
- * @param array $meta_box Meta box config array.
39
- */
40
- public function __construct( $meta_box ) {
41
- if ( ! is_admin() ) {
42
- return;
43
- }
44
-
45
- global $ot_meta_boxes;
46
-
47
- if ( ! isset( $ot_meta_boxes ) ) {
48
- $ot_meta_boxes = array();
49
- }
50
-
51
- $ot_meta_boxes[] = $meta_box;
52
-
53
- $this->meta_box = $meta_box;
54
-
55
- add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
56
-
57
- add_action( 'save_post', array( $this, 'save_meta_box' ), 1, 2 );
58
- }
59
-
60
- /**
61
- * Adds meta box to any post type
62
- *
63
- * @uses add_meta_box()
64
- *
65
- * @access public
66
- * @since 1.0
67
- */
68
- public function add_meta_boxes() {
69
- global $wp_version;
70
-
71
- $is_wp_5 = version_compare( $wp_version, '5.0', '>=' );
72
-
73
- foreach ( (array) $this->meta_box['pages'] as $page ) {
74
- add_meta_box( $this->meta_box['id'], $this->meta_box['title'], array( $this, 'build_meta_box' ), $page, $this->meta_box['context'], $this->meta_box['priority'], $this->meta_box['fields'] );
75
-
76
- if ( $is_wp_5 ) {
77
- add_filter(
78
- 'postbox_classes_' . $page . '_' . $this->meta_box['id'],
79
- function( $classes ) {
80
- array_push( $classes, 'ot-meta-box' );
81
- return $classes;
82
- }
83
- );
84
- }
85
- }
86
- }
87
-
88
- /**
89
- * Meta box view.
90
- *
91
- * @access public
92
- * @since 1.0
93
- *
94
- * @param object $post The WP_Post object.
95
- * @param array $fields The meta box fields.
96
- */
97
- public function build_meta_box( $post, $fields ) {
98
- unset( $fields ); // @todo Check if the loop can use this param.
99
-
100
- echo '<div class="ot-metabox-wrapper">';
101
-
102
- // Use nonce for verification.
103
- echo '<input type="hidden" name="' . esc_attr( $this->meta_box['id'] ) . '_nonce" value="' . esc_attr( wp_create_nonce( $this->meta_box['id'] ) ) . '" />';
104
-
105
- // Meta box description.
106
- echo isset( $this->meta_box['desc'] ) && ! empty( $this->meta_box['desc'] ) ? '<div class="description" style="padding-top:10px;">' . htmlspecialchars_decode( $this->meta_box['desc'] ) . '</div>' : ''; // phpcs:ignore
107
-
108
- // Loop through meta box fields.
109
- foreach ( $this->meta_box['fields'] as $field ) {
110
-
111
- // Get current post meta data.
112
- $field_value = get_post_meta( $post->ID, $field['id'], true );
113
-
114
- // Set standard value.
115
- if ( isset( $field['std'] ) ) {
116
- $field_value = ot_filter_std_value( $field_value, $field['std'] );
117
- }
118
-
119
- // Build the arguments array.
120
- $_args = array(
121
- 'type' => $field['type'],
122
- 'field_id' => $field['id'],
123
- 'field_name' => $field['id'],
124
- 'field_value' => $field_value,
125
- 'field_desc' => isset( $field['desc'] ) ? $field['desc'] : '',
126
- 'field_std' => isset( $field['std'] ) ? $field['std'] : '',
127
- 'field_rows' => isset( $field['rows'] ) && ! empty( $field['rows'] ) ? $field['rows'] : 10,
128
- 'field_post_type' => isset( $field['post_type'] ) && ! empty( $field['post_type'] ) ? $field['post_type'] : 'post',
129
- 'field_taxonomy' => isset( $field['taxonomy'] ) && ! empty( $field['taxonomy'] ) ? $field['taxonomy'] : 'category',
130
- 'field_min_max_step' => isset( $field['min_max_step'] ) && ! empty( $field['min_max_step'] ) ? $field['min_max_step'] : '0,100,1',
131
- 'field_class' => isset( $field['class'] ) ? $field['class'] : '',
132
- 'field_condition' => isset( $field['condition'] ) ? $field['condition'] : '',
133
- 'field_operator' => isset( $field['operator'] ) ? $field['operator'] : 'and',
134
- 'field_choices' => isset( $field['choices'] ) ? $field['choices'] : array(),
135
- 'field_settings' => isset( $field['settings'] ) && ! empty( $field['settings'] ) ? $field['settings'] : array(),
136
- 'post_id' => $post->ID,
137
- 'meta' => true,
138
- );
139
-
140
- $conditions = '';
141
-
142
- // Setup the conditions.
143
- if ( isset( $field['condition'] ) && ! empty( $field['condition'] ) ) {
144
- $conditions = ' data-condition="' . esc_attr( $field['condition'] ) . '"';
145
- $conditions .= isset( $field['operator'] ) && in_array( $field['operator'], array( 'and', 'AND', 'or', 'OR' ), true ) ? ' data-operator="' . esc_attr( $field['operator'] ) . '"' : '';
146
- }
147
-
148
- // Only allow simple textarea due to DOM issues with wp_editor().
149
- if ( false === apply_filters( 'ot_override_forced_textarea_simple', false, $field['id'] ) && 'textarea' === $_args['type'] ) {
150
- $_args['type'] = 'textarea-simple';
151
- }
152
-
153
- // Build the setting CSS class.
154
- if ( ! empty( $_args['field_class'] ) ) {
155
-
156
- $classes = explode( ' ', $_args['field_class'] );
157
-
158
- foreach ( $classes as $key => $value ) {
159
-
160
- $classes[ $key ] = $value . '-wrap';
161
-
162
- }
163
-
164
- $class = 'format-settings ' . implode( ' ', $classes );
165
- } else {
166
-
167
- $class = 'format-settings';
168
- }
169
-
170
- // Option label.
171
- echo '<div id="setting_' . esc_attr( $field['id'] ) . '" class="' . esc_attr( $class ) . '"' . $conditions . '>'; // phpcs:ignore
172
-
173
- echo '<div class="format-setting-wrap">';
174
-
175
- // Don't show title with textblocks.
176
- if ( 'textblock' !== $_args['type'] && ! empty( $field['label'] ) ) {
177
- echo '<div class="format-setting-label">';
178
- echo '<label for="' . esc_attr( $field['id'] ) . '" class="label">' . esc_html( $field['label'] ) . '</label>';
179
- echo '</div>';
180
- }
181
-
182
- // Get the option HTML.
183
- echo ot_display_by_type( $_args ); // phpcs:ignore
184
-
185
- echo '</div>';
186
-
187
- echo '</div>';
188
-
189
- }
190
-
191
- echo '<div class="clear"></div>';
192
-
193
- echo '</div>';
194
- }
195
-
196
- /**
197
- * Saves the meta box values
198
- *
199
- * @access public
200
- * @since 1.0
201
- *
202
- * @param int $post_id The post ID.
203
- * @param object $post_object The WP_Post object.
204
- * @return int|void
205
- */
206
- public function save_meta_box( $post_id, $post_object ) {
207
- global $pagenow;
208
-
209
- // Verify nonce.
210
- if (empty($_POST[ $this->meta_box['id'] . '_nonce']) || !wp_verify_nonce($_POST[ $this->meta_box['id'] . '_nonce'], $this->meta_box['id'])) {
211
- return $post_id;
212
- }
213
-
214
- // Store the post global for use later.
215
- $post_global = $_POST;
216
-
217
- // Don't save if $_POST is empty.
218
- if ( empty( $post_global ) || ( isset( $post_global['vc_inline'] ) && true === $post_global['vc_inline'] ) ) {
219
- return $post_id;
220
- }
221
-
222
- // Don't save during quick edit.
223
- if ( 'admin-ajax.php' === $pagenow ) {
224
- return $post_id;
225
- }
226
-
227
- // Don't save during autosave.
228
- if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
229
- return $post_id;
230
- }
231
-
232
- // Don't save if viewing a revision.
233
- if ( 'revision' === $post_object->post_type || 'revision.php' === $pagenow ) {
234
- return $post_id;
235
- }
236
-
237
- // Check permissions.
238
- if ( isset( $post_global['post_type'] ) && 'page' === $post_global['post_type'] ) {
239
- if ( ! current_user_can( 'edit_page', $post_id ) ) {
240
- return $post_id;
241
- }
242
- } else {
243
- if ( ! current_user_can( 'edit_post', $post_id ) ) {
244
- return $post_id;
245
- }
246
- }
247
-
248
- foreach ( $this->meta_box['fields'] as $field ) {
249
-
250
- $old = get_post_meta( $post_id, $field['id'], true );
251
- $new = '';
252
-
253
- // There is data to validate.
254
- if ( isset( $post_global[ $field['id'] ] ) ) {
255
-
256
- // Slider and list item.
257
- if ( in_array( $field['type'], array( 'list-item', 'slider' ), true ) ) {
258
-
259
- // Required title setting.
260
- $required_setting = array(
261
- array(
262
- 'id' => 'title',
263
- 'label' => __( 'Title', 'option-tree' ),
264
- 'desc' => '',
265
- 'std' => '',
266
- 'type' => 'text',
267
- 'rows' => '',
268
- 'class' => 'option-tree-setting-title',
269
- 'post_type' => '',
270
- 'choices' => array(),
271
- ),
272
- );
273
-
274
- // Convert the settings to an array.
275
- $settings = isset( $post_global[ $field['id'] . '_settings_array' ] ) ? ot_decode( $post_global[ $field['id'] . '_settings_array' ] ) : array();
276
-
277
- // Settings are empty for some odd reason get the defaults.
278
- if ( empty( $settings ) ) {
279
- $settings = ( 'slider' === $field['type'] ) ? ot_slider_settings( $field['id'] ) : ot_list_item_settings( $field['id'] );
280
- }
281
-
282
- // Merge the two settings array.
283
- $settings = array_merge( $required_setting, $settings );
284
-
285
- foreach ( $post_global[ $field['id'] ] as $k => $setting_array ) {
286
-
287
- foreach ( $settings as $sub_setting ) {
288
-
289
- // Verify sub setting has a type & value.
290
- if ( isset( $sub_setting['type'] ) && isset( $post_global[ $field['id'] ][ $k ][ $sub_setting['id'] ] ) ) {
291
-
292
- $post_global[ $field['id'] ][ $k ][ $sub_setting['id'] ] = ot_validate_setting( $post_global[ $field['id'] ][ $k ][ $sub_setting['id'] ], $sub_setting['type'], $sub_setting['id'] );
293
- }
294
- }
295
- }
296
-
297
- // Set up new data with validated data.
298
- $new = $post_global[ $field['id'] ];
299
-
300
- } elseif ( 'social-links' === $field['type'] ) {
301
-
302
- // Convert the settings to an array.
303
- $settings = isset( $post_global[ $field['id'] . '_settings_array' ] ) ? ot_decode( $post_global[ $field['id'] . '_settings_array' ] ) : array();
304
-
305
- // Settings are empty get the defaults.
306
- if ( empty( $settings ) ) {
307
- $settings = ot_social_links_settings( $field['id'] );
308
- }
309
-
310
- foreach ( $post_global[ $field['id'] ] as $k => $setting_array ) {
311
-
312
- foreach ( $settings as $sub_setting ) {
313
-
314
- // Verify sub setting has a type & value.
315
- if ( isset( $sub_setting['type'] ) && isset( $post_global[ $field['id'] ][ $k ][ $sub_setting['id'] ] ) ) {
316
- $post_global[ $field['id'] ][ $k ][ $sub_setting['id'] ] = ot_validate_setting( $post_global[ $field['id'] ][ $k ][ $sub_setting['id'] ], $sub_setting['type'], $sub_setting['id'] );
317
- }
318
- }
319
- }
320
-
321
- // Set up new data with validated data.
322
- $new = $post_global[ $field['id'] ];
323
- } else {
324
-
325
- // Run through validation.
326
- $new = ot_validate_setting( $post_global[ $field['id'] ], $field['type'], $field['id'] );
327
- }
328
-
329
- // Insert CSS.
330
- if ( 'css' === $field['type'] ) {
331
-
332
- if ( '' !== $new ) {
333
-
334
- // insert CSS into dynamic.css.
335
- ot_insert_css_with_markers( $field['id'], $new, true );
336
- } else {
337
-
338
- // Remove old CSS from dynamic.css.
339
- ot_remove_old_css( $field['id'] );
340
- }
341
- }
342
- }
343
-
344
- if ( isset( $new ) && $new !== $old ) {
345
- update_post_meta( $post_id, $field['id'], $new );
346
- } elseif ( '' === $new && $old ) {
347
- delete_post_meta( $post_id, $field['id'], $old );
348
- }
349
- }
350
- }
351
-
352
- }
353
-
354
- }
355
-
356
- if ( ! function_exists( 'ot_register_meta_box' ) ) {
357
-
358
- /**
359
- * This method instantiates the meta box class & builds the UI.
360
- *
361
- * @uses OT_Meta_Box()
362
- *
363
- * @param array $args Meta box arguments.
364
- *
365
- * @access public
366
- * @since 2.0
367
- */
368
- function ot_register_meta_box( $args ) {
369
- if ( ! $args ) {
370
- return;
371
- }
372
-
373
- new OT_Meta_Box( $args );
374
- }
375
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/class-ot-post-formats.php DELETED
@@ -1,122 +0,0 @@
1
- <?php
2
- /**
3
- * OptionTree Post Formats.
4
- *
5
- * @package OptionTree
6
- */
7
-
8
- if ( ! defined( 'OT_VERSION' ) ) {
9
- exit( 'No direct script access allowed' );
10
- }
11
-
12
- if ( ! class_exists( 'OT_Post_Formats' ) ) {
13
-
14
- /**
15
- * OptionTree Post Formats class.
16
- *
17
- * This class loads all the methods and helpers specific to build a the post format metaboxes.
18
- */
19
- class OT_Post_Formats {
20
-
21
- /**
22
- * Class Constructor
23
- *
24
- * @access public
25
- * @since 2.3.0
26
- */
27
- public function __construct() {
28
- $this->setup_actions();
29
- }
30
-
31
- /**
32
- * Setup the default filters and actions.
33
- *
34
- * @uses add_action() To add various actions.
35
- * @uses add_filter() To add various filters.
36
- *
37
- * @access private
38
- * @since 2.3.0
39
- */
40
- private function setup_actions() {
41
-
42
- // Initialize the meta boxes.
43
- add_action( 'admin_init', array( $this, 'meta_boxes' ), 2 );
44
-
45
- // Setup pings for the link & quote URLs.
46
- add_filter( 'pre_ping', array( $this, 'pre_ping_post_links' ), 10, 3 );
47
- }
48
-
49
- /**
50
- * Builds the default Meta Boxes.
51
- *
52
- * @access private
53
- * @since 2.3.0
54
- */
55
- public function meta_boxes() {
56
-
57
- // Exit if called outside of WP admin.
58
- if ( ! is_admin() ) {
59
- return false;
60
- }
61
-
62
- /**
63
- * Filter the post formats meta boxes.
64
- *
65
- * @since 2.6.0
66
- *
67
- * @param array $meta_boxes The meta boxes being registered.
68
- * @return array
69
- */
70
- $meta_boxes = apply_filters(
71
- 'ot_recognized_post_format_meta_boxes',
72
- array(
73
- ot_meta_box_post_format_gallery(),
74
- ot_meta_box_post_format_link(),
75
- ot_meta_box_post_format_quote(),
76
- ot_meta_box_post_format_video(),
77
- ot_meta_box_post_format_audio(),
78
- )
79
- );
80
-
81
- /**
82
- * Register our meta boxes using the
83
- * ot_register_meta_box() function.
84
- */
85
- foreach ( $meta_boxes as $meta_box ) {
86
- ot_register_meta_box( $meta_box );
87
- }
88
- }
89
-
90
- /**
91
- * Setup pings for the link & quote URLs
92
- *
93
- * @access public
94
- * @since 2.3.0
95
- *
96
- * @param array $post_links The URLs to ping.
97
- * @param array $pung Pinged URLs.
98
- * @param int $post_id Post ID.
99
- */
100
- public function pre_ping_post_links( $post_links, $pung, $post_id = null ) {
101
-
102
- $_link = get_post_meta( $post_id, '_format_link_url', true );
103
- if ( ! empty( $_link ) && ! in_array( $_link, $pung, true ) && ! in_array( $_link, $post_links, true ) ) {
104
- $post_links[] = $_link;
105
- }
106
-
107
- $_quote = get_post_meta( $post_id, '_format_quote_source_url', true );
108
- if ( ! empty( $_quote ) && ! in_array( $_quote, $pung, true ) && ! in_array( $_quote, $post_links, true ) ) {
109
- $post_links[] = $_quote;
110
- }
111
- }
112
- }
113
- }
114
-
115
- /**
116
- * Instantiate The Class.
117
- *
118
- * @since 1.0
119
- */
120
- if ( function_exists( 'ot_register_meta_box' ) ) {
121
- new OT_Post_Formats();
122
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/class-ot-settings.php DELETED
@@ -1,1014 +0,0 @@
1
- <?php
2
- /**
3
- * OptionTree Settings.
4
- *
5
- * @package OptionTree
6
- */
7
-
8
- if ( ! defined( 'OT_VERSION' ) ) {
9
- exit( 'No direct script access allowed' );
10
- }
11
-
12
- if ( ! class_exists( 'OT_Settings' ) ) {
13
-
14
- /**
15
- * OptionTree Settings class.
16
- *
17
- * This class loads all the methods and helpers specific to a Settings page.
18
- */
19
- class OT_Settings {
20
-
21
- /**
22
- * An array of options.
23
- *
24
- * @var array
25
- */
26
- private $options;
27
-
28
- /**
29
- * Page hook for targeting admin page.
30
- *
31
- * @var string
32
- */
33
- private $page_hook;
34
-
35
- /**
36
- * Constructor
37
- *
38
- * @param array $args An array of options.
39
- *
40
- * @access public
41
- * @since 2.0
42
- */
43
- public function __construct( $args ) {
44
-
45
- $this->options = $args;
46
-
47
- // Return early if not viewing an admin page or no options.
48
- if ( ! is_admin() || ! is_array( $this->options ) ) {
49
- return false;
50
- }
51
-
52
- // Load everything.
53
- $this->hooks();
54
- }
55
-
56
- /**
57
- * Execute the WordPress Hooks
58
- *
59
- * @access public
60
- * @since 2.0
61
- */
62
- public function hooks() {
63
-
64
- /**
65
- * Filter the `admin_menu` action hook priority.
66
- *
67
- * @since 2.5.0
68
- *
69
- * @param int $priority The priority. Default '10'.
70
- */
71
- $priority = apply_filters( 'ot_admin_menu_priority', 10 );
72
-
73
- // Add pages & menu items.
74
- add_action( 'admin_menu', array( $this, 'add_page' ), $priority );
75
-
76
- // Register sections.
77
- add_action( 'admin_init', array( $this, 'add_sections' ) );
78
-
79
- // Register settings.
80
- add_action( 'admin_init', array( $this, 'add_settings' ) );
81
-
82
- // Reset options.
83
- add_action( 'admin_init', array( $this, 'reset_options' ), 10 );
84
-
85
- // Initialize settings.
86
- add_action( 'admin_init', array( $this, 'initialize_settings' ), 11 );
87
- }
88
-
89
- /**
90
- * Loads each admin page
91
- *
92
- * @return bool
93
- *
94
- * @access public
95
- * @since 2.0
96
- */
97
- public function add_page() {
98
-
99
- // Loop through options.
100
- foreach ( (array) $this->options as $option ) {
101
-
102
- // Loop through pages.
103
- foreach ( (array) $this->get_pages( $option ) as $page ) {
104
-
105
- /**
106
- * Theme Check... stop nagging me about this kind of stuff.
107
- * The damn admin pages are required for OT to function, duh!
108
- */
109
- $theme_check_bs = 'add_menu_' . 'page'; // phpcs:ignore
110
- $theme_check_bs2 = 'add_submenu_' . 'page'; // phpcs:ignore
111
-
112
- // Load page in WP top level menu.
113
- if ( ! isset( $page['parent_slug'] ) || empty( $page['parent_slug'] ) ) {
114
- $page_hook = $theme_check_bs(
115
- $page['page_title'],
116
- $page['menu_title'],
117
- $page['capability'],
118
- $page['menu_slug'],
119
- array( $this, 'display_page' ),
120
- $page['icon_url'],
121
- $page['position']
122
- );
123
-
124
- // Load page in WP sub menu.
125
- } else {
126
- $page_hook = $theme_check_bs2(
127
- $page['parent_slug'],
128
- $page['page_title'],
129
- $page['menu_title'],
130
- $page['capability'],
131
- $page['menu_slug'],
132
- array( $this, 'display_page' )
133
- );
134
- }
135
-
136
- // Only load if not a hidden page.
137
- if ( ! isset( $page['hidden_page'] ) ) {
138
-
139
- // Associate $page_hook with page id.
140
- $this->page_hook[ $page['id'] ] = $page_hook;
141
-
142
- // Add scripts.
143
- add_action( 'admin_print_scripts-' . $page_hook, array( $this, 'scripts' ) );
144
-
145
- // Add styles.
146
- add_action( 'admin_print_styles-' . $page_hook, array( $this, 'styles' ) );
147
-
148
- // Add contextual help.
149
- add_action( 'load-' . $page_hook, array( $this, 'help' ) );
150
- }
151
- }
152
- }
153
-
154
- return false;
155
- }
156
-
157
- /**
158
- * Loads the scripts
159
- *
160
- * @access public
161
- * @since 2.0
162
- */
163
- public function scripts() {
164
- ot_admin_scripts();
165
- }
166
-
167
- /**
168
- * Loads the styles
169
- *
170
- * @access public
171
- * @since 2.0
172
- */
173
- public function styles() {
174
- ot_admin_styles();
175
- }
176
-
177
- /**
178
- * Loads the contextual help for each page
179
- *
180
- * @return bool
181
- *
182
- * @access public
183
- * @since 2.0
184
- */
185
- public function help() {
186
- $screen = get_current_screen();
187
-
188
- // Loop through options.
189
- foreach ( (array) $this->options as $option ) {
190
-
191
- // Loop through pages.
192
- foreach ( (array) $this->get_pages( $option ) as $page ) {
193
-
194
- // Verify page.
195
- if ( ! isset( $page['hidden_page'] ) && $screen->id === $this->page_hook[ $page['id'] ] ) {
196
-
197
- // Set up the help tabs.
198
- if ( ! empty( $page['contextual_help']['content'] ) ) {
199
- foreach ( $page['contextual_help']['content'] as $contextual_help ) {
200
- $screen->add_help_tab(
201
- array(
202
- 'id' => esc_attr( $contextual_help['id'] ),
203
- 'title' => esc_attr( $contextual_help['title'] ),
204
- 'content' => htmlspecialchars_decode( $contextual_help['content'] ),
205
- )
206
- );
207
- }
208
- }
209
-
210
- // Set up the help sidebar.
211
- if ( ! empty( $page['contextual_help']['sidebar'] ) ) {
212
- $screen->set_help_sidebar( htmlspecialchars_decode( $page['contextual_help']['sidebar'] ) );
213
- }
214
- }
215
- }
216
- }
217
-
218
- return false;
219
- }
220
-
221
- /**
222
- * Loads the content for each page
223
- *
224
- * @access public
225
- * @since 2.0
226
- */
227
- public function display_page() {
228
- $screen = get_current_screen();
229
-
230
- // Loop through settings.
231
- foreach ( (array) $this->options as $option ) {
232
-
233
- // Loop through pages.
234
- foreach ( (array) $this->get_pages( $option ) as $page ) {
235
-
236
- // Verify page.
237
- if ( ! isset( $page['hidden_page'] ) && $screen->id === $this->page_hook[ $page['id'] ] ) {
238
-
239
- $show_buttons = isset( $page['show_buttons'] ) && false === $page['show_buttons'] ? false : true;
240
-
241
- // Update active layout content.
242
- if ( isset( $_REQUEST['settings-updated'] ) && true === filter_var( wp_unslash( $_REQUEST['settings-updated'] ), FILTER_VALIDATE_BOOLEAN ) ) { // phpcs:ignore
243
-
244
- $layouts = get_option( ot_layouts_id() );
245
-
246
- // Has active layout.
247
- if ( isset( $layouts['active_layout'] ) ) {
248
- $option_tree = get_option( $option['id'], array() );
249
- $layouts[ $layouts['active_layout'] ] = ot_encode( $option_tree );
250
- update_option( ot_layouts_id(), $layouts );
251
- }
252
- }
253
-
254
- echo '<div class="wrap settings-wrap" id="page-' . esc_attr( $page['id'] ) . '">';
255
-
256
- echo '<h2>' . wp_kses_post( $page['page_title'] ) . '</h2>';
257
-
258
- echo ot_alert_message( $page ); // phpcs:ignore
259
-
260
- settings_errors( 'option-tree' );
261
-
262
- // Header.
263
- echo '<div id="option-tree-header-wrap">';
264
-
265
- echo '<ul id="option-tree-header">';
266
-
267
- // Add additional theme specific links here.
268
- do_action( 'ot_header_list', $page['id'] );
269
-
270
- echo '</ul>';
271
-
272
- // Layouts form.
273
- if ( 'ot_theme_options' === $page['id'] && true === OT_SHOW_NEW_LAYOUT ) {
274
- ot_theme_options_layouts_form();
275
- }
276
-
277
- echo '</div>';
278
-
279
- // Remove forms on the custom settings pages.
280
- if ( $show_buttons ) {
281
-
282
- echo '<form action="options.php" method="post" id="option-tree-settings-api">';
283
-
284
- settings_fields( $option['id'] );
285
- } else {
286
-
287
- echo '<div id="option-tree-settings-api">';
288
- }
289
-
290
- /* Sub Header */
291
- echo '<div id="option-tree-sub-header">';
292
-
293
-
294
-
295
- if ( $show_buttons )
296
- echo '<button class="option-tree-ui-button button button-primary right">' . $page['button_text'] . '</button>';
297
- echo '<a target="_blank" href="'. get_site_url().'/?get_preview=true"><div class="option-tree-ui-button button right">Live Preview</div></a>';
298
- // $options = get_option('nifty_options');
299
- // if (empty($options['hide_notice']['rate'])) {
300
- // $dismiss_url = add_query_arg(array('action' => 'nifty_dismiss_notice', 'notice' => 'rate', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
301
- // echo '<div id="rate-plugin">Please help us out by rating Nifty. It only takes a second &amp; it helps to keep the plugin going! <b>Thank you!</b><p><a target="_blank" href="https://wordpress.org/support/plugin/nifty-coming-soon-and-under-construction-page/reviews/#new-post" class="button button-primary">I want to help! Let\'s rate the plugin!</a> &nbsp;&nbsp; <a href="' . $dismiss_url . '">I\'ve already rated Nifty</a></p></div>';
302
- // }
303
-
304
- echo '</div>';
305
-
306
- // Navigation.
307
- echo '<div class="ui-tabs">';
308
-
309
- // Check for sections.
310
- if ( isset( $page['sections'] ) && 0 < count( $page['sections'] ) ) {
311
-
312
- echo '<ul class="ui-tabs-nav">';
313
-
314
- // Loop through page sections.
315
- foreach ( (array) $page['sections'] as $section ) {
316
- echo '<li id="tab_' . esc_attr( $section['id'] ) . '"><a href="#section_' . esc_attr( $section['id'] ) . '">' . wp_kses_post( $section['title'] ) . '</a></li>';
317
- }
318
-
319
- echo '</ul>';
320
- }
321
-
322
- // Sections.
323
- echo '<div id="poststuff" class="metabox-holder">';
324
-
325
- echo '<div id="post-body">';
326
-
327
- echo '<div id="post-body-content">';
328
-
329
- $this->do_settings_sections( isset( $_GET['page'] ) ? $_GET['page'] : '' ); // phpcs:ignore
330
-
331
- echo '</div>';
332
-
333
- echo '</div>';
334
-
335
- echo '</div>';
336
-
337
- echo '<div class="clear"></div>';
338
-
339
- echo '</div>';
340
-
341
- // Buttons.
342
- if ( $show_buttons ) {
343
-
344
- echo '<div class="option-tree-ui-buttons">';
345
-
346
- echo '<button class="option-tree-ui-button button button-primary right">' . esc_html( $page['button_text'] ) . '</button>';
347
-
348
- echo '</div>';
349
- }
350
-
351
- echo $show_buttons ? '</form>' : '</div>';
352
-
353
- // Reset button.
354
- if ( $show_buttons ) {
355
-
356
- echo '<form method="post" action="' . esc_url_raw( str_replace( '&settings-updated=true', '', $_SERVER['REQUEST_URI'] ) ) . '">'; // phpcs:ignore
357
-
358
- // Form nonce.
359
- wp_nonce_field( 'option_tree_reset_form', 'option_tree_reset_nonce' );
360
-
361
- echo '<input type="hidden" name="action" value="reset" />';
362
-
363
- echo '<button type="submit" class="option-tree-ui-button button button-secondary left reset-settings" title="' . esc_html__( 'Reset Options', 'option-tree' ) . '">' . esc_html__( 'Reset Options', 'option-tree' ) . '</button>';
364
-
365
- echo '</form>';
366
- }
367
-
368
- echo '</div>';
369
- }
370
- }
371
- }
372
-
373
- return false;
374
- }
375
-
376
- /**
377
- * Adds sections to the page
378
- *
379
- * @return bool
380
- *
381
- * @access public
382
- * @since 2.0
383
- */
384
- public function add_sections() {
385
-
386
- // Loop through options.
387
- foreach ( (array) $this->options as $option ) {
388
-
389
- // Loop through pages.
390
- foreach ( (array) $this->get_pages( $option ) as $page ) {
391
-
392
- // Loop through page sections.
393
- foreach ( (array) $this->get_sections( $page ) as $section ) {
394
-
395
- // Add each section.
396
- add_settings_section(
397
- $section['id'],
398
- $section['title'],
399
- array( $this, 'display_section' ),
400
- $page['menu_slug']
401
- );
402
-
403
- }
404
- }
405
- }
406
-
407
- return false;
408
- }
409
-
410
- /**
411
- * Callback for add_settings_section()
412
- *
413
- * @access public
414
- * @since 2.0
415
- */
416
- public function display_section() {
417
- /* currently pointless */
418
- }
419
-
420
- /**
421
- * Add settings the the page
422
- *
423
- * @return bool
424
- *
425
- * @access public
426
- * @since 2.0
427
- */
428
- public function add_settings() {
429
-
430
- // Loop through options.
431
- foreach ( (array) $this->options as $option ) {
432
-
433
- register_setting( $option['id'], $option['id'], array( $this, 'sanitize_callback' ) );
434
-
435
- // Loop through pages.
436
- foreach ( (array) $this->get_pages( $option ) as $page ) {
437
-
438
- // Loop through page settings.
439
- foreach ( (array) $this->get_the_settings( $page ) as $setting ) {
440
-
441
- // Skip if missing setting ID, label, or section.
442
- if ( ! isset( $setting['id'] ) || ! isset( $setting['label'] ) || ! isset( $setting['section'] ) ) {
443
- continue;
444
- }
445
-
446
- // Add get_option param to the array.
447
- $setting['get_option'] = $option['id'];
448
-
449
- // Add each setting.
450
- add_settings_field(
451
- $setting['id'],
452
- $setting['label'],
453
- array( $this, 'display_setting' ),
454
- $page['menu_slug'],
455
- $setting['section'],
456
- $setting
457
- );
458
- }
459
- }
460
- }
461
-
462
- return false;
463
- }
464
-
465
- /**
466
- * Callback for add_settings_field() to build each setting by type
467
- *
468
- * @param array $args Setting object array.
469
- *
470
- * @access public
471
- * @since 2.0
472
- */
473
- public function display_setting( $args = array() ) {
474
- extract( $args ); // phpcs:ignore
475
-
476
- // Get current saved data.
477
- $options = get_option( $get_option, false );
478
-
479
- // Set field value.
480
- $field_value = isset( $options[ $id ] ) ? $options[ $id ] : '';
481
-
482
- // Set standard value.
483
- if ( isset( $std ) ) {
484
- $field_value = ot_filter_std_value( $field_value, $std );
485
- }
486
-
487
- // Allow the descriptions to be filtered before being displayed.
488
- $desc = apply_filters( 'ot_filter_description', ( isset( $desc ) ? $desc : '' ), $id );
489
-
490
- // Build the arguments array.
491
- $_args = array(
492
- 'type' => $type,
493
- 'field_id' => $id,
494
- 'field_name' => $get_option . '[' . $id . ']',
495
- 'field_value' => $field_value,
496
- 'field_desc' => $desc,
497
- 'field_std' => isset( $std ) ? $std : '',
498
- 'field_rows' => isset( $rows ) && ! empty( $rows ) ? $rows : 15,
499
- 'field_post_type' => isset( $post_type ) && ! empty( $post_type ) ? $post_type : 'post',
500
- 'field_taxonomy' => isset( $taxonomy ) && ! empty( $taxonomy ) ? $taxonomy : 'category',
501
- 'field_min_max_step' => isset( $min_max_step ) && ! empty( $min_max_step ) ? $min_max_step : '0,100,1',
502
- 'field_condition' => isset( $condition ) && ! empty( $condition ) ? $condition : '',
503
- 'field_operator' => isset( $operator ) && ! empty( $operator ) ? $operator : 'and',
504
- 'field_class' => isset( $class ) ? $class : '',
505
- 'field_choices' => isset( $choices ) && ! empty( $choices ) ? $choices : array(),
506
- 'field_settings' => isset( $settings ) && ! empty( $settings ) ? $settings : array(),
507
- 'post_id' => ot_get_media_post_ID(),
508
- 'get_option' => $get_option,
509
- );
510
-
511
- // Limit DB queries for Google Fonts.
512
- if ( 'google-fonts' === $type ) {
513
- ot_fetch_google_fonts();
514
- ot_set_google_fonts( $id, $field_value );
515
- }
516
-
517
- // Get the option HTML.
518
- echo ot_display_by_type( $_args ); // phpcs:ignore
519
- }
520
-
521
- /**
522
- * Sets the option standards if nothing yet exists.
523
- *
524
- * @access public
525
- * @since 2.0
526
- */
527
- public function initialize_settings() {
528
-
529
- // Loop through options.
530
- foreach ( (array) $this->options as $option ) {
531
-
532
- // Skip if option is already set.
533
- if ( isset( $option['id'] ) && get_option( $option['id'], false ) ) {
534
- return false;
535
- }
536
-
537
- $defaults = array();
538
-
539
- // Loop through pages.
540
- foreach ( (array) $this->get_pages( $option ) as $page ) {
541
-
542
- // Loop through page settings.
543
- foreach ( (array) $this->get_the_settings( $page ) as $setting ) {
544
-
545
- if ( isset( $setting['std'] ) ) {
546
-
547
- $defaults[ $setting['id'] ] = ot_validate_setting( $setting['std'], $setting['type'], $setting['id'] );
548
- }
549
- }
550
- }
551
-
552
- update_option( $option['id'], $defaults );
553
- }
554
-
555
- return false;
556
- }
557
-
558
- /**
559
- * Sanitize callback for register_setting()
560
- *
561
- * @param mixed $input The setting input.
562
- * @return string
563
- *
564
- * @access public
565
- * @since 2.0
566
- */
567
- public function sanitize_callback( $input ) {
568
-
569
- // Store the post global for use later.
570
- $post_global = $_POST; // phpcs:ignore
571
-
572
- // Loop through options.
573
- foreach ( (array) $this->options as $option ) {
574
-
575
- // Loop through pages.
576
- foreach ( (array) $this->get_pages( $option ) as $page ) {
577
-
578
- // Loop through page settings.
579
- foreach ( (array) $this->get_the_settings( $page ) as $setting ) {
580
-
581
- // Verify setting has a type & value.
582
- if ( isset( $setting['type'] ) && isset( $input[ $setting['id'] ] ) ) {
583
-
584
- // Get the defaults.
585
- $current_settings = get_option( ot_settings_id() );
586
- $current_options = get_option( $option['id'] );
587
-
588
- // Validate setting.
589
- if ( is_array( $input[ $setting['id'] ] ) && in_array( $setting['type'], array( 'list-item', 'slider' ), true ) ) {
590
-
591
- // Required title setting.
592
- $required_setting = array(
593
- array(
594
- 'id' => 'title',
595
- 'label' => __( 'Title', 'option-tree' ),
596
- 'desc' => '',
597
- 'std' => '',
598
- 'type' => 'text',
599
- 'rows' => '',
600
- 'class' => 'option-tree-setting-title',
601
- 'post_type' => '',
602
- 'choices' => array(),
603
- ),
604
- );
605
-
606
- // Convert the settings to an array.
607
- $settings = isset( $post_global[ $setting['id'] . '_settings_array' ] ) ? ot_decode( $post_global[ $setting['id'] . '_settings_array' ] ) : array();
608
-
609
- // Settings are empty for some odd reason get the defaults.
610
- if ( empty( $settings ) ) {
611
- $settings = 'slider' === $setting['type'] ? ot_slider_settings( $setting['id'] ) : ot_list_item_settings( $setting['id'] );
612
- }
613
-
614
- // Merge the two settings arrays.
615
- $settings = array_merge( $required_setting, $settings );
616
-
617
- // Create an empty WPML id array.
618
- $wpml_ids = array();
619
-
620
- foreach ( $input[ $setting['id'] ] as $k => $setting_array ) {
621
-
622
- $has_value = false;
623
- foreach ( $settings as $sub_setting ) {
624
-
625
- // Setup the WPML ID.
626
- $wpml_id = $setting['id'] . '_' . $sub_setting['id'] . '_' . $k;
627
-
628
- // Add id to array.
629
- $wpml_ids[] = $wpml_id;
630
-
631
- /* verify sub setting has a type & value */
632
- if ( isset( $sub_setting['type'] ) && isset( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] ) ) {
633
-
634
- // Validate setting.
635
- $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] = ot_validate_setting( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ], $sub_setting['type'], $sub_setting['id'], $wpml_id );
636
- $has_value = true;
637
- }
638
- }
639
-
640
- if ( ! $has_value ) {
641
- unset( $input[ $setting['id'] ][ $k ] );
642
- }
643
- }
644
- } elseif ( is_array( $input[ $setting['id'] ] ) && 'social-links' === $setting['type'] ) {
645
-
646
- // Convert the settings to an array.
647
- $settings = isset( $post_global[ $setting['id'] . '_settings_array' ] ) ? ot_decode( $post_global[ $setting['id'] . '_settings_array' ] ) : array();
648
-
649
- // Settings are empty get the defaults.
650
- if ( empty( $settings ) ) {
651
- $settings = ot_social_links_settings( $setting['id'] );
652
- }
653
-
654
- // Create an empty WPML id array.
655
- $wpml_ids = array();
656
-
657
- foreach ( $input[ $setting['id'] ] as $k => $setting_array ) {
658
-
659
- $has_value = false;
660
- foreach ( $settings as $sub_setting ) {
661
-
662
- // Setup the WPML ID.
663
- $wpml_id = $setting['id'] . '_' . $sub_setting['id'] . '_' . $k;
664
-
665
- // Add id to array.
666
- $wpml_ids[] = $wpml_id;
667
-
668
- // Verify sub setting has a type & value.
669
- if ( isset( $sub_setting['type'] ) && isset( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] ) ) {
670
-
671
- if ( 'href' === $sub_setting['id'] ) {
672
- $sub_setting['type'] = 'url';
673
- }
674
-
675
- // Validate setting.
676
- $input_safe = ot_validate_setting( $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ], $sub_setting['type'], $sub_setting['id'], $wpml_id );
677
-
678
- if ( ! empty( $input_safe ) ) {
679
- $input[ $setting['id'] ][ $k ][ $sub_setting['id'] ] = $input_safe;
680
- $has_value = true;
681
- }
682
- }
683
- }
684
-
685
- if ( ! $has_value ) {
686
- unset( $input[ $setting['id'] ][ $k ] );
687
- }
688
- }
689
- } else {
690
- $input[ $setting['id'] ] = ot_validate_setting( $input[ $setting['id'] ], $setting['type'], $setting['id'], $setting['id'] );
691
- }
692
- }
693
-
694
- // Unregister WPML strings that were deleted from lists and sliders.
695
- if ( isset( $current_settings['settings'] ) && isset( $setting['type'] ) && in_array( $setting['type'], array( 'list-item', 'slider' ), true ) ) {
696
-
697
- if ( ! isset( $wpml_ids ) ) {
698
- $wpml_ids = array();
699
- }
700
-
701
- foreach ( $current_settings['settings'] as $check_setting ) {
702
-
703
- if ( $setting['id'] === $check_setting['id'] && ! empty( $current_options[ $setting['id'] ] ) ) {
704
-
705
- foreach ( $current_options[ $setting['id'] ] as $key => $value ) {
706
-
707
- foreach ( $value as $ckey => $cvalue ) {
708
-
709
- $id = $setting['id'] . '_' . $ckey . '_' . $key;
710
-
711
- if ( ! in_array( $id, $wpml_ids, true ) ) {
712
- ot_wpml_unregister_string( $id );
713
- }
714
- }
715
- }
716
- }
717
- }
718
- }
719
-
720
- /* unregister WPML strings that were deleted from social links */
721
- if ( isset( $current_settings['settings'] ) && isset( $setting['type'] ) && 'social-links' === $setting['type'] ) {
722
-
723
- if ( ! isset( $wpml_ids ) ) {
724
- $wpml_ids = array();
725
- }
726
-
727
- foreach ( $current_settings['settings'] as $check_setting ) {
728
-
729
- if ( $setting['id'] === $check_setting['id'] && ! empty( $current_options[ $setting['id'] ] ) ) {
730
-
731
- foreach ( $current_options[ $setting['id'] ] as $key => $value ) {
732
-
733
- foreach ( $value as $ckey => $cvalue ) {
734
-
735
- $id = $setting['id'] . '_' . $ckey . '_' . $key;
736
-
737
- if ( ! in_array( $id, $wpml_ids, true ) ) {
738
- ot_wpml_unregister_string( $id );
739
- }
740
- }
741
- }
742
- }
743
- }
744
- }
745
- }
746
- }
747
- }
748
-
749
- return $input;
750
- }
751
-
752
- /**
753
- * Helper function to get the pages array for an option
754
- *
755
- * @param array $option Option array.
756
- * @return mixed
757
- *
758
- * @access public
759
- * @since 2.0
760
- */
761
- public function get_pages( $option = array() ) {
762
-
763
- if ( empty( $option ) ) {
764
- return false;
765
- }
766
-
767
- // Check for pages.
768
- if ( isset( $option['pages'] ) && ! empty( $option['pages'] ) ) {
769
-
770
- // Return pages array.
771
- return $option['pages'];
772
-
773
- }
774
-
775
- return false;
776
- }
777
-
778
- /**
779
- * Helper function to get the sections array for a page
780
- *
781
- * @param array $page Page array.
782
- * @return mixed
783
- *
784
- * @access public
785
- * @since 2.0
786
- */
787
- public function get_sections( $page = array() ) {
788
-
789
- if ( empty( $page ) ) {
790
- return false;
791
- }
792
-
793
- // Check for sections.
794
- if ( isset( $page['sections'] ) && ! empty( $page['sections'] ) ) {
795
-
796
- // Return sections array.
797
- return $page['sections'];
798
-
799
- }
800
-
801
- return false;
802
- }
803
-
804
- /**
805
- * Helper function to get the settings array for a page
806
- *
807
- * @param array $page Page array.
808
- * @return mixed
809
- *
810
- * @access public
811
- * @since 2.0
812
- */
813
- public function get_the_settings( $page = array() ) {
814
-
815
- if ( empty( $page ) ) {
816
- return false;
817
- }
818
-
819
- /* check for settings */
820
- if ( isset( $page['settings'] ) && ! empty( $page['settings'] ) ) {
821
-
822
- /* return settings array */
823
- return $page['settings'];
824
-
825
- }
826
-
827
- return false;
828
- }
829
-
830
- /**
831
- * Prints out all settings sections added to a particular settings page
832
- *
833
- * @global $wp_settings_sections Storage array of all settings sections added to admin pages.
834
- * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections.
835
- *
836
- * @param string $page The slug name of the page whos settings sections you want to output.
837
- * @return string
838
- *
839
- * @access public
840
- * @since 2.0
841
- */
842
- public function do_settings_sections( $page ) {
843
- global $wp_settings_sections, $wp_settings_fields;
844
-
845
- if ( ! isset( $wp_settings_sections ) || ! isset( $wp_settings_sections[ $page ] ) ) {
846
- return false;
847
- }
848
-
849
- foreach ( (array) $wp_settings_sections[ $page ] as $section ) {
850
-
851
- if ( ! isset( $section['id'] ) ) {
852
- continue;
853
- }
854
-
855
- $section_id = $section['id'];
856
-
857
- echo '<div id="section_' . esc_attr( $section_id ) . '" class="postbox ui-tabs-panel">';
858
-
859
- call_user_func( $section['callback'], $section );
860
-
861
- if ( ! isset( $wp_settings_fields ) || ! isset( $wp_settings_fields[ $page ] ) || ! isset( $wp_settings_fields[ $page ][ $section_id ] ) ) {
862
- continue;
863
- }
864
-
865
- echo '<div class="inside">';
866
-
867
- /**
868
- * Hook to insert arbitrary markup before the `do_settings_fields` method.
869
- *
870
- * @since 2.6.0
871
- *
872
- * @param string $page The page slug.
873
- * @param string $section_id The section ID.
874
- */
875
- do_action( 'ot_do_settings_fields_before', $page, $section_id );
876
-
877
- $this->do_settings_fields( $page, $section_id );
878
-
879
- /**
880
- * Hook to insert arbitrary markup after the `do_settings_fields` method.
881
- *
882
- * @since 2.6.0
883
- *
884
- * @param string $page The page slug.
885
- * @param string $section_id The section ID.
886
- */
887
- do_action( 'ot_do_settings_fields_after', $page, $section_id );
888
-
889
- echo '</div>';
890
-
891
- echo '</div>';
892
- }
893
-
894
- }
895
-
896
- /**
897
- * Print out the settings fields for a particular settings section
898
- *
899
- * @global $wp_settings_fields Storage array of settings fields and their pages/sections
900
- *
901
- * @param string $page Slug title of the admin page who's settings fields you want to show.
902
- * @param string $section Slug title of the settings section who's fields you want to show.
903
- * @return string
904
- *
905
- * @access public
906
- * @since 2.0
907
- */
908
- public function do_settings_fields( $page, $section ) {
909
- global $wp_settings_fields;
910
-
911
- if ( ! isset( $wp_settings_fields ) || ! isset( $wp_settings_fields[ $page ] ) || ! isset( $wp_settings_fields[ $page ][ $section ] ) ) {
912
- return;
913
- }
914
-
915
- foreach ( (array) $wp_settings_fields[ $page ][ $section ] as $field ) {
916
-
917
- $conditions = '';
918
-
919
- if ( isset( $field['args']['condition'] ) && ! empty( $field['args']['condition'] ) ) {
920
-
921
- $conditions = ' data-condition="' . esc_attr( $field['args']['condition'] ) . '"';
922
- $conditions .= isset( $field['args']['operator'] ) && in_array( $field['args']['operator'], array( 'and', 'AND', 'or', 'OR' ), true ) ? ' data-operator="' . esc_attr( $field['args']['operator'] ) . '"' : '';
923
- }
924
-
925
- // Build the setting CSS class.
926
- if ( isset( $field['args']['class'] ) && ! empty( $field['args']['class'] ) ) {
927
-
928
- $classes = explode( ' ', $field['args']['class'] );
929
-
930
- foreach ( $classes as $key => $value ) {
931
- $classes[ $key ] = $value . '-wrap';
932
- }
933
-
934
- $class = 'format-settings ' . implode( ' ', $classes );
935
- } else {
936
-
937
- $class = 'format-settings';
938
- }
939
-
940
- echo '<div id="setting_' . esc_attr( $field['id'] ) . '" class="' . esc_attr( $class ) . '"' . $conditions . '>'; // phpcs:ignore
941
-
942
- echo '<div class="format-setting-wrap">';
943
-
944
- if ( 'textblock' !== $field['args']['type'] && ! empty( $field['title'] ) ) {
945
-
946
- echo '<div class="format-setting-label">';
947
-
948
- echo '<h3 class="label">' . wp_kses_post( $field['title'] ) . '</h3>';
949
-
950
- echo '</div>';
951
- }
952
-
953
- call_user_func( $field['callback'], $field['args'] );
954
-
955
- echo '</div>';
956
-
957
- echo '</div>';
958
- }
959
- }
960
-
961
- /**
962
- * Resets page options before the screen is displayed
963
- *
964
- * @access public
965
- * @since 2.0
966
- *
967
- * @return bool
968
- */
969
- public function reset_options() {
970
-
971
- // Check for reset action.
972
- if ( isset( $_POST['option_tree_reset_nonce'] ) && wp_verify_nonce( $_POST['option_tree_reset_nonce'], 'option_tree_reset_form' ) ) { // phpcs:ignore
973
-
974
- // Loop through options.
975
- foreach ( (array) $this->options as $option ) {
976
-
977
- // Loop through pages.
978
- foreach ( (array) $this->get_pages( $option ) as $page ) {
979
-
980
- // Verify page.
981
- if ( isset( $_GET['page'] ) && $_GET['page'] === $page['menu_slug'] ) {
982
-
983
- // Reset options.
984
- delete_option( $option['id'] );
985
- }
986
- }
987
- }
988
- }
989
- return false;
990
- }
991
- }
992
-
993
- }
994
-
995
- if ( ! function_exists( 'ot_register_settings' ) ) {
996
-
997
- /**
998
- * This method instantiates the settings class & builds the UI.
999
- *
1000
- * @uses OT_Settings()
1001
- *
1002
- * @param array $args Array of arguments to create settings.
1003
- *
1004
- * @access public
1005
- * @since 2.0
1006
- */
1007
- function ot_register_settings( $args ) {
1008
- if ( ! $args ) {
1009
- return;
1010
- }
1011
-
1012
- new OT_Settings( $args );
1013
- }
1014
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/google-fonts.php DELETED
@@ -1,5961 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * Get Google Webfonts List
5
- * https://www.googleapis.com/webfonts/v1/webfonts?key=YOUR-API-KEY
6
- *
7
- */
8
-
9
- function nifty_cs_get_google_webfonts(){
10
-
11
- $google_webfonts = '{
12
- "kind": "webfonts#webfontList",
13
- "items": [
14
- {
15
- "kind": "webfonts#webfont",
16
- "family": "Abel",
17
- "variants": [
18
- "regular"
19
- ],
20
- "subsets": [
21
- "latin"
22
- ]
23
- },
24
- {
25
- "kind": "webfonts#webfont",
26
- "family": "Abril Fatface",
27
- "variants": [
28
- "regular"
29
- ],
30
- "subsets": [
31
- "latin",
32
- "latin-ext"
33
- ]
34
- },
35
- {
36
- "kind": "webfonts#webfont",
37
- "family": "Aclonica",
38
- "variants": [
39
- "regular"
40
- ],
41
- "subsets": [
42
- "latin"
43
- ]
44
- },
45
- {
46
- "kind": "webfonts#webfont",
47
- "family": "Acme",
48
- "variants": [
49
- "regular"
50
- ],
51
- "subsets": [
52
- "latin"
53
- ]
54
- },
55
- {
56
- "kind": "webfonts#webfont",
57
- "family": "Actor",
58
- "variants": [
59
- "regular"
60
- ],
61
- "subsets": [
62
- "latin"
63
- ]
64
- },
65
- {
66
- "kind": "webfonts#webfont",
67
- "family": "Adamina",
68
- "variants": [
69
- "regular"
70
- ],
71
- "subsets": [
72
- "latin"
73
- ]
74
- },
75
- {
76
- "kind": "webfonts#webfont",
77
- "family": "Advent Pro",
78
- "variants": [
79
- "100",
80
- "200",
81
- "300",
82
- "regular",
83
- "500",
84
- "600",
85
- "700"
86
- ],
87
- "subsets": [
88
- "latin",
89
- "latin-ext",
90
- "greek"
91
- ]
92
- },
93
- {
94
- "kind": "webfonts#webfont",
95
- "family": "Aguafina Script",
96
- "variants": [
97
- "regular"
98
- ],
99
- "subsets": [
100
- "latin",
101
- "latin-ext"
102
- ]
103
- },
104
- {
105
- "kind": "webfonts#webfont",
106
- "family": "Aladin",
107
- "variants": [
108
- "regular"
109
- ],
110
- "subsets": [
111
- "latin",
112
- "latin-ext"
113
- ]
114
- },
115
- {
116
- "kind": "webfonts#webfont",
117
- "family": "Aldrich",
118
- "variants": [
119
- "regular"
120
- ],
121
- "subsets": [
122
- "latin"
123
- ]
124
- },
125
- {
126
- "kind": "webfonts#webfont",
127
- "family": "Alegreya",
128
- "variants": [
129
- "regular",
130
- "italic",
131
- "700",
132
- "700italic",
133
- "900",
134
- "900italic"
135
- ],
136
- "subsets": [
137
- "latin",
138
- "latin-ext"
139
- ]
140
- },
141
- {
142
- "kind": "webfonts#webfont",
143
- "family": "Alegreya SC",
144
- "variants": [
145
- "regular",
146
- "italic",
147
- "700",
148
- "700italic",
149
- "900",
150
- "900italic"
151
- ],
152
- "subsets": [
153
- "latin",
154
- "latin-ext"
155
- ]
156
- },
157
- {
158
- "kind": "webfonts#webfont",
159
- "family": "Alex Brush",
160
- "variants": [
161
- "regular"
162
- ],
163
- "subsets": [
164
- "latin",
165
- "latin-ext"
166
- ]
167
- },
168
- {
169
- "kind": "webfonts#webfont",
170
- "family": "Alfa Slab One",
171
- "variants": [
172
- "regular"
173
- ],
174
- "subsets": [
175
- "latin"
176
- ]
177
- },
178
- {
179
- "kind": "webfonts#webfont",
180
- "family": "Alice",
181
- "variants": [
182
- "regular"
183
- ],
184
- "subsets": [
185
- "latin"
186
- ]
187
- },
188
- {
189
- "kind": "webfonts#webfont",
190
- "family": "Alike",
191
- "variants": [
192
- "regular"
193
- ],
194
- "subsets": [
195
- "latin"
196
- ]
197
- },
198
- {
199
- "kind": "webfonts#webfont",
200
- "family": "Alike Angular",
201
- "variants": [
202
- "regular"
203
- ],
204
- "subsets": [
205
- "latin"
206
- ]
207
- },
208
- {
209
- "kind": "webfonts#webfont",
210
- "family": "Allan",
211
- "variants": [
212
- "700"
213
- ],
214
- "subsets": [
215
- "latin"
216
- ]
217
- },
218
- {
219
- "kind": "webfonts#webfont",
220
- "family": "Allerta",
221
- "variants": [
222
- "regular"
223
- ],
224
- "subsets": [
225
- "latin"
226
- ]
227
- },
228
- {
229
- "kind": "webfonts#webfont",
230
- "family": "Allerta Stencil",
231
- "variants": [
232
- "regular"
233
- ],
234
- "subsets": [
235
- "latin"
236
- ]
237
- },
238
- {
239
- "kind": "webfonts#webfont",
240
- "family": "Allura",
241
- "variants": [
242
- "regular"
243
- ],
244
- "subsets": [
245
- "latin",
246
- "latin-ext"
247
- ]
248
- },
249
- {
250
- "kind": "webfonts#webfont",
251
- "family": "Almendra",
252
- "variants": [
253
- "regular",
254
- "italic",
255
- "700"
256
- ],
257
- "subsets": [
258
- "latin",
259
- "latin-ext"
260
- ]
261
- },
262
- {
263
- "kind": "webfonts#webfont",
264
- "family": "Almendra SC",
265
- "variants": [
266
- "regular"
267
- ],
268
- "subsets": [
269
- "latin"
270
- ]
271
- },
272
- {
273
- "kind": "webfonts#webfont",
274
- "family": "Amarante",
275
- "variants": [
276
- "regular"
277
- ],
278
- "subsets": [
279
- "latin",
280
- "latin-ext"
281
- ]
282
- },
283
- {
284
- "kind": "webfonts#webfont",
285
- "family": "Amaranth",
286
- "variants": [
287
- "regular",
288
- "italic",
289
- "700",
290
- "700italic"
291
- ],
292
- "subsets": [
293
- "latin"
294
- ]
295
- },
296
- {
297
- "kind": "webfonts#webfont",
298
- "family": "Amatic SC",
299
- "variants": [
300
- "regular",
301
- "700"
302
- ],
303
- "subsets": [
304
- "latin"
305
- ]
306
- },
307
- {
308
- "kind": "webfonts#webfont",
309
- "family": "Amethysta",
310
- "variants": [
311
- "regular"
312
- ],
313
- "subsets": [
314
- "latin"
315
- ]
316
- },
317
- {
318
- "kind": "webfonts#webfont",
319
- "family": "Andada",
320
- "variants": [
321
- "regular"
322
- ],
323
- "subsets": [
324
- "latin",
325
- "latin-ext"
326
- ]
327
- },
328
- {
329
- "kind": "webfonts#webfont",
330
- "family": "Andika",
331
- "variants": [
332
- "regular"
333
- ],
334
- "subsets": [
335
- "latin",
336
- "cyrillic-ext",
337
- "latin-ext",
338
- "cyrillic"
339
- ]
340
- },
341
- {
342
- "kind": "webfonts#webfont",
343
- "family": "Angkor",
344
- "variants": [
345
- "regular"
346
- ],
347
- "subsets": [
348
- "khmer"
349
- ]
350
- },
351
- {
352
- "kind": "webfonts#webfont",
353
- "family": "Annie Use Your Telescope",
354
- "variants": [
355
- "regular"
356
- ],
357
- "subsets": [
358
- "latin"
359
- ]
360
- },
361
- {
362
- "kind": "webfonts#webfont",
363
- "family": "Anonymous Pro",
364
- "variants": [
365
- "regular",
366
- "italic",
367
- "700",
368
- "700italic"
369
- ],
370
- "subsets": [
371
- "greek-ext",
372
- "latin",
373
- "cyrillic-ext",
374
- "latin-ext",
375
- "cyrillic",
376
- "greek"
377
- ]
378
- },
379
- {
380
- "kind": "webfonts#webfont",
381
- "family": "Antic",
382
- "variants": [
383
- "regular"
384
- ],
385
- "subsets": [
386
- "latin"
387
- ]
388
- },
389
- {
390
- "kind": "webfonts#webfont",
391
- "family": "Antic Didone",
392
- "variants": [
393
- "regular"
394
- ],
395
- "subsets": [
396
- "latin"
397
- ]
398
- },
399
- {
400
- "kind": "webfonts#webfont",
401
- "family": "Antic Slab",
402
- "variants": [
403
- "regular"
404
- ],
405
- "subsets": [
406
- "latin"
407
- ]
408
- },
409
- {
410
- "kind": "webfonts#webfont",
411
- "family": "Anton",
412
- "variants": [
413
- "regular"
414
- ],
415
- "subsets": [
416
- "latin",
417
- "latin-ext"
418
- ]
419
- },
420
- {
421
- "kind": "webfonts#webfont",
422
- "family": "Arapey",
423
- "variants": [
424
- "regular",
425
- "italic"
426
- ],
427
- "subsets": [
428
- "latin"
429
- ]
430
- },
431
- {
432
- "kind": "webfonts#webfont",
433
- "family": "Arbutus",
434
- "variants": [
435
- "regular"
436
- ],
437
- "subsets": [
438
- "latin",
439
- "latin-ext"
440
- ]
441
- },
442
- {
443
- "kind": "webfonts#webfont",
444
- "family": "Architects Daughter",
445
- "variants": [
446
- "regular"
447
- ],
448
- "subsets": [
449
- "latin"
450
- ]
451
- },
452
- {
453
- "kind": "webfonts#webfont",
454
- "family": "Arimo",
455
- "variants": [
456
- "regular",
457
- "italic",
458
- "700",
459
- "700italic"
460
- ],
461
- "subsets": [
462
- "latin"
463
- ]
464
- },
465
- {
466
- "kind": "webfonts#webfont",
467
- "family": "Arizonia",
468
- "variants": [
469
- "regular"
470
- ],
471
- "subsets": [
472
- "latin",
473
- "latin-ext"
474
- ]
475
- },
476
- {
477
- "kind": "webfonts#webfont",
478
- "family": "Armata",
479
- "variants": [
480
- "regular"
481
- ],
482
- "subsets": [
483
- "latin",
484
- "latin-ext"
485
- ]
486
- },
487
- {
488
- "kind": "webfonts#webfont",
489
- "family": "Artifika",
490
- "variants": [
491
- "regular"
492
- ],
493
- "subsets": [
494
- "latin"
495
- ]
496
- },
497
- {
498
- "kind": "webfonts#webfont",
499
- "family": "Arvo",
500
- "variants": [
501
- "regular",
502
- "italic",
503
- "700",
504
- "700italic"
505
- ],
506
- "subsets": [
507
- "latin"
508
- ]
509
- },
510
- {
511
- "kind": "webfonts#webfont",
512
- "family": "Asap",
513
- "variants": [
514
- "regular",
515
- "italic",
516
- "700",
517
- "700italic"
518
- ],
519
- "subsets": [
520
- "latin",
521
- "latin-ext"
522
- ]
523
- },
524
- {
525
- "kind": "webfonts#webfont",
526
- "family": "Asset",
527
- "variants": [
528
- "regular"
529
- ],
530
- "subsets": [
531
- "latin"
532
- ]
533
- },
534
- {
535
- "kind": "webfonts#webfont",
536
- "family": "Astloch",
537
- "variants": [
538
- "regular",
539
- "700"
540
- ],
541
- "subsets": [
542
- "latin"
543
- ]
544
- },
545
- {
546
- "kind": "webfonts#webfont",
547
- "family": "Asul",
548
- "variants": [
549
- "regular",
550
- "700"
551
- ],
552
- "subsets": [
553
- "latin"
554
- ]
555
- },
556
- {
557
- "kind": "webfonts#webfont",
558
- "family": "Atomic Age",
559
- "variants": [
560
- "regular"
561
- ],
562
- "subsets": [
563
- "latin"
564
- ]
565
- },
566
- {
567
- "kind": "webfonts#webfont",
568
- "family": "Aubrey",
569
- "variants": [
570
- "regular"
571
- ],
572
- "subsets": [
573
- "latin"
574
- ]
575
- },
576
- {
577
- "kind": "webfonts#webfont",
578
- "family": "Audiowide",
579
- "variants": [
580
- "regular"
581
- ],
582
- "subsets": [
583
- "latin",
584
- "latin-ext"
585
- ]
586
- },
587
- {
588
- "kind": "webfonts#webfont",
589
- "family": "Average",
590
- "variants": [
591
- "regular"
592
- ],
593
- "subsets": [
594
- "latin",
595
- "latin-ext"
596
- ]
597
- },
598
- {
599
- "kind": "webfonts#webfont",
600
- "family": "Averia Gruesa Libre",
601
- "variants": [
602
- "regular"
603
- ],
604
- "subsets": [
605
- "latin",
606
- "latin-ext"
607
- ]
608
- },
609
- {
610
- "kind": "webfonts#webfont",
611
- "family": "Averia Libre",
612
- "variants": [
613
- "300",
614
- "300italic",
615
- "regular",
616
- "italic",
617
- "700",
618
- "700italic"
619
- ],
620
- "subsets": [
621
- "latin"
622
- ]
623
- },
624
- {
625
- "kind": "webfonts#webfont",
626
- "family": "Averia Sans Libre",
627
- "variants": [
628
- "300",
629
- "300italic",
630
- "regular",
631
- "italic",
632
- "700",
633
- "700italic"
634
- ],
635
- "subsets": [
636
- "latin"
637
- ]
638
- },
639
- {
640
- "kind": "webfonts#webfont",
641
- "family": "Averia Serif Libre",
642
- "variants": [
643
- "300",
644
- "300italic",
645
- "regular",
646
- "italic",
647
- "700",
648
- "700italic"
649
- ],
650
- "subsets": [
651
- "latin"
652
- ]
653
- },
654
- {
655
- "kind": "webfonts#webfont",
656
- "family": "Bad Script",
657
- "variants": [
658
- "regular"
659
- ],
660
- "subsets": [
661
- "latin",
662
- "cyrillic"
663
- ]
664
- },
665
- {
666
- "kind": "webfonts#webfont",
667
- "family": "Balthazar",
668
- "variants": [
669
- "regular"
670
- ],
671
- "subsets": [
672
- "latin"
673
- ]
674
- },
675
- {
676
- "kind": "webfonts#webfont",
677
- "family": "Bangers",
678
- "variants": [
679
- "regular"
680
- ],
681
- "subsets": [
682
- "latin"
683
- ]
684
- },
685
- {
686
- "kind": "webfonts#webfont",
687
- "family": "Basic",
688
- "variants": [
689
- "regular"
690
- ],
691
- "subsets": [
692
- "latin",
693
- "latin-ext"
694
- ]
695
- },
696
- {
697
- "kind": "webfonts#webfont",
698
- "family": "Battambang",
699
- "variants": [
700
- "regular",
701
- "700"
702
- ],
703
- "subsets": [
704
- "khmer"
705
- ]
706
- },
707
- {
708
- "kind": "webfonts#webfont",
709
- "family": "Baumans",
710
- "variants": [
711
- "regular"
712
- ],
713
- "subsets": [
714
- "latin"
715
- ]
716
- },
717
- {
718
- "kind": "webfonts#webfont",
719
- "family": "Bayon",
720
- "variants": [
721
- "regular"
722
- ],
723
- "subsets": [
724
- "khmer"
725
- ]
726
- },
727
- {
728
- "kind": "webfonts#webfont",
729
- "family": "Belgrano",
730
- "variants": [
731
- "regular"
732
- ],
733
- "subsets": [
734
- "latin"
735
- ]
736
- },
737
- {
738
- "kind": "webfonts#webfont",
739
- "family": "Belleza",
740
- "variants": [
741
- "regular"
742
- ],
743
- "subsets": [
744
- "latin",
745
- "latin-ext"
746
- ]
747
- },
748
- {
749
- "kind": "webfonts#webfont",
750
- "family": "Bentham",
751
- "variants": [
752
- "regular"
753
- ],
754
- "subsets": [
755
- "latin"
756
- ]
757
- },
758
- {
759
- "kind": "webfonts#webfont",
760
- "family": "Berkshire Swash",
761
- "variants": [
762
- "regular"
763
- ],
764
- "subsets": [
765
- "latin",
766
- "latin-ext"
767
- ]
768
- },
769
- {
770
- "kind": "webfonts#webfont",
771
- "family": "Bevan",
772
- "variants": [
773
- "regular"
774
- ],
775
- "subsets": [
776
- "latin"
777
- ]
778
- },
779
- {
780
- "kind": "webfonts#webfont",
781
- "family": "Bigshot One",
782
- "variants": [
783
- "regular"
784
- ],
785
- "subsets": [
786
- "latin"
787
- ]
788
- },
789
- {
790
- "kind": "webfonts#webfont",
791
- "family": "Bilbo",
792
- "variants": [
793
- "regular"
794
- ],
795
- "subsets": [
796
- "latin",
797
- "latin-ext"
798
- ]
799
- },
800
- {
801
- "kind": "webfonts#webfont",
802
- "family": "Bilbo Swash Caps",
803
- "variants": [
804
- "regular"
805
- ],
806
- "subsets": [
807
- "latin",
808
- "latin-ext"
809
- ]
810
- },
811
- {
812
- "kind": "webfonts#webfont",
813
- "family": "Bitter",
814
- "variants": [
815
- "regular",
816
- "italic",
817
- "700"
818
- ],
819
- "subsets": [
820
- "latin",
821
- "latin-ext"
822
- ]
823
- },
824
- {
825
- "kind": "webfonts#webfont",
826
- "family": "Black Ops One",
827
- "variants": [
828
- "regular"
829
- ],
830
- "subsets": [
831
- "latin"
832
- ]
833
- },
834
- {
835
- "kind": "webfonts#webfont",
836
- "family": "Bokor",
837
- "variants": [
838
- "regular"
839
- ],
840
- "subsets": [
841
- "khmer"
842
- ]
843
- },
844
- {
845
- "kind": "webfonts#webfont",
846
- "family": "Bonbon",
847
- "variants": [
848
- "regular"
849
- ],
850
- "subsets": [
851
- "latin"
852
- ]
853
- },
854
- {
855
- "kind": "webfonts#webfont",
856
- "family": "Boogaloo",
857
- "variants": [
858
- "regular"
859
- ],
860
- "subsets": [
861
- "latin"
862
- ]
863
- },
864
- {
865
- "kind": "webfonts#webfont",
866
- "family": "Bowlby One",
867
- "variants": [
868
- "regular"
869
- ],
870
- "subsets": [
871
- "latin"
872
- ]
873
- },
874
- {
875
- "kind": "webfonts#webfont",
876
- "family": "Bowlby One SC",
877
- "variants": [
878
- "regular"
879
- ],
880
- "subsets": [
881
- "latin",
882
- "latin-ext"
883
- ]
884
- },
885
- {
886
- "kind": "webfonts#webfont",
887
- "family": "Brawler",
888
- "variants": [
889
- "regular"
890
- ],
891
- "subsets": [
892
- "latin"
893
- ]
894
- },
895
- {
896
- "kind": "webfonts#webfont",
897
- "family": "Bree Serif",
898
- "variants": [
899
- "regular"
900
- ],
901
- "subsets": [
902
- "latin",
903
- "latin-ext"
904
- ]
905
- },
906
- {
907
- "kind": "webfonts#webfont",
908
- "family": "Bubblegum Sans",
909
- "variants": [
910
- "regular"
911
- ],
912
- "subsets": [
913
- "latin",
914
- "latin-ext"
915
- ]
916
- },
917
- {
918
- "kind": "webfonts#webfont",
919
- "family": "Buda",
920
- "variants": [
921
- "300"
922
- ],
923
- "subsets": [
924
- "latin"
925
- ]
926
- },
927
- {
928
- "kind": "webfonts#webfont",
929
- "family": "Buenard",
930
- "variants": [
931
- "regular",
932
- "700"
933
- ],
934
- "subsets": [
935
- "latin",
936
- "latin-ext"
937
- ]
938
- },
939
- {
940
- "kind": "webfonts#webfont",
941
- "family": "Butcherman",
942
- "variants": [
943
- "regular"
944
- ],
945
- "subsets": [
946
- "latin",
947
- "latin-ext"
948
- ]
949
- },
950
- {
951
- "kind": "webfonts#webfont",
952
- "family": "Butterfly Kids",
953
- "variants": [
954
- "regular"
955
- ],
956
- "subsets": [
957
- "latin",
958
- "latin-ext"
959
- ]
960
- },
961
- {
962
- "kind": "webfonts#webfont",
963
- "family": "Cabin",
964
- "variants": [
965
- "regular",
966
- "italic",
967
- "500",
968
- "500italic",
969
- "600",
970
- "600italic",
971
- "700",
972
- "700italic"
973
- ],
974
- "subsets": [
975
- "latin"
976
- ]
977
- },
978
- {
979
- "kind": "webfonts#webfont",
980
- "family": "Cabin Condensed",
981
- "variants": [
982
- "regular",
983
- "500",
984
- "600",
985
- "700"
986
- ],
987
- "subsets": [
988
- "latin"
989
- ]
990
- },
991
- {
992
- "kind": "webfonts#webfont",
993
- "family": "Cabin Sketch",
994
- "variants": [
995
- "regular",
996
- "700"
997
- ],
998
- "subsets": [
999
- "latin"
1000
- ]
1001
- },
1002
- {
1003
- "kind": "webfonts#webfont",
1004
- "family": "Caesar Dressing",
1005
- "variants": [
1006
- "regular"
1007
- ],
1008
- "subsets": [
1009
- "latin"
1010
- ]
1011
- },
1012
- {
1013
- "kind": "webfonts#webfont",
1014
- "family": "Cagliostro",
1015
- "variants": [
1016
- "regular"
1017
- ],
1018
- "subsets": [
1019
- "latin"
1020
- ]
1021
- },
1022
- {
1023
- "kind": "webfonts#webfont",
1024
- "family": "Calligraffitti",
1025
- "variants": [
1026
- "regular"
1027
- ],
1028
- "subsets": [
1029
- "latin"
1030
- ]
1031
- },
1032
- {
1033
- "kind": "webfonts#webfont",
1034
- "family": "Cambo",
1035
- "variants": [
1036
- "regular"
1037
- ],
1038
- "subsets": [
1039
- "latin"
1040
- ]
1041
- },
1042
- {
1043
- "kind": "webfonts#webfont",
1044
- "family": "Candal",
1045
- "variants": [
1046
- "regular"
1047
- ],
1048
- "subsets": [
1049
- "latin"
1050
- ]
1051
- },
1052
- {
1053
- "kind": "webfonts#webfont",
1054
- "family": "Cantarell",
1055
- "variants": [
1056
- "regular",
1057
- "italic",
1058
- "700",
1059
- "700italic"
1060
- ],
1061
- "subsets": [
1062
- "latin"
1063
- ]
1064
- },
1065
- {
1066
- "kind": "webfonts#webfont",
1067
- "family": "Cantata One",
1068
- "variants": [
1069
- "regular"
1070
- ],
1071
- "subsets": [
1072
- "latin",
1073
- "latin-ext"
1074
- ]
1075
- },
1076
- {
1077
- "kind": "webfonts#webfont",
1078
- "family": "Capriola",
1079
- "variants": [
1080
- "regular"
1081
- ],
1082
- "subsets": [
1083
- "latin",
1084
- "latin-ext"
1085
- ]
1086
- },
1087
- {
1088
- "kind": "webfonts#webfont",
1089
- "family": "Cardo",
1090
- "variants": [
1091
- "regular",
1092
- "italic",
1093
- "700"
1094
- ],
1095
- "subsets": [
1096
- "greek-ext",
1097
- "latin",
1098
- "latin-ext",
1099
- "greek"
1100
- ]
1101
- },
1102
- {
1103
- "kind": "webfonts#webfont",
1104
- "family": "Carme",
1105
- "variants": [
1106
- "regular"
1107
- ],
1108
- "subsets": [
1109
- "latin"
1110
- ]
1111
- },
1112
- {
1113
- "kind": "webfonts#webfont",
1114
- "family": "Carter One",
1115
- "variants": [
1116
- "regular"
1117
- ],
1118
- "subsets": [
1119
- "latin"
1120
- ]
1121
- },
1122
- {
1123
- "kind": "webfonts#webfont",
1124
- "family": "Caudex",
1125
- "variants": [
1126
- "regular",
1127
- "italic",
1128
- "700",
1129
- "700italic"
1130
- ],
1131
- "subsets": [
1132
- "greek-ext",
1133
- "latin",
1134
- "latin-ext",
1135
- "greek"
1136
- ]
1137
- },
1138
- {
1139
- "kind": "webfonts#webfont",
1140
- "family": "Cedarville Cursive",
1141
- "variants": [
1142
- "regular"
1143
- ],
1144
- "subsets": [
1145
- "latin"
1146
- ]
1147
- },
1148
- {
1149
- "kind": "webfonts#webfont",
1150
- "family": "Ceviche One",
1151
- "variants": [
1152
- "regular"
1153
- ],
1154
- "subsets": [
1155
- "latin"
1156
- ]
1157
- },
1158
- {
1159
- "kind": "webfonts#webfont",
1160
- "family": "Changa One",
1161
- "variants": [
1162
- "regular",
1163
- "italic"
1164
- ],
1165
- "subsets": [
1166
- "latin"
1167
- ]
1168
- },
1169
- {
1170
- "kind": "webfonts#webfont",
1171
- "family": "Chango",
1172
- "variants": [
1173
- "regular"
1174
- ],
1175
- "subsets": [
1176
- "latin",
1177
- "latin-ext"
1178
- ]
1179
- },
1180
- {
1181
- "kind": "webfonts#webfont",
1182
- "family": "Chau Philomene One",
1183
- "variants": [
1184
- "regular",
1185
- "italic"
1186
- ],
1187
- "subsets": [
1188
- "latin",
1189
- "latin-ext"
1190
- ]
1191
- },
1192
- {
1193
- "kind": "webfonts#webfont",
1194
- "family": "Chelsea Market",
1195
- "variants": [
1196
- "regular"
1197
- ],
1198
- "subsets": [
1199
- "latin",
1200
- "latin-ext"
1201
- ]
1202
- },
1203
- {
1204
- "kind": "webfonts#webfont",
1205
- "family": "Chenla",
1206
- "variants": [
1207
- "regular"
1208
- ],
1209
- "subsets": [
1210
- "khmer"
1211
- ]
1212
- },
1213
- {
1214
- "kind": "webfonts#webfont",
1215
- "family": "Cherry Cream Soda",
1216
- "variants": [
1217
- "regular"
1218
- ],
1219
- "subsets": [
1220
- "latin"
1221
- ]
1222
- },
1223
- {
1224
- "kind": "webfonts#webfont",
1225
- "family": "Chewy",
1226
- "variants": [
1227
- "regular"
1228
- ],
1229
- "subsets": [
1230
- "latin"
1231
- ]
1232
- },
1233
- {
1234
- "kind": "webfonts#webfont",
1235
- "family": "Chicle",
1236
- "variants": [
1237
- "regular"
1238
- ],
1239
- "subsets": [
1240
- "latin",
1241
- "latin-ext"
1242
- ]
1243
- },
1244
- {
1245
- "kind": "webfonts#webfont",
1246
- "family": "Chivo",
1247
- "variants": [
1248
- "regular",
1249
- "italic",
1250
- "900",
1251
- "900italic"
1252
- ],
1253
- "subsets": [
1254
- "latin"
1255
- ]
1256
- },
1257
- {
1258
- "kind": "webfonts#webfont",
1259
- "family": "Coda",
1260
- "variants": [
1261
- "regular",
1262
- "800"
1263
- ],
1264
- "subsets": [
1265
- "latin"
1266
- ]
1267
- },
1268
- {
1269
- "kind": "webfonts#webfont",
1270
- "family": "Coda Caption",
1271
- "variants": [
1272
- "800"
1273
- ],
1274
- "subsets": [
1275
- "latin"
1276
- ]
1277
- },
1278
- {
1279
- "kind": "webfonts#webfont",
1280
- "family": "Codystar",
1281
- "variants": [
1282
- "300",
1283
- "regular"
1284
- ],
1285
- "subsets": [
1286
- "latin",
1287
- "latin-ext"
1288
- ]
1289
- },
1290
- {
1291
- "kind": "webfonts#webfont",
1292
- "family": "Comfortaa",
1293
- "variants": [
1294
- "300",
1295
- "regular",
1296
- "700"
1297
- ],
1298
- "subsets": [
1299
- "latin",
1300
- "cyrillic-ext",
1301
- "latin-ext",
1302
- "cyrillic",
1303
- "greek"
1304
- ]
1305
- },
1306
- {
1307
- "kind": "webfonts#webfont",
1308
- "family": "Coming Soon",
1309
- "variants": [
1310
- "regular"
1311
- ],
1312
- "subsets": [
1313
- "latin"
1314
- ]
1315
- },
1316
- {
1317
- "kind": "webfonts#webfont",
1318
- "family": "Concert One",
1319
- "variants": [
1320
- "regular"
1321
- ],
1322
- "subsets": [
1323
- "latin",
1324
- "latin-ext"
1325
- ]
1326
- },
1327
- {
1328
- "kind": "webfonts#webfont",
1329
- "family": "Condiment",
1330
- "variants": [
1331
- "regular"
1332
- ],
1333
- "subsets": [
1334
- "latin",
1335
- "latin-ext"
1336
- ]
1337
- },
1338
- {
1339
- "kind": "webfonts#webfont",
1340
- "family": "Content",
1341
- "variants": [
1342
- "regular",
1343
- "700"
1344
- ],
1345
- "subsets": [
1346
- "khmer"
1347
- ]
1348
- },
1349
- {
1350
- "kind": "webfonts#webfont",
1351
- "family": "Contrail One",
1352
- "variants": [
1353
- "regular"
1354
- ],
1355
- "subsets": [
1356
- "latin"
1357
- ]
1358
- },
1359
- {
1360
- "kind": "webfonts#webfont",
1361
- "family": "Convergence",
1362
- "variants": [
1363
- "regular"
1364
- ],
1365
- "subsets": [
1366
- "latin"
1367
- ]
1368
- },
1369
- {
1370
- "kind": "webfonts#webfont",
1371
- "family": "Cookie",
1372
- "variants": [
1373
- "regular"
1374
- ],
1375
- "subsets": [
1376
- "latin"
1377
- ]
1378
- },
1379
- {
1380
- "kind": "webfonts#webfont",
1381
- "family": "Copse",
1382
- "variants": [
1383
- "regular"
1384
- ],
1385
- "subsets": [
1386
- "latin"
1387
- ]
1388
- },
1389
- {
1390
- "kind": "webfonts#webfont",
1391
- "family": "Corben",
1392
- "variants": [
1393
- "regular",
1394
- "700"
1395
- ],
1396
- "subsets": [
1397
- "latin"
1398
- ]
1399
- },
1400
- {
1401
- "kind": "webfonts#webfont",
1402
- "family": "Courgette",
1403
- "variants": [
1404
- "regular"
1405
- ],
1406
- "subsets": [
1407
- "latin",
1408
- "latin-ext"
1409
- ]
1410
- },
1411
- {
1412
- "kind": "webfonts#webfont",
1413
- "family": "Cousine",
1414
- "variants": [
1415
- "regular",
1416
- "italic",
1417
- "700",
1418
- "700italic"
1419
- ],
1420
- "subsets": [
1421
- "latin"
1422
- ]
1423
- },
1424
- {
1425
- "kind": "webfonts#webfont",
1426
- "family": "Coustard",
1427
- "variants": [
1428
- "regular",
1429
- "900"
1430
- ],
1431
- "subsets": [
1432
- "latin"
1433
- ]
1434
- },
1435
- {
1436
- "kind": "webfonts#webfont",
1437
- "family": "Covered By Your Grace",
1438
- "variants": [
1439
- "regular"
1440
- ],
1441
- "subsets": [
1442
- "latin"
1443
- ]
1444
- },
1445
- {
1446
- "kind": "webfonts#webfont",
1447
- "family": "Crafty Girls",
1448
- "variants": [
1449
- "regular"
1450
- ],
1451
- "subsets": [
1452
- "latin"
1453
- ]
1454
- },
1455
- {
1456
- "kind": "webfonts#webfont",
1457
- "family": "Creepster",
1458
- "variants": [
1459
- "regular"
1460
- ],
1461
- "subsets": [
1462
- "latin"
1463
- ]
1464
- },
1465
- {
1466
- "kind": "webfonts#webfont",
1467
- "family": "Crete Round",
1468
- "variants": [
1469
- "regular",
1470
- "italic"
1471
- ],
1472
- "subsets": [
1473
- "latin",
1474
- "latin-ext"
1475
- ]
1476
- },
1477
- {
1478
- "kind": "webfonts#webfont",
1479
- "family": "Crimson Text",
1480
- "variants": [
1481
- "regular",
1482
- "italic",
1483
- "600",
1484
- "600italic",
1485
- "700",
1486
- "700italic"
1487
- ],
1488
- "subsets": [
1489
- "latin"
1490
- ]
1491
- },
1492
- {
1493
- "kind": "webfonts#webfont",
1494
- "family": "Crushed",
1495
- "variants": [
1496
- "regular"
1497
- ],
1498
- "subsets": [
1499
- "latin"
1500
- ]
1501
- },
1502
- {
1503
- "kind": "webfonts#webfont",
1504
- "family": "Cuprum",
1505
- "variants": [
1506
- "regular",
1507
- "italic",
1508
- "700",
1509
- "700italic"
1510
- ],
1511
- "subsets": [
1512
- "latin",
1513
- "latin-ext",
1514
- "cyrillic"
1515
- ]
1516
- },
1517
- {
1518
- "kind": "webfonts#webfont",
1519
- "family": "Cutive",
1520
- "variants": [
1521
- "regular"
1522
- ],
1523
- "subsets": [
1524
- "latin",
1525
- "latin-ext"
1526
- ]
1527
- },
1528
- {
1529
- "kind": "webfonts#webfont",
1530
- "family": "Damion",
1531
- "variants": [
1532
- "regular"
1533
- ],
1534
- "subsets": [
1535
- "latin"
1536
- ]
1537
- },
1538
- {
1539
- "kind": "webfonts#webfont",
1540
- "family": "Dancing Script",
1541
- "variants": [
1542
- "regular",
1543
- "700"
1544
- ],
1545
- "subsets": [
1546
- "latin"
1547
- ]
1548
- },
1549
- {
1550
- "kind": "webfonts#webfont",
1551
- "family": "Dangrek",
1552
- "variants": [
1553
- "regular"
1554
- ],
1555
- "subsets": [
1556
- "khmer"
1557
- ]
1558
- },
1559
- {
1560
- "kind": "webfonts#webfont",
1561
- "family": "Dawning of a New Day",
1562
- "variants": [
1563
- "regular"
1564
- ],
1565
- "subsets": [
1566
- "latin"
1567
- ]
1568
- },
1569
- {
1570
- "kind": "webfonts#webfont",
1571
- "family": "Days One",
1572
- "variants": [
1573
- "regular"
1574
- ],
1575
- "subsets": [
1576
- "latin"
1577
- ]
1578
- },
1579
- {
1580
- "kind": "webfonts#webfont",
1581
- "family": "Delius",
1582
- "variants": [
1583
- "regular"
1584
- ],
1585
- "subsets": [
1586
- "latin"
1587
- ]
1588
- },
1589
- {
1590
- "kind": "webfonts#webfont",
1591
- "family": "Delius Swash Caps",
1592
- "variants": [
1593
- "regular"
1594
- ],
1595
- "subsets": [
1596
- "latin"
1597
- ]
1598
- },
1599
- {
1600
- "kind": "webfonts#webfont",
1601
- "family": "Delius Unicase",
1602
- "variants": [
1603
- "regular",
1604
- "700"
1605
- ],
1606
- "subsets": [
1607
- "latin"
1608
- ]
1609
- },
1610
- {
1611
- "kind": "webfonts#webfont",
1612
- "family": "Della Respira",
1613
- "variants": [
1614
- "regular"
1615
- ],
1616
- "subsets": [
1617
- "latin"
1618
- ]
1619
- },
1620
- {
1621
- "kind": "webfonts#webfont",
1622
- "family": "Devonshire",
1623
- "variants": [
1624
- "regular"
1625
- ],
1626
- "subsets": [
1627
- "latin",
1628
- "latin-ext"
1629
- ]
1630
- },
1631
- {
1632
- "kind": "webfonts#webfont",
1633
- "family": "Didact Gothic",
1634
- "variants": [
1635
- "regular"
1636
- ],
1637
- "subsets": [
1638
- "greek-ext",
1639
- "latin",
1640
- "cyrillic-ext",
1641
- "latin-ext",
1642
- "cyrillic",
1643
- "greek"
1644
- ]
1645
- },
1646
- {
1647
- "kind": "webfonts#webfont",
1648
- "family": "Diplomata",
1649
- "variants": [
1650
- "regular"
1651
- ],
1652
- "subsets": [
1653
- "latin",
1654
- "latin-ext"
1655
- ]
1656
- },
1657
- {
1658
- "kind": "webfonts#webfont",
1659
- "family": "Diplomata SC",
1660
- "variants": [
1661
- "regular"
1662
- ],
1663
- "subsets": [
1664
- "latin",
1665
- "latin-ext"
1666
- ]
1667
- },
1668
- {
1669
- "kind": "webfonts#webfont",
1670
- "family": "Doppio One",
1671
- "variants": [
1672
- "regular"
1673
- ],
1674
- "subsets": [
1675
- "latin",
1676
- "latin-ext"
1677
- ]
1678
- },
1679
- {
1680
- "kind": "webfonts#webfont",
1681
- "family": "Dorsa",
1682
- "variants": [
1683
- "regular"
1684
- ],
1685
- "subsets": [
1686
- "latin"
1687
- ]
1688
- },
1689
- {
1690
- "kind": "webfonts#webfont",
1691
- "family": "Dosis",
1692
- "variants": [
1693
- "200",
1694
- "300",
1695
- "regular",
1696
- "500",
1697
- "600",
1698
- "700",
1699
- "800"
1700
- ],
1701
- "subsets": [
1702
- "latin",
1703
- "latin-ext"
1704
- ]
1705
- },
1706
- {
1707
- "kind": "webfonts#webfont",
1708
- "family": "Dr Sugiyama",
1709
- "variants": [
1710
- "regular"
1711
- ],
1712
- "subsets": [
1713
- "latin",
1714
- "latin-ext"
1715
- ]
1716
- },
1717
- {
1718
- "kind": "webfonts#webfont",
1719
- "family": "Droid Sans",
1720
- "variants": [
1721
- "regular",
1722
- "700"
1723
- ],
1724
- "subsets": [
1725
- "latin"
1726
- ]
1727
- },
1728
- {
1729
- "kind": "webfonts#webfont",
1730
- "family": "Droid Sans Mono",
1731
- "variants": [
1732
- "regular"
1733
- ],
1734
- "subsets": [
1735
- "latin"
1736
- ]
1737
- },
1738
- {
1739
- "kind": "webfonts#webfont",
1740
- "family": "Droid Serif",
1741
- "variants": [
1742
- "regular",
1743
- "italic",
1744
- "700",
1745
- "700italic"
1746
- ],
1747
- "subsets": [
1748
- "latin"
1749
- ]
1750
- },
1751
- {
1752
- "kind": "webfonts#webfont",
1753
- "family": "Duru Sans",
1754
- "variants": [
1755
- "regular"
1756
- ],
1757
- "subsets": [
1758
- "latin",
1759
- "latin-ext"
1760
- ]
1761
- },
1762
- {
1763
- "kind": "webfonts#webfont",
1764
- "family": "Dynalight",
1765
- "variants": [
1766
- "regular"
1767
- ],
1768
- "subsets": [
1769
- "latin",
1770
- "latin-ext"
1771
- ]
1772
- },
1773
- {
1774
- "kind": "webfonts#webfont",
1775
- "family": "EB Garamond",
1776
- "variants": [
1777
- "regular"
1778
- ],
1779
- "subsets": [
1780
- "latin",
1781
- "vietnamese",
1782
- "cyrillic-ext",
1783
- "latin-ext",
1784
- "cyrillic"
1785
- ]
1786
- },
1787
- {
1788
- "kind": "webfonts#webfont",
1789
- "family": "Eagle Lake",
1790
- "variants": [
1791
- "regular"
1792
- ],
1793
- "subsets": [
1794
- "latin",
1795
- "latin-ext"
1796
- ]
1797
- },
1798
- {
1799
- "kind": "webfonts#webfont",
1800
- "family": "Eater",
1801
- "variants": [
1802
- "regular"
1803
- ],
1804
- "subsets": [
1805
- "latin",
1806
- "latin-ext"
1807
- ]
1808
- },
1809
- {
1810
- "kind": "webfonts#webfont",
1811
- "family": "Economica",
1812
- "variants": [
1813
- "regular",
1814
- "italic",
1815
- "700",
1816
- "700italic"
1817
- ],
1818
- "subsets": [
1819
- "latin",
1820
- "latin-ext"
1821
- ]
1822
- },
1823
- {
1824
- "kind": "webfonts#webfont",
1825
- "family": "Electrolize",
1826
- "variants": [
1827
- "regular"
1828
- ],
1829
- "subsets": [
1830
- "latin"
1831
- ]
1832
- },
1833
- {
1834
- "kind": "webfonts#webfont",
1835
- "family": "Emblema One",
1836
- "variants": [
1837
- "regular"
1838
- ],
1839
- "subsets": [
1840
- "latin",
1841
- "latin-ext"
1842
- ]
1843
- },
1844
- {
1845
- "kind": "webfonts#webfont",
1846
- "family": "Emilys Candy",
1847
- "variants": [
1848
- "regular"
1849
- ],
1850
- "subsets": [
1851
- "latin",
1852
- "latin-ext"
1853
- ]
1854
- },
1855
- {
1856
- "kind": "webfonts#webfont",
1857
- "family": "Engagement",
1858
- "variants": [
1859
- "regular"
1860
- ],
1861
- "subsets": [
1862
- "latin"
1863
- ]
1864
- },
1865
- {
1866
- "kind": "webfonts#webfont",
1867
- "family": "Enriqueta",
1868
- "variants": [
1869
- "regular",
1870
- "700"
1871
- ],
1872
- "subsets": [
1873
- "latin",
1874
- "latin-ext"
1875
- ]
1876
- },
1877
- {
1878
- "kind": "webfonts#webfont",
1879
- "family": "Erica One",
1880
- "variants": [
1881
- "regular"
1882
- ],
1883
- "subsets": [
1884
- "latin"
1885
- ]
1886
- },
1887
- {
1888
- "kind": "webfonts#webfont",
1889
- "family": "Esteban",
1890
- "variants": [
1891
- "regular"
1892
- ],
1893
- "subsets": [
1894
- "latin",
1895
- "latin-ext"
1896
- ]
1897
- },
1898
- {
1899
- "kind": "webfonts#webfont",
1900
- "family": "Euphoria Script",
1901
- "variants": [
1902
- "regular"
1903
- ],
1904
- "subsets": [
1905
- "latin",
1906
- "latin-ext"
1907
- ]
1908
- },
1909
- {
1910
- "kind": "webfonts#webfont",
1911
- "family": "Ewert",
1912
- "variants": [
1913
- "regular"
1914
- ],
1915
- "subsets": [
1916
- "latin",
1917
- "latin-ext"
1918
- ]
1919
- },
1920
- {
1921
- "kind": "webfonts#webfont",
1922
- "family": "Exo",
1923
- "variants": [
1924
- "100",
1925
- "100italic",
1926
- "200",
1927
- "200italic",
1928
- "300",
1929
- "300italic",
1930
- "regular",
1931
- "italic",
1932
- "500",
1933
- "500italic",
1934
- "600",
1935
- "600italic",
1936
- "700",
1937
- "700italic",
1938
- "800",
1939
- "800italic",
1940
- "900",
1941
- "900italic"
1942
- ],
1943
- "subsets": [
1944
- "latin",
1945
- "latin-ext"
1946
- ]
1947
- },
1948
- {
1949
- "kind": "webfonts#webfont",
1950
- "family": "Expletus Sans",
1951
- "variants": [
1952
- "regular",
1953
- "italic",
1954
- "500",
1955
- "500italic",
1956
- "600",
1957
- "600italic",
1958
- "700",
1959
- "700italic"
1960
- ],
1961
- "subsets": [
1962
- "latin"
1963
- ]
1964
- },
1965
- {
1966
- "kind": "webfonts#webfont",
1967
- "family": "Fanwood Text",
1968
- "variants": [
1969
- "regular",
1970
- "italic"
1971
- ],
1972
- "subsets": [
1973
- "latin"
1974
- ]
1975
- },
1976
- {
1977
- "kind": "webfonts#webfont",
1978
- "family": "Fascinate",
1979
- "variants": [
1980
- "regular"
1981
- ],
1982
- "subsets": [
1983
- "latin"
1984
- ]
1985
- },
1986
- {
1987
- "kind": "webfonts#webfont",
1988
- "family": "Fascinate Inline",
1989
- "variants": [
1990
- "regular"
1991
- ],
1992
- "subsets": [
1993
- "latin"
1994
- ]
1995
- },
1996
- {
1997
- "kind": "webfonts#webfont",
1998
- "family": "Federant",
1999
- "variants": [
2000
- "regular"
2001
- ],
2002
- "subsets": [
2003
- "latin"
2004
- ]
2005
- },
2006
- {
2007
- "kind": "webfonts#webfont",
2008
- "family": "Federo",
2009
- "variants": [
2010
- "regular"
2011
- ],
2012
- "subsets": [
2013
- "latin"
2014
- ]
2015
- },
2016
- {
2017
- "kind": "webfonts#webfont",
2018
- "family": "Felipa",
2019
- "variants": [
2020
- "regular"
2021
- ],
2022
- "subsets": [
2023
- "latin",
2024
- "latin-ext"
2025
- ]
2026
- },
2027
- {
2028
- "kind": "webfonts#webfont",
2029
- "family": "Fjord One",
2030
- "variants": [
2031
- "regular"
2032
- ],
2033
- "subsets": [
2034
- "latin"
2035
- ]
2036
- },
2037
- {
2038
- "kind": "webfonts#webfont",
2039
- "family": "Flamenco",
2040
- "variants": [
2041
- "300",
2042
- "regular"
2043
- ],
2044
- "subsets": [
2045
- "latin"
2046
- ]
2047
- },
2048
- {
2049
- "kind": "webfonts#webfont",
2050
- "family": "Flavors",
2051
- "variants": [
2052
- "regular"
2053
- ],
2054
- "subsets": [
2055
- "latin"
2056
- ]
2057
- },
2058
- {
2059
- "kind": "webfonts#webfont",
2060
- "family": "Fondamento",
2061
- "variants": [
2062
- "regular",
2063
- "italic"
2064
- ],
2065
- "subsets": [
2066
- "latin",
2067
- "latin-ext"
2068
- ]
2069
- },
2070
- {
2071
- "kind": "webfonts#webfont",
2072
- "family": "Fontdiner Swanky",
2073
- "variants": [
2074
- "regular"
2075
- ],
2076
- "subsets": [
2077
- "latin"
2078
- ]
2079
- },
2080
- {
2081
- "kind": "webfonts#webfont",
2082
- "family": "Forum",
2083
- "variants": [
2084
- "regular"
2085
- ],
2086
- "subsets": [
2087
- "latin",
2088
- "cyrillic-ext",
2089
- "latin-ext",
2090
- "cyrillic"
2091
- ]
2092
- },
2093
- {
2094
- "kind": "webfonts#webfont",
2095
- "family": "Francois One",
2096
- "variants": [
2097
- "regular"
2098
- ],
2099
- "subsets": [
2100
- "latin",
2101
- "latin-ext"
2102
- ]
2103
- },
2104
- {
2105
- "kind": "webfonts#webfont",
2106
- "family": "Fredericka the Great",
2107
- "variants": [
2108
- "regular"
2109
- ],
2110
- "subsets": [
2111
- "latin"
2112
- ]
2113
- },
2114
- {
2115
- "kind": "webfonts#webfont",
2116
- "family": "Fredoka One",
2117
- "variants": [
2118
- "regular"
2119
- ],
2120
- "subsets": [
2121
- "latin"
2122
- ]
2123
- },
2124
- {
2125
- "kind": "webfonts#webfont",
2126
- "family": "Freehand",
2127
- "variants": [
2128
- "regular"
2129
- ],
2130
- "subsets": [
2131
- "khmer"
2132
- ]
2133
- },
2134
- {
2135
- "kind": "webfonts#webfont",
2136
- "family": "Fresca",
2137
- "variants": [
2138
- "regular"
2139
- ],
2140
- "subsets": [
2141
- "latin",
2142
- "latin-ext"
2143
- ]
2144
- },
2145
- {
2146
- "kind": "webfonts#webfont",
2147
- "family": "Frijole",
2148
- "variants": [
2149
- "regular"
2150
- ],
2151
- "subsets": [
2152
- "latin"
2153
- ]
2154
- },
2155
- {
2156
- "kind": "webfonts#webfont",
2157
- "family": "Fugaz One",
2158
- "variants": [
2159
- "regular"
2160
- ],
2161
- "subsets": [
2162
- "latin"
2163
- ]
2164
- },
2165
- {
2166
- "kind": "webfonts#webfont",
2167
- "family": "GFS Didot",
2168
- "variants": [
2169
- "regular"
2170
- ],
2171
- "subsets": [
2172
- "greek"
2173
- ]
2174
- },
2175
- {
2176
- "kind": "webfonts#webfont",
2177
- "family": "GFS Neohellenic",
2178
- "variants": [
2179
- "regular",
2180
- "italic",
2181
- "700",
2182
- "700italic"
2183
- ],
2184
- "subsets": [
2185
- "greek"
2186
- ]
2187
- },
2188
- {
2189
- "kind": "webfonts#webfont",
2190
- "family": "Galdeano",
2191
- "variants": [
2192
- "regular"
2193
- ],
2194
- "subsets": [
2195
- "latin"
2196
- ]
2197
- },
2198
- {
2199
- "kind": "webfonts#webfont",
2200
- "family": "Gentium Basic",
2201
- "variants": [
2202
- "regular",
2203
- "italic",
2204
- "700",
2205
- "700italic"
2206
- ],
2207
- "subsets": [
2208
- "latin",
2209
- "latin-ext"
2210
- ]
2211
- },
2212
- {
2213
- "kind": "webfonts#webfont",
2214
- "family": "Gentium Book Basic",
2215
- "variants": [
2216
- "regular",
2217
- "italic",
2218
- "700",
2219
- "700italic"
2220
- ],
2221
- "subsets": [
2222
- "latin",
2223
- "latin-ext"
2224
- ]
2225
- },
2226
- {
2227
- "kind": "webfonts#webfont",
2228
- "family": "Geo",
2229
- "variants": [
2230
- "regular"
2231
- ],
2232
- "subsets": [
2233
- "latin"
2234
- ]
2235
- },
2236
- {
2237
- "kind": "webfonts#webfont",
2238
- "family": "Geostar",
2239
- "variants": [
2240
- "regular"
2241
- ],
2242
- "subsets": [
2243
- "latin"
2244
- ]
2245
- },
2246
- {
2247
- "kind": "webfonts#webfont",
2248
- "family": "Geostar Fill",
2249
- "variants": [
2250
- "regular"
2251
- ],
2252
- "subsets": [
2253
- "latin"
2254
- ]
2255
- },
2256
- {
2257
- "kind": "webfonts#webfont",
2258
- "family": "Germania One",
2259
- "variants": [
2260
- "regular"
2261
- ],
2262
- "subsets": [
2263
- "latin"
2264
- ]
2265
- },
2266
- {
2267
- "kind": "webfonts#webfont",
2268
- "family": "Give You Glory",
2269
- "variants": [
2270
- "regular"
2271
- ],
2272
- "subsets": [
2273
- "latin"
2274
- ]
2275
- },
2276
- {
2277
- "kind": "webfonts#webfont",
2278
- "family": "Glass Antiqua",
2279
- "variants": [
2280
- "regular"
2281
- ],
2282
- "subsets": [
2283
- "latin",
2284
- "latin-ext"
2285
- ]
2286
- },
2287
- {
2288
- "kind": "webfonts#webfont",
2289
- "family": "Glegoo",
2290
- "variants": [
2291
- "regular"
2292
- ],
2293
- "subsets": [
2294
- "latin",
2295
- "latin-ext"
2296
- ]
2297
- },
2298
- {
2299
- "kind": "webfonts#webfont",
2300
- "family": "Gloria Hallelujah",
2301
- "variants": [
2302
- "regular"
2303
- ],
2304
- "subsets": [
2305
- "latin"
2306
- ]
2307
- },
2308
- {
2309
- "kind": "webfonts#webfont",
2310
- "family": "Goblin One",
2311
- "variants": [
2312
- "regular"
2313
- ],
2314
- "subsets": [
2315
- "latin"
2316
- ]
2317
- },
2318
- {
2319
- "kind": "webfonts#webfont",
2320
- "family": "Gochi Hand",
2321
- "variants": [
2322
- "regular"
2323
- ],
2324
- "subsets": [
2325
- "latin"
2326
- ]
2327
- },
2328
- {
2329
- "kind": "webfonts#webfont",
2330
- "family": "Gorditas",
2331
- "variants": [
2332
- "regular",
2333
- "700"
2334
- ],
2335
- "subsets": [
2336
- "latin"
2337
- ]
2338
- },
2339
- {
2340
- "kind": "webfonts#webfont",
2341
- "family": "Goudy Bookletter 1911",
2342
- "variants": [
2343
- "regular"
2344
- ],
2345
- "subsets": [
2346
- "latin"
2347
- ]
2348
- },
2349
- {
2350
- "kind": "webfonts#webfont",
2351
- "family": "Graduate",
2352
- "variants": [
2353
- "regular"
2354
- ],
2355
- "subsets": [
2356
- "latin"
2357
- ]
2358
- },
2359
- {
2360
- "kind": "webfonts#webfont",
2361
- "family": "Gravitas One",
2362
- "variants": [
2363
- "regular"
2364
- ],
2365
- "subsets": [
2366
- "latin"
2367
- ]
2368
- },
2369
- {
2370
- "kind": "webfonts#webfont",
2371
- "family": "Great Vibes",
2372
- "variants": [
2373
- "regular"
2374
- ],
2375
- "subsets": [
2376
- "latin",
2377
- "latin-ext"
2378
- ]
2379
- },
2380
- {
2381
- "kind": "webfonts#webfont",
2382
- "family": "Gruppo",
2383
- "variants": [
2384
- "regular"
2385
- ],
2386
- "subsets": [
2387
- "latin",
2388
- "latin-ext"
2389
- ]
2390
- },
2391
- {
2392
- "kind": "webfonts#webfont",
2393
- "family": "Gudea",
2394
- "variants": [
2395
- "regular",
2396
- "italic",
2397
- "700"
2398
- ],
2399
- "subsets": [
2400
- "latin",
2401
- "latin-ext"
2402
- ]
2403
- },
2404
- {
2405
- "kind": "webfonts#webfont",
2406
- "family": "Habibi",
2407
- "variants": [
2408
- "regular"
2409
- ],
2410
- "subsets": [
2411
- "latin",
2412
- "latin-ext"
2413
- ]
2414
- },
2415
- {
2416
- "kind": "webfonts#webfont",
2417
- "family": "Hammersmith One",
2418
- "variants": [
2419
- "regular"
2420
- ],
2421
- "subsets": [
2422
- "latin"
2423
- ]
2424
- },
2425
- {
2426
- "kind": "webfonts#webfont",
2427
- "family": "Handlee",
2428
- "variants": [
2429
- "regular"
2430
- ],
2431
- "subsets": [
2432
- "latin"
2433
- ]
2434
- },
2435
- {
2436
- "kind": "webfonts#webfont",
2437
- "family": "Hanuman",
2438
- "variants": [
2439
- "regular",
2440
- "700"
2441
- ],
2442
- "subsets": [
2443
- "khmer"
2444
- ]
2445
- },
2446
- {
2447
- "kind": "webfonts#webfont",
2448
- "family": "Happy Monkey",
2449
- "variants": [
2450
- "regular"
2451
- ],
2452
- "subsets": [
2453
- "latin",
2454
- "latin-ext"
2455
- ]
2456
- },
2457
- {
2458
- "kind": "webfonts#webfont",
2459
- "family": "Henny Penny",
2460
- "variants": [
2461
- "regular"
2462
- ],
2463
- "subsets": [
2464
- "latin"
2465
- ]
2466
- },
2467
- {
2468
- "kind": "webfonts#webfont",
2469
- "family": "Herr Von Muellerhoff",
2470
- "variants": [
2471
- "regular"
2472
- ],
2473
- "subsets": [
2474
- "latin",
2475
- "latin-ext"
2476
- ]
2477
- },
2478
- {
2479
- "kind": "webfonts#webfont",
2480
- "family": "Holtwood One SC",
2481
- "variants": [
2482
- "regular"
2483
- ],
2484
- "subsets": [
2485
- "latin"
2486
- ]
2487
- },
2488
- {
2489
- "kind": "webfonts#webfont",
2490
- "family": "Homemade Apple",
2491
- "variants": [
2492
- "regular"
2493
- ],
2494
- "subsets": [
2495
- "latin"
2496
- ]
2497
- },
2498
- {
2499
- "kind": "webfonts#webfont",
2500
- "family": "Homenaje",
2501
- "variants": [
2502
- "regular"
2503
- ],
2504
- "subsets": [
2505
- "latin"
2506
- ]
2507
- },
2508
- {
2509
- "kind": "webfonts#webfont",
2510
- "family": "IM Fell DW Pica",
2511
- "variants": [
2512
- "regular",
2513
- "italic"
2514
- ],
2515
- "subsets": [
2516
- "latin"
2517
- ]
2518
- },
2519
- {
2520
- "kind": "webfonts#webfont",
2521
- "family": "IM Fell DW Pica SC",
2522
- "variants": [
2523
- "regular"
2524
- ],
2525
- "subsets": [
2526
- "latin"
2527
- ]
2528
- },
2529
- {
2530
- "kind": "webfonts#webfont",
2531
- "family": "IM Fell Double Pica",
2532
- "variants": [
2533
- "regular",
2534
- "italic"
2535
- ],
2536
- "subsets": [
2537
- "latin"
2538
- ]
2539
- },
2540
- {
2541
- "kind": "webfonts#webfont",
2542
- "family": "IM Fell Double Pica SC",
2543
- "variants": [
2544
- "regular"
2545
- ],
2546
- "subsets": [
2547
- "latin"
2548
- ]
2549
- },
2550
- {
2551
- "kind": "webfonts#webfont",
2552
- "family": "IM Fell English",
2553
- "variants": [
2554
- "regular",
2555
- "italic"
2556
- ],
2557
- "subsets": [
2558
- "latin"
2559
- ]
2560
- },
2561
- {
2562
- "kind": "webfonts#webfont",
2563
- "family": "IM Fell English SC",
2564
- "variants": [
2565
- "regular"
2566
- ],
2567
- "subsets": [
2568
- "latin"
2569
- ]
2570
- },
2571
- {
2572
- "kind": "webfonts#webfont",
2573
- "family": "IM Fell French Canon",
2574
- "variants": [
2575
- "regular",
2576
- "italic"
2577
- ],
2578
- "subsets": [
2579
- "latin"
2580
- ]
2581
- },
2582
- {
2583
- "kind": "webfonts#webfont",
2584
- "family": "IM Fell French Canon SC",
2585
- "variants": [
2586
- "regular"
2587
- ],
2588
- "subsets": [
2589
- "latin"
2590
- ]
2591
- },
2592
- {
2593
- "kind": "webfonts#webfont",
2594
- "family": "IM Fell Great Primer",
2595
- "variants": [
2596
- "regular",
2597
- "italic"
2598
- ],
2599
- "subsets": [
2600
- "latin"
2601
- ]
2602
- },
2603
- {
2604
- "kind": "webfonts#webfont",
2605
- "family": "IM Fell Great Primer SC",
2606
- "variants": [
2607
- "regular"
2608
- ],
2609
- "subsets": [
2610
- "latin"
2611
- ]
2612
- },
2613
- {
2614
- "kind": "webfonts#webfont",
2615
- "family": "Iceberg",
2616
- "variants": [
2617
- "regular"
2618
- ],
2619
- "subsets": [
2620
- "latin"
2621
- ]
2622
- },
2623
- {
2624
- "kind": "webfonts#webfont",
2625
- "family": "Iceland",
2626
- "variants": [
2627
- "regular"
2628
- ],
2629
- "subsets": [
2630
- "latin"
2631
- ]
2632
- },
2633
- {
2634
- "kind": "webfonts#webfont",
2635
- "family": "Imprima",
2636
- "variants": [
2637
- "regular"
2638
- ],
2639
- "subsets": [
2640
- "latin",
2641
- "latin-ext"
2642
- ]
2643
- },
2644
- {
2645
- "kind": "webfonts#webfont",
2646
- "family": "Inconsolata",
2647
- "variants": [
2648
- "regular"
2649
- ],
2650
- "subsets": [
2651
- "latin"
2652
- ]
2653
- },
2654
- {
2655
- "kind": "webfonts#webfont",
2656
- "family": "Inder",
2657
- "variants": [
2658
- "regular"
2659
- ],
2660
- "subsets": [
2661
- "latin",
2662
- "latin-ext"
2663
- ]
2664
- },
2665
- {
2666
- "kind": "webfonts#webfont",
2667
- "family": "Indie Flower",
2668
- "variants": [
2669
- "regular"
2670
- ],
2671
- "subsets": [
2672
- "latin"
2673
- ]
2674
- },
2675
- {
2676
- "kind": "webfonts#webfont",
2677
- "family": "Inika",
2678
- "variants": [
2679
- "regular",
2680
- "700"
2681
- ],
2682
- "subsets": [
2683
- "latin",
2684
- "latin-ext"
2685
- ]
2686
- },
2687
- {
2688
- "kind": "webfonts#webfont",
2689
- "family": "Irish Grover",
2690
- "variants": [
2691
- "regular"
2692
- ],
2693
- "subsets": [
2694
- "latin"
2695
- ]
2696
- },
2697
- {
2698
- "kind": "webfonts#webfont",
2699
- "family": "Istok Web",
2700
- "variants": [
2701
- "regular",
2702
- "italic",
2703
- "700",
2704
- "700italic"
2705
- ],
2706
- "subsets": [
2707
- "latin",
2708
- "cyrillic-ext",
2709
- "latin-ext",
2710
- "cyrillic"
2711
- ]
2712
- },
2713
- {
2714
- "kind": "webfonts#webfont",
2715
- "family": "Italiana",
2716
- "variants": [
2717
- "regular"
2718
- ],
2719
- "subsets": [
2720
- "latin"
2721
- ]
2722
- },
2723
- {
2724
- "kind": "webfonts#webfont",
2725
- "family": "Italianno",
2726
- "variants": [
2727
- "regular"
2728
- ],
2729
- "subsets": [
2730
- "latin",
2731
- "latin-ext"
2732
- ]
2733
- },
2734
- {
2735
- "kind": "webfonts#webfont",
2736
- "family": "Jim Nightshade",
2737
- "variants": [
2738
- "regular"
2739
- ],
2740
- "subsets": [
2741
- "latin",
2742
- "latin-ext"
2743
- ]
2744
- },
2745
- {
2746
- "kind": "webfonts#webfont",
2747
- "family": "Jockey One",
2748
- "variants": [
2749
- "regular"
2750
- ],
2751
- "subsets": [
2752
- "latin",
2753
- "latin-ext"
2754
- ]
2755
- },
2756
- {
2757
- "kind": "webfonts#webfont",
2758
- "family": "Jolly Lodger",
2759
- "variants": [
2760
- "regular"
2761
- ],
2762
- "subsets": [
2763
- "latin",
2764
- "latin-ext"
2765
- ]
2766
- },
2767
- {
2768
- "kind": "webfonts#webfont",
2769
- "family": "Josefin Sans",
2770
- "variants": [
2771
- "100",
2772
- "100italic",
2773
- "300",
2774
- "300italic",
2775
- "regular",
2776
- "italic",
2777
- "600",
2778
- "600italic",
2779
- "700",
2780
- "700italic"
2781
- ],
2782
- "subsets": [
2783
- "latin"
2784
- ]
2785
- },
2786
- {
2787
- "kind": "webfonts#webfont",
2788
- "family": "Josefin Slab",
2789
- "variants": [
2790
- "100",
2791
- "100italic",
2792
- "300",
2793
- "300italic",
2794
- "regular",
2795
- "italic",
2796
- "600",
2797
- "600italic",
2798
- "700",
2799
- "700italic"
2800
- ],
2801
- "subsets": [
2802
- "latin"
2803
- ]
2804
- },
2805
- {
2806
- "kind": "webfonts#webfont",
2807
- "family": "Judson",
2808
- "variants": [
2809
- "regular",
2810
- "italic",
2811
- "700"
2812
- ],
2813
- "subsets": [
2814
- "latin"
2815
- ]
2816
- },
2817
- {
2818
- "kind": "webfonts#webfont",
2819
- "family": "Julee",
2820
- "variants": [
2821
- "regular"
2822
- ],
2823
- "subsets": [
2824
- "latin"
2825
- ]
2826
- },
2827
- {
2828
- "kind": "webfonts#webfont",
2829
- "family": "Junge",
2830
- "variants": [
2831
- "regular"
2832
- ],
2833
- "subsets": [
2834
- "latin"
2835
- ]
2836
- },
2837
- {
2838
- "kind": "webfonts#webfont",
2839
- "family": "Jura",
2840
- "variants": [
2841
- "300",
2842
- "regular",
2843
- "500",
2844
- "600"
2845
- ],
2846
- "subsets": [
2847
- "greek-ext",
2848
- "latin",
2849
- "cyrillic-ext",
2850
- "latin-ext",
2851
- "cyrillic",
2852
- "greek"
2853
- ]
2854
- },
2855
- {
2856
- "kind": "webfonts#webfont",
2857
- "family": "Just Another Hand",
2858
- "variants": [
2859
- "regular"
2860
- ],
2861
- "subsets": [
2862
- "latin"
2863
- ]
2864
- },
2865
- {
2866
- "kind": "webfonts#webfont",
2867
- "family": "Just Me Again Down Here",
2868
- "variants": [
2869
- "regular"
2870
- ],
2871
- "subsets": [
2872
- "latin"
2873
- ]
2874
- },
2875
- {
2876
- "kind": "webfonts#webfont",
2877
- "family": "Kameron",
2878
- "variants": [
2879
- "regular",
2880
- "700"
2881
- ],
2882
- "subsets": [
2883
- "latin"
2884
- ]
2885
- },
2886
- {
2887
- "kind": "webfonts#webfont",
2888
- "family": "Karla",
2889
- "variants": [
2890
- "regular",
2891
- "italic",
2892
- "700",
2893
- "700italic"
2894
- ],
2895
- "subsets": [
2896
- "latin"
2897
- ]
2898
- },
2899
- {
2900
- "kind": "webfonts#webfont",
2901
- "family": "Kaushan Script",
2902
- "variants": [
2903
- "regular"
2904
- ],
2905
- "subsets": [
2906
- "latin",
2907
- "latin-ext"
2908
- ]
2909
- },
2910
- {
2911
- "kind": "webfonts#webfont",
2912
- "family": "Kelly Slab",
2913
- "variants": [
2914
- "regular"
2915
- ],
2916
- "subsets": [
2917
- "latin",
2918
- "latin-ext",
2919
- "cyrillic"
2920
- ]
2921
- },
2922
- {
2923
- "kind": "webfonts#webfont",
2924
- "family": "Kenia",
2925
- "variants": [
2926
- "regular"
2927
- ],
2928
- "subsets": [
2929
- "latin"
2930
- ]
2931
- },
2932
- {
2933
- "kind": "webfonts#webfont",
2934
- "family": "Khmer",
2935
- "variants": [
2936
- "regular"
2937
- ],
2938
- "subsets": [
2939
- "khmer"
2940
- ]
2941
- },
2942
- {
2943
- "kind": "webfonts#webfont",
2944
- "family": "Knewave",
2945
- "variants": [
2946
- "regular"
2947
- ],
2948
- "subsets": [
2949
- "latin",
2950
- "latin-ext"
2951
- ]
2952
- },
2953
- {
2954
- "kind": "webfonts#webfont",
2955
- "family": "Kotta One",
2956
- "variants": [
2957
- "regular"
2958
- ],
2959
- "subsets": [
2960
- "latin",
2961
- "latin-ext"
2962
- ]
2963
- },
2964
- {
2965
- "kind": "webfonts#webfont",
2966
- "family": "Koulen",
2967
- "variants": [
2968
- "regular"
2969
- ],
2970
- "subsets": [
2971
- "khmer"
2972
- ]
2973
- },
2974
- {
2975
- "kind": "webfonts#webfont",
2976
- "family": "Kranky",
2977
- "variants": [
2978
- "regular"
2979
- ],
2980
- "subsets": [
2981
- "latin"
2982
- ]
2983
- },
2984
- {
2985
- "kind": "webfonts#webfont",
2986
- "family": "Kreon",
2987
- "variants": [
2988
- "300",
2989
- "regular",
2990
- "700"
2991
- ],
2992
- "subsets": [
2993
- "latin"
2994
- ]
2995
- },
2996
- {
2997
- "kind": "webfonts#webfont",
2998
- "family": "Kristi",
2999
- "variants": [
3000
- "regular"
3001
- ],
3002
- "subsets": [
3003
- "latin"
3004
- ]
3005
- },
3006
- {
3007
- "kind": "webfonts#webfont",
3008
- "family": "Krona One",
3009
- "variants": [
3010
- "regular"
3011
- ],
3012
- "subsets": [
3013
- "latin",
3014
- "latin-ext"
3015
- ]
3016
- },
3017
- {
3018
- "kind": "webfonts#webfont",
3019
- "family": "La Belle Aurore",
3020
- "variants": [
3021
- "regular"
3022
- ],
3023
- "subsets": [
3024
- "latin"
3025
- ]
3026
- },
3027
- {
3028
- "kind": "webfonts#webfont",
3029
- "family": "Lancelot",
3030
- "variants": [
3031
- "regular"
3032
- ],
3033
- "subsets": [
3034
- "latin"
3035
- ]
3036
- },
3037
- {
3038
- "kind": "webfonts#webfont",
3039
- "family": "Lato",
3040
- "variants": [
3041
- "100",
3042
- "100italic",
3043
- "300",
3044
- "300italic",
3045
- "regular",
3046
- "italic",
3047
- "700",
3048
- "700italic",
3049
- "900",
3050
- "900italic"
3051
- ],
3052
- "subsets": [
3053
- "latin"
3054
- ]
3055
- },
3056
- {
3057
- "kind": "webfonts#webfont",
3058
- "family": "League Script",
3059
- "variants": [
3060
- "regular"
3061
- ],
3062
- "subsets": [
3063
- "latin"
3064
- ]
3065
- },
3066
- {
3067
- "kind": "webfonts#webfont",
3068
- "family": "Leckerli One",
3069
- "variants": [
3070
- "regular"
3071
- ],
3072
- "subsets": [
3073
- "latin"
3074
- ]
3075
- },
3076
- {
3077
- "kind": "webfonts#webfont",
3078
- "family": "Ledger",
3079
- "variants": [
3080
- "regular"
3081
- ],
3082
- "subsets": [
3083
- "latin",
3084
- "latin-ext",
3085
- "cyrillic"
3086
- ]
3087
- },
3088
- {
3089
- "kind": "webfonts#webfont",
3090
- "family": "Lekton",
3091
- "variants": [
3092
- "regular",
3093
- "italic",
3094
- "700"
3095
- ],
3096
- "subsets": [
3097
- "latin"
3098
- ]
3099
- },
3100
- {
3101
- "kind": "webfonts#webfont",
3102
- "family": "Lemon",
3103
- "variants": [
3104
- "regular"
3105
- ],
3106
- "subsets": [
3107
- "latin"
3108
- ]
3109
- },
3110
- {
3111
- "kind": "webfonts#webfont",
3112
- "family": "Lilita One",
3113
- "variants": [
3114
- "regular"
3115
- ],
3116
- "subsets": [
3117
- "latin",
3118
- "latin-ext"
3119
- ]
3120
- },
3121
- {
3122
- "kind": "webfonts#webfont",
3123
- "family": "Limelight",
3124
- "variants": [
3125
- "regular"
3126
- ],
3127
- "subsets": [
3128
- "latin"
3129
- ]
3130
- },
3131
- {
3132
- "kind": "webfonts#webfont",
3133
- "family": "Linden Hill",
3134
- "variants": [
3135
- "regular",
3136
- "italic"
3137
- ],
3138
- "subsets": [
3139
- "latin"
3140
- ]
3141
- },
3142
- {
3143
- "kind": "webfonts#webfont",
3144
- "family": "Lobster",
3145
- "variants": [
3146
- "regular"
3147
- ],
3148
- "subsets": [
3149
- "latin",
3150
- "cyrillic-ext",
3151
- "latin-ext",
3152
- "cyrillic"
3153
- ]
3154
- },
3155
- {
3156
- "kind": "webfonts#webfont",
3157
- "family": "Lobster Two",
3158
- "variants": [
3159
- "regular",
3160
- "italic",
3161
- "700",
3162
- "700italic"
3163
- ],
3164
- "subsets": [
3165
- "latin"
3166
- ]
3167
- },
3168
- {
3169
- "kind": "webfonts#webfont",
3170
- "family": "Londrina Outline",
3171
- "variants": [
3172
- "regular"
3173
- ],
3174
- "subsets": [
3175
- "latin"
3176
- ]
3177
- },
3178
- {
3179
- "kind": "webfonts#webfont",
3180
- "family": "Londrina Shadow",
3181
- "variants": [
3182
- "regular"
3183
- ],
3184
- "subsets": [
3185
- "latin"
3186
- ]
3187
- },
3188
- {
3189
- "kind": "webfonts#webfont",
3190
- "family": "Londrina Sketch",
3191
- "variants": [
3192
- "regular"
3193
- ],
3194
- "subsets": [
3195
- "latin"
3196
- ]
3197
- },
3198
- {
3199
- "kind": "webfonts#webfont",
3200
- "family": "Londrina Solid",
3201
- "variants": [
3202
- "regular"
3203
- ],
3204
- "subsets": [
3205
- "latin"
3206
- ]
3207
- },
3208
- {
3209
- "kind": "webfonts#webfont",
3210
- "family": "Lora",
3211
- "variants": [
3212
- "regular",
3213
- "italic",
3214
- "700",
3215
- "700italic"
3216
- ],
3217
- "subsets": [
3218
- "latin"
3219
- ]
3220
- },
3221
- {
3222
- "kind": "webfonts#webfont",
3223
- "family": "Love Ya Like A Sister",
3224
- "variants": [
3225
- "regular"
3226
- ],
3227
- "subsets": [
3228
- "latin"
3229
- ]
3230
- },
3231
- {
3232
- "kind": "webfonts#webfont",
3233
- "family": "Loved by the King",
3234
- "variants": [
3235
- "regular"
3236
- ],
3237
- "subsets": [
3238
- "latin"
3239
- ]
3240
- },
3241
- {
3242
- "kind": "webfonts#webfont",
3243
- "family": "Lovers Quarrel",
3244
- "variants": [
3245
- "regular"
3246
- ],
3247
- "subsets": [
3248
- "latin",
3249
- "latin-ext"
3250
- ]
3251
- },
3252
- {
3253
- "kind": "webfonts#webfont",
3254
- "family": "Luckiest Guy",
3255
- "variants": [
3256
- "regular"
3257
- ],
3258
- "subsets": [
3259
- "latin"
3260
- ]
3261
- },
3262
- {
3263
- "kind": "webfonts#webfont",
3264
- "family": "Lusitana",
3265
- "variants": [
3266
- "regular",
3267
- "700"
3268
- ],
3269
- "subsets": [
3270
- "latin"
3271
- ]
3272
- },
3273
- {
3274
- "kind": "webfonts#webfont",
3275
- "family": "Lustria",
3276
- "variants": [
3277
- "regular"
3278
- ],
3279
- "subsets": [
3280
- "latin"
3281
- ]
3282
- },
3283
- {
3284
- "kind": "webfonts#webfont",
3285
- "family": "Macondo",
3286
- "variants": [
3287
- "regular"
3288
- ],
3289
- "subsets": [
3290
- "latin"
3291
- ]
3292
- },
3293
- {
3294
- "kind": "webfonts#webfont",
3295
- "family": "Macondo Swash Caps",
3296
- "variants": [
3297
- "regular"
3298
- ],
3299
- "subsets": [
3300
- "latin"
3301
- ]
3302
- },
3303
- {
3304
- "kind": "webfonts#webfont",
3305
- "family": "Magra",
3306
- "variants": [
3307
- "regular",
3308
- "700"
3309
- ],
3310
- "subsets": [
3311
- "latin",
3312
- "latin-ext"
3313
- ]
3314
- },
3315
- {
3316
- "kind": "webfonts#webfont",
3317
- "family": "Maiden Orange",
3318
- "variants": [
3319
- "regular"
3320
- ],
3321
- "subsets": [
3322
- "latin"
3323
- ]
3324
- },
3325
- {
3326
- "kind": "webfonts#webfont",
3327
- "family": "Mako",
3328
- "variants": [
3329
- "regular"
3330
- ],
3331
- "subsets": [
3332
- "latin"
3333
- ]
3334
- },
3335
- {
3336
- "kind": "webfonts#webfont",
3337
- "family": "Marck Script",
3338
- "variants": [
3339
- "regular"
3340
- ],
3341
- "subsets": [
3342
- "latin",
3343
- "latin-ext",
3344
- "cyrillic"
3345
- ]
3346
- },
3347
- {
3348
- "kind": "webfonts#webfont",
3349
- "family": "Marko One",
3350
- "variants": [
3351
- "regular"
3352
- ],
3353
- "subsets": [
3354
- "latin"
3355
- ]
3356
- },
3357
- {
3358
- "kind": "webfonts#webfont",
3359
- "family": "Marmelad",
3360
- "variants": [
3361
- "regular"
3362
- ],
3363
- "subsets": [
3364
- "latin",
3365
- "latin-ext",
3366
- "cyrillic"
3367
- ]
3368
- },
3369
- {
3370
- "kind": "webfonts#webfont",
3371
- "family": "Marvel",
3372
- "variants": [
3373
- "regular",
3374
- "italic",
3375
- "700",
3376
- "700italic"
3377
- ],
3378
- "subsets": [
3379
- "latin"
3380
- ]
3381
- },
3382
- {
3383
- "kind": "webfonts#webfont",
3384
- "family": "Mate",
3385
- "variants": [
3386
- "regular",
3387
- "italic"
3388
- ],
3389
- "subsets": [
3390
- "latin"
3391
- ]
3392
- },
3393
- {
3394
- "kind": "webfonts#webfont",
3395
- "family": "Mate SC",
3396
- "variants": [
3397
- "regular"
3398
- ],
3399
- "subsets": [
3400
- "latin"
3401
- ]
3402
- },
3403
- {
3404
- "kind": "webfonts#webfont",
3405
- "family": "Maven Pro",
3406
- "variants": [
3407
- "regular",
3408
- "500",
3409
- "700",
3410
- "900"
3411
- ],
3412
- "subsets": [
3413
- "latin"
3414
- ]
3415
- },
3416
- {
3417
- "kind": "webfonts#webfont",
3418
- "family": "Meddon",
3419
- "variants": [
3420
- "regular"
3421
- ],
3422
- "subsets": [
3423
- "latin"
3424
- ]
3425
- },
3426
- {
3427
- "kind": "webfonts#webfont",
3428
- "family": "MedievalSharp",
3429
- "variants": [
3430
- "regular"
3431
- ],
3432
- "subsets": [
3433
- "latin",
3434
- "latin-ext"
3435
- ]
3436
- },
3437
- {
3438
- "kind": "webfonts#webfont",
3439
- "family": "Medula One",
3440
- "variants": [
3441
- "regular"
3442
- ],
3443
- "subsets": [
3444
- "latin"
3445
- ]
3446
- },
3447
- {
3448
- "kind": "webfonts#webfont",
3449
- "family": "Megrim",
3450
- "variants": [
3451
- "regular"
3452
- ],
3453
- "subsets": [
3454
- "latin"
3455
- ]
3456
- },
3457
- {
3458
- "kind": "webfonts#webfont",
3459
- "family": "Merienda One",
3460
- "variants": [
3461
- "regular"
3462
- ],
3463
- "subsets": [
3464
- "latin"
3465
- ]
3466
- },
3467
- {
3468
- "kind": "webfonts#webfont",
3469
- "family": "Merriweather",
3470
- "variants": [
3471
- "300",
3472
- "regular",
3473
- "700",
3474
- "900"
3475
- ],
3476
- "subsets": [
3477
- "latin"
3478
- ]
3479
- },
3480
- {
3481
- "kind": "webfonts#webfont",
3482
- "family": "Metal",
3483
- "variants": [
3484
- "regular"
3485
- ],
3486
- "subsets": [
3487
- "khmer"
3488
- ]
3489
- },
3490
- {
3491
- "kind": "webfonts#webfont",
3492
- "family": "Metal Mania",
3493
- "variants": [
3494
- "regular"
3495
- ],
3496
- "subsets": [
3497
- "latin",
3498
- "latin-ext"
3499
- ]
3500
- },
3501
- {
3502
- "kind": "webfonts#webfont",
3503
- "family": "Metamorphous",
3504
- "variants": [
3505
- "regular"
3506
- ],
3507
- "subsets": [
3508
- "latin",
3509
- "latin-ext"
3510
- ]
3511
- },
3512
- {
3513
- "kind": "webfonts#webfont",
3514
- "family": "Metrophobic",
3515
- "variants": [
3516
- "regular"
3517
- ],
3518
- "subsets": [
3519
- "latin"
3520
- ]
3521
- },
3522
- {
3523
- "kind": "webfonts#webfont",
3524
- "family": "Michroma",
3525
- "variants": [
3526
- "regular"
3527
- ],
3528
- "subsets": [
3529
- "latin"
3530
- ]
3531
- },
3532
- {
3533
- "kind": "webfonts#webfont",
3534
- "family": "Miltonian",
3535
- "variants": [
3536
- "regular"
3537
- ],
3538
- "subsets": [
3539
- "latin"
3540
- ]
3541
- },
3542
- {
3543
- "kind": "webfonts#webfont",
3544
- "family": "Miltonian Tattoo",
3545
- "variants": [
3546
- "regular"
3547
- ],
3548
- "subsets": [
3549
- "latin"
3550
- ]
3551
- },
3552
- {
3553
- "kind": "webfonts#webfont",
3554
- "family": "Miniver",
3555
- "variants": [
3556
- "regular"
3557
- ],
3558
- "subsets": [
3559
- "latin"
3560
- ]
3561
- },
3562
- {
3563
- "kind": "webfonts#webfont",
3564
- "family": "Miss Fajardose",
3565
- "variants": [
3566
- "regular"
3567
- ],
3568
- "subsets": [
3569
- "latin",
3570
- "latin-ext"
3571
- ]
3572
- },
3573
- {
3574
- "kind": "webfonts#webfont",
3575
- "family": "Modern Antiqua",
3576
- "variants": [
3577
- "regular"
3578
- ],
3579
- "subsets": [
3580
- "latin",
3581
- "latin-ext"
3582
- ]
3583
- },
3584
- {
3585
- "kind": "webfonts#webfont",
3586
- "family": "Molengo",
3587
- "variants": [
3588
- "regular"
3589
- ],
3590
- "subsets": [
3591
- "latin",
3592
- "latin-ext"
3593
- ]
3594
- },
3595
- {
3596
- "kind": "webfonts#webfont",
3597
- "family": "Monofett",
3598
- "variants": [
3599
- "regular"
3600
- ],
3601
- "subsets": [
3602
- "latin"
3603
- ]
3604
- },
3605
- {
3606
- "kind": "webfonts#webfont",
3607
- "family": "Monoton",
3608
- "variants": [
3609
- "regular"
3610
- ],
3611
- "subsets": [
3612
- "latin"
3613
- ]
3614
- },
3615
- {
3616
- "kind": "webfonts#webfont",
3617
- "family": "Monsieur La Doulaise",
3618
- "variants": [
3619
- "regular"
3620
- ],
3621
- "subsets": [
3622
- "latin",
3623
- "latin-ext"
3624
- ]
3625
- },
3626
- {
3627
- "kind": "webfonts#webfont",
3628
- "family": "Montaga",
3629
- "variants": [
3630
- "regular"
3631
- ],
3632
- "subsets": [
3633
- "latin"
3634
- ]
3635
- },
3636
- {
3637
- "kind": "webfonts#webfont",
3638
- "family": "Montez",
3639
- "variants": [
3640
- "regular"
3641
- ],
3642
- "subsets": [
3643
- "latin"
3644
- ]
3645
- },
3646
- {
3647
- "kind": "webfonts#webfont",
3648
- "family": "Montserrat",
3649
- "variants": [
3650
- "regular"
3651
- ],
3652
- "subsets": [
3653
- "latin"
3654
- ]
3655
- },
3656
- {
3657
- "kind": "webfonts#webfont",
3658
- "family": "Moul",
3659
- "variants": [
3660
- "regular"
3661
- ],
3662
- "subsets": [
3663
- "khmer"
3664
- ]
3665
- },
3666
- {
3667
- "kind": "webfonts#webfont",
3668
- "family": "Moulpali",
3669
- "variants": [
3670
- "regular"
3671
- ],
3672
- "subsets": [
3673
- "khmer"
3674
- ]
3675
- },
3676
- {
3677
- "kind": "webfonts#webfont",
3678
- "family": "Mountains of Christmas",
3679
- "variants": [
3680
- "regular",
3681
- "700"
3682
- ],
3683
- "subsets": [
3684
- "latin"
3685
- ]
3686
- },
3687
- {
3688
- "kind": "webfonts#webfont",
3689
- "family": "Mr Bedfort",
3690
- "variants": [
3691
- "regular"
3692
- ],
3693
- "subsets": [
3694
- "latin",
3695
- "latin-ext"
3696
- ]
3697
- },
3698
- {
3699
- "kind": "webfonts#webfont",
3700
- "family": "Mr Dafoe",
3701
- "variants": [
3702
- "regular"
3703
- ],
3704
- "subsets": [
3705
- "latin",
3706
- "latin-ext"
3707
- ]
3708
- },
3709
- {
3710
- "kind": "webfonts#webfont",
3711
- "family": "Mr De Haviland",
3712
- "variants": [
3713
- "regular"
3714
- ],
3715
- "subsets": [
3716
- "latin",
3717
- "latin-ext"
3718
- ]
3719
- },
3720
- {
3721
- "kind": "webfonts#webfont",
3722
- "family": "Mrs Saint Delafield",
3723
- "variants": [
3724
- "regular"
3725
- ],
3726
- "subsets": [
3727
- "latin",
3728
- "latin-ext"
3729
- ]
3730
- },
3731
- {
3732
- "kind": "webfonts#webfont",
3733
- "family": "Mrs Sheppards",
3734
- "variants": [
3735
- "regular"
3736
- ],
3737
- "subsets": [
3738
- "latin",
3739
- "latin-ext"
3740
- ]
3741
- },
3742
- {
3743
- "kind": "webfonts#webfont",
3744
- "family": "Muli",
3745
- "variants": [
3746
- "300",
3747
- "300italic",
3748
- "regular",
3749
- "italic"
3750
- ],
3751
- "subsets": [
3752
- "latin"
3753
- ]
3754
- },
3755
- {
3756
- "kind": "webfonts#webfont",
3757
- "family": "Mystery Quest",
3758
- "variants": [
3759
- "regular"
3760
- ],
3761
- "subsets": [
3762
- "latin",
3763
- "latin-ext"
3764
- ]
3765
- },
3766
- {
3767
- "kind": "webfonts#webfont",
3768
- "family": "Neucha",
3769
- "variants": [
3770
- "regular"
3771
- ],
3772
- "subsets": [
3773
- "latin",
3774
- "cyrillic"
3775
- ]
3776
- },
3777
- {
3778
- "kind": "webfonts#webfont",
3779
- "family": "Neuton",
3780
- "variants": [
3781
- "200",
3782
- "300",
3783
- "regular",
3784
- "italic",
3785
- "700",
3786
- "800"
3787
- ],
3788
- "subsets": [
3789
- "latin",
3790
- "latin-ext"
3791
- ]
3792
- },
3793
- {
3794
- "kind": "webfonts#webfont",
3795
- "family": "News Cycle",
3796
- "variants": [
3797
- "regular",
3798
- "700"
3799
- ],
3800
- "subsets": [
3801
- "latin"
3802
- ]
3803
- },
3804
- {
3805
- "kind": "webfonts#webfont",
3806
- "family": "Niconne",
3807
- "variants": [
3808
- "regular"
3809
- ],
3810
- "subsets": [
3811
- "latin",
3812
- "latin-ext"
3813
- ]
3814
- },
3815
- {
3816
- "kind": "webfonts#webfont",
3817
- "family": "Nixie One",
3818
- "variants": [
3819
- "regular"
3820
- ],
3821
- "subsets": [
3822
- "latin"
3823
- ]
3824
- },
3825
- {
3826
- "kind": "webfonts#webfont",
3827
- "family": "Nobile",
3828
- "variants": [
3829
- "regular",
3830
- "italic",
3831
- "700",
3832
- "700italic"
3833
- ],
3834
- "subsets": [
3835
- "latin"
3836
- ]
3837
- },
3838
- {
3839
- "kind": "webfonts#webfont",
3840
- "family": "Nokora",
3841
- "variants": [
3842
- "regular",
3843
- "700"
3844
- ],
3845
- "subsets": [
3846
- "khmer"
3847
- ]
3848
- },
3849
- {
3850
- "kind": "webfonts#webfont",
3851
- "family": "Norican",
3852
- "variants": [
3853
- "regular"
3854
- ],
3855
- "subsets": [
3856
- "latin",
3857
- "latin-ext"
3858
- ]
3859
- },
3860
- {
3861
- "kind": "webfonts#webfont",
3862
- "family": "Nosifer",
3863
- "variants": [
3864
- "regular"
3865
- ],
3866
- "subsets": [
3867
- "latin",
3868
- "latin-ext"
3869
- ]
3870
- },
3871
- {
3872
- "kind": "webfonts#webfont",
3873
- "family": "Nothing You Could Do",
3874
- "variants": [
3875
- "regular"
3876
- ],
3877
- "subsets": [
3878
- "latin"
3879
- ]
3880
- },
3881
- {
3882
- "kind": "webfonts#webfont",
3883
- "family": "Noticia Text",
3884
- "variants": [
3885
- "regular",
3886
- "italic",
3887
- "700",
3888
- "700italic"
3889
- ],
3890
- "subsets": [
3891
- "latin",
3892
- "vietnamese",
3893
- "latin-ext"
3894
- ]
3895
- },
3896
- {
3897
- "kind": "webfonts#webfont",
3898
- "family": "Nova Cut",
3899
- "variants": [
3900
- "regular"
3901
- ],
3902
- "subsets": [
3903
- "latin"
3904
- ]
3905
- },
3906
- {
3907
- "kind": "webfonts#webfont",
3908
- "family": "Nova Flat",
3909
- "variants": [
3910
- "regular"
3911
- ],
3912
- "subsets": [
3913
- "latin"
3914
- ]
3915
- },
3916
- {
3917
- "kind": "webfonts#webfont",
3918
- "family": "Nova Mono",
3919
- "variants": [
3920
- "regular"
3921
- ],
3922
- "subsets": [
3923
- "latin",
3924
- "greek"
3925
- ]
3926
- },
3927
- {
3928
- "kind": "webfonts#webfont",
3929
- "family": "Nova Oval",
3930
- "variants": [
3931
- "regular"
3932
- ],
3933
- "subsets": [
3934
- "latin"
3935
- ]
3936
- },
3937
- {
3938
- "kind": "webfonts#webfont",
3939
- "family": "Nova Round",
3940
- "variants": [
3941
- "regular"
3942
- ],
3943
- "subsets": [
3944
- "latin"
3945
- ]
3946
- },
3947
- {
3948
- "kind": "webfonts#webfont",
3949
- "family": "Nova Script",
3950
- "variants": [
3951
- "regular"
3952
- ],
3953
- "subsets": [
3954
- "latin"
3955
- ]
3956
- },
3957
- {
3958
- "kind": "webfonts#webfont",
3959
- "family": "Nova Slim",
3960
- "variants": [
3961
- "regular"
3962
- ],
3963
- "subsets": [
3964
- "latin"
3965
- ]
3966
- },
3967
- {
3968
- "kind": "webfonts#webfont",
3969
- "family": "Nova Square",
3970
- "variants": [
3971
- "regular"
3972
- ],
3973
- "subsets": [
3974
- "latin"
3975
- ]
3976
- },
3977
- {
3978
- "kind": "webfonts#webfont",
3979
- "family": "Numans",
3980
- "variants": [
3981
- "regular"
3982
- ],
3983
- "subsets": [
3984
- "latin"
3985
- ]
3986
- },
3987
- {
3988
- "kind": "webfonts#webfont",
3989
- "family": "Nunito",
3990
- "variants": [
3991
- "300",
3992
- "regular",
3993
- "700"
3994
- ],
3995
- "subsets": [
3996
- "latin"
3997
- ]
3998
- },
3999
- {
4000
- "kind": "webfonts#webfont",
4001
- "family": "Odor Mean Chey",
4002
- "variants": [
4003
- "regular"
4004
- ],
4005
- "subsets": [
4006
- "khmer"
4007
- ]
4008
- },
4009
- {
4010
- "kind": "webfonts#webfont",
4011
- "family": "Old Standard TT",
4012
- "variants": [
4013
- "regular",
4014
- "italic",
4015
- "700"
4016
- ],
4017
- "subsets": [
4018
- "latin"
4019
- ]
4020
- },
4021
- {
4022
- "kind": "webfonts#webfont",
4023
- "family": "Oldenburg",
4024
- "variants": [
4025
- "regular"
4026
- ],
4027
- "subsets": [
4028
- "latin",
4029
- "latin-ext"
4030
- ]
4031
- },
4032
- {
4033
- "kind": "webfonts#webfont",
4034
- "family": "Oleo Script",
4035
- "variants": [
4036
- "regular",
4037
- "700"
4038
- ],
4039
- "subsets": [
4040
- "latin",
4041
- "latin-ext"
4042
- ]
4043
- },
4044
- {
4045
- "kind": "webfonts#webfont",
4046
- "family": "Open Sans",
4047
- "variants": [
4048
- "300",
4049
- "300italic",
4050
- "regular",
4051
- "italic",
4052
- "600",
4053
- "600italic",
4054
- "700",
4055
- "700italic",
4056
- "800",
4057
- "800italic"
4058
- ],
4059
- "subsets": [
4060
- "greek-ext",
4061
- "latin",
4062
- "vietnamese",
4063
- "cyrillic-ext",
4064
- "latin-ext",
4065
- "cyrillic",
4066
- "greek"
4067
- ]
4068
- },
4069
- {
4070
- "kind": "webfonts#webfont",
4071
- "family": "Open Sans Condensed",
4072
- "variants": [
4073
- "300",
4074
- "300italic",
4075
- "700"
4076
- ],
4077
- "subsets": [
4078
- "greek-ext",
4079
- "latin",
4080
- "vietnamese",
4081
- "cyrillic-ext",
4082
- "latin-ext",
4083
- "cyrillic",
4084
- "greek"
4085
- ]
4086
- },
4087
- {
4088
- "kind": "webfonts#webfont",
4089
- "family": "Orbitron",
4090
- "variants": [
4091
- "regular",
4092
- "500",
4093
- "700",
4094
- "900"
4095
- ],
4096
- "subsets": [
4097
- "latin"
4098
- ]
4099
- },
4100
- {
4101
- "kind": "webfonts#webfont",
4102
- "family": "Original Surfer",
4103
- "variants": [
4104
- "regular"
4105
- ],
4106
- "subsets": [
4107
- "latin"
4108
- ]
4109
- },
4110
- {
4111
- "kind": "webfonts#webfont",
4112
- "family": "Oswald",
4113
- "variants": [
4114
- "300",
4115
- "regular",
4116
- "700"
4117
- ],
4118
- "subsets": [
4119
- "latin",
4120
- "latin-ext"
4121
- ]
4122
- },
4123
- {
4124
- "kind": "webfonts#webfont",
4125
- "family": "Over the Rainbow",
4126
- "variants": [
4127
- "regular"
4128
- ],
4129
- "subsets": [
4130
- "latin"
4131
- ]
4132
- },
4133
- {
4134
- "kind": "webfonts#webfont",
4135
- "family": "Overlock",
4136
- "variants": [
4137
- "regular",
4138
- "italic",
4139
- "700",
4140
- "700italic",
4141
- "900",
4142
- "900italic"
4143
- ],
4144
- "subsets": [
4145
- "latin",
4146
- "latin-ext"
4147
- ]
4148
- },
4149
- {
4150
- "kind": "webfonts#webfont",
4151
- "family": "Overlock SC",
4152
- "variants": [
4153
- "regular"
4154
- ],
4155
- "subsets": [
4156
- "latin",
4157
- "latin-ext"
4158
- ]
4159
- },
4160
- {
4161
- "kind": "webfonts#webfont",
4162
- "family": "Ovo",
4163
- "variants": [
4164
- "regular"
4165
- ],
4166
- "subsets": [
4167
- "latin"
4168
- ]
4169
- },
4170
- {
4171
- "kind": "webfonts#webfont",
4172
- "family": "Oxygen",
4173
- "variants": [
4174
- "regular"
4175
- ],
4176
- "subsets": [
4177
- "latin",
4178
- "latin-ext"
4179
- ]
4180
- },
4181
- {
4182
- "kind": "webfonts#webfont",
4183
- "family": "PT Mono",
4184
- "variants": [
4185
- "regular"
4186
- ],
4187
- "subsets": [
4188
- "latin",
4189
- "cyrillic-ext",
4190
- "latin-ext",
4191
- "cyrillic"
4192
- ]
4193
- },
4194
- {
4195
- "kind": "webfonts#webfont",
4196
- "family": "PT Sans",
4197
- "variants": [
4198
- "regular",
4199
- "italic",
4200
- "700",
4201
- "700italic"
4202
- ],
4203
- "subsets": [
4204
- "latin",
4205
- "latin-ext",
4206
- "cyrillic"
4207
- ]
4208
- },
4209
- {
4210
- "kind": "webfonts#webfont",
4211
- "family": "PT Sans Caption",
4212
- "variants": [
4213
- "regular",
4214
- "700"
4215
- ],
4216
- "subsets": [
4217
- "latin",
4218
- "latin-ext",
4219
- "cyrillic"
4220
- ]
4221
- },
4222
- {
4223
- "kind": "webfonts#webfont",
4224
- "family": "PT Sans Narrow",
4225
- "variants": [
4226
- "regular",
4227
- "700"
4228
- ],
4229
- "subsets": [
4230
- "latin",
4231
- "latin-ext",
4232
- "cyrillic"
4233
- ]
4234
- },
4235
- {
4236
- "kind": "webfonts#webfont",
4237
- "family": "PT Serif",
4238
- "variants": [
4239
- "regular",
4240
- "italic",
4241
- "700",
4242
- "700italic"
4243
- ],
4244
- "subsets": [
4245
- "latin",
4246
- "cyrillic"
4247
- ]
4248
- },
4249
- {
4250
- "kind": "webfonts#webfont",
4251
- "family": "PT Serif Caption",
4252
- "variants": [
4253
- "regular",
4254
- "italic"
4255
- ],
4256
- "subsets": [
4257
- "latin",
4258
- "cyrillic"
4259
- ]
4260
- },
4261
- {
4262
- "kind": "webfonts#webfont",
4263
- "family": "Pacifico",
4264
- "variants": [
4265
- "regular"
4266
- ],
4267
- "subsets": [
4268
- "latin"
4269
- ]
4270
- },
4271
- {
4272
- "kind": "webfonts#webfont",
4273
- "family": "Parisienne",
4274
- "variants": [
4275
- "regular"
4276
- ],
4277
- "subsets": [
4278
- "latin",
4279
- "latin-ext"
4280
- ]
4281
- },
4282
- {
4283
- "kind": "webfonts#webfont",
4284
- "family": "Passero One",
4285
- "variants": [
4286
- "regular"
4287
- ],
4288
- "subsets": [
4289
- "latin",
4290
- "latin-ext"
4291
- ]
4292
- },
4293
- {
4294
- "kind": "webfonts#webfont",
4295
- "family": "Passion One",
4296
- "variants": [
4297
- "regular",
4298
- "700",
4299
- "900"
4300
- ],
4301
- "subsets": [
4302
- "latin",
4303
- "latin-ext"
4304
- ]
4305
- },
4306
- {
4307
- "kind": "webfonts#webfont",
4308
- "family": "Patrick Hand",
4309
- "variants": [
4310
- "regular"
4311
- ],
4312
- "subsets": [
4313
- "latin",
4314
- "latin-ext"
4315
- ]
4316
- },
4317
- {
4318
- "kind": "webfonts#webfont",
4319
- "family": "Patua One",
4320
- "variants": [
4321
- "regular"
4322
- ],
4323
- "subsets": [
4324
- "latin"
4325
- ]
4326
- },
4327
- {
4328
- "kind": "webfonts#webfont",
4329
- "family": "Paytone One",
4330
- "variants": [
4331
- "regular"
4332
- ],
4333
- "subsets": [
4334
- "latin"
4335
- ]
4336
- },
4337
- {
4338
- "kind": "webfonts#webfont",
4339
- "family": "Permanent Marker",
4340
- "variants": [
4341
- "regular"
4342
- ],
4343
- "subsets": [
4344
- "latin"
4345
- ]
4346
- },
4347
- {
4348
- "kind": "webfonts#webfont",
4349
- "family": "Petrona",
4350
- "variants": [
4351
- "regular"
4352
- ],
4353
- "subsets": [
4354
- "latin"
4355
- ]
4356
- },
4357
- {
4358
- "kind": "webfonts#webfont",
4359
- "family": "Philosopher",
4360
- "variants": [
4361
- "regular",
4362
- "italic",
4363
- "700",
4364
- "700italic"
4365
- ],
4366
- "subsets": [
4367
- "latin",
4368
- "cyrillic"
4369
- ]
4370
- },
4371
- {
4372
- "kind": "webfonts#webfont",
4373
- "family": "Piedra",
4374
- "variants": [
4375
- "regular"
4376
- ],
4377
- "subsets": [
4378
- "latin",
4379
- "latin-ext"
4380
- ]
4381
- },
4382
- {
4383
- "kind": "webfonts#webfont",
4384
- "family": "Pinyon Script",
4385
- "variants": [
4386
- "regular"
4387
- ],
4388
- "subsets": [
4389
- "latin"
4390
- ]
4391
- },
4392
- {
4393
- "kind": "webfonts#webfont",
4394
- "family": "Plaster",
4395
- "variants": [
4396
- "regular"
4397
- ],
4398
- "subsets": [
4399
- "latin",
4400
- "latin-ext"
4401
- ]
4402
- },
4403
- {
4404
- "kind": "webfonts#webfont",
4405
- "family": "Play",
4406
- "variants": [
4407
- "regular",
4408
- "700"
4409
- ],
4410
- "subsets": [
4411
- "greek-ext",
4412
- "latin",
4413
- "cyrillic-ext",
4414
- "latin-ext",
4415
- "cyrillic",
4416
- "greek"
4417
- ]
4418
- },
4419
- {
4420
- "kind": "webfonts#webfont",
4421
- "family": "Playball",
4422
- "variants": [
4423
- "regular"
4424
- ],
4425
- "subsets": [
4426
- "latin",
4427
- "latin-ext"
4428
- ]
4429
- },
4430
- {
4431
- "kind": "webfonts#webfont",
4432
- "family": "Playfair Display",
4433
- "variants": [
4434
- "regular",
4435
- "italic"
4436
- ],
4437
- "subsets": [
4438
- "latin",
4439
- "latin-ext"
4440
- ]
4441
- },
4442
- {
4443
- "kind": "webfonts#webfont",
4444
- "family": "Podkova",
4445
- "variants": [
4446
- "regular",
4447
- "700"
4448
- ],
4449
- "subsets": [
4450
- "latin"
4451
- ]
4452
- },
4453
- {
4454
- "kind": "webfonts#webfont",
4455
- "family": "Poiret One",
4456
- "variants": [
4457
- "regular"
4458
- ],
4459
- "subsets": [
4460
- "latin",
4461
- "latin-ext",
4462
- "cyrillic"
4463
- ]
4464
- },
4465
- {
4466
- "kind": "webfonts#webfont",
4467
- "family": "Poller One",
4468
- "variants": [
4469
- "regular"
4470
- ],
4471
- "subsets": [
4472
- "latin"
4473
- ]
4474
- },
4475
- {
4476
- "kind": "webfonts#webfont",
4477
- "family": "Poly",
4478
- "variants": [
4479
- "regular",
4480
- "italic"
4481
- ],
4482
- "subsets": [
4483
- "latin"
4484
- ]
4485
- },
4486
- {
4487
- "kind": "webfonts#webfont",
4488
- "family": "Pompiere",
4489
- "variants": [
4490
- "regular"
4491
- ],
4492
- "subsets": [
4493
- "latin"
4494
- ]
4495
- },
4496
- {
4497
- "kind": "webfonts#webfont",
4498
- "family": "Pontano Sans",
4499
- "variants": [
4500
- "regular"
4501
- ],
4502
- "subsets": [
4503
- "latin",
4504
- "latin-ext"
4505
- ]
4506
- },
4507
- {
4508
- "kind": "webfonts#webfont",
4509
- "family": "Port Lligat Sans",
4510
- "variants": [
4511
- "regular"
4512
- ],
4513
- "subsets": [
4514
- "latin"
4515
- ]
4516
- },
4517
- {
4518
- "kind": "webfonts#webfont",
4519
- "family": "Port Lligat Slab",
4520
- "variants": [
4521
- "regular"
4522
- ],
4523
- "subsets": [
4524
- "latin"
4525
- ]
4526
- },
4527
- {
4528
- "kind": "webfonts#webfont",
4529
- "family": "Prata",
4530
- "variants": [
4531
- "regular"
4532
- ],
4533
- "subsets": [
4534
- "latin"
4535
- ]
4536
- },
4537
- {
4538
- "kind": "webfonts#webfont",
4539
- "family": "Preahvihear",
4540
- "variants": [
4541
- "regular"
4542
- ],
4543
- "subsets": [
4544
- "khmer"
4545
- ]
4546
- },
4547
- {
4548
- "kind": "webfonts#webfont",
4549
- "family": "Press Start 2P",
4550
- "variants": [
4551
- "regular"
4552
- ],
4553
- "subsets": [
4554
- "latin",
4555
- "latin-ext",
4556
- "cyrillic",
4557
- "greek"
4558
- ]
4559
- },
4560
- {
4561
- "kind": "webfonts#webfont",
4562
- "family": "Princess Sofia",
4563
- "variants": [
4564
- "regular"
4565
- ],
4566
- "subsets": [
4567
- "latin",
4568
- "latin-ext"
4569
- ]
4570
- },
4571
- {
4572
- "kind": "webfonts#webfont",
4573
- "family": "Prociono",
4574
- "variants": [
4575
- "regular"
4576
- ],
4577
- "subsets": [
4578
- "latin"
4579
- ]
4580
- },
4581
- {
4582
- "kind": "webfonts#webfont",
4583
- "family": "Prosto One",
4584
- "variants": [
4585
- "regular"
4586
- ],
4587
- "subsets": [
4588
- "latin",
4589
- "latin-ext",
4590
- "cyrillic"
4591
- ]
4592
- },
4593
- {
4594
- "kind": "webfonts#webfont",
4595
- "family": "Puritan",
4596
- "variants": [
4597
- "regular",
4598
- "italic",
4599
- "700",
4600
- "700italic"
4601
- ],
4602
- "subsets": [
4603
- "latin"
4604
- ]
4605
- },
4606
- {
4607
- "kind": "webfonts#webfont",
4608
- "family": "Quando",
4609
- "variants": [
4610
- "regular"
4611
- ],
4612
- "subsets": [
4613
- "latin",
4614
- "latin-ext"
4615
- ]
4616
- },
4617
- {
4618
- "kind": "webfonts#webfont",
4619
- "family": "Quantico",
4620
- "variants": [
4621
- "regular",
4622
- "italic",
4623
- "700",
4624
- "700italic"
4625
- ],
4626
- "subsets": [
4627
- "latin"
4628
- ]
4629
- },
4630
- {
4631
- "kind": "webfonts#webfont",
4632
- "family": "Quattrocento",
4633
- "variants": [
4634
- "regular",
4635
- "700"
4636
- ],
4637
- "subsets": [
4638
- "latin",
4639
- "latin-ext"
4640
- ]
4641
- },
4642
- {
4643
- "kind": "webfonts#webfont",
4644
- "family": "Quattrocento Sans",
4645
- "variants": [
4646
- "regular",
4647
- "italic",
4648
- "700",
4649
- "700italic"
4650
- ],
4651
- "subsets": [
4652
- "latin",
4653
- "latin-ext"
4654
- ]
4655
- },
4656
- {
4657
- "kind": "webfonts#webfont",
4658
- "family": "Questrial",
4659
- "variants": [
4660
- "regular"
4661
- ],
4662
- "subsets": [
4663
- "latin"
4664
- ]
4665
- },
4666
- {
4667
- "kind": "webfonts#webfont",
4668
- "family": "Quicksand",
4669
- "variants": [
4670
- "300",
4671
- "regular",
4672
- "700"
4673
- ],
4674
- "subsets": [
4675
- "latin"
4676
- ]
4677
- },
4678
- {
4679
- "kind": "webfonts#webfont",
4680
- "family": "Qwigley",
4681
- "variants": [
4682
- "regular"
4683
- ],
4684
- "subsets": [
4685
- "latin",
4686
- "latin-ext"
4687
- ]
4688
- },
4689
- {
4690
- "kind": "webfonts#webfont",
4691
- "family": "Radley",
4692
- "variants": [
4693
- "regular",
4694
- "italic"
4695
- ],
4696
- "subsets": [
4697
- "latin",
4698
- "latin-ext"
4699
- ]
4700
- },
4701
- {
4702
- "kind": "webfonts#webfont",
4703
- "family": "Raleway",
4704
- "variants": [
4705
- "100"
4706
- ],
4707
- "subsets": [
4708
- "latin"
4709
- ]
4710
- },
4711
- {
4712
- "kind": "webfonts#webfont",
4713
- "family": "Rammetto One",
4714
- "variants": [
4715
- "regular"
4716
- ],
4717
- "subsets": [
4718
- "latin",
4719
- "latin-ext"
4720
- ]
4721
- },
4722
- {
4723
- "kind": "webfonts#webfont",
4724
- "family": "Rancho",
4725
- "variants": [
4726
- "regular"
4727
- ],
4728
- "subsets": [
4729
- "latin"
4730
- ]
4731
- },
4732
- {
4733
- "kind": "webfonts#webfont",
4734
- "family": "Rationale",
4735
- "variants": [
4736
- "regular"
4737
- ],
4738
- "subsets": [
4739
- "latin"
4740
- ]
4741
- },
4742
- {
4743
- "kind": "webfonts#webfont",
4744
- "family": "Redressed",
4745
- "variants": [
4746
- "regular"
4747
- ],
4748
- "subsets": [
4749
- "latin"
4750
- ]
4751
- },
4752
- {
4753
- "kind": "webfonts#webfont",
4754
- "family": "Reenie Beanie",
4755
- "variants": [
4756
- "regular"
4757
- ],
4758
- "subsets": [
4759
- "latin"
4760
- ]
4761
- },
4762
- {
4763
- "kind": "webfonts#webfont",
4764
- "family": "Revalia",
4765
- "variants": [
4766
- "regular"
4767
- ],
4768
- "subsets": [
4769
- "latin",
4770
- "latin-ext"
4771
- ]
4772
- },
4773
- {
4774
- "kind": "webfonts#webfont",
4775
- "family": "Ribeye",
4776
- "variants": [
4777
- "regular"
4778
- ],
4779
- "subsets": [
4780
- "latin",
4781
- "latin-ext"
4782
- ]
4783
- },
4784
- {
4785
- "kind": "webfonts#webfont",
4786
- "family": "Ribeye Marrow",
4787
- "variants": [
4788
- "regular"
4789
- ],
4790
- "subsets": [
4791
- "latin",
4792
- "latin-ext"
4793
- ]
4794
- },
4795
- {
4796
- "kind": "webfonts#webfont",
4797
- "family": "Righteous",
4798
- "variants": [
4799
- "regular"
4800
- ],
4801
- "subsets": [
4802
- "latin",
4803
- "latin-ext"
4804
- ]
4805
- },
4806
- {
4807
- "kind": "webfonts#webfont",
4808
- "family": "Rochester",
4809
- "variants": [
4810
- "regular"
4811
- ],
4812
- "subsets": [
4813
- "latin"
4814
- ]
4815
- },
4816
- {
4817
- "kind": "webfonts#webfont",
4818
- "family": "Rock Salt",
4819
- "variants": [
4820
- "regular"
4821
- ],
4822
- "subsets": [
4823
- "latin"
4824
- ]
4825
- },
4826
- {
4827
- "kind": "webfonts#webfont",
4828
- "family": "Rokkitt",
4829
- "variants": [
4830
- "regular",
4831
- "700"
4832
- ],
4833
- "subsets": [
4834
- "latin"
4835
- ]
4836
- },
4837
- {
4838
- "kind": "webfonts#webfont",
4839
- "family": "Ropa Sans",
4840
- "variants": [
4841
- "regular",
4842
- "italic"
4843
- ],
4844
- "subsets": [
4845
- "latin",
4846
- "latin-ext"
4847
- ]
4848
- },
4849
- {
4850
- "kind": "webfonts#webfont",
4851
- "family": "Rosario",
4852
- "variants": [
4853
- "regular",
4854
- "italic",
4855
- "700",
4856
- "700italic"
4857
- ],
4858
- "subsets": [
4859
- "latin"
4860
- ]
4861
- },
4862
- {
4863
- "kind": "webfonts#webfont",
4864
- "family": "Rosarivo",
4865
- "variants": [
4866
- "regular",
4867
- "italic"
4868
- ],
4869
- "subsets": [
4870
- "latin",
4871
- "latin-ext"
4872
- ]
4873
- },
4874
- {
4875
- "kind": "webfonts#webfont",
4876
- "family": "Rouge Script",
4877
- "variants": [
4878
- "regular"
4879
- ],
4880
- "subsets": [
4881
-
4882
- "latin"
4883
- ]
4884
- },
4885
- {
4886
- "kind": "webfonts#webfont",
4887
- "family": "Ruda",
4888
- "variants": [
4889
- "regular",
4890
- "700",
4891
- "900"
4892
- ],
4893
- "subsets": [
4894
- "latin",
4895
- "latin-ext"
4896
- ]
4897
- },
4898
- {
4899
- "kind": "webfonts#webfont",
4900
- "family": "Ruge Boogie",
4901
- "variants": [
4902
- "regular"
4903
- ],
4904
- "subsets": [
4905
- "latin",
4906
- "latin-ext"
4907
- ]
4908
- },
4909
- {
4910
- "kind": "webfonts#webfont",
4911
- "family": "Ruluko",
4912
- "variants": [
4913
- "regular"
4914
- ],
4915
- "subsets": [
4916
- "latin",
4917
- "latin-ext"
4918
- ]
4919
- },
4920
- {
4921
- "kind": "webfonts#webfont",
4922
- "family": "Ruslan Display",
4923
- "variants": [
4924
- "regular"
4925
- ],
4926
- "subsets": [
4927
- "latin",
4928
- "cyrillic-ext",
4929
- "latin-ext",
4930
- "cyrillic"
4931
- ]
4932
- },
4933
- {
4934
- "kind": "webfonts#webfont",
4935
- "family": "Russo One",
4936
- "variants": [
4937
- "regular"
4938
- ],
4939
- "subsets": [
4940
- "latin",
4941
- "latin-ext",
4942
- "cyrillic"
4943
- ]
4944
- },
4945
- {
4946
- "kind": "webfonts#webfont",
4947
- "family": "Ruthie",
4948
- "variants": [
4949
- "regular"
4950
- ],
4951
- "subsets": [
4952
- "latin",
4953
- "latin-ext"
4954
- ]
4955
- },
4956
- {
4957
- "kind": "webfonts#webfont",
4958
- "family": "Sail",
4959
- "variants": [
4960
- "regular"
4961
- ],
4962
- "subsets": [
4963
- "latin"
4964
- ]
4965
- },
4966
- {
4967
- "kind": "webfonts#webfont",
4968
- "family": "Salsa",
4969
- "variants": [
4970
- "regular"
4971
- ],
4972
- "subsets": [
4973
- "latin"
4974
- ]
4975
- },
4976
- {
4977
- "kind": "webfonts#webfont",
4978
- "family": "Sancreek",
4979
- "variants": [
4980
- "regular"
4981
- ],
4982
- "subsets": [
4983
- "latin",
4984
- "latin-ext"
4985
- ]
4986
- },
4987
- {
4988
- "kind": "webfonts#webfont",
4989
- "family": "Sansita One",
4990
- "variants": [
4991
- "regular"
4992
- ],
4993
- "subsets": [
4994
- "latin"
4995
- ]
4996
- },
4997
- {
4998
- "kind": "webfonts#webfont",
4999
- "family": "Sarina",
5000
- "variants": [
5001
- "regular"
5002
- ],
5003
- "subsets": [
5004
- "latin",
5005
- "latin-ext"
5006
- ]
5007
- },
5008
- {
5009
- "kind": "webfonts#webfont",
5010
- "family": "Satisfy",
5011
- "variants": [
5012
- "regular"
5013
- ],
5014
- "subsets": [
5015
- "latin"
5016
- ]
5017
- },
5018
- {
5019
- "kind": "webfonts#webfont",
5020
- "family": "Schoolbell",
5021
- "variants": [
5022
- "regular"
5023
- ],
5024
- "subsets": [
5025
- "latin"
5026
- ]
5027
- },
5028
- {
5029
- "kind": "webfonts#webfont",
5030
- "family": "Seaweed Script",
5031
- "variants": [
5032
- "regular"
5033
- ],
5034
- "subsets": [
5035
- "latin",
5036
- "latin-ext"
5037
- ]
5038
- },
5039
- {
5040
- "kind": "webfonts#webfont",
5041
- "family": "Sevillana",
5042
- "variants": [
5043
- "regular"
5044
- ],
5045
- "subsets": [
5046
- "latin",
5047
- "latin-ext"
5048
- ]
5049
- },
5050
- {
5051
- "kind": "webfonts#webfont",
5052
- "family": "Shadows Into Light",
5053
- "variants": [
5054
- "regular"
5055
- ],
5056
- "subsets": [
5057
- "latin"
5058
- ]
5059
- },
5060
- {
5061
- "kind": "webfonts#webfont",
5062
- "family": "Shadows Into Light Two",
5063
- "variants": [
5064
- "regular"
5065
- ],
5066
- "subsets": [
5067
- "latin",
5068
- "latin-ext"
5069
- ]
5070
- },
5071
- {
5072
- "kind": "webfonts#webfont",
5073
- "family": "Shanti",
5074
- "variants": [
5075
- "regular"
5076
- ],
5077
- "subsets": [
5078
- "latin"
5079
- ]
5080
- },
5081
- {
5082
- "kind": "webfonts#webfont",
5083
- "family": "Share",
5084
- "variants": [
5085
- "regular",
5086
- "italic",
5087
- "700",
5088
- "700italic"
5089
- ],
5090
- "subsets": [
5091
- "latin",
5092
- "latin-ext"
5093
- ]
5094
- },
5095
- {
5096
- "kind": "webfonts#webfont",
5097
- "family": "Shojumaru",
5098
- "variants": [
5099
- "regular"
5100
- ],
5101
- "subsets": [
5102
- "latin",
5103
- "latin-ext"
5104
- ]
5105
- },
5106
- {
5107
- "kind": "webfonts#webfont",
5108
- "family": "Short Stack",
5109
- "variants": [
5110
- "regular"
5111
- ],
5112
- "subsets": [
5113
- "latin"
5114
- ]
5115
- },
5116
- {
5117
- "kind": "webfonts#webfont",
5118
- "family": "Siemreap",
5119
- "variants": [
5120
- "regular"
5121
- ],
5122
- "subsets": [
5123
- "khmer"
5124
- ]
5125
- },
5126
- {
5127
- "kind": "webfonts#webfont",
5128
- "family": "Sigmar One",
5129
- "variants": [
5130
- "regular"
5131
- ],
5132
- "subsets": [
5133
- "latin"
5134
- ]
5135
- },
5136
- {
5137
- "kind": "webfonts#webfont",
5138
- "family": "Signika",
5139
- "variants": [
5140
- "300",
5141
- "regular",
5142
- "600",
5143
- "700"
5144
- ],
5145
- "subsets": [
5146
- "latin",
5147
- "latin-ext"
5148
- ]
5149
- },
5150
- {
5151
- "kind": "webfonts#webfont",
5152
- "family": "Signika Negative",
5153
- "variants": [
5154
- "300",
5155
- "regular",
5156
- "600",
5157
- "700"
5158
- ],
5159
- "subsets": [
5160
- "latin",
5161
- "latin-ext"
5162
- ]
5163
- },
5164
- {
5165
- "kind": "webfonts#webfont",
5166
- "family": "Simonetta",
5167
- "variants": [
5168
- "regular",
5169
- "italic",
5170
- "900",
5171
- "900italic"
5172
- ],
5173
- "subsets": [
5174
- "latin",
5175
- "latin-ext"
5176
- ]
5177
- },
5178
- {
5179
- "kind": "webfonts#webfont",
5180
- "family": "Sirin Stencil",
5181
- "variants": [
5182
- "regular"
5183
- ],
5184
- "subsets": [
5185
- "latin"
5186
- ]
5187
- },
5188
- {
5189
- "kind": "webfonts#webfont",
5190
- "family": "Six Caps",
5191
- "variants": [
5192
- "regular"
5193
- ],
5194
- "subsets": [
5195
- "latin"
5196
- ]
5197
- },
5198
- {
5199
- "kind": "webfonts#webfont",
5200
- "family": "Slackey",
5201
- "variants": [
5202
- "regular"
5203
- ],
5204
- "subsets": [
5205
- "latin"
5206
- ]
5207
- },
5208
- {
5209
- "kind": "webfonts#webfont",
5210
- "family": "Smokum",
5211
- "variants": [
5212
- "regular"
5213
- ],
5214
- "subsets": [
5215
- "latin"
5216
- ]
5217
- },
5218
- {
5219
- "kind": "webfonts#webfont",
5220
- "family": "Smythe",
5221
- "variants": [
5222
- "regular"
5223
- ],
5224
- "subsets": [
5225
- "latin"
5226
- ]
5227
- },
5228
- {
5229
- "kind": "webfonts#webfont",
5230
- "family": "Sniglet",
5231
- "variants": [
5232
- "800"
5233
- ],
5234
- "subsets": [
5235
- "latin"
5236
- ]
5237
- },
5238
- {
5239
- "kind": "webfonts#webfont",
5240
- "family": "Snippet",
5241
- "variants": [
5242
- "regular"
5243
- ],
5244
- "subsets": [
5245
- "latin"
5246
- ]
5247
- },
5248
- {
5249
- "kind": "webfonts#webfont",
5250
- "family": "Sofia",
5251
- "variants": [
5252
- "regular"
5253
- ],
5254
- "subsets": [
5255
- "latin"
5256
- ]
5257
- },
5258
- {
5259
- "kind": "webfonts#webfont",
5260
- "family": "Sonsie One",
5261
- "variants": [
5262
- "regular"
5263
- ],
5264
- "subsets": [
5265
- "latin",
5266
- "latin-ext"
5267
- ]
5268
- },
5269
- {
5270
- "kind": "webfonts#webfont",
5271
- "family": "Sorts Mill Goudy",
5272
- "variants": [
5273
- "regular",
5274
- "italic"
5275
- ],
5276
- "subsets": [
5277
- "latin",
5278
- "latin-ext"
5279
- ]
5280
- },
5281
- {
5282
- "kind": "webfonts#webfont",
5283
- "family": "Source Sans Pro",
5284
- "variants": [
5285
- "200",
5286
- "200italic",
5287
- "300",
5288
- "300italic",
5289
- "regular",
5290
- "italic",
5291
- "600",
5292
- "600italic",
5293
- "700",
5294
- "700italic",
5295
- "900",
5296
- "900italic"
5297
- ],
5298
- "subsets": [
5299
- "latin",
5300
- "latin-ext"
5301
- ]
5302
- },
5303
- {
5304
- "kind": "webfonts#webfont",
5305
- "family": "Special Elite",
5306
- "variants": [
5307
- "regular"
5308
- ],
5309
- "subsets": [
5310
- "latin"
5311
- ]
5312
- },
5313
- {
5314
- "kind": "webfonts#webfont",
5315
- "family": "Spicy Rice",
5316
- "variants": [
5317
- "regular"
5318
- ],
5319
- "subsets": [
5320
- "latin"
5321
- ]
5322
- },
5323
- {
5324
- "kind": "webfonts#webfont",
5325
- "family": "Spinnaker",
5326
- "variants": [
5327
- "regular"
5328
- ],
5329
- "subsets": [
5330
- "latin",
5331
- "latin-ext"
5332
- ]
5333
- },
5334
- {
5335
- "kind": "webfonts#webfont",
5336
- "family": "Spirax",
5337
- "variants": [
5338
- "regular"
5339
- ],
5340
- "subsets": [
5341
- "latin"
5342
- ]
5343
- },
5344
- {
5345
- "kind": "webfonts#webfont",
5346
- "family": "Squada One",
5347
- "variants": [
5348
- "regular"
5349
- ],
5350
- "subsets": [
5351
- "latin"
5352
- ]
5353
- },
5354
- {
5355
- "kind": "webfonts#webfont",
5356
- "family": "Stardos Stencil",
5357
- "variants": [
5358
- "regular",
5359
- "700"
5360
- ],
5361
- "subsets": [
5362
- "latin"
5363
- ]
5364
- },
5365
- {
5366
- "kind": "webfonts#webfont",
5367
- "family": "Stint Ultra Condensed",
5368
- "variants": [
5369
- "regular"
5370
- ],
5371
- "subsets": [
5372
- "latin",
5373
- "latin-ext"
5374
- ]
5375
- },
5376
- {
5377
- "kind": "webfonts#webfont",
5378
- "family": "Stint Ultra Expanded",
5379
- "variants": [
5380
- "regular"
5381
- ],
5382
- "subsets": [
5383
- "latin",
5384
- "latin-ext"
5385
- ]
5386
- },
5387
- {
5388
- "kind": "webfonts#webfont",
5389
- "family": "Stoke",
5390
- "variants": [
5391
- "regular"
5392
- ],
5393
- "subsets": [
5394
- "latin",
5395
- "latin-ext"
5396
- ]
5397
- },
5398
- {
5399
- "kind": "webfonts#webfont",
5400
- "family": "Sue Ellen Francisco",
5401
- "variants": [
5402
- "regular"
5403
- ],
5404
- "subsets": [
5405
- "latin"
5406
- ]
5407
- },
5408
- {
5409
- "kind": "webfonts#webfont",
5410
- "family": "Sunshiney",
5411
- "variants": [
5412
- "regular"
5413
- ],
5414
- "subsets": [
5415
- "latin"
5416
- ]
5417
- },
5418
- {
5419
- "kind": "webfonts#webfont",
5420
- "family": "Supermercado One",
5421
- "variants": [
5422
- "regular"
5423
- ],
5424
- "subsets": [
5425
- "latin"
5426
- ]
5427
- },
5428
- {
5429
- "kind": "webfonts#webfont",
5430
- "family": "Suwannaphum",
5431
- "variants": [
5432
- "regular"
5433
- ],
5434
- "subsets": [
5435
- "khmer"
5436
- ]
5437
- },
5438
- {
5439
- "kind": "webfonts#webfont",
5440
- "family": "Swanky and Moo Moo",
5441
- "variants": [
5442
- "regular"
5443
- ],
5444
- "subsets": [
5445
- "latin"
5446
- ]
5447
- },
5448
- {
5449
- "kind": "webfonts#webfont",
5450
- "family": "Syncopate",
5451
- "variants": [
5452
- "regular",
5453
- "700"
5454
- ],
5455
- "subsets": [
5456
- "latin"
5457
- ]
5458
- },
5459
- {
5460
- "kind": "webfonts#webfont",
5461
- "family": "Tangerine",
5462
- "variants": [
5463
- "regular",
5464
- "700"
5465
- ],
5466
- "subsets": [
5467
- "latin"
5468
- ]
5469
- },
5470
- {
5471
- "kind": "webfonts#webfont",
5472
- "family": "Taprom",
5473
- "variants": [
5474
- "regular"
5475
- ],
5476
- "subsets": [
5477
- "khmer"
5478
- ]
5479
- },
5480
- {
5481
- "kind": "webfonts#webfont",
5482
- "family": "Telex",
5483
- "variants": [
5484
- "regular"
5485
- ],
5486
- "subsets": [
5487
- "latin"
5488
- ]
5489
- },
5490
- {
5491
- "kind": "webfonts#webfont",
5492
- "family": "Tenor Sans",
5493
- "variants": [
5494
- "regular"
5495
- ],
5496
- "subsets": [
5497
- "latin",
5498
- "cyrillic-ext",
5499
- "latin-ext",
5500
- "cyrillic"
5501
- ]
5502
- },
5503
- {
5504
- "kind": "webfonts#webfont",
5505
- "family": "The Girl Next Door",
5506
- "variants": [
5507
- "regular"
5508
- ],
5509
- "subsets": [
5510
- "latin"
5511
- ]
5512
- },
5513
- {
5514
- "kind": "webfonts#webfont",
5515
- "family": "Tienne",
5516
- "variants": [
5517
- "regular",
5518
- "700",
5519
- "900"
5520
- ],
5521
- "subsets": [
5522
- "latin"
5523
- ]
5524
- },
5525
- {
5526
- "kind": "webfonts#webfont",
5527
- "family": "Tinos",
5528
- "variants": [
5529
- "regular",
5530
- "italic",
5531
- "700",
5532
- "700italic"
5533
- ],
5534
- "subsets": [
5535
- "latin"
5536
- ]
5537
- },
5538
- {
5539
- "kind": "webfonts#webfont",
5540
- "family": "Titan One",
5541
- "variants": [
5542
- "regular"
5543
- ],
5544
- "subsets": [
5545
- "latin",
5546
- "latin-ext"
5547
- ]
5548
- },
5549
- {
5550
- "kind": "webfonts#webfont",
5551
- "family": "Trade Winds",
5552
- "variants": [
5553
- "regular"
5554
- ],
5555
- "subsets": [
5556
- "latin"
5557
- ]
5558
- },
5559
- {
5560
- "kind": "webfonts#webfont",
5561
- "family": "Trocchi",
5562
- "variants": [
5563
- "regular"
5564
- ],
5565
- "subsets": [
5566
- "latin",
5567
- "latin-ext"
5568
- ]
5569
- },
5570
- {
5571
- "kind": "webfonts#webfont",
5572
- "family": "Trochut",
5573
- "variants": [
5574
- "regular",
5575
- "italic",
5576
- "700"
5577
- ],
5578
- "subsets": [
5579
- "latin"
5580
- ]
5581
- },
5582
- {
5583
- "kind": "webfonts#webfont",
5584
- "family": "Trykker",
5585
- "variants": [
5586
- "regular"
5587
- ],
5588
- "subsets": [
5589
- "latin",
5590
- "latin-ext"
5591
- ]
5592
- },
5593
- {
5594
- "kind": "webfonts#webfont",
5595
- "family": "Tulpen One",
5596
- "variants": [
5597
- "regular"
5598
- ],
5599
- "subsets": [
5600
- "latin"
5601
- ]
5602
- },
5603
- {
5604
- "kind": "webfonts#webfont",
5605
- "family": "Ubuntu",
5606
- "variants": [
5607
- "300",
5608
- "300italic",
5609
- "regular",
5610
- "italic",
5611
- "500",
5612
- "500italic",
5613
- "700",
5614
- "700italic"
5615
- ],
5616
- "subsets": [
5617
- "greek-ext",
5618
- "latin",
5619
- "cyrillic-ext",
5620
- "latin-ext",
5621
- "cyrillic",
5622
- "greek"
5623
- ]
5624
- },
5625
- {
5626
- "kind": "webfonts#webfont",
5627
- "family": "Ubuntu Condensed",
5628
- "variants": [
5629
- "regular"
5630
- ],
5631
- "subsets": [
5632
- "greek-ext",
5633
- "latin",
5634
- "cyrillic-ext",
5635
- "latin-ext",
5636
- "cyrillic",
5637
- "greek"
5638
- ]
5639
- },
5640
- {
5641
- "kind": "webfonts#webfont",
5642
- "family": "Ubuntu Mono",
5643
- "variants": [
5644
- "regular",
5645
- "italic",
5646
- "700",
5647
- "700italic"
5648
- ],
5649
- "subsets": [
5650
- "greek-ext",
5651
- "latin",
5652
-
5653
- "cyrillic-ext",
5654
- "latin-ext",
5655
- "cyrillic",
5656
- "greek"
5657
- ]
5658
- },
5659
- {
5660
- "kind": "webfonts#webfont",
5661
- "family": "Ultra",
5662
- "variants": [
5663
- "regular"
5664
- ],
5665
- "subsets": [
5666
- "latin"
5667
- ]
5668
- },
5669
- {
5670
- "kind": "webfonts#webfont",
5671
- "family": "Uncial Antiqua",
5672
- "variants": [
5673
- "regular"
5674
- ],
5675
- "subsets": [
5676
- "latin"
5677
- ]
5678
- },
5679
- {
5680
- "kind": "webfonts#webfont",
5681
- "family": "UnifrakturCook",
5682
- "variants": [
5683
- "700"
5684
- ],
5685
- "subsets": [
5686
- "latin"
5687
- ]
5688
- },
5689
- {
5690
- "kind": "webfonts#webfont",
5691
- "family": "UnifrakturMaguntia",
5692
- "variants": [
5693
- "regular"
5694
- ],
5695
- "subsets": [
5696
- "latin"
5697
- ]
5698
- },
5699
- {
5700
- "kind": "webfonts#webfont",
5701
- "family": "Unkempt",
5702
- "variants": [
5703
- "regular",
5704
- "700"
5705
- ],
5706
- "subsets": [
5707
- "latin"
5708
- ]
5709
- },
5710
- {
5711
- "kind": "webfonts#webfont",
5712
- "family": "Unlock",
5713
- "variants": [
5714
- "regular"
5715
- ],
5716
- "subsets": [
5717
- "latin"
5718
- ]
5719
- },
5720
- {
5721
- "kind": "webfonts#webfont",
5722
- "family": "Unna",
5723
- "variants": [
5724
- "regular"
5725
- ],
5726
- "subsets": [
5727
- "latin"
5728
- ]
5729
- },
5730
- {
5731
- "kind": "webfonts#webfont",
5732
- "family": "VT323",
5733
- "variants": [
5734
- "regular"
5735
- ],
5736
- "subsets": [
5737
- "latin"
5738
- ]
5739
- },
5740
- {
5741
- "kind": "webfonts#webfont",
5742
- "family": "Varela",
5743
- "variants": [
5744
- "regular"
5745
- ],
5746
- "subsets": [
5747
- "latin",
5748
- "latin-ext"
5749
- ]
5750
- },
5751
- {
5752
- "kind": "webfonts#webfont",
5753
- "family": "Varela Round",
5754
- "variants": [
5755
- "regular"
5756
- ],
5757
- "subsets": [
5758
- "latin"
5759
- ]
5760
- },
5761
- {
5762
- "kind": "webfonts#webfont",
5763
- "family": "Vast Shadow",
5764
- "variants": [
5765
- "regular"
5766
- ],
5767
- "subsets": [
5768
- "latin"
5769
- ]
5770
- },
5771
- {
5772
- "kind": "webfonts#webfont",
5773
- "family": "Vibur",
5774
- "variants": [
5775
- "regular"
5776
- ],
5777
- "subsets": [
5778
- "latin"
5779
- ]
5780
- },
5781
- {
5782
- "kind": "webfonts#webfont",
5783
- "family": "Vidaloka",
5784
- "variants": [
5785
- "regular"
5786
- ],
5787
- "subsets": [
5788
- "latin"
5789
- ]
5790
- },
5791
- {
5792
- "kind": "webfonts#webfont",
5793
- "family": "Viga",
5794
- "variants": [
5795
- "regular"
5796
- ],
5797
- "subsets": [
5798
- "latin",
5799
- "latin-ext"
5800
- ]
5801
- },
5802
- {
5803
- "kind": "webfonts#webfont",
5804
- "family": "Voces",
5805
- "variants": [
5806
- "regular"
5807
- ],
5808
- "subsets": [
5809
- "latin",
5810
- "latin-ext"
5811
- ]
5812
- },
5813
- {
5814
- "kind": "webfonts#webfont",
5815
- "family": "Volkhov",
5816
- "variants": [
5817
- "regular",
5818
- "italic",
5819
- "700",
5820
- "700italic"
5821
- ],
5822
- "subsets": [
5823
- "latin"
5824
- ]
5825
- },
5826
- {
5827
- "kind": "webfonts#webfont",
5828
- "family": "Vollkorn",
5829
- "variants": [
5830
- "regular",
5831
- "italic",
5832
- "700",
5833
- "700italic"
5834
- ],
5835
- "subsets": [
5836
- "latin"
5837
- ]
5838
- },
5839
- {
5840
- "kind": "webfonts#webfont",
5841
- "family": "Voltaire",
5842
- "variants": [
5843
- "regular"
5844
- ],
5845
- "subsets": [
5846
- "latin"
5847
- ]
5848
- },
5849
- {
5850
- "kind": "webfonts#webfont",
5851
- "family": "Waiting for the Sunrise",
5852
- "variants": [
5853
- "regular"
5854
- ],
5855
- "subsets": [
5856
- "latin"
5857
- ]
5858
- },
5859
- {
5860
- "kind": "webfonts#webfont",
5861
- "family": "Wallpoet",
5862
- "variants": [
5863
- "regular"
5864
- ],
5865
- "subsets": [
5866
- "latin"
5867
- ]
5868
- },
5869
- {
5870
- "kind": "webfonts#webfont",
5871
- "family": "Walter Turncoat",
5872
- "variants": [
5873
- "regular"
5874
- ],
5875
- "subsets": [
5876
- "latin"
5877
- ]
5878
- },
5879
- {
5880
- "kind": "webfonts#webfont",
5881
- "family": "Wellfleet",
5882
- "variants": [
5883
- "regular"
5884
- ],
5885
- "subsets": [
5886
- "latin",
5887
- "latin-ext"
5888
- ]
5889
- },
5890
- {
5891
- "kind": "webfonts#webfont",
5892
- "family": "Wire One",
5893
- "variants": [
5894
- "regular"
5895
- ],
5896
- "subsets": [
5897
- "latin"
5898
- ]
5899
- },
5900
- {
5901
- "kind": "webfonts#webfont",
5902
- "family": "Yanone Kaffeesatz",
5903
- "variants": [
5904
- "200",
5905
- "300",
5906
- "regular",
5907
- "700"
5908
- ],
5909
- "subsets": [
5910
-
5911
- "latin",
5912
- "latin-ext"
5913
- ]
5914
- },
5915
- {
5916
- "kind": "webfonts#webfont",
5917
- "family": "Yellowtail",
5918
- "variants": [
5919
- "regular"
5920
- ],
5921
- "subsets": [
5922
- "latin"
5923
- ]
5924
- },
5925
- {
5926
- "kind": "webfonts#webfont",
5927
- "family": "Yeseva One",
5928
- "variants": [
5929
- "regular"
5930
- ],
5931
- "subsets": [
5932
- "latin"
5933
- ]
5934
- },
5935
- {
5936
- "kind": "webfonts#webfont",
5937
- "family": "Yesteryear",
5938
- "variants": [
5939
- "regular"
5940
- ],
5941
- "subsets": [
5942
- "latin"
5943
- ]
5944
- },
5945
- {
5946
- "kind": "webfonts#webfont",
5947
- "family": "Zeyada",
5948
- "variants": [
5949
- "regular"
5950
- ],
5951
- "subsets": [
5952
- "latin"
5953
- ]
5954
- }
5955
- ]
5956
- }';
5957
-
5958
- $google_fonts_array = json_decode( $google_webfonts, TRUE );
5959
- return $google_fonts_array['items'];
5960
- }
5961
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/ot-cleanup-api.php DELETED
@@ -1,295 +0,0 @@
1
- <?php if ( ! defined( 'OT_VERSION' ) ) exit( 'No direct script access allowed' );
2
- /**
3
- * OptionTree Cleanup API
4
- *
5
- * This class loads all the OptionTree Cleanup methods and helpers.
6
- *
7
- * @package OptionTree
8
- * @author Derek Herman <derek@valendesigns.com>
9
- * @copyright Copyright (c) 2014, Derek Herman
10
- */
11
- if ( ! class_exists( 'OT_Cleanup' ) ) {
12
-
13
- class OT_Cleanup {
14
-
15
- /**
16
- * PHP5 constructor method.
17
- *
18
- * This method adds other methods of the class to specific hooks within WordPress.
19
- *
20
- * @uses add_action()
21
- *
22
- * @return void
23
- *
24
- * @access public
25
- * @since 2.4.6
26
- */
27
- function __construct() {
28
- if ( ! is_admin() )
29
- return;
30
-
31
- // Load styles
32
- add_action( 'admin_head', array( $this, 'styles' ), 1 );
33
-
34
- // Maybe Clean up OptionTree
35
- add_action( 'admin_menu', array( $this, 'maybe_cleanup' ), 100 );
36
-
37
- // Increase timeout if allowed
38
- add_action( 'ot_pre_consolidate_posts', array( $this, 'increase_timeout' ) );
39
-
40
- }
41
-
42
- /**
43
- * Adds the cleanup styles to the admin head
44
- *
45
- * @return string
46
- *
47
- * @access public
48
- * @since 2.5.0
49
- */
50
- function styles() {
51
-
52
- echo '<style>#toplevel_page_ot-cleanup{display:none;}</style>';
53
-
54
- }
55
-
56
- /**
57
- * Check if OptionTree needs to be cleaned up from a previous install.
58
- *
59
- * @return void
60
- *
61
- * @access public
62
- * @since 2.4.6
63
- */
64
- public function maybe_cleanup() {
65
- global $wpdb, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
66
-
67
- $table_name = $wpdb->prefix . 'option_tree';
68
- $page = isset( $_GET['page'] ) ? $_GET['page'] : '';
69
- $ot_maybe_cleanup_posts = count( $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree' LIMIT 2" ) ) > 1;
70
- $ot_maybe_cleanup_table = $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE %s", $table_name ) ) == $table_name;
71
-
72
- if ( ! $ot_maybe_cleanup_posts && ! $ot_maybe_cleanup_table && $page == 'ot-cleanup' ) {
73
- wp_safe_redirect( apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) . '?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) );
74
- exit;
75
- }
76
-
77
- if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
78
-
79
- if ( $page != 'ot-cleanup' )
80
- add_action( 'admin_notices', array( $this, 'cleanup_notice' ) );
81
-
82
- $theme_check_bs = 'add_menu_' . 'page';
83
-
84
- $theme_check_bs( apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ), 'edit_theme_options', 'ot-cleanup', array( $this, 'options_page' ) );
85
-
86
- }
87
-
88
- }
89
-
90
- /**
91
- * Adds an admin nag.
92
- *
93
- * @return string
94
- *
95
- * @access public
96
- * @since 2.4.6
97
- */
98
- public function cleanup_notice() {
99
-
100
- if ( get_current_screen()->id != 'appearance_page_ot-cleanup' )
101
- echo '<div class="update-nag">' . sprintf( __( 'OptionTree has outdated data that should be removed. Please go to %s for more information.', 'option-tree' ), sprintf( '<a href="%s">%s</a>', admin_url( 'themes.php?page=ot-cleanup' ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ) ) ) . '</div>';
102
-
103
- }
104
-
105
- /**
106
- * Adds a Tools sub page to clean up the database with.
107
- *
108
- * @return string
109
- *
110
- * @access public
111
- * @since 2.4.6
112
- */
113
- public function options_page() {
114
- global $wpdb, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
115
-
116
- // Option ID
117
- $option_id = 'ot_media_post_ID';
118
-
119
- // Get the media post ID
120
- $post_ID = get_option( $option_id, false );
121
-
122
- // Zero loop count
123
- $count = 0;
124
-
125
- // Check for safe mode
126
- $safe_mode = ini_get( 'safe_mode' );
127
-
128
- echo '<div class="wrap">';
129
-
130
- echo '<h2>' . apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ) . '</h2>';
131
-
132
- if ( $ot_maybe_cleanup_posts ) {
133
-
134
- $posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree'" );
135
-
136
- echo '<h3>' . __( 'Multiple Media Posts', 'option-tree' ) . '</h3>';
137
-
138
- echo '<p>' . sprintf( __( 'There are currently %s OptionTree media posts in your database. At some point in the past, a version of OptionTree added multiple %s media post objects cluttering up your %s table. There is no associated risk or harm that these posts have caused other than to add size to your overall database. Thankfully, there is a way to remove all these orphaned media posts and get your database cleaned up.', 'option-tree' ), '<code>' . number_format( count( $posts ) ) . '</code>', '<tt>option-tree</tt>', '<tt>' . $wpdb->posts . '</tt>' ) . '</p>';
139
-
140
- echo '<p>' . sprintf( __( 'By clicking the button below, OptionTree will delete %s records and consolidate them into one single OptionTree media post for uploading attachments to. Additionally, the attachments will have their parent ID updated to the correct media post.', 'option-tree' ), '<code>' . number_format( count( $posts ) - 1 ) . '</code>' ) . '</p>';
141
-
142
- echo '<p><strong>' . __( 'This could take a while to fully process depending on how many records you have in your database, so please be patient and wait for the script to finish.', 'option-tree' ) . '</strong></p>';
143
-
144
- echo $safe_mode ? '<p>' . sprintf( __( '%s Your server is running in safe mode. Which means this page will automatically reload after deleting %s posts, you can filter this number using %s if your server is having trouble processing that many at one time.', 'option-tree' ), '<strong>Note</strong>:', apply_filters( 'ot_consolidate_posts_reload', 500 ), '<tt>ot_consolidate_posts_reload</tt>' ) . '</p>' : '';
145
-
146
- echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'consolidate-posts' ) . '">' . __( 'Consolidate Posts', 'option-tree' ) . '</a></p>';
147
-
148
- if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'consolidate-posts' ) ) {
149
-
150
- if ( $post_ID === false || empty( $post_ID ) ) {
151
- $post_ID = isset( $posts[0]->ID ) ? $posts[0]->ID : null;
152
-
153
- // Add to the DB
154
- if ( $post_ID !== null )
155
- update_option( $option_id, $post_ID );
156
-
157
- }
158
-
159
- // Do pre consolidation action to increase timeout.
160
- do_action( 'ot_pre_consolidate_posts' );
161
-
162
- // Loop over posts
163
- foreach( $posts as $post ) {
164
-
165
- // Don't destroy the correct post.
166
- if ( $post_ID == $post->ID )
167
- continue;
168
-
169
- // Update count
170
- $count++;
171
-
172
- // Reload script in safe mode
173
- if ( $safe_mode && $count > apply_filters( 'ot_consolidate_posts_reload', 500 ) ) {
174
- echo '<br />' . __( 'Reloading...', 'option-tree' );
175
- echo '
176
- <script>
177
- setTimeout( ot_script_reload, 3000 )
178
- function ot_script_reload() {
179
- window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup&_wpnonce=' . wp_create_nonce( 'consolidate-posts' ) ) . '"
180
- }
181
- </script>';
182
- break;
183
- }
184
-
185
- // Get the attachements
186
- $attachments = get_children( 'post_type=attachment&post_parent=' . $post->ID );
187
-
188
- // Update the attachments parent ID
189
- if ( ! empty( $attachments ) ) {
190
-
191
- echo 'Updating Attachments parent ID for <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt>.<br />';
192
-
193
- foreach( $attachments as $attachment_id => $attachment ) {
194
- wp_update_post(
195
- array(
196
- 'ID' => $attachment_id,
197
- 'post_parent' => $post_ID
198
- )
199
- );
200
- }
201
-
202
- }
203
-
204
- // Delete post
205
- echo 'Deleting <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt><br />';
206
- wp_delete_post( $post->ID, true );
207
-
208
- }
209
-
210
- echo '<br />' . __( 'Clean up script has completed, the page will now reload...', 'option-tree' );
211
-
212
- echo '
213
- <script>
214
- setTimeout( ot_script_reload, 3000 )
215
- function ot_script_reload() {
216
- window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
217
- }
218
- </script>';
219
-
220
- }
221
-
222
- }
223
-
224
- if ( $ot_maybe_cleanup_table ) {
225
-
226
- $table_name = $wpdb->prefix . 'option_tree';
227
-
228
- echo $ot_maybe_cleanup_posts ? '<hr />' : '';
229
-
230
- echo '<h3>' . __( 'Outdated Table', 'option-tree' ) . '</h3>';
231
-
232
- echo '<p>' . sprintf( __( 'If you have upgraded from an old 1.x version of OptionTree at some point, you have an extra %s table in your database that can be removed. It\'s not hurting anything, but does not need to be there. If you want to remove it. Click the button below.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
233
-
234
- echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'drop-table' ) . '">' . __( 'Drop Table', 'option-tree' ) . '</a></p>';
235
-
236
- if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'drop-table' ) ) {
237
-
238
- echo '<p>' . sprintf( __( 'Deleting the outdated and unused %s table...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
239
-
240
- $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
241
-
242
- if ( $wpdb->get_var( $wpdb->prepare( "SHOW TABLES LIKE %s", $table_name ) ) != $table_name ) {
243
-
244
- echo '<p>' . sprintf( __( 'The %s table has been successfully deleted. The page will now reload...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
245
-
246
- echo '
247
- <script>
248
- setTimeout( ot_script_reload, 3000 )
249
- function ot_script_reload() {
250
- window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
251
- }
252
- </script>';
253
-
254
- } else {
255
-
256
- echo '<p>' . sprintf( __( 'Something went wrong. The %s table was not deleted.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
257
-
258
- }
259
-
260
- }
261
-
262
- }
263
-
264
- echo '</div>';
265
-
266
- }
267
-
268
- /**
269
- * Increase PHP timeout.
270
- *
271
- * This is to prevent bulk operations from timing out
272
- *
273
- * @return void
274
- *
275
- * @access public
276
- * @since 2.4.6
277
- */
278
- public function increase_timeout() {
279
-
280
- if ( ! ini_get( 'safe_mode' ) ) {
281
-
282
- @set_time_limit( 0 );
283
-
284
- }
285
-
286
- }
287
-
288
- }
289
-
290
- }
291
-
292
- new OT_Cleanup();
293
-
294
- /* End of file ot-cleanup-api.php */
295
- /* Location: ./includes/ot-cleanup-api.php */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/ot-functions-admin.php DELETED
@@ -1,6111 +0,0 @@
1
- <?php
2
- /**
3
- * Functions used only while viewing the admin UI.
4
- *
5
- * Limit loading these function only when needed
6
- * and not in the front end.
7
- *
8
- * @package OptionTree
9
- */
10
-
11
- if ( ! defined( 'OT_VERSION' ) ) {
12
- exit( 'No direct script access allowed' );
13
- }
14
-
15
- if ( ! function_exists( 'ot_register_theme_options_page' ) ) {
16
-
17
- /**
18
- * Registers the Theme Option page
19
- *
20
- * @uses ot_register_settings()
21
- *
22
- * @access public
23
- * @since 2.1
24
- */
25
- function ot_register_theme_options_page() {
26
-
27
- // Get the settings array.
28
- $get_settings = get_option( ot_settings_id() );
29
-
30
- // Sections array.
31
- $sections = isset( $get_settings['sections'] ) ? $get_settings['sections'] : array();
32
-
33
- // Settings array.
34
- $settings = isset( $get_settings['settings'] ) ? $get_settings['settings'] : array();
35
-
36
- // Contexual help array.
37
- $contextual_help = isset( $get_settings['contextual_help'] ) ? $get_settings['contextual_help'] : array();
38
-
39
- // Build the Theme Options.
40
- if ( function_exists( 'ot_register_settings' ) && OT_USE_THEME_OPTIONS ) {
41
-
42
- $caps = apply_filters( 'ot_theme_options_capability', 'edit_theme_options' );
43
-
44
- ot_register_settings(
45
- array(
46
- array(
47
- 'id' => ot_options_id(),
48
- 'pages' => array(
49
- array(
50
- 'id' => 'niftycs_options',
51
- 'parent_slug' => apply_filters( 'niftycs_options_parent_slug', null ),
52
- 'page_title' => apply_filters( 'niftycs_options_page_title', __( 'Nifty Coming Soon, Maintenance &amp; Under Construction Options', 'option-tree' ) ),
53
- 'menu_title' => apply_filters( 'niftycs_options_menu_title', __( 'Nifty Options', 'option-tree' ) ),
54
- 'capability' => $caps = apply_filters( 'niftycs_options_capability', 'edit_theme_options' ),
55
- 'menu_slug' => apply_filters( 'niftycs_options_menu_slug', 'niftycs-options' ),
56
- 'icon_url' => apply_filters( 'niftycs_options_icon_url', OT_URL .'/assets/images/nifty_ot.png' ),
57
- 'position' => apply_filters( 'niftycs_options_position', null ),
58
- 'updated_message' => apply_filters( 'niftycs_options_updated_message', __( 'Nifty Options updated.', 'option-tree' ) ),
59
- 'reset_message' => apply_filters( 'niftycs_options_reset_message', __( 'Nifty Options restored to default value.', 'option-tree' ) ),
60
- 'button_text' => apply_filters( 'niftycs_options_button_text', __( 'Save Changes', 'option-tree' ) ),
61
- 'contextual_help' => apply_filters( 'niftycs_options_contextual_help', $contextual_help ),
62
- 'sections' => apply_filters( 'niftycs_options_sections', $sections ),
63
- 'settings' => apply_filters( 'niftycs_options_settings', $settings )
64
- ),
65
- ),
66
- ),
67
- )
68
- );
69
-
70
- // Filters the options.php to add the minimum user capabilities.
71
- add_filter(
72
- 'option_page_capability_' . ot_options_id(),
73
- function() use ( $caps ) {
74
- return $caps;
75
- },
76
- 999
77
- );
78
-
79
- }
80
-
81
- }
82
-
83
- }
84
-
85
- if ( ! function_exists( 'ot_register_settings_page' ) ) {
86
-
87
- /**
88
- * Registers the Settings page.
89
- *
90
- * @access public
91
- * @since 2.1
92
- */
93
- function ot_register_settings_page() {
94
- global $ot_has_custom_theme_options;
95
-
96
- $custom_options = ( true === $ot_has_custom_theme_options || has_action( 'admin_init', 'custom_theme_options' ) || has_action( 'init', 'custom_theme_options' ) );
97
-
98
- // Display UI Builder admin notice.
99
- if ( true === OT_SHOW_OPTIONS_UI && isset( $_REQUEST['page'] ) && 'ot-settings' === $_REQUEST['page'] && $custom_options ) { // phpcs:ignore
100
-
101
- /**
102
- * Error message for custom theme options.
103
- */
104
- function ot_has_custom_theme_options() {
105
- echo '<div class="error"><p>' . esc_html__( 'The Theme Options UI Builder is being overridden by a custom file in your theme. Any changes you make via the UI Builder will not be saved.', 'option-tree' ) . '</p></div>';
106
- }
107
-
108
- add_action( 'admin_notices', 'ot_has_custom_theme_options' );
109
- }
110
-
111
- // Create the filterable pages array.
112
- $ot_register_pages_array = array(
113
- array(
114
- 'id' => 'ot',
115
- 'page_title' => esc_html__( 'OptionTree', 'option-tree' ),
116
- 'menu_title' => esc_html__( 'OptionTree', 'option-tree' ),
117
- 'capability' => 'edit_theme_options',
118
- 'menu_slug' => 'ot-settings',
119
- 'icon_url' => null,
120
- 'position' => 61,
121
- 'hidden_page' => true,
122
- ),
123
- array(
124
- 'id' => 'settings',
125
- 'parent_slug' => 'ot-settings',
126
- 'page_title' => esc_html__( 'Settings', 'option-tree' ),
127
- 'menu_title' => esc_html__( 'Settings', 'option-tree' ),
128
- 'capability' => 'edit_theme_options',
129
- 'menu_slug' => 'ot-settings',
130
- 'icon_url' => null,
131
- 'position' => null,
132
- 'updated_message' => esc_html__( 'Theme Options updated.', 'option-tree' ),
133
- 'reset_message' => esc_html__( 'Theme Options reset.', 'option-tree' ),
134
- 'button_text' => esc_html__( 'Save Settings', 'option-tree' ),
135
- 'show_buttons' => false,
136
- 'sections' => array(
137
- array(
138
- 'id' => 'create_setting',
139
- 'title' => esc_html__( 'Theme Options UI', 'option-tree' ),
140
- ),
141
- array(
142
- 'id' => 'import',
143
- 'title' => esc_html__( 'Import', 'option-tree' ),
144
- ),
145
- array(
146
- 'id' => 'export',
147
- 'title' => esc_html__( 'Export', 'option-tree' ),
148
- ),
149
- array(
150
- 'id' => 'layouts',
151
- 'title' => esc_html__( 'Layouts', 'option-tree' ),
152
- ),
153
- ),
154
- 'settings' => array(
155
- array(
156
- 'id' => 'theme_options_ui_text',
157
- 'label' => esc_html__( 'Theme Options UI Builder', 'option-tree' ),
158
- 'type' => 'theme_options_ui',
159
- 'section' => 'create_setting',
160
- ),
161
- array(
162
- 'id' => 'import_settings_text',
163
- 'label' => esc_html__( 'Settings', 'option-tree' ),
164
- 'type' => 'import-settings',
165
- 'section' => 'import',
166
- ),
167
- array(
168
- 'id' => 'import_data_text',
169
- 'label' => esc_html__( 'Theme Options', 'option-tree' ),
170
- 'type' => 'import-data',
171
- 'section' => 'import',
172
- ),
173
- array(
174
- 'id' => 'import_layouts_text',
175
- 'label' => esc_html__( 'Layouts', 'option-tree' ),
176
- 'type' => 'import-layouts',
177
- 'section' => 'import',
178
- ),
179
- array(
180
- 'id' => 'export_settings_file_text',
181
- 'label' => esc_html__( 'Settings PHP File', 'option-tree' ),
182
- 'type' => 'export-settings-file',
183
- 'section' => 'export',
184
- ),
185
- array(
186
- 'id' => 'export_settings_text',
187
- 'label' => esc_html__( 'Settings', 'option-tree' ),
188
- 'type' => 'export-settings',
189
- 'section' => 'export',
190
- ),
191
- array(
192
- 'id' => 'export_data_text',
193
- 'label' => esc_html__( 'Theme Options', 'option-tree' ),
194
- 'type' => 'export-data',
195
- 'section' => 'export',
196
- ),
197
- array(
198
- 'id' => 'export_layout_text',
199
- 'label' => esc_html__( 'Layouts', 'option-tree' ),
200
- 'type' => 'export-layouts',
201
- 'section' => 'export',
202
- ),
203
- array(
204
- 'id' => 'modify_layouts_text',
205
- 'label' => esc_html__( 'Layout Management', 'option-tree' ),
206
- 'type' => 'modify-layouts',
207
- 'section' => 'layouts',
208
- ),
209
- ),
210
- ),
211
- array(
212
- 'id' => 'documentation',
213
- 'parent_slug' => 'ot-settings',
214
- 'page_title' => esc_html__( 'Documentation', 'option-tree' ),
215
- 'menu_title' => esc_html__( 'Documentation', 'option-tree' ),
216
- 'capability' => 'edit_theme_options',
217
- 'menu_slug' => 'ot-documentation',
218
- 'icon_url' => null,
219
- 'position' => null,
220
- 'updated_message' => esc_html__( 'Theme Options updated.', 'option-tree' ),
221
- 'reset_message' => esc_html__( 'Theme Options reset.', 'option-tree' ),
222
- 'button_text' => esc_html__( 'Save Settings', 'option-tree' ),
223
- 'show_buttons' => false,
224
- 'sections' => array(
225
- array(
226
- 'id' => 'creating_options',
227
- 'title' => esc_html__( 'Creating Options', 'option-tree' ),
228
- ),
229
- array(
230
- 'id' => 'option_types',
231
- 'title' => esc_html__( 'Option Types', 'option-tree' ),
232
- ),
233
- array(
234
- 'id' => 'functions',
235
- 'title' => esc_html__( 'Function References', 'option-tree' ),
236
- ),
237
- array(
238
- 'id' => 'theme_mode',
239
- 'title' => esc_html__( 'Theme Mode', 'option-tree' ),
240
- ),
241
- array(
242
- 'id' => 'meta_boxes',
243
- 'title' => esc_html__( 'Meta Boxes', 'option-tree' ),
244
- ),
245
- array(
246
- 'id' => 'examples',
247
- 'title' => esc_html__( 'Code Examples', 'option-tree' ),
248
- ),
249
- array(
250
- 'id' => 'layouts_overview',
251
- 'title' => esc_html__( 'Layouts Overview', 'option-tree' ),
252
- ),
253
- ),
254
- 'settings' => array(
255
- array(
256
- 'id' => 'creating_options_text',
257
- 'label' => esc_html__( 'Overview of available Theme Option fields.', 'option-tree' ),
258
- 'type' => 'creating-options',
259
- 'section' => 'creating_options',
260
- ),
261
- array(
262
- 'id' => 'option_types_text',
263
- 'label' => esc_html__( 'Option types in alphabetical order & hooks to filter them.', 'option-tree' ),
264
- 'type' => 'option-types',
265
- 'section' => 'option_types',
266
- ),
267
- array(
268
- 'id' => 'functions_ot_get_option',
269
- 'label' => esc_html__( 'Function Reference:ot_get_option()', 'option-tree' ),
270
- 'type' => 'ot-get-option',
271
- 'section' => 'functions',
272
- ),
273
- array(
274
- 'id' => 'functions_get_option_tree',
275
- 'label' => esc_html__( 'Function Reference:get_option_tree()', 'option-tree' ),
276
- 'type' => 'get-option-tree',
277
- 'section' => 'functions',
278
- ),
279
- array(
280
- 'id' => 'theme_mode_text',
281
- 'label' => esc_html__( 'Theme Mode', 'option-tree' ),
282
- 'type' => 'theme-mode',
283
- 'section' => 'theme_mode',
284
- ),
285
- array(
286
- 'id' => 'meta_boxes_text',
287
- 'label' => esc_html__( 'Meta Boxes', 'option-tree' ),
288
- 'type' => 'meta-boxes',
289
- 'section' => 'meta_boxes',
290
- ),
291
- array(
292
- 'id' => 'example_text',
293
- 'label' => esc_html__( 'Code examples for front-end development.', 'option-tree' ),
294
- 'type' => 'examples',
295
- 'section' => 'examples',
296
- ),
297
- array(
298
- 'id' => 'layouts_overview_text',
299
- 'label' => esc_html__( 'What\'s a layout anyhow?', 'option-tree' ),
300
- 'type' => 'layouts-overview',
301
- 'section' => 'layouts_overview',
302
- ),
303
- ),
304
- ),
305
- );
306
-
307
- // Loop over the settings and remove as needed.
308
- foreach ( $ot_register_pages_array as $key => $page ) {
309
-
310
- // Remove various options from the Settings UI.
311
- if ( 'settings' === $page['id'] ) {
312
-
313
- // Remove the Theme Options UI.
314
- if ( false === OT_SHOW_OPTIONS_UI ) {
315
-
316
- foreach ( $page['sections'] as $section_key => $section ) {
317
- if ( 'create_setting' === $section['id'] ) {
318
- unset( $ot_register_pages_array[ $key ]['sections'][ $section_key ] );
319
- }
320
- }
321
-
322
- foreach ( $page['settings'] as $setting_key => $setting ) {
323
- if ( 'create_setting' === $setting['section'] ) {
324
- unset( $ot_register_pages_array[ $key ]['settings'][ $setting_key ] );
325
- }
326
- }
327
- }
328
-
329
- // Remove parts of the Imports UI.
330
- if ( false === OT_SHOW_SETTINGS_IMPORT ) {
331
-
332
- foreach ( $page['settings'] as $setting_key => $setting ) {
333
- if ( 'import' === $setting['section'] && in_array( $setting['id'], array( 'import_xml_text', 'import_settings_text' ), true ) ) {
334
- unset( $ot_register_pages_array[ $key ]['settings'][ $setting_key ] );
335
- }
336
- }
337
- }
338
-
339
- // Remove parts of the Export UI.
340
- if ( false === OT_SHOW_SETTINGS_EXPORT ) {
341
-
342
- foreach ( $page['settings'] as $setting_key => $setting ) {
343
- if ( 'export' === $setting['section'] && in_array( $setting['id'], array( 'export_settings_file_text', 'export_settings_text' ), true ) ) {
344
- unset( $ot_register_pages_array[ $key ]['settings'][ $setting_key ] );
345
- }
346
- }
347
- }
348
-
349
- // Remove the Layouts UI.
350
- if ( false === OT_SHOW_NEW_LAYOUT ) {
351
-
352
- foreach ( $page['sections'] as $section_key => $section ) {
353
- if ( 'layouts' === $section['id'] ) {
354
- unset( $ot_register_pages_array[ $key ]['sections'][ $section_key ] );
355
- }
356
- }
357
-
358
- foreach ( $page['settings'] as $setting_key => $setting ) {
359
- if ( 'layouts' === $setting['section'] ) {
360
- unset( $ot_register_pages_array[ $key ]['settings'][ $setting_key ] );
361
- }
362
- }
363
- }
364
- }
365
-
366
- // Remove the Documentation UI.
367
- if ( false === OT_SHOW_DOCS && 'documentation' === $page['id'] ) {
368
- unset( $ot_register_pages_array[ $key ] );
369
- }
370
- }
371
-
372
- $ot_register_pages_array = apply_filters( 'ot_register_pages_array', $ot_register_pages_array );
373
-
374
- // Register the pages.
375
- ot_register_settings(
376
- array(
377
- array(
378
- 'id' => ot_settings_id(),
379
- 'pages' => $ot_register_pages_array,
380
- ),
381
- )
382
- );
383
-
384
- }
385
- }
386
-
387
- if ( ! function_exists( 'ot_after_theme_options_save' ) ) {
388
-
389
- /**
390
- * Runs directly after the Theme Options are save.
391
- *
392
- * @access public
393
- * @since 2.0
394
- */
395
- function ot_after_theme_options_save() {
396
-
397
- $page = isset( $_REQUEST['page'] ) ? esc_attr( wp_unslash( $_REQUEST['page'] ) ) : ''; // phpcs:ignore
398
- $updated = isset( $_REQUEST['settings-updated'] ) && true === filter_var( wp_unslash( $_REQUEST['settings-updated'] ), FILTER_VALIDATE_BOOLEAN ); // phpcs:ignore
399
-
400
- // Only execute after the theme options are saved.
401
- if ( apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) === $page && $updated ) {
402
-
403
- // Grab a copy of the theme options.
404
- $options = get_option( ot_options_id() );
405
-
406
- // Execute the action hook and pass the theme options to it.
407
- do_action( 'ot_after_theme_options_save', $options );
408
- }
409
- }
410
- }
411
-
412
- if ( ! function_exists( 'ot_validate_setting' ) ) {
413
-
414
- /**
415
- * Validate the options by type before saving.
416
- *
417
- * This function will run on only some of the option types
418
- * as all of them don't need to be validated, just the
419
- * ones users are going to input data into; because they
420
- * can't be trusted.
421
- *
422
- * @param mixed $input Setting value.
423
- * @param string $type Setting type.
424
- * @param string $field_id Setting field ID.
425
- * @param string $wmpl_id WPML field ID.
426
- * @return mixed
427
- *
428
- * @access public
429
- * @since 2.0
430
- */
431
- function ot_validate_setting( $input, $type, $field_id, $wmpl_id = '' ) {
432
-
433
- // Exit early if missing data.
434
- if ( ! $input || ! $type || ! $field_id ) {
435
- return $input;
436
- }
437
-
438
- /**
439
- * Filter to modify a setting field value before validation.
440
- *
441
- * This cannot be used to filter the returned value of a custom
442
- * setting type. You must use the `ot_validate_setting_input_safe`
443
- * filter to ensure custom setting types are saved to the database.
444
- *
445
- * @param mixed $input The setting field value.
446
- * @param string $type The setting field type.
447
- * @param string $field_id The setting field ID.
448
- */
449
- $input = apply_filters( 'ot_validate_setting', $input, $type, $field_id );
450
-
451
- /**
452
- * Filter to validate a setting field value.
453
- *
454
- * @param mixed $input_safe This is either null, or the filtered input value.
455
- * @param mixed $input The setting field value.
456
- * @param string $type The setting field type.
457
- * @param string $field_id The setting field ID.
458
- */
459
- $input_safe = apply_filters( 'ot_validate_setting_input_safe', null, $input, $type, $field_id );
460
-
461
- // The value was filtered and is safe to return.
462
- if ( ! is_null( $input_safe ) ) {
463
- return $input_safe;
464
- }
465
-
466
- /* translators: %1$s: the input id, %2$s: the field id */
467
- $string_nums = esc_html__( 'The %1$s input field for %2$s only allows numeric values.', 'option-tree' );
468
-
469
- if ( 'background' === $type ) {
470
-
471
- $input_safe = array();
472
-
473
- // Loop over array and check for values.
474
- foreach ( (array) $input as $key => $value ) {
475
- if ( 'background-color' === $key ) {
476
- $input_safe[ $key ] = ot_validate_setting( $value, 'colorpicker', $field_id );
477
- } elseif ( 'background-image' === $key ) {
478
- $input_safe[ $key ] = ot_validate_setting( $value, 'upload', $field_id );
479
- } else {
480
- $input_safe[ $key ] = sanitize_text_field( $value );
481
- }
482
- }
483
- } elseif ( 'border' === $type ) {
484
-
485
- $input_safe = array();
486
-
487
- // Loop over array and set errors or unset key from array.
488
- foreach ( $input as $key => $value ) {
489
-
490
- if ( empty( $value ) ) {
491
- continue;
492
- }
493
-
494
- // Validate width.
495
- if ( 'width' === $key ) {
496
- if ( ! is_numeric( $value ) ) {
497
- add_settings_error( 'option-tree', 'invalid_border_width', sprintf( $string_nums, '<code>width</code>', '<code>' . $field_id . '</code>' ), 'error' );
498
- } else {
499
- $input_safe[ $key ] = absint( $value );
500
- }
501
- } elseif ( 'color' === $key ) {
502
- $input_safe[ $key ] = ot_validate_setting( $value, 'colorpicker', $field_id );
503
- } else {
504
- $input_safe[ $key ] = sanitize_text_field( $value );
505
- }
506
- }
507
- } elseif ( 'box-shadow' === $type ) {
508
-
509
- $input_safe = array();
510
-
511
- // Loop over array and check for values.
512
- foreach ( (array) $input as $key => $value ) {
513
- if ( 'inset' === $key ) {
514
- $input_safe[ $key ] = 'inset';
515
- } elseif ( 'color' === $key ) {
516
- $input_safe[ $key ] = ot_validate_setting( $value, 'colorpicker', $field_id );
517
- } else {
518
- $input_safe[ $key ] = sanitize_text_field( $value );
519
- }
520
- }
521
- } elseif ( 'checkbox' === $type ) {
522
-
523
- $input_safe = array();
524
-
525
- // Loop over array and check for values.
526
- foreach ( (array) $input as $key => $value ) {
527
- if ( ! empty( $value ) ) {
528
- $input_safe[ $key ] = sanitize_text_field( $value );
529
- }
530
- }
531
- } elseif ( 'colorpicker' === $type ) {
532
-
533
- $input_safe = '';
534
-
535
- // Only strings are allowed.
536
- if ( is_string( $input ) ) {
537
-
538
- /* translators: %s: the field id */
539
- $string_color = esc_html__( 'The %s Colorpicker only allows valid hexadecimal or rgba values depending on the setting type.', 'option-tree' );
540
-
541
- if ( 0 === preg_match( '/^#([a-f0-9]{6}|[a-f0-9]{3})$/i', $input ) && 0 === preg_match( '/^rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9\.]{1,4})\s*\)/i', $input ) ) {
542
- add_settings_error( 'option-tree', 'invalid_hex_or_rgba', sprintf( $string_color, '<code>' . $field_id . '</code>' ), 'error' );
543
- } else {
544
- $input_safe = $input;
545
- }
546
- }
547
- } elseif ( 'colorpicker-opacity' === $type ) {
548
- $input_safe = ot_validate_setting( $input, 'colorpicker', $field_id );
549
- } elseif ( in_array( $type, array( 'category-checkbox', 'custom-post-type-checkbox', 'page-checkbox', 'post-checkbox', 'tag-checkbox', 'taxonomy-checkbox' ), true ) ) {
550
-
551
- $input_safe = array();
552
-
553
- // Loop over array and check for values.
554
- foreach ( (array) $input as $key => $value ) {
555
- if ( filter_var( $value, FILTER_VALIDATE_INT ) && 0 < $value ) {
556
- $input_safe[ $key ] = absint( $value );
557
- }
558
- }
559
- } elseif ( in_array( $type, array( 'category-select', 'custom-post-type-select', 'page-select', 'post-select', 'tag-select', 'taxonomy-select' ), true ) ) {
560
-
561
- $input_safe = '';
562
-
563
- if ( filter_var( $input, FILTER_VALIDATE_INT ) && 0 < $input ) {
564
- $input_safe = absint( $input );
565
- }
566
- } elseif ( in_array( $type, array( 'css', 'javascript', 'text', 'textarea', 'textarea-simple' ), true ) ) {
567
- if ( ! function_exists( '_filter_wp_kses_post' ) ) {
568
- /**
569
- * Filter the allowed HTML and safe CSS styles.
570
- *
571
- * @since 2.7.2
572
- *
573
- * @param bool $add Whether to add or remove the filter.
574
- */
575
- function _filter_wp_kses_post( $add = true ) {
576
- $css_filter = function ( $attr ) {
577
- array_push( $attr, 'display', 'visibility' );
578
-
579
- $attr = apply_filters( 'ot_safe_style_css', $attr );
580
-
581
- return $attr;
582
- };
583
-
584
- $html_filter = function ( $tags, $context ) {
585
- if ( 'post' === $context ) {
586
- if ( current_user_can( 'unfiltered_html' ) || true === OT_ALLOW_UNFILTERED_HTML ) {
587
- $tags['script'] = array_fill_keys( array( 'async', 'charset', 'defer', 'src', 'type' ), true );
588
- $tags['style'] = array_fill_keys( array( 'media', 'type' ), true );
589
- $tags['iframe'] = array_fill_keys( array( 'align', 'allowfullscreen', 'class', 'frameborder', 'height', 'id', 'longdesc', 'marginheight', 'marginwidth', 'name', 'sandbox', 'scrolling', 'src', 'srcdoc', 'style', 'width' ), true );
590
- $tags['noscript'] = true;
591
-
592
- $tags = apply_filters( 'ot_allowed_html', $tags );
593
- }
594
- }
595
-
596
- return $tags;
597
- };
598
-
599
- if ( $add ) {
600
- add_filter( 'safe_style_css', $css_filter );
601
- add_filter( 'wp_kses_allowed_html', $html_filter, 10, 2 );
602
- } else {
603
- remove_filter( 'safe_style_css', $css_filter );
604
- remove_filter( 'wp_kses_allowed_html', $html_filter );
605
- }
606
- }
607
- }
608
-
609
- _filter_wp_kses_post( true );
610
- $input_safe = wp_kses_post( $input );
611
- _filter_wp_kses_post( false );
612
- } elseif ( 'date-picker' === $type || 'date-time-picker' === $type ) {
613
- if ( ! empty( $input ) && (bool) strtotime( $input ) ) {
614
- $input_safe = sanitize_text_field( $input );
615
- }
616
- } elseif ( 'dimension' === $type ) {
617
-
618
- $input_safe = array();
619
-
620
- // Loop over array and set errors.
621
- foreach ( $input as $key => $value ) {
622
- if ( ! empty( $value ) ) {
623
- if ( ! is_numeric( $value ) && 'unit' !== $key ) {
624
- add_settings_error( 'option-tree', 'invalid_dimension_' . $key, sprintf( $string_nums, '<code>' . $key . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
625
- } else {
626
- $input_safe[ $key ] = sanitize_text_field( $value );
627
- }
628
- }
629
- }
630
- } elseif ( 'gallery' === $type ) {
631
-
632
- $input_safe = '';
633
-
634
- if ( '' !== trim( $input ) ) {
635
- $input_safe = sanitize_text_field( $input );
636
- }
637
- } elseif ( 'google-fonts' === $type ) {
638
-
639
- $input_safe = array();
640
-
641
- // Loop over array.
642
- foreach ( $input as $key => $value ) {
643
- if ( '%key%' === $key ) {
644
- continue;
645
- }
646
-
647
- foreach ( $value as $fk => $fvalue ) {
648
- if ( is_array( $fvalue ) ) {
649
- foreach ( $fvalue as $sk => $svalue ) {
650
- $input_safe[ $key ][ $fk ][ $sk ] = sanitize_text_field( $svalue );
651
- }
652
- } else {
653
- $input_safe[ $key ][ $fk ] = sanitize_text_field( $fvalue );
654
- }
655
- }
656
- }
657
-
658
- array_values( $input_safe );
659
- } elseif ( 'link-color' === $type ) {
660
-
661
- $input_safe = array();
662
-
663
- // Loop over array and check for values.
664
- if ( is_array( $input ) && ! empty( $input ) ) {
665
- foreach ( $input as $key => $value ) {
666
- if ( ! empty( $value ) ) {
667
- $input_safe[ $key ] = ot_validate_setting( $input[ $key ], 'colorpicker', $field_id . '-' . $key );
668
- }
669
- }
670
- }
671
-
672
- array_filter( $input_safe );
673
- } elseif ( 'measurement' === $type ) {
674
-
675
- $input_safe = array();
676
-
677
- foreach ( $input as $key => $value ) {
678
- if ( ! empty( $value ) ) {
679
- $input_safe[ $key ] = sanitize_text_field( $value );
680
- }
681
- }
682
- } elseif ( 'numeric-slider' === $type ) {
683
- $input_safe = '';
684
-
685
- if ( ! empty( $input ) ) {
686
- if ( ! is_numeric( $input ) ) {
687
- add_settings_error( 'option-tree', 'invalid_numeric_slider', sprintf( $string_nums, '<code>' . esc_html__( 'slider', 'option-tree' ) . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
688
- } else {
689
- $input_safe = sanitize_text_field( $input );
690
- }
691
- }
692
- } elseif ( 'on-off' === $type ) {
693
- $input_safe = '';
694
-
695
- if ( ! empty( $input ) ) {
696
- $input_safe = sanitize_text_field( $input );
697
- }
698
- } elseif ( 'radio' === $type || 'radio-image' === $type || 'select' === $type || 'sidebar-select' === $type ) {
699
- $input_safe = '';
700
-
701
- if ( ! empty( $input ) ) {
702
- $input_safe = sanitize_text_field( $input );
703
- }
704
- } elseif ( 'spacing' === $type ) {
705
-
706
- $input_safe = array();
707
-
708
- // Loop over array and set errors.
709
- foreach ( $input as $key => $value ) {
710
- if ( ! empty( $value ) ) {
711
- if ( ! is_numeric( $value ) && 'unit' !== $key ) {
712
- add_settings_error( 'option-tree', 'invalid_spacing_' . $key, sprintf( $string_nums, '<code>' . $key . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
713
- } else {
714
- $input_safe[ $key ] = sanitize_text_field( $value );
715
- }
716
- }
717
- }
718
- } elseif ( 'typography' === $type && isset( $input['font-color'] ) ) {
719
-
720
- $input_safe = array();
721
-
722
- // Loop over array and check for values.
723
- foreach ( $input as $key => $value ) {
724
- if ( 'font-color' === $key ) {
725
- $input_safe[ $key ] = ot_validate_setting( $value, 'colorpicker', $field_id );
726
- } else {
727
- $input_safe[ $key ] = sanitize_text_field( $value );
728
- }
729
- }
730
- } elseif ( 'upload' === $type ) {
731
-
732
- $input_safe = filter_var( $input, FILTER_VALIDATE_INT );
733
-
734
- if ( false === $input_safe && is_string( $input ) ) {
735
- $input_safe = esc_url_raw( $input );
736
- }
737
- } elseif ( 'url' === $type ) {
738
-
739
- $input_safe = '';
740
-
741
- if ( ! empty( $input ) ) {
742
- $input_safe = esc_url_raw( $input );
743
- }
744
- } elseif ( 'weforms' === $type ) {
745
-
746
- $input_safe = '';
747
-
748
- if ( ! empty( $input ) ) {
749
- $input_safe = (int)$input;
750
- }
751
- } else {
752
-
753
- /* translators: %1$s: the calling function, %2$s the filter name, %3$s the option type, %4$s the version number */
754
- $string_error = esc_html__( 'Notice: %1$s was called incorrectly. All stored data must be filtered through %2$s, the %3$s option type is not using this filter. This is required since version %4$s.', 'option-tree' );
755
-
756
- // Log a user notice that things have changed since the last version.
757
- //add_settings_error( 'option-tree', 'ot_validate_setting_error', sprintf( $string_error, '<code>ot_validate_setting</code>', '<code>ot_validate_setting_input_safe</code>', '<code>' . $type . '</code>', '<code>2.7.0</code>' ), 'error' );
758
-
759
- $input_safe = '';
760
-
761
- /*
762
- * We don't know what the setting type is, so fallback to `sanitize_textarea_field`
763
- * on all values and do a best-effort sanitize of the user data before saving it.
764
- */
765
- if ( ! is_object( $input ) ) {
766
-
767
- // Contains an integer, float, string or boolean.
768
- if ( is_scalar( $input ) ) {
769
- $input_safe = sanitize_textarea_field( $input );
770
- } else {
771
- if ( ! function_exists( '_sanitize_recursive' ) ) {
772
- /**
773
- * Filter the array values recursively.
774
- *
775
- * @param array $values The value to sanitize.
776
- *
777
- * @return array
778
- */
779
- function _sanitize_recursive( $values = array() ) {
780
- $result = array();
781
- foreach ( $values as $key => $value ) {
782
- if ( ! is_object( $value ) ) {
783
- if ( is_scalar( $value ) ) {
784
- $result[ $key ] = sanitize_textarea_field( $value );
785
- } else {
786
- $result[ $key ] = _sanitize_recursive( $value );
787
- }
788
- }
789
- }
790
-
791
- return $result;
792
- }
793
- }
794
- $input_safe = _sanitize_recursive( $input );
795
- }
796
- }
797
- }
798
-
799
- // WPML Register and Unregister strings.
800
- if ( ! empty( $wmpl_id ) ) {
801
-
802
- // Allow filtering on the WPML option types.
803
- $single_string_types = apply_filters( 'ot_wpml_option_types', array( 'text', 'textarea', 'textarea-simple' ) );
804
-
805
- if ( in_array( $type, $single_string_types, true ) ) {
806
- if ( ! empty( $input_safe ) ) {
807
- ot_wpml_register_string( $wmpl_id, $input_safe );
808
- } else {
809
- ot_wpml_unregister_string( $wmpl_id );
810
- }
811
- }
812
- }
813
-
814
- /**
815
- * Filter to modify the validated setting field value.
816
- *
817
- * It's important to note that the filter does not have access to
818
- * the original value and can only modify the validated input value.
819
- * This is a breaking change as of version 2.7.0.
820
- *
821
- * @param mixed $input_safe The setting field value.
822
- * @param string $type The setting field type.
823
- * @param string $field_id The setting field ID.
824
- */
825
- $input_safe = apply_filters( 'ot_after_validate_setting', $input_safe, $type, $field_id );
826
-
827
- return $input_safe;
828
- }
829
- }
830
-
831
- if ( ! function_exists( 'ot_admin_styles' ) ) {
832
-
833
- /**
834
- * Setup the default admin styles
835
- *
836
- * @access public
837
- * @since 2.0
838
- */
839
- function ot_admin_styles() {
840
- global $wp_styles, $post;
841
-
842
- wp_enqueue_style('wp-jquery-ui-dialog');
843
-
844
- // Execute styles before actions.
845
- do_action( 'ot_admin_styles_before' );
846
-
847
- // Load WP colorpicker.
848
- wp_enqueue_style( 'wp-color-picker' );
849
-
850
-
851
- // Load admin styles.
852
- wp_enqueue_style( 'ot-admin-css', OT_URL . 'assets/css/ot-admin.css', false, OT_VERSION );
853
-
854
- // Load the RTL stylesheet.
855
- $wp_styles->add_data( 'ot-admin-css', 'rtl', true );
856
-
857
- // Remove styles added by the Easy Digital Downloads plugin.
858
- if ( isset( $post->post_type ) && 'post' === $post->post_type ) {
859
- wp_dequeue_style( 'jquery-ui-css' );
860
- }
861
-
862
- /**
863
- * Filter the screen IDs used to dequeue `jquery-ui-css`.
864
- *
865
- * @since 2.5.0
866
- *
867
- * @param array $screen_ids An array of screen IDs.
868
- */
869
- $screen_ids = apply_filters(
870
- 'ot_dequeue_jquery_ui_css_screen_ids',
871
- array(
872
- 'toplevel_page_ot-settings',
873
- 'optiontree_page_ot-documentation',
874
- 'appearance_page_ot-theme-options',
875
- )
876
- );
877
-
878
- // Remove styles added by the WP Review plugin and any custom pages added through filtering.
879
- $screen = get_current_screen();
880
- if ( in_array( $screen->id, $screen_ids, true ) ) {
881
- wp_dequeue_style( 'plugin_name-admin-ui-css' );
882
- wp_dequeue_style( 'jquery-ui-css' );
883
- }
884
-
885
- if ($screen->id !== 'toplevel_page_niftycs-options') {
886
- wp_dequeue_style( 'ot-admin-css' );
887
- }
888
-
889
- // Execute styles after actions.
890
- do_action( 'ot_admin_styles_after' );
891
- }
892
- }
893
-
894
- if ( ! function_exists( 'ot_admin_scripts' ) ) {
895
-
896
- /**
897
- * Setup the default admin scripts.
898
- *
899
- * @uses add_thickbox() Include Thickbox for file uploads.
900
- * @uses wp_enqueue_script() Add OptionTree scripts.
901
- * @uses wp_localize_script() Used to include arbitrary Javascript data.
902
- *
903
- * @access public
904
- * @since 2.0
905
- */
906
- function ot_admin_scripts() {
907
-
908
- // Execute scripts before actions.
909
- do_action( 'ot_admin_scripts_before' );
910
-
911
- if ( function_exists( 'wp_enqueue_media' ) ) {
912
- // WP 3.5 Media Uploader.
913
- wp_enqueue_media();
914
- } else {
915
- // Legacy Thickbox.
916
- add_thickbox();
917
- }
918
-
919
- // Load jQuery-ui slider.
920
- wp_enqueue_script( 'jquery-ui-slider' );
921
-
922
- // Load jQuery-ui datepicker.
923
- wp_enqueue_script( 'jquery-ui-datepicker' );
924
-
925
- // Load WP colorpicker.
926
- wp_enqueue_script( 'wp-color-picker' );
927
-
928
- // Load Ace Editor for CSS Editing.
929
- wp_enqueue_script( 'ace-editor', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js', null, '1.1.3', false );
930
-
931
- // Load jQuery UI timepicker addon.
932
- wp_enqueue_script( 'jquery-ui-timepicker', OT_URL . 'assets/js/vendor/jquery/jquery-ui-timepicker.js', array( 'jquery', 'jquery-ui-slider', 'jquery-ui-datepicker' ), '1.4.3', false );
933
-
934
- // Load the post formats.
935
- if ( true === OT_META_BOXES && true === OT_POST_FORMATS ) {
936
- wp_enqueue_script( 'ot-postformats', OT_URL . 'assets/js/ot-postformats.js', array( 'jquery' ), '1.0.1', false );
937
- }
938
-
939
-
940
-
941
-
942
- // Load all the required scripts.
943
- wp_enqueue_script('jquery-ui-dialog');
944
- wp_enqueue_script( 'ot-admin-js', OT_URL . 'assets/js/ot-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable', 'jquery-ui-slider', 'wp-color-picker', 'ace-editor', 'jquery-ui-datepicker', 'jquery-ui-timepicker','jquery-ui-dialog' ), OT_VERSION, false );
945
-
946
- // Create localized JS array.
947
- $localized_array = array(
948
- 'ajax' => admin_url( 'admin-ajax.php' ),
949
- 'nonce' => wp_create_nonce( 'option_tree' ),
950
- 'upload_text' => apply_filters( 'ot_upload_text', __( 'Send to OptionTree', 'option-tree' ) ),
951
- 'remove_media_text' => esc_html__( 'Remove Media', 'option-tree' ),
952
- 'reset_agree' => esc_html__( 'Are you sure you want to reset back to the defaults?', 'option-tree' ),
953
- 'remove_no' => esc_html__( 'You can\'t remove this! But you can edit the values.', 'option-tree' ),
954
- 'remove_agree' => esc_html__( 'Are you sure you want to remove this?', 'option-tree' ),
955
- 'activate_layout_agree' => esc_html__( 'Are you sure you want to activate this layout?', 'option-tree' ),
956
- 'setting_limit' => esc_html__( 'Sorry, you can\'t have settings three levels deep.', 'option-tree' ),
957
- 'delete' => esc_html__( 'Delete Gallery', 'option-tree' ),
958
- 'edit' => esc_html__( 'Edit Gallery', 'option-tree' ),
959
- 'create' => esc_html__( 'Create Gallery', 'option-tree' ),
960
- 'confirm' => esc_html__( 'Are you sure you want to delete this Gallery?', 'option-tree' ),
961
- 'date_current' => esc_html__( 'Today', 'option-tree' ),
962
- 'date_time_current' => esc_html__( 'Now', 'option-tree' ),
963
- 'date_close' => esc_html__( 'Close', 'option-tree' ),
964
- 'replace' => esc_html__( 'Featured Image', 'option-tree' ),
965
- 'with' => esc_html__( 'Image', 'option-tree' ),
966
- 'weforms_dialog_upsell_title' => '<img alt="' . __('weForms', 'option-tree') . '" title="' . __('weForms', 'option-tree') . '" src="' . OT_URL . '/assets/images/weforms-logo-white.png' . '">',
967
- 'weforms_install_url' => add_query_arg(array('action' => 'install_weforms'), admin_url('admin.php')),
968
- );
969
-
970
- // Localized script attached to 'option_tree'.
971
- wp_localize_script( 'ot-admin-js', 'option_tree', $localized_array );
972
-
973
- // Execute scripts after actions.
974
- do_action( 'ot_admin_scripts_after' );
975
- }
976
- }
977
-
978
- if ( ! function_exists( 'ot_get_media_post_ID' ) ) {
979
-
980
- /**
981
- * Returns the ID of a custom post type by post_title.
982
- *
983
- * @return int
984
- *
985
- * @access public
986
- * @since 2.0
987
- * @updated 2.7.0
988
- */
989
- function ot_get_media_post_ID() { // phpcs:ignore
990
-
991
- // Option ID.
992
- $option_id = 'ot_media_post_ID';
993
-
994
- // Get the media post ID.
995
- $post_ID = get_option( $option_id, false );
996
-
997
- // Add $post_ID to the DB.
998
- if ( false === $post_ID || empty( $post_ID ) || ! is_integer( $post_ID ) ) {
999
- global $wpdb;
1000
-
1001
- // Get the media post ID.
1002
- $post_ID = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts p WHERE p.post_title = %s AND p.post_type = %s AND p.post_status = %s", 'Media', 'option-tree', 'private' ) ); // phpcs:ignore
1003
-
1004
- // Add to the DB.
1005
- if ( null !== $post_ID && 0 < $post_ID ) {
1006
- update_option( $option_id, $post_ID );
1007
- } else {
1008
- $post_ID = 0;
1009
- }
1010
- }
1011
-
1012
- return $post_ID;
1013
- }
1014
- }
1015
-
1016
- if ( ! function_exists( 'ot_create_media_post' ) ) {
1017
-
1018
- /**
1019
- * Register custom post type & create the media post used to attach images.
1020
- *
1021
- * @access public
1022
- * @since 2.0
1023
- */
1024
- function ot_create_media_post() {
1025
-
1026
- register_post_type(
1027
- 'option-tree',
1028
- array(
1029
- 'labels' => array( 'name' => esc_html__( 'Option Tree', 'option-tree' ) ),
1030
- 'public' => false,
1031
- 'show_ui' => false,
1032
- 'capability_type' => 'post',
1033
- 'exclude_from_search' => true,
1034
- 'hierarchical' => false,
1035
- 'rewrite' => false,
1036
- 'supports' => array( 'title', 'editor' ),
1037
- 'can_export' => false,
1038
- 'show_in_nav_menus' => false,
1039
- )
1040
- );
1041
-
1042
- // Look for custom page.
1043
- $post_id = ot_get_media_post_ID();
1044
-
1045
- // No post exists.
1046
- if ( 0 === $post_id ) {
1047
-
1048
- // Insert the post into the database.
1049
- wp_insert_post(
1050
- array(
1051
- 'post_title' => 'Media',
1052
- 'post_name' => 'media',
1053
- 'post_status' => 'private',
1054
- 'post_type' => 'option-tree',
1055
- 'comment_status' => 'closed',
1056
- 'ping_status' => 'closed',
1057
- )
1058
- );
1059
- }
1060
- }
1061
- }
1062
-
1063
- if ( ! function_exists( 'ot_default_settings' ) ) {
1064
-
1065
- /**
1066
- * Setup default settings array.
1067
- *
1068
- * @access public
1069
- * @since 2.0
1070
- */
1071
- function ot_default_settings() {
1072
- global $wpdb;
1073
-
1074
- if ( ! get_option( ot_settings_id() ) ) {
1075
-
1076
- $section_count = 0;
1077
- $settings_count = 0;
1078
- $settings = array();
1079
- $table_name = $wpdb->prefix . 'option_tree';
1080
-
1081
- $find_table = wp_cache_get( 'find_table', 'option_tree' );
1082
- if ( false === $find_table ) {
1083
- $find_table = $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name ) ); // phpcs:ignore
1084
- wp_cache_set( 'find_table', $find_table, 'option_tree', 86400 );
1085
- }
1086
-
1087
- if ( $find_table === $table_name ) {
1088
-
1089
- $old_settings = wp_cache_get( 'old_settings', 'option_tree' );
1090
- if ( false === $old_settings ) {
1091
- $old_settings = $wpdb->get_results( "SELECT * FROM ${table_name} ORDER BY item_sort ASC" ); // phpcs:ignore
1092
- wp_cache_set( 'old_settings', $old_settings, 'option_tree', 86400 );
1093
- }
1094
-
1095
- if ( ! $old_settings ) {
1096
- return;
1097
- }
1098
-
1099
- foreach ( $old_settings as $setting ) {
1100
-
1101
- // Heading is a section now.
1102
- if ( 'heading' === $setting->item_type ) {
1103
-
1104
- // Add section to the sections array.
1105
- $settings['sections'][ $section_count ]['id'] = $setting->item_id;
1106
- $settings['sections'][ $section_count ]['title'] = $setting->item_title;
1107
-
1108
- // Ssave the last section id to use in creating settings.
1109
- $section = $setting->item_id;
1110
-
1111
- // Increment the section count.
1112
- $section_count++;
1113
-
1114
- } else {
1115
-
1116
- // Add setting to the settings array.
1117
- $settings['settings'][ $settings_count ]['id'] = $setting->item_id;
1118
- $settings['settings'][ $settings_count ]['label'] = $setting->item_title;
1119
- $settings['settings'][ $settings_count ]['desc'] = $setting->item_desc;
1120
- $settings['settings'][ $settings_count ]['section'] = $section;
1121
- $settings['settings'][ $settings_count ]['type'] = ot_map_old_option_types( $setting->item_type );
1122
- $settings['settings'][ $settings_count ]['std'] = '';
1123
- $settings['settings'][ $settings_count ]['class'] = '';
1124
-
1125
- // Textarea rows.
1126
- $rows = '';
1127
- if ( in_array( $settings['settings'][ $settings_count ]['type'], array( 'css', 'javascript', 'textarea' ), true ) ) {
1128
- if ( (int) $setting->item_options > 0 ) {
1129
- $rows = (int) $setting->item_options;
1130
- } else {
1131
- $rows = 15;
1132
- }
1133
- }
1134
- $settings['settings'][ $settings_count ]['rows'] = $rows;
1135
-
1136
- // Post type.
1137
- $post_type = '';
1138
- if ( in_array( $settings['settings'][ $settings_count ]['type'], array( 'custom-post-type-select', 'custom-post-type-checkbox' ), true ) ) {
1139
- if ( '' !== $setting->item_options ) {
1140
- $post_type = $setting->item_options;
1141
- } else {
1142
- $post_type = 'post';
1143
- }
1144
- }
1145
- $settings['settings'][ $settings_count ]['post_type'] = $post_type;
1146
-
1147
- // Cchoices.
1148
- $choices = array();
1149
- if ( in_array( $settings['settings'][ $settings_count ]['type'], array( 'checkbox', 'radio', 'select' ), true ) ) {
1150
- if ( '' !== $setting->item_options ) {
1151
- $choices = ot_convert_string_to_array( $setting->item_options );
1152
- }
1153
- }
1154
- $settings['settings'][ $settings_count ]['choices'] = $choices;
1155
-
1156
- $settings_count++;
1157
- }
1158
- }
1159
-
1160
- // Make sure each setting has a section just in case.
1161
- if ( isset( $settings['sections'] ) && isset( $settings['settings'] ) ) {
1162
- foreach ( $settings['settings'] as $k => $setting ) {
1163
- if ( '' === $setting['section'] ) {
1164
- $settings['settings'][ $k ]['section'] = $settings['sections'][0]['id'];
1165
- }
1166
- }
1167
- }
1168
- }
1169
-
1170
- // If array if not properly formed create fallback settings array.
1171
- if ( ! isset( $settings['sections'] ) || ! isset( $settings['settings'] ) ) {
1172
-
1173
- $settings = array(
1174
- 'sections' => array(
1175
- array(
1176
- 'id' => 'general',
1177
- 'title' => esc_html__( 'General', 'option-tree' ),
1178
- ),
1179
- ),
1180
- 'settings' => array(
1181
- array(
1182
- 'id' => 'sample_text',
1183
- 'label' => esc_html__( 'Sample Text Field Label', 'option-tree' ),
1184
- 'desc' => esc_html__( 'Description for the sample text field.', 'option-tree' ),
1185
- 'section' => 'general',
1186
- 'type' => 'text',
1187
- 'std' => '',
1188
- 'class' => '',
1189
- 'rows' => '',
1190
- 'post_type' => '',
1191
- 'choices' => array(),
1192
- ),
1193
- ),
1194
- );
1195
- }
1196
-
1197
- // Update the settings array.
1198
- update_option( ot_settings_id(), $settings );
1199
-
1200
- // Get option tree array.
1201
- $options = get_option( ot_options_id() );
1202
-
1203
- $options_safe = array();
1204
-
1205
- // Validate options.
1206
- if ( is_array( $options ) ) {
1207
-
1208
- foreach ( $settings['settings'] as $setting ) {
1209
- if ( isset( $options[ $setting['id'] ] ) ) {
1210
- $options_safe[ $setting['id'] ] = ot_validate_setting( wp_unslash( $options[ $setting['id'] ] ), $setting['type'], $setting['id'] );
1211
- }
1212
- }
1213
-
1214
- // Execute the action hook and pass the theme options to it.
1215
- do_action( 'ot_before_theme_options_save', $options_safe );
1216
-
1217
- // Update the option tree array.
1218
- update_option( ot_options_id(), $options_safe );
1219
- }
1220
- }
1221
- }
1222
- }
1223
-
1224
- if ( ! function_exists( 'ot_save_css' ) ) {
1225
-
1226
- /**
1227
- * Helper function to update the CSS option type after save.
1228
- *
1229
- * This function is called during the `ot_after_theme_options_save` hook,
1230
- * which is passed the currently stored options array.
1231
- *
1232
- * @param array $options The current stored options array.
1233
- *
1234
- * @access public
1235
- * @since 2.0
1236
- */
1237
- function ot_save_css( $options ) {
1238
-
1239
- // Grab a copy of the settings.
1240
- $settings = get_option( ot_settings_id() );
1241
-
1242
- // Has settings.
1243
- if ( isset( $settings['settings'] ) ) {
1244
-
1245
- // Loop through sections and insert CSS when needed.
1246
- foreach ( $settings['settings'] as $k => $setting ) {
1247
-
1248
- // Is the CSS option type.
1249
- if ( isset( $setting['type'] ) && 'css' === $setting['type'] ) {
1250
-
1251
- // Insert CSS into dynamic.css.
1252
- if ( isset( $options[ $setting['id'] ] ) && '' !== $options[ $setting['id'] ] ) {
1253
- ot_insert_css_with_markers( $setting['id'], $options[ $setting['id'] ] );
1254
-
1255
- // Remove old CSS from dynamic.css.
1256
- } else {
1257
- ot_remove_old_css( $setting['id'] );
1258
- }
1259
- }
1260
- }
1261
- }
1262
- }
1263
- }
1264
-
1265
- if ( ! function_exists( 'ot_import' ) ) {
1266
-
1267
- /**
1268
- * Import before the screen is displayed.
1269
- *
1270
- * @access public
1271
- * @since 2.0
1272
- */
1273
- function ot_import() {
1274
-
1275
- // Check and verify import settings nonce.
1276
- if ( isset( $_POST['import_settings_nonce'] ) && wp_verify_nonce( $_POST['import_settings_nonce'], 'import_settings_form' ) ) { // phpcs:ignore
1277
-
1278
- // Default message.
1279
- $message = 'failed';
1280
-
1281
- $settings = isset( $_POST['import_settings'] ) ? ot_decode( sanitize_text_field( wp_unslash( $_POST['import_settings'] ) ) ) : array();
1282
-
1283
- if ( is_array( $settings ) && ! empty( $settings ) ) {
1284
-
1285
- $settings_safe = ot_validate_settings( $settings );
1286
-
1287
- // Save & show success message.
1288
- if ( is_array( $settings_safe ) ) {
1289
- update_option( ot_settings_id(), $settings_safe );
1290
- $message = 'success';
1291
- }
1292
- }
1293
-
1294
- // Redirect back to self.
1295
- wp_safe_redirect(
1296
- esc_url_raw(
1297
- add_query_arg(
1298
- array(
1299
- 'action' => 'import-settings',
1300
- 'message' => $message,
1301
- ),
1302
- wp_get_referer()
1303
- )
1304
- )
1305
- );
1306
- exit;
1307
- }
1308
-
1309
- // Check and verify import theme options data nonce.
1310
- if ( isset( $_POST['import_data_nonce'] ) && wp_verify_nonce( $_POST['import_data_nonce'], 'import_data_form' ) ) { // phpcs:ignore
1311
-
1312
- // Default message.
1313
- $message = 'failed';
1314
- $options = isset( $_POST['import_data'] ) ? ot_decode( sanitize_text_field( wp_unslash( $_POST['import_data'] ) ) ) : array();
1315
-
1316
- if ( $options ) {
1317
-
1318
- $options_safe = array();
1319
-
1320
- // Get settings array.
1321
- $settings = get_option( ot_settings_id() );
1322
-
1323
- // Has options.
1324
- if ( is_array( $options ) ) {
1325
-
1326
- // Validate options.
1327
- if ( is_array( $settings ) ) {
1328
- foreach ( $settings['settings'] as $setting ) {
1329
- if ( isset( $options[ $setting['id'] ] ) ) {
1330
- $options_safe[ $setting['id'] ] = ot_validate_setting( wp_unslash( $options[ $setting['id'] ] ), $setting['type'], $setting['id'] );
1331
- }
1332
- }
1333
- }
1334
-
1335
- // Execute the action hook and pass the theme options to it.
1336
- do_action( 'ot_before_theme_options_save', $options_safe );
1337
-
1338
- // Update the option tree array.
1339
- update_option( ot_options_id(), $options_safe );
1340
-
1341
- $message = 'success';
1342
- }
1343
- }
1344
-
1345
- // Redirect back to self.
1346
- wp_safe_redirect(
1347
- esc_url_raw(
1348
- add_query_arg(
1349
- array(
1350
- 'action' => 'import-data',
1351
- 'message' => $message,
1352
- ),
1353
- wp_get_referer()
1354
- )
1355
- )
1356
- );
1357
- exit;
1358
- }
1359
-
1360
- // Check and verify import layouts nonce.
1361
- if ( isset( $_POST['import_layouts_nonce'] ) && wp_verify_nonce( $_POST['import_layouts_nonce'], 'import_layouts_form' ) ) { // phpcs:ignore
1362
-
1363
- // Default message.
1364
- $message = 'failed';
1365
- $layouts = isset( $_POST['import_layouts'] ) ? ot_decode( sanitize_text_field( wp_unslash( $_POST['import_layouts'] ) ) ) : array();
1366
-
1367
- if ( $layouts ) {
1368
-
1369
- // Get settings array.
1370
- $settings = get_option( ot_settings_id() );
1371
-
1372
- // Has layouts.
1373
- if ( is_array( $layouts ) && ! empty( $layouts ) && ! empty( $layouts['active_layout'] ) ) {
1374
-
1375
- $layouts_safe = array(
1376
- 'active_layout' => esc_attr( $layouts['active_layout'] ),
1377
- );
1378
-
1379
- // Validate options.
1380
- if ( is_array( $settings ) ) {
1381
-
1382
- foreach ( $layouts as $key => $value ) {
1383
-
1384
- if ( 'active_layout' === $key ) {
1385
- continue;
1386
- }
1387
-
1388
- // Convert the options to an array.
1389
- $options = ot_decode( $value );
1390
-
1391
- $options_safe = array();
1392
-
1393
- foreach ( $settings['settings'] as $setting ) {
1394
- if ( isset( $options[ $setting['id'] ] ) ) {
1395
- $options_safe[ $setting['id'] ] = ot_validate_setting( wp_unslash( $options[ $setting['id'] ] ), $setting['type'], $setting['id'] );
1396
- }
1397
- }
1398
-
1399
- // Store the sanitized values for later.
1400
- if ( $key === $layouts['active_layout'] ) {
1401
- $new_options_safe = $options_safe;
1402
- }
1403
-
1404
- $layouts_safe[ $key ] = ot_encode( $options_safe );
1405
- }
1406
- }
1407
-
1408
- // Update the option tree array with sanitized values.
1409
- if ( isset( $new_options_safe ) ) {
1410
-
1411
- // Execute the action hook and pass the theme options to it.
1412
- do_action( 'ot_before_theme_options_save', $new_options_safe );
1413
-
1414
- update_option( ot_options_id(), $new_options_safe );
1415
- }
1416
-
1417
- // Update the option tree layouts array.
1418
- update_option( ot_layouts_id(), $layouts_safe );
1419
-
1420
- $message = 'success';
1421
- }
1422
- }
1423
-
1424
- // Redirect back to self.
1425
- wp_safe_redirect(
1426
- esc_url_raw(
1427
- add_query_arg(
1428
- array(
1429
- 'action' => 'import-layouts',
1430
- 'message' => $message,
1431
- ),
1432
- wp_get_referer()
1433
- )
1434
- )
1435
- );
1436
- exit;
1437
- }
1438
-
1439
- return false;
1440
- }
1441
- }
1442
-
1443
- if ( ! function_exists( 'ot_export' ) ) {
1444
-
1445
- /**
1446
- * Export before the screen is displayed.
1447
- *
1448
- * @return void
1449
- *
1450
- * @access public
1451
- * @since 2.0.8
1452
- */
1453
- function ot_export() {
1454
-
1455
- // Check and verify export settings file nonce.
1456
- if ( isset( $_POST['export_settings_file_nonce'] ) && wp_verify_nonce( $_POST['export_settings_file_nonce'], 'export_settings_file_form' ) ) { // phpcs:ignore
1457
- ot_export_php_settings_array();
1458
- }
1459
- }
1460
- }
1461
-
1462
- if ( ! function_exists( 'ot_export_php_settings_array' ) ) {
1463
-
1464
- /**
1465
- * Export the Theme Mode theme-options.php
1466
- *
1467
- * @access public
1468
- * @since 2.0.8
1469
- */
1470
- function ot_export_php_settings_array() {
1471
-
1472
- $content = '';
1473
- $build_settings = '';
1474
- $contextual_help = '';
1475
- $sections = '';
1476
- $settings = '';
1477
- $option_tree_settings = get_option( ot_settings_id(), array() );
1478
-
1479
- /**
1480
- * Domain string helper.
1481
- *
1482
- * @param string $string A string.
1483
- * @return string
1484
- */
1485
- function ot_i18n_string( $string ) {
1486
- if ( ! empty( $string ) && isset( $_POST['domain'] ) && ! empty( $_POST['domain'] ) ) { // phpcs:ignore
1487
- $domain = str_replace( ' ', '-', trim( sanitize_text_field( wp_unslash( $_POST['domain'] ) ) ) ); // phpcs:ignore
1488
- return "esc_html__( '$string', '$domain' )";
1489
- }
1490
- return "'$string'";
1491
- }
1492
-
1493
- header( 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0' );
1494
- header( 'Pragma: no-cache ' );
1495
- header( 'Content-Description: File Transfer' );
1496
- header( 'Content-Disposition: attachment; filename="theme-options.php"' );
1497
- header( 'Content-Type: application/octet-stream' );
1498
- header( 'Content-Transfer-Encoding: binary' );
1499
-
1500
- // Build contextual help content.
1501
- if ( isset( $option_tree_settings['contextual_help']['content'] ) ) {
1502
- $help = '';
1503
- foreach ( $option_tree_settings['contextual_help']['content'] as $value ) {
1504
- $_id = isset( $value['id'] ) ? $value['id'] : '';
1505
- $_title = ot_i18n_string( isset( $value['title'] ) ? str_replace( "'", "\'", $value['title'] ) : '' );
1506
- $_content = ot_i18n_string( isset( $value['content'] ) ? html_entity_decode( str_replace( "'", "\'", $value['content'] ) ) : '' );
1507
- $help .= "
1508
- array(
1509
- 'id' => '$_id',
1510
- 'title' => $_title,
1511
- 'content' => $_content,
1512
- ),";
1513
- }
1514
- $contextual_help = "
1515
- 'content' => array($help
1516
- ),";
1517
- }
1518
-
1519
- // Build contextual help sidebar.
1520
- if ( isset( $option_tree_settings['contextual_help']['sidebar'] ) ) {
1521
- $_sidebar = ot_i18n_string( html_entity_decode( str_replace( "'", "\'", $option_tree_settings['contextual_help']['sidebar'] ) ) );
1522
- $contextual_help .= "
1523
- 'sidebar' => $_sidebar,";
1524
- }
1525
-
1526
- // Check that $contexual_help has a value and add to $build_settings.
1527
- if ( '' !== $contextual_help ) {
1528
- $build_settings .= "
1529
- 'contextual_help' => array($contextual_help
1530
- ),";
1531
- }
1532
-
1533
- // Build sections.
1534
- if ( isset( $option_tree_settings['sections'] ) ) {
1535
- foreach ( $option_tree_settings['sections'] as $value ) {
1536
- $_id = isset( $value['id'] ) ? $value['id'] : '';
1537
- $_title = ot_i18n_string( isset( $value['title'] ) ? str_replace( "'", "\'", $value['title'] ) : '' );
1538
- $sections .= "
1539
- array(
1540
- 'id' => '$_id',
1541
- 'title' => $_title,
1542
- ),";
1543
- }
1544
- }
1545
-
1546
- // Check that $sections has a value and add to $build_settings.
1547
- if ( '' !== $sections ) {
1548
- $build_settings .= "
1549
- 'sections' => array($sections
1550
- )";
1551
- }
1552
-
1553
- /* build settings */
1554
- if ( isset( $option_tree_settings['settings'] ) ) {
1555
- foreach ( $option_tree_settings['settings'] as $value ) {
1556
- $_id = isset( $value['id'] ) ? $value['id'] : '';
1557
- $_label = ot_i18n_string( isset( $value['label'] ) ? str_replace( "'", "\'", $value['label'] ) : '' );
1558
- $_desc = ot_i18n_string( isset( $value['desc'] ) ? str_replace( "'", "\'", $value['desc'] ) : '' );
1559
- $_std = isset( $value['std'] ) ? str_replace( "'", "\'", $value['std'] ) : '';
1560
- $_type = isset( $value['type'] ) ? $value['type'] : '';
1561
- $_section = isset( $value['section'] ) ? $value['section'] : '';
1562
- $_rows = isset( $value['rows'] ) ? $value['rows'] : '';
1563
- $_post_type = isset( $value['post_type'] ) ? $value['post_type'] : '';
1564
- $_taxonomy = isset( $value['taxonomy'] ) ? $value['taxonomy'] : '';
1565
- $_min_max_step = isset( $value['min_max_step'] ) ? $value['min_max_step'] : '';
1566
- $_class = isset( $value['class'] ) ? $value['class'] : '';
1567
- $_condition = isset( $value['condition'] ) ? $value['condition'] : '';
1568
- $_operator = isset( $value['operator'] ) ? $value['operator'] : '';
1569
-
1570
- $choices = '';
1571
- if ( isset( $value['choices'] ) && ! empty( $value['choices'] ) ) {
1572
- foreach ( $value['choices'] as $choice ) {
1573
- $_choice_value = isset( $choice['value'] ) ? str_replace( "'", "\'", $choice['value'] ) : '';
1574
- $_choice_label = ot_i18n_string( isset( $choice['label'] ) ? str_replace( "'", "\'", $choice['label'] ) : '' );
1575
- $_choice_src = isset( $choice['src'] ) ? str_replace( "'", "\'", $choice['src'] ) : '';
1576
- $choices .= "
1577
- array(
1578
- 'value' => '$_choice_value',
1579
- 'label' => $_choice_label,
1580
- 'src' => '$_choice_src',
1581
- ),";
1582
- }
1583
- $choices = "
1584
- 'choices' => array($choices
1585
- ),";
1586
- }
1587
-
1588
- $std = "'$_std'";
1589
- if ( is_array( $_std ) ) {
1590
- $std_array = array();
1591
- foreach ( $_std as $_sk => $_sv ) {
1592
- $std_array[] = "'$_sk' => '$_sv',";
1593
- }
1594
- $std = 'array(
1595
- ' . implode( ",\n", $std_array ) . '
1596
- )';
1597
- }
1598
-
1599
- $setting_settings = '';
1600
- if ( isset( $value['settings'] ) && ! empty( $value['settings'] ) ) {
1601
- foreach ( $value['settings'] as $setting ) {
1602
- $_setting_id = isset( $setting['id'] ) ? $setting['id'] : '';
1603
- $_setting_label = ot_i18n_string( isset( $setting['label'] ) ? str_replace( "'", "\'", $setting['label'] ) : '' );
1604
- $_setting_desc = ot_i18n_string( isset( $setting['desc'] ) ? str_replace( "'", "\'", $setting['desc'] ) : '' );
1605
- $_setting_std = isset( $setting['std'] ) ? $setting['std'] : '';
1606
- $_setting_type = isset( $setting['type'] ) ? $setting['type'] : '';
1607
- $_setting_rows = isset( $setting['rows'] ) ? $setting['rows'] : '';
1608
- $_setting_post_type = isset( $setting['post_type'] ) ? $setting['post_type'] : '';
1609
- $_setting_taxonomy = isset( $setting['taxonomy'] ) ? $setting['taxonomy'] : '';
1610
- $_setting_min_max_step = isset( $setting['min_max_step'] ) ? $setting['min_max_step'] : '';
1611
- $_setting_class = isset( $setting['class'] ) ? $setting['class'] : '';
1612
- $_setting_condition = isset( $setting['condition'] ) ? $setting['condition'] : '';
1613
- $_setting_operator = isset( $setting['operator'] ) ? $setting['operator'] : '';
1614
-
1615
- $setting_choices = '';
1616
- if ( isset( $setting['choices'] ) && ! empty( $setting['choices'] ) ) {
1617
- foreach ( $setting['choices'] as $setting_choice ) {
1618
- $_setting_choice_value = isset( $setting_choice['value'] ) ? $setting_choice['value'] : '';
1619
- $_setting_choice_label = ot_i18n_string( isset( $setting_choice['label'] ) ? str_replace( "'", "\'", $setting_choice['label'] ) : '' );
1620
- $_setting_choice_src = isset( $setting_choice['src'] ) ? str_replace( "'", "\'", $setting_choice['src'] ) : '';
1621
- $setting_choices .= "
1622
- array(
1623
- 'value' => '$_setting_choice_value',
1624
- 'label' => $_setting_choice_label,
1625
- 'src' => '$_setting_choice_src',
1626
- ),";
1627
- }
1628
- $setting_choices = "
1629
- 'choices' => array($setting_choices
1630
- ),";
1631
- }
1632
-
1633
- $setting_std = "'$_setting_std'";
1634
- if ( is_array( $_setting_std ) ) {
1635
- $setting_std_array = array();
1636
- foreach ( $_setting_std as $_ssk => $_ssv ) {
1637
- $setting_std_array[] = "'$_ssk' => '$_ssv'";
1638
- }
1639
- $setting_std = 'array(
1640
- ' . implode( ",\n", $setting_std_array ) . '
1641
- )';
1642
- }
1643
-
1644
- $setting_settings .= "
1645
- array(
1646
- 'id' => '$_setting_id',
1647
- 'label' => $_setting_label,
1648
- 'desc' => $_setting_desc,
1649
- 'std' => $setting_std,
1650
- 'type' => '$_setting_type',
1651
- 'rows' => '$_setting_rows',
1652
- 'post_type' => '$_setting_post_type',
1653
- 'taxonomy' => '$_setting_taxonomy',
1654
- 'min_max_step' => '$_setting_min_max_step',
1655
- 'class' => '$_setting_class',
1656
- 'condition' => '$_setting_condition',
1657
- 'operator' => '$_setting_operator',$setting_choices
1658
- ),";
1659
- }
1660
- $setting_settings = "
1661
- 'settings' => array( $setting_settings
1662
- ),";
1663
- }
1664
- $settings .= "
1665
- array(
1666
- 'id' => '$_id',
1667
- 'label' => $_label,
1668
- 'desc' => $_desc,
1669
- 'std' => $std,
1670
- 'type' => '$_type',
1671
- 'section' => '$_section',
1672
- 'rows' => '$_rows',
1673
- 'post_type' => '$_post_type',
1674
- 'taxonomy' => '$_taxonomy',
1675
- 'min_max_step' => '$_min_max_step',
1676
- 'class' => '$_class',
1677
- 'condition' => '$_condition',
1678
- 'operator' => '$_operator',$choices$setting_settings
1679
- ),";
1680
- }
1681
- }
1682
-
1683
- // Check that $sections has a value and add to $build_settings.
1684
- if ( '' !== $settings ) {
1685
- $build_settings .= ",
1686
- 'settings' => array($settings
1687
- )";
1688
- }
1689
-
1690
- $content .= "<?php
1691
- /**
1692
- * Initialize the custom theme options.
1693
- */
1694
- add_action( 'init', 'custom_theme_options' );
1695
-
1696
- /**
1697
- * Build the custom settings & update OptionTree.
1698
- */
1699
- function custom_theme_options() {
1700
-
1701
- // OptionTree is not loaded yet, or this is not an admin request.
1702
- if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() ) {
1703
- return false;
1704
- }
1705
-
1706
- // Get a copy of the saved settings array.
1707
- \$saved_settings = get_option( ot_settings_id(), array() );
1708
-
1709
- // Custom settings array that will eventually be passes to the OptionTree Settings API Class.
1710
- \$custom_settings = array($build_settings
1711
- );
1712
-
1713
- // Allow settings to be filtered before saving.
1714
- \$custom_settings = apply_filters( ot_settings_id() . '_args', \$custom_settings );
1715
-
1716
- // Settings are not the same update the DB.
1717
- if ( \$saved_settings !== \$custom_settings ) {
1718
- update_option( ot_settings_id(), \$custom_settings );
1719
- }
1720
-
1721
- // Lets OptionTree know the UI Builder is being overridden.
1722
- global \$ot_has_custom_theme_options;
1723
- \$ot_has_custom_theme_options = true;
1724
- }
1725
- ";
1726
-
1727
- echo $content; // phpcs:ignore
1728
- die();
1729
- }
1730
- }
1731
-
1732
- if ( ! function_exists( 'ot_save_settings' ) ) {
1733
-
1734
- /**
1735
- * Save settings array before the screen is displayed.
1736
- *
1737
- * @return bool Redirects on save, false on failure.
1738
- *
1739
- * @access public
1740
- * @since 2.0
1741
- */
1742
- function ot_save_settings() {
1743
-
1744
- // Check and verify import settings nonce.
1745
- if ( isset( $_POST['option_tree_settings_nonce'] ) && wp_verify_nonce( $_POST['option_tree_settings_nonce'], 'option_tree_settings_form' ) ) { // phpcs:ignore
1746
-
1747
- // Settings value.
1748
- $settings = isset( $_POST[ ot_settings_id() ] ) ? wp_unslash( $_POST[ ot_settings_id() ] ) : array(); // phpcs:ignore
1749
-
1750
- $settings_safe = ot_validate_settings( $settings );
1751
-
1752
- // Default message.
1753
- $message = 'failed';
1754
-
1755
- // Save & show success message.
1756
- if ( ! empty( $settings_safe ) ) {
1757
- ot_wpml_unregister( $settings_safe );
1758
-
1759
- update_option( ot_settings_id(), $settings_safe );
1760
- $message = 'success';
1761
- }
1762
-
1763
- // Redirect.
1764
- wp_safe_redirect(
1765
- esc_url_raw(
1766
- add_query_arg(
1767
- array(
1768
- 'action' => 'save-settings',
1769
- 'message' => $message,
1770
- ),
1771
- wp_get_referer()
1772
- )
1773
- )
1774
- );
1775
- exit;
1776
- }
1777
-
1778
- return false;
1779
- }
1780
- }
1781
-
1782
- if ( ! function_exists( 'ot_wpml_unregister' ) ) {
1783
-
1784
- /**
1785
- * Unregister WPML strings based on settings changing.
1786
- *
1787
- * @param array $settings The array of settings.
1788
- *
1789
- * @access public
1790
- * @since 2.7.0
1791
- */
1792
- function ot_wpml_unregister( $settings = array() ) {
1793
-
1794
- // WPML unregister ID's that have been removed.
1795
- if ( function_exists( 'icl_unregister_string' ) ) {
1796
-
1797
- $current = get_option( ot_settings_id() );
1798
- $options = get_option( ot_options_id() );
1799
-
1800
- if ( isset( $current['settings'] ) ) {
1801
-
1802
- // Empty ID array.
1803
- $new_ids = array();
1804
-
1805
- // Build the WPML IDs array.
1806
- foreach ( $settings['settings'] as $setting ) {
1807
- if ( $setting['id'] ) {
1808
- $new_ids[] = $setting['id'];
1809
- }
1810
- }
1811
-
1812
- // Remove missing IDs from WPML.
1813
- foreach ( $current['settings'] as $current_setting ) {
1814
- if ( ! in_array( $current_setting['id'], $new_ids, true ) ) {
1815
- if ( ! empty( $options[ $current_setting['id'] ] ) && in_array( $current_setting['type'], array( 'list-item', 'slider' ), true ) ) {
1816
- foreach ( $options[ $current_setting['id'] ] as $key => $value ) {
1817
- foreach ( $value as $ckey => $cvalue ) {
1818
- ot_wpml_unregister_string( $current_setting['id'] . '_' . $ckey . '_' . $key );
1819
- }
1820
- }
1821
- } elseif ( ! empty( $options[ $current_setting['id'] ] ) && 'social-icons' === $current_setting['type'] ) {
1822
- foreach ( $options[ $current_setting['id'] ] as $key => $value ) {
1823
- foreach ( $value as $ckey => $cvalue ) {
1824
- ot_wpml_unregister_string( $current_setting['id'] . '_' . $ckey . '_' . $key );
1825
- }
1826
- }
1827
- } else {
1828
- ot_wpml_unregister_string( $current_setting['id'] );
1829
- }
1830
- }
1831
- }
1832
- }
1833
- }
1834
- }
1835
- }
1836
-
1837
- if ( ! function_exists( 'ot_validate_settings' ) ) {
1838
-
1839
- /**
1840
- * Helper function to validate all settings.
1841
- *
1842
- * This includes the `sections`, `settings`, and `contextual_help` arrays.
1843
- *
1844
- * @param array $settings The array of settings.
1845
- *
1846
- * @return array
1847
- *
1848
- * @access public
1849
- * @since 2.7.0
1850
- */
1851
- function ot_validate_settings( $settings = array() ) {
1852
-
1853
- // Store the validated settings.
1854
- $settings_safe = array();
1855
-
1856
- // Validate sections.
1857
- if ( isset( $settings['sections'] ) ) {
1858
-
1859
- // Fix numeric keys since drag & drop will change them.
1860
- $settings['sections'] = array_values( $settings['sections'] );
1861
-
1862
- // Loop through sections.
1863
- foreach ( $settings['sections'] as $k => $section ) {
1864
-
1865
- // Skip if missing values.
1866
- if ( ( ! isset( $section['title'] ) && ! isset( $section['id'] ) ) || ( '' === $section['title'] && '' === $section['id'] ) ) {
1867
- continue;
1868
- }
1869
-
1870
- // Validate label.
1871
- if ( '' !== $section['title'] ) {
1872
- $settings_safe['sections'][ $k ]['title'] = wp_kses_post( $section['title'] );
1873
- }
1874
-
1875
- // Missing title set to unfiltered ID.
1876
- if ( ! isset( $section['title'] ) || '' === $section['title'] ) {
1877
-
1878
- $settings_safe['sections'][ $k ]['title'] = wp_kses_post( $section['id'] );
1879
-
1880
- // Missing ID set to title.
1881
- } elseif ( ! isset( $section['id'] ) || '' === $section['id'] ) {
1882
-
1883
- $settings_safe['id'] = wp_kses_post( $section['title'] );
1884
- }
1885
-
1886
- // Sanitize ID once everything has been checked first.
1887
- $settings_safe['sections'][ $k ]['id'] = ot_sanitize_option_id( wp_kses_post( $section['id'] ) );
1888
- }
1889
- }
1890
-
1891
- // Validate settings by looping over array as many times as it takes.
1892
- if ( isset( $settings['settings'] ) ) {
1893
- $settings_safe['settings'] = ot_validate_settings_array( $settings['settings'] );
1894
- }
1895
-
1896
- // Validate contextual_help.
1897
- if ( isset( $settings['contextual_help']['content'] ) ) {
1898
-
1899
- // Fix numeric keys since drag & drop will change them.
1900
- $settings['contextual_help']['content'] = array_values( $settings['contextual_help']['content'] );
1901
-
1902
- // Loop through content.
1903
- foreach ( $settings['contextual_help']['content'] as $k => $content ) {
1904
-
1905
- // Skip if missing values.
1906
- if ( ( ! isset( $content['title'] ) && ! isset( $content['id'] ) ) || ( '' === $content['title'] && '' === $content['id'] ) ) {
1907
- continue;
1908
- }
1909
-
1910
- // Validate label.
1911
- if ( '' !== $content['title'] ) {
1912
- $settings_safe['contextual_help']['content'][ $k ]['title'] = wp_kses_post( $content['title'] );
1913
- }
1914
-
1915
- // Missing title set to unfiltered ID.
1916
- if ( ! isset( $content['title'] ) || '' === $content['title'] ) {
1917
-
1918
- $settings_safe['contextual_help']['content'][ $k ]['title'] = wp_kses_post( $content['id'] );
1919
-
1920
- // Missing ID set to title.
1921
- } elseif ( ! isset( $content['id'] ) || '' === $content['id'] ) {
1922
-
1923
- $content['id'] = wp_kses_post( $content['title'] );
1924
- }
1925
-
1926
- // Sanitize ID once everything has been checked first.
1927
- $settings_safe['contextual_help']['content'][ $k ]['id'] = ot_sanitize_option_id( wp_kses_post( $content['id'] ) );
1928
-
1929
- // Validate textarea description.
1930
- if ( isset( $content['content'] ) ) {
1931
- $settings_safe['contextual_help']['content'][ $k ]['content'] = wp_kses_post( $content['content'] );
1932
- }
1933
- }
1934
- }
1935
-
1936
- // Validate contextual_help sidebar.
1937
- if ( isset( $settings['contextual_help']['sidebar'] ) ) {
1938
- $settings_safe['contextual_help']['sidebar'] = wp_kses_post( $settings['contextual_help']['sidebar'] );
1939
- }
1940
-
1941
- return $settings_safe;
1942
- }
1943
- }
1944
-
1945
- if ( ! function_exists( 'ot_validate_settings_array' ) ) {
1946
-
1947
- /**
1948
- * Validate a settings array before save.
1949
- *
1950
- * This function will loop over a settings array as many
1951
- * times as it takes to validate every sub setting.
1952
- *
1953
- * @param array $settings The array of settings.
1954
- * @return array
1955
- *
1956
- * @access public
1957
- * @since 2.0
1958
- * @updated 2.7.0
1959
- */
1960
- function ot_validate_settings_array( $settings = array() ) {
1961
-
1962
- // Field types mapped to their sanitize function.
1963
- $field_types = array(
1964
- 'label' => 'wp_kses_post',
1965
- 'id' => 'ot_sanitize_option_id',
1966
- 'type' => 'sanitize_text_field',
1967
- 'desc' => 'wp_kses_post',
1968
- 'settings' => 'ot_validate_settings_array',
1969
- 'choices' => array(
1970
- 'label' => 'wp_kses_post',
1971
- 'value' => 'sanitize_text_field',
1972
- 'src' => 'sanitize_text_field',
1973
- ),
1974
- 'std' => 'sanitize_text_field',
1975
- 'rows' => 'absint',
1976
- 'post_type' => 'sanitize_text_field',
1977
- 'taxonomy' => 'sanitize_text_field',
1978
- 'min_max_step' => 'sanitize_text_field',
1979
- 'class' => 'sanitize_text_field',
1980
- 'condition' => 'sanitize_text_field',
1981
- 'operator' => 'sanitize_text_field',
1982
- 'section' => 'sanitize_text_field',
1983
- );
1984
-
1985
- // Store the validated settings.
1986
- $settings_safe = array();
1987
-
1988
- // Validate settings.
1989
- if ( 0 < count( $settings ) ) {
1990
-
1991
- // Fix numeric keys since drag & drop will change them.
1992
- $settings = array_values( $settings );
1993
-
1994
- // Loop through settings.
1995
- foreach ( $settings as $sk => $setting ) {
1996
- foreach ( $setting as $fk => $field ) {
1997
- if ( isset( $field_types[ $fk ] ) ) {
1998
- if ( 'choices' === $fk ) {
1999
- foreach ( $field as $ck => $choice ) {
2000
- foreach ( $choice as $vk => $value ) {
2001
- $settings_safe[ $sk ][ $fk ][ $ck ][ $vk ] = call_user_func( $field_types[ $fk ][ $vk ], $value );
2002
- }
2003
- }
2004
- } elseif ( 'std' === $fk && is_array( $field ) ) {
2005
- $callback = $field_types[ $fk ];
2006
- $array_map = function( $item ) use ( $array_map, $callback ) {
2007
- return is_array( $item ) ? array_map( $array_map, $item ) : call_user_func( $callback, $item );
2008
- };
2009
-
2010
- $settings_safe[ $sk ][ $fk ] = array_map( $array_map, $field );
2011
- } else {
2012
- $sanitized = call_user_func( $field_types[ $fk ], $field );
2013
- if ( 'rows' === $fk && 0 === $sanitized ) {
2014
- $sanitized = '';
2015
- }
2016
- $settings_safe[ $sk ][ $fk ] = $sanitized;
2017
- }
2018
- }
2019
- }
2020
- }
2021
- }
2022
-
2023
- return $settings_safe;
2024
- }
2025
- }
2026
-
2027
- if ( ! function_exists( 'ot_modify_layouts' ) ) {
2028
-
2029
- /**
2030
- * Save layouts array before the screen is displayed.
2031
- *
2032
- * @return bool Returns false or redirects.
2033
- *
2034
- * @access public
2035
- * @since 2.0
2036
- */
2037
- function ot_modify_layouts() {
2038
-
2039
- // Check and verify modify layouts nonce.
2040
- if ( isset( $_POST['option_tree_modify_layouts_nonce'] ) && wp_verify_nonce( $_POST['option_tree_modify_layouts_nonce'], 'option_tree_modify_layouts_form' ) ) { // phpcs:ignore
2041
-
2042
- // Previous layouts value.
2043
- $option_tree_layouts = get_option( ot_layouts_id() );
2044
-
2045
- // New layouts value.
2046
- $layouts = isset( $_POST[ ot_layouts_id() ] ) ? $_POST[ ot_layouts_id() ] : ''; // phpcs:ignore
2047
-
2048
- // Rebuild layout array.
2049
- $rebuild = array();
2050
-
2051
- // Validate layouts.
2052
- if ( is_array( $layouts ) && ! empty( $layouts ) ) {
2053
-
2054
- // Setup active layout.
2055
- if ( isset( $layouts['active_layout'] ) && ! empty( $layouts['active_layout'] ) ) {
2056
- $rebuild['active_layout'] = $layouts['active_layout'];
2057
- }
2058
-
2059
- // Add new and overwrite active layout.
2060
- if ( isset( $layouts['_add_new_layout_'] ) && ! empty( $layouts['_add_new_layout_'] ) ) {
2061
- $rebuild['active_layout'] = ot_sanitize_layout_id( $layouts['_add_new_layout_'] );
2062
- $rebuild[ $rebuild['active_layout'] ] = ot_encode( get_option( ot_options_id(), array() ) );
2063
- }
2064
-
2065
- $first_layout = '';
2066
-
2067
- // Loop through layouts.
2068
- foreach ( $layouts as $key => $layout ) {
2069
-
2070
- // Skip over active layout key.
2071
- if ( 'active_layout' === $key ) {
2072
- continue;
2073
- }
2074
-
2075
- // Check if the key exists then set value.
2076
- if ( isset( $option_tree_layouts[ $key ] ) && ! empty( $option_tree_layouts[ $key ] ) ) {
2077
- $rebuild[ $key ] = $option_tree_layouts[ $key ];
2078
- if ( '' === $first_layout ) {
2079
- $first_layout = $key;
2080
- }
2081
- }
2082
- }
2083
-
2084
- if ( isset( $rebuild['active_layout'] ) && ! isset( $rebuild[ $rebuild['active_layout'] ] ) && ! empty( $first_layout ) ) {
2085
- $rebuild['active_layout'] = $first_layout;
2086
- }
2087
- }
2088
-
2089
- // Default message.
2090
- $message = 'failed';
2091
-
2092
- // Save & show success message.
2093
- if ( is_array( $rebuild ) && 1 < count( $rebuild ) ) {
2094
-
2095
- $options = ot_decode( $rebuild[ $rebuild['active_layout'] ] );
2096
-
2097
- if ( $options ) {
2098
-
2099
- $options_safe = array();
2100
-
2101
- // Get settings array.
2102
- $settings = get_option( ot_settings_id() );
2103
-
2104
- // Has options.
2105
- if ( is_array( $options ) ) {
2106
-
2107
- // Validate options.
2108
- if ( is_array( $settings ) ) {
2109
- foreach ( $settings['settings'] as $setting ) {
2110
- if ( isset( $options[ $setting['id'] ] ) ) {
2111
- $options_safe[ $setting['id'] ] = ot_validate_setting( wp_unslash( $options[ $setting['id'] ] ), $setting['type'], $setting['id'] );
2112
- }
2113
- }
2114
- }
2115
-
2116
- // Execute the action hook and pass the theme options to it.
2117
- do_action( 'ot_before_theme_options_save', $options_safe );
2118
-
2119
- update_option( ot_options_id(), $options_safe );
2120
- }
2121
- }
2122
-
2123
- // Rebuild the layouts.
2124
- update_option( ot_layouts_id(), $rebuild );
2125
-
2126
- // Change message.
2127
- $message = 'success';
2128
- } elseif ( 1 >= count( $rebuild ) ) {
2129
-
2130
- // Delete layouts option.
2131
- delete_option( ot_layouts_id() );
2132
-
2133
- // Change message.
2134
- $message = 'deleted';
2135
- }
2136
-
2137
- // Redirect.
2138
- if ( isset( $_REQUEST['page'] ) && apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) === $_REQUEST['page'] ) {
2139
- $query_args = esc_url_raw(
2140
- add_query_arg(
2141
- array(
2142
- 'settings-updated' => 'layout',
2143
- ),
2144
- remove_query_arg(
2145
- array(
2146
- 'action',
2147
- 'message',
2148
- ),
2149
- wp_get_referer()
2150
- )
2151
- )
2152
- );
2153
- } else {
2154
- $query_args = esc_url_raw(
2155
- add_query_arg(
2156
- array(
2157
- 'action' => 'save-layouts',
2158
- 'message' => $message,
2159
- ),
2160
- wp_get_referer()
2161
- )
2162
- );
2163
- }
2164
- wp_safe_redirect( $query_args );
2165
- exit;
2166
- }
2167
-
2168
- return false;
2169
- }
2170
- }
2171
-
2172
- if ( ! function_exists( 'ot_alert_message' ) ) {
2173
-
2174
- /**
2175
- * Helper function to display alert messages.
2176
- *
2177
- * @param array $page Page array.
2178
- * @return mixed
2179
- *
2180
- * @access public
2181
- * @since 2.0
2182
- */
2183
- function ot_alert_message( $page = array() ) {
2184
-
2185
- if ( empty( $page ) ) {
2186
- return false;
2187
- }
2188
-
2189
- $before = apply_filters( 'ot_before_page_messages', '', $page );
2190
-
2191
- if ( $before ) {
2192
- return $before;
2193
- }
2194
-
2195
- $action = isset( $_REQUEST['action'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['action'] ) ) : ''; // phpcs:ignore
2196
- $message = isset( $_REQUEST['message'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['message'] ) ) : ''; // phpcs:ignore
2197
- $updated = isset( $_REQUEST['settings-updated'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['settings-updated'] ) ) : ''; // phpcs:ignore
2198
-
2199
- if ( 'save-settings' === $action ) {
2200
-
2201
- if ( 'success' === $message ) {
2202
-
2203
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Settings updated.', 'option-tree' ) . '</p></div>';
2204
-
2205
- } elseif ( 'failed' === $message ) {
2206
-
2207
- return '<div id="message" class="error fade below-h2"><p>' . esc_html__( 'Settings could not be saved.', 'option-tree' ) . '</p></div>';
2208
-
2209
- }
2210
- } elseif ( 'import-xml' === $action || 'import-settings' === $action ) {
2211
-
2212
- if ( 'success' === $message ) {
2213
-
2214
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Settings Imported.', 'option-tree' ) . '</p></div>';
2215
-
2216
- } elseif ( 'failed' === $message ) {
2217
-
2218
- return '<div id="message" class="error fade below-h2"><p>' . esc_html__( 'Settings could not be imported.', 'option-tree' ) . '</p></div>';
2219
-
2220
- }
2221
- } elseif ( 'import-data' === $action ) {
2222
-
2223
- if ( 'success' === $message ) {
2224
-
2225
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Data Imported.', 'option-tree' ) . '</p></div>';
2226
-
2227
- } elseif ( 'failed' === $message ) {
2228
-
2229
- return '<div id="message" class="error fade below-h2"><p>' . esc_html__( 'Data could not be imported.', 'option-tree' ) . '</p></div>';
2230
-
2231
- }
2232
- } elseif ( 'import-layouts' === $action ) {
2233
-
2234
- if ( 'success' === $message ) {
2235
-
2236
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Layouts Imported.', 'option-tree' ) . '</p></div>';
2237
-
2238
- } elseif ( 'failed' === $message ) {
2239
-
2240
- return '<div id="message" class="error fade below-h2"><p>' . esc_html__( 'Layouts could not be imported.', 'option-tree' ) . '</p></div>';
2241
-
2242
- }
2243
- } elseif ( 'save-layouts' === $action ) {
2244
-
2245
- if ( 'success' === $message ) {
2246
-
2247
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Layouts Updated.', 'option-tree' ) . '</p></div>';
2248
-
2249
- } elseif ( 'failed' === $message ) {
2250
-
2251
- return '<div id="message" class="error fade below-h2"><p>' . esc_html__( 'Layouts could not be updated.', 'option-tree' ) . '</p></div>';
2252
-
2253
- } elseif ( 'deleted' === $message ) {
2254
-
2255
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Layouts have been deleted.', 'option-tree' ) . '</p></div>';
2256
-
2257
- }
2258
- } elseif ( 'layout' === $updated ) {
2259
-
2260
- return '<div id="message" class="updated fade below-h2"><p>' . esc_html__( 'Layout activated.', 'option-tree' ) . '</p></div>';
2261
-
2262
- } elseif ( 'reset' === $action ) {
2263
-
2264
- return '<div id="message" class="updated fade below-h2"><p>' . $page['reset_message'] . '</p></div>';
2265
-
2266
- }
2267
-
2268
- do_action( 'ot_custom_page_messages', $page );
2269
-
2270
- if ( 'true' === $updated || true === $updated ) {
2271
- return '<div id="message" class="updated fade below-h2"><p>' . $page['updated_message'] . '</p></div>';
2272
- }
2273
-
2274
- return false;
2275
- }
2276
- }
2277
-
2278
- if ( ! function_exists( 'ot_option_types_array' ) ) {
2279
-
2280
- /**
2281
- * Setup the default option types.
2282
- *
2283
- * The returned option types are filterable so you can add your own.
2284
- * This is not a task for a beginner as you'll need to add the function
2285
- * that displays the option to the user and validate the saved data.
2286
- *
2287
- * @return array
2288
- *
2289
- * @access public
2290
- * @since 2.0
2291
- */
2292
- function ot_option_types_array() {
2293
-
2294
- return apply_filters(
2295
- 'ot_option_types_array',
2296
- array(
2297
- 'background' => esc_html__( 'Background', 'option-tree' ),
2298
- 'border' => esc_html__( 'Border', 'option-tree' ),
2299
- 'box-shadow' => esc_html__( 'Box Shadow', 'option-tree' ),
2300
- 'category-checkbox' => esc_html__( 'Category Checkbox', 'option-tree' ),
2301
- 'category-select' => esc_html__( 'Category Select', 'option-tree' ),
2302
- 'checkbox' => esc_html__( 'Checkbox', 'option-tree' ),
2303
- 'colorpicker' => esc_html__( 'Colorpicker', 'option-tree' ),
2304
- 'colorpicker-opacity' => esc_html__( 'Colorpicker Opacity', 'option-tree' ),
2305
- 'css' => esc_html__( 'CSS', 'option-tree' ),
2306
- 'custom-post-type-checkbox' => esc_html__( 'Custom Post Type Checkbox', 'option-tree' ),
2307
- 'custom-post-type-select' => esc_html__( 'Custom Post Type Select', 'option-tree' ),
2308
- 'date-picker' => esc_html__( 'Date Picker', 'option-tree' ),
2309
- 'date-time-picker' => esc_html__( 'Date Time Picker', 'option-tree' ),
2310
- 'dimension' => esc_html__( 'Dimension', 'option-tree' ),
2311
- 'gallery' => esc_html__( 'Gallery', 'option-tree' ),
2312
- 'google-fonts' => esc_html__( 'Google Fonts', 'option-tree' ),
2313
- 'javascript' => esc_html__( 'JavaScript', 'option-tree' ),
2314
- 'link-color' => esc_html__( 'Link Color', 'option-tree' ),
2315
- 'list-item' => esc_html__( 'List Item', 'option-tree' ),
2316
- 'measurement' => esc_html__( 'Measurement', 'option-tree' ),
2317
- 'numeric-slider' => esc_html__( 'Numeric Slider', 'option-tree' ),
2318
- 'on-off' => esc_html__( 'On/Off', 'option-tree' ),
2319
- 'page-checkbox' => esc_html__( 'Page Checkbox', 'option-tree' ),
2320
- 'page-select' => esc_html__( 'Page Select', 'option-tree' ),
2321
- 'post-checkbox' => esc_html__( 'Post Checkbox', 'option-tree' ),
2322
- 'post-select' => esc_html__( 'Post Select', 'option-tree' ),
2323
- 'radio' => esc_html__( 'Radio', 'option-tree' ),
2324
- 'radio-image' => esc_html__( 'Radio Image', 'option-tree' ),
2325
- 'select' => esc_html__( 'Select', 'option-tree' ),
2326
- 'sidebar-select' => esc_html__( 'Sidebar Select', 'option-tree' ),
2327
- 'slider' => esc_html__( 'Slider', 'option-tree' ),
2328
- 'social-links' => esc_html__( 'Social Links', 'option-tree' ),
2329
- 'spacing' => esc_html__( 'Spacing', 'option-tree' ),
2330
- 'tab' => esc_html__( 'Tab', 'option-tree' ),
2331
- 'tag-checkbox' => esc_html__( 'Tag Checkbox', 'option-tree' ),
2332
- 'tag-select' => esc_html__( 'Tag Select', 'option-tree' ),
2333
- 'taxonomy-checkbox' => esc_html__( 'Taxonomy Checkbox', 'option-tree' ),
2334
- 'taxonomy-select' => esc_html__( 'Taxonomy Select', 'option-tree' ),
2335
- 'text' => esc_html__( 'Text', 'option-tree' ),
2336
- 'textarea' => esc_html__( 'Textarea', 'option-tree' ),
2337
- 'textarea-simple' => esc_html__( 'Textarea Simple', 'option-tree' ),
2338
- 'textblock' => esc_html__( 'Textblock', 'option-tree' ),
2339
- 'textblock-titled' => esc_html__( 'Textblock Titled', 'option-tree' ),
2340
- 'typography' => esc_html__( 'Typography', 'option-tree' ),
2341
- 'upload' => esc_html__( 'Upload', 'option-tree' ),
2342
- )
2343
- );
2344
- }
2345
- }
2346
-
2347
- if ( ! function_exists( 'ot_map_old_option_types' ) ) {
2348
-
2349
- /**
2350
- * Map old option types for rebuilding XML and Table data.
2351
- *
2352
- * @param string $type The old option type.
2353
- * @return string The new option type
2354
- *
2355
- * @access public
2356
- * @since 2.0
2357
- */
2358
- function ot_map_old_option_types( $type = '' ) {
2359
-
2360
- if ( empty( $type ) ) {
2361
- return 'text';
2362
- }
2363
-
2364
- $types = array(
2365
- 'background' => 'background',
2366
- 'category' => 'category-select',
2367
- 'categories' => 'category-checkbox',
2368
- 'checkbox' => 'checkbox',
2369
- 'colorpicker' => 'colorpicker',
2370
- 'css' => 'css',
2371
- 'custom_post' => 'custom-post-type-select',
2372
- 'custom_posts' => 'custom-post-type-checkbox',
2373
- 'input' => 'text',
2374
- 'image' => 'upload',
2375
- 'measurement' => 'measurement',
2376
- 'page' => 'page-select',
2377
- 'pages' => 'page-checkbox',
2378
- 'post' => 'post-select',
2379
- 'posts' => 'post-checkbox',
2380
- 'radio' => 'radio',
2381
- 'select' => 'select',
2382
- 'slider' => 'slider',
2383
- 'tag' => 'tag-select',
2384
- 'tags' => 'tag-checkbox',
2385
- 'textarea' => 'textarea',
2386
- 'textblock' => 'textblock',
2387
- 'typography' => 'typography',
2388
- 'upload' => 'upload',
2389
- );
2390
-
2391
- if ( isset( $types[ $type ] ) ) {
2392
- return $types[ $type ];
2393
- }
2394
-
2395
- return false;
2396
- }
2397
- }
2398
-
2399
- if ( ! function_exists( 'ot_google_font_stack' ) ) {
2400
-
2401
- /**
2402
- * Filters the typography font-family to add Google fonts dynamically.
2403
- *
2404
- * @param array $families An array of all recognized font families.
2405
- * @param string $field_id ID of the field being filtered.
2406
- *
2407
- * @return array
2408
- *
2409
- * @access public
2410
- * @since 2.5.0
2411
- */
2412
- function ot_google_font_stack( $families, $field_id ) {
2413
-
2414
- if ( ! is_array( $families ) ) {
2415
- return array();
2416
- }
2417
-
2418
- $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
2419
- $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
2420
-
2421
- if ( ! empty( $ot_set_google_fonts ) ) {
2422
- foreach ( $ot_set_google_fonts as $id => $sets ) {
2423
- foreach ( $sets as $value ) {
2424
- $family = isset( $value['family'] ) ? $value['family'] : '';
2425
- if ( $family && isset( $ot_google_fonts[ $family ] ) ) {
2426
- $spaces = explode( ' ', $ot_google_fonts[ $family ]['family'] );
2427
- $font_stack = count( $spaces ) > 1 ? '"' . $ot_google_fonts[ $family ]['family'] . '"' : $ot_google_fonts[ $family ]['family'];
2428
- $families[ $family ] = apply_filters( 'ot_google_font_stack', $font_stack, $family, $field_id );
2429
- }
2430
- }
2431
- }
2432
- }
2433
-
2434
- return $families;
2435
- }
2436
-
2437
- add_filter( 'ot_recognized_font_families', 'ot_google_font_stack', 1, 2 );
2438
- }
2439
-
2440
- if ( ! function_exists( 'ot_recognized_font_families' ) ) {
2441
-
2442
- /**
2443
- * Recognized font families
2444
- *
2445
- * Returns an array of all recognized font families.
2446
- * Keys are intended to be stored in the database
2447
- * while values are ready for display in html.
2448
- * Renamed in version 2.0 to avoid name collisions.
2449
- *
2450
- * @uses apply_filters()
2451
- *
2452
- * @param string $field_id ID that's passed to the filter.
2453
- *
2454
- * @return array
2455
- *
2456
- * @access public
2457
- * @since 1.1.8
2458
- * @updated 2.0
2459
- */
2460
- function ot_recognized_font_families( $field_id ) {
2461
-
2462
- $families = array(
2463
- 'arial' => 'Arial',
2464
- 'georgia' => 'Georgia',
2465
- 'helvetica' => 'Helvetica',
2466
- 'palatino' => 'Palatino',
2467
- 'tahoma' => 'Tahoma',
2468
- 'times' => '"Times New Roman", sans-serif',
2469
- 'trebuchet' => 'Trebuchet',
2470
- 'verdana' => 'Verdana',
2471
- );
2472
-
2473
- return apply_filters( 'ot_recognized_font_families', $families, $field_id );
2474
- }
2475
- }
2476
-
2477
- if ( ! function_exists( 'ot_recognized_font_sizes' ) ) {
2478
-
2479
- /**
2480
- * Recognized font sizes
2481
- *
2482
- * Returns an array of all recognized font sizes.
2483
- *
2484
- * @uses apply_filters()
2485
- *
2486
- * @param string $field_id ID that's passed to the filter.
2487
- *
2488
- * @return array
2489
- *
2490
- * @access public
2491
- * @since 2.0.12
2492
- */
2493
- function ot_recognized_font_sizes( $field_id ) {
2494
-
2495
- $range = ot_range(
2496
- apply_filters( 'ot_font_size_low_range', 0, $field_id ),
2497
- apply_filters( 'ot_font_size_high_range', 150, $field_id ),
2498
- apply_filters( 'ot_font_size_range_interval', 1, $field_id )
2499
- );
2500
-
2501
- $unit = apply_filters( 'ot_font_size_unit_type', 'px', $field_id );
2502
-
2503
- foreach ( $range as $k => $v ) {
2504
- $range[ $k ] = $v . $unit;
2505
- }
2506
-
2507
- return apply_filters( 'ot_recognized_font_sizes', $range, $field_id );
2508
- }
2509
- }
2510
-
2511
- if ( ! function_exists( 'ot_recognized_font_styles' ) ) {
2512
-
2513
- /**
2514
- * Recognized font styles
2515
- *
2516
- * Returns an array of all recognized font styles.
2517
- * Renamed in version 2.0 to avoid name collisions.
2518
- *
2519
- * @uses apply_filters()
2520
- *
2521
- * @param string $field_id ID that's passed to the filter.
2522
- *
2523
- * @return array
2524
- *
2525
- * @access public
2526
- * @since 1.1.8
2527
- * @updated 2.0
2528
- */
2529
- function ot_recognized_font_styles( $field_id ) {
2530
-
2531
- return apply_filters(
2532
- 'ot_recognized_font_styles',
2533
- array(
2534
- 'normal' => 'Normal',
2535
- 'italic' => 'Italic',
2536
- 'oblique' => 'Oblique',
2537
- 'inherit' => 'Inherit',
2538
- ),
2539
- $field_id
2540
- );
2541
- }
2542
- }
2543
-
2544
- if ( ! function_exists( 'ot_recognized_font_variants' ) ) {
2545
-
2546
- /**
2547
- * Recognized font variants
2548
- *
2549
- * Returns an array of all recognized font variants.
2550
- * Renamed in version 2.0 to avoid name collisions.
2551
- *
2552
- * @uses apply_filters()
2553
- *
2554
- * @param string $field_id ID that's passed to the filter.
2555
- *
2556
- * @return array
2557
- *
2558
- * @access public
2559
- * @since 1.1.8
2560
- * @updated 2.0
2561
- */
2562
- function ot_recognized_font_variants( $field_id ) {
2563
-
2564
- return apply_filters(
2565
- 'ot_recognized_font_variants',
2566
- array(
2567
- 'normal' => 'Normal',
2568
- 'small-caps' => 'Small Caps',
2569
- 'inherit' => 'Inherit',
2570
- ),
2571
- $field_id
2572
- );
2573
- }
2574
- }
2575
-
2576
- if ( ! function_exists( 'ot_recognized_font_weights' ) ) {
2577
-
2578
- /**
2579
- * Recognized font weights
2580
- *
2581
- * Returns an array of all recognized font weights.
2582
- * Renamed in version 2.0 to avoid name collisions.
2583
- *
2584
- * @uses apply_filters()
2585
- *
2586
- * @param string $field_id ID that's passed to the filter.
2587
- *
2588
- * @return array
2589
- *
2590
- * @access public
2591
- * @since 1.1.8
2592
- * @updated 2.0
2593
- */
2594
- function ot_recognized_font_weights( $field_id ) {
2595
-
2596
- return apply_filters(
2597
- 'ot_recognized_font_weights',
2598
- array(
2599
- 'normal' => 'Normal',
2600
- 'bold' => 'Bold',
2601
- 'bolder' => 'Bolder',
2602
- 'lighter' => 'Lighter',
2603
- '100' => '100',
2604
- '200' => '200',
2605
- '300' => '300',
2606
- '400' => '400',
2607
- '500' => '500',
2608
- '600' => '600',
2609
- '700' => '700',
2610
- '800' => '800',
2611
- '900' => '900',
2612
- 'inherit' => 'Inherit',
2613
- ),
2614
- $field_id
2615
- );
2616
- }
2617
- }
2618
-
2619
- if ( ! function_exists( 'ot_recognized_letter_spacing' ) ) {
2620
-
2621
- /**
2622
- * Recognized letter spacing
2623
- *
2624
- * Returns an array of all recognized line heights.
2625
- *
2626
- * @uses apply_filters()
2627
- *
2628
- * @param string $field_id ID that's passed to the filter.
2629
- *
2630
- * @return array
2631
- *
2632
- * @access public
2633
- * @since 2.0.12
2634
- */
2635
- function ot_recognized_letter_spacing( $field_id ) {
2636
-
2637
- $range = ot_range(
2638
- apply_filters( 'ot_letter_spacing_low_range', -0.1, $field_id ),
2639
- apply_filters( 'ot_letter_spacing_high_range', 0.1, $field_id ),
2640
- apply_filters( 'ot_letter_spacing_range_interval', 0.01, $field_id )
2641
- );
2642
-
2643
- $unit = apply_filters( 'ot_letter_spacing_unit_type', 'em', $field_id );
2644
-
2645
- foreach ( $range as $k => $v ) {
2646
- $range[ $k ] = $v . $unit;
2647
- }
2648
-
2649
- return apply_filters( 'ot_recognized_letter_spacing', $range, $field_id );
2650
- }
2651
- }
2652
-
2653
- if ( ! function_exists( 'ot_recognized_line_heights' ) ) {
2654
-
2655
- /**
2656
- * Recognized line heights
2657
- *
2658
- * Returns an array of all recognized line heights.
2659
- *
2660
- * @uses apply_filters()
2661
- *
2662
- * @param string $field_id ID that's passed to the filter.
2663
- *
2664
- * @return array
2665
- *
2666
- * @access public
2667
- * @since 2.0.12
2668
- */
2669
- function ot_recognized_line_heights( $field_id ) {
2670
-
2671
- $range = ot_range(
2672
- apply_filters( 'ot_line_height_low_range', 0, $field_id ),
2673
- apply_filters( 'ot_line_height_high_range', 150, $field_id ),
2674
- apply_filters( 'ot_line_height_range_interval', 1, $field_id )
2675
- );
2676
-
2677
- $unit = apply_filters( 'ot_line_height_unit_type', 'px', $field_id );
2678
-
2679
- foreach ( $range as $k => $v ) {
2680
- $range[ $k ] = $v . $unit;
2681
- }
2682
-
2683
- return apply_filters( 'ot_recognized_line_heights', $range, $field_id );
2684
- }
2685
- }
2686
-
2687
- if ( ! function_exists( 'ot_recognized_text_decorations' ) ) {
2688
-
2689
- /**
2690
- * Recognized text decorations
2691
- *
2692
- * Returns an array of all recognized text decorations.
2693
- * Keys are intended to be stored in the database
2694
- * while values are ready for display in html.
2695
- *
2696
- * @uses apply_filters()
2697
- *
2698
- * @param string $field_id ID that's passed to the filter.
2699
- *
2700
- * @return array
2701
- *
2702
- * @access public
2703
- * @since 2.0.10
2704
- */
2705
- function ot_recognized_text_decorations( $field_id ) {
2706
-
2707
- return apply_filters(
2708
- 'ot_recognized_text_decorations',
2709
- array(
2710
- 'blink' => 'Blink',
2711
- 'inherit' => 'Inherit',
2712
- 'line-through' => 'Line Through',
2713
- 'none' => 'None',
2714
- 'overline' => 'Overline',
2715
- 'underline' => 'Underline',
2716
- ),
2717
- $field_id
2718
- );
2719
- }
2720
- }
2721
-
2722
- if ( ! function_exists( 'ot_recognized_text_transformations' ) ) {
2723
-
2724
- /**
2725
- * Recognized text transformations
2726
- *
2727
- * Returns an array of all recognized text transformations.
2728
- * Keys are intended to be stored in the database
2729
- * while values are ready for display in html.
2730
- *
2731
- * @uses apply_filters()
2732
- *
2733
- * @param string $field_id ID that's passed to the filter.
2734
- *
2735
- * @return array
2736
- *
2737
- * @access public
2738
- * @since 2.0.10
2739
- */
2740
- function ot_recognized_text_transformations( $field_id ) {
2741
-
2742
- return apply_filters(
2743
- 'ot_recognized_text_transformations',
2744
- array(
2745
- 'capitalize' => 'Capitalize',
2746
- 'inherit' => 'Inherit',
2747
- 'lowercase' => 'Lowercase',
2748
- 'none' => 'None',
2749
- 'uppercase' => 'Uppercase',
2750
- ),
2751
- $field_id
2752
- );
2753
- }
2754
- }
2755
-
2756
- if ( ! function_exists( 'ot_recognized_background_repeat' ) ) {
2757
-
2758
- /**
2759
- * Recognized background repeat
2760
- *
2761
- * Returns an array of all recognized background repeat values.
2762
- * Renamed in version 2.0 to avoid name collisions.
2763
- *
2764
- * @uses apply_filters()
2765
- *
2766
- * @param string $field_id ID that's passed to the filter.
2767
- *
2768
- * @return array
2769
- *
2770
- * @access public
2771
- * @since 1.1.8
2772
- * @updated 2.0
2773
- */
2774
- function ot_recognized_background_repeat( $field_id ) {
2775
-
2776
- return apply_filters(
2777
- 'ot_recognized_background_repeat',
2778
- array(
2779
- 'no-repeat' => 'No Repeat',
2780
- 'repeat' => 'Repeat All',
2781
- 'repeat-x' => 'Repeat Horizontally',
2782
- 'repeat-y' => 'Repeat Vertically',
2783
- 'inherit' => 'Inherit',
2784
- ),
2785
- $field_id
2786
- );
2787
- }
2788
- }
2789
-
2790
- if ( ! function_exists( 'ot_recognized_background_attachment' ) ) {
2791
-
2792
- /**
2793
- * Recognized background attachment
2794
- *
2795
- * Returns an array of all recognized background attachment values.
2796
- * Renamed in version 2.0 to avoid name collisions.
2797
- *
2798
- * @uses apply_filters()
2799
- *
2800
- * @param string $field_id ID that's passed to the filter.
2801
- *
2802
- * @return array
2803
- *
2804
- * @access public
2805
- * @since 1.1.8
2806
- * @updated 2.0
2807
- */
2808
- function ot_recognized_background_attachment( $field_id ) {
2809
-
2810
- return apply_filters(
2811
- 'ot_recognized_background_attachment',
2812
- array(
2813
- 'fixed' => 'Fixed',
2814
- 'scroll' => 'Scroll',
2815
- 'inherit' => 'Inherit',
2816
- ),
2817
- $field_id
2818
- );
2819
- }
2820
- }
2821
-
2822
- if ( ! function_exists( 'ot_recognized_background_position' ) ) {
2823
-
2824
- /**
2825
- * Recognized background position
2826
- *
2827
- * Returns an array of all recognized background position values.
2828
- * Renamed in version 2.0 to avoid name collisions.
2829
- *
2830
- * @uses apply_filters()
2831
- *
2832
- * @param string $field_id ID that's passed to the filter.
2833
- *
2834
- * @return array
2835
- *
2836
- * @access public
2837
- * @since 1.1.8
2838
- * @updated 2.0
2839
- */
2840
- function ot_recognized_background_position( $field_id ) {
2841
-
2842
- return apply_filters(
2843
- 'ot_recognized_background_position',
2844
- array(
2845
- 'left top' => 'Left Top',
2846
- 'left center' => 'Left Center',
2847
- 'left bottom' => 'Left Bottom',
2848
- 'center top' => 'Center Top',
2849
- 'center center' => 'Center Center',
2850
- 'center bottom' => 'Center Bottom',
2851
- 'right top' => 'Right Top',
2852
- 'right center' => 'Right Center',
2853
- 'right bottom' => 'Right Bottom',
2854
- ),
2855
- $field_id
2856
- );
2857
-
2858
- }
2859
- }
2860
-
2861
- if ( ! function_exists( 'ot_recognized_border_style_types' ) ) {
2862
-
2863
- /**
2864
- * Returns an array of all available border style types.
2865
- *
2866
- * @uses apply_filters()
2867
- *
2868
- * @param string $field_id ID that's passed to the filter.
2869
- *
2870
- * @return array
2871
- *
2872
- * @access public
2873
- * @since 2.5.0
2874
- */
2875
- function ot_recognized_border_style_types( $field_id ) {
2876
-
2877
- return apply_filters(
2878
- 'ot_recognized_border_style_types',
2879
- array(
2880
- 'hidden' => 'Hidden',
2881
- 'dashed' => 'Dashed',
2882
- 'solid' => 'Solid',
2883
- 'double' => 'Double',
2884
- 'groove' => 'Groove',
2885
- 'ridge' => 'Ridge',
2886
- 'inset' => 'Inset',
2887
- 'outset' => 'Outset',
2888
- ),
2889
- $field_id
2890
- );
2891
-
2892
- }
2893
- }
2894
-
2895
- if ( ! function_exists( 'ot_recognized_border_unit_types' ) ) {
2896
-
2897
- /**
2898
- * Returns an array of all available border unit types.
2899
- *
2900
- * @uses apply_filters()
2901
- *
2902
- * @param string $field_id ID that's passed to the filter.
2903
- *
2904
- * @return array
2905
- *
2906
- * @access public
2907
- * @since 2.5.0
2908
- */
2909
- function ot_recognized_border_unit_types( $field_id ) {
2910
-
2911
- return apply_filters(
2912
- 'ot_recognized_border_unit_types',
2913
- array(
2914
- 'px' => 'px',
2915
- '%' => '%',
2916
- 'em' => 'em',
2917
- 'pt' => 'pt',
2918
- ),
2919
- $field_id
2920
- );
2921
- }
2922
- }
2923
-
2924
- if ( ! function_exists( 'ot_recognized_dimension_unit_types' ) ) {
2925
-
2926
- /**
2927
- * Returns an array of all available dimension unit types.
2928
- *
2929
- * @uses apply_filters()
2930
- *
2931
- * @param string $field_id ID that's passed to the filter.
2932
- *
2933
- * @return array
2934
- *
2935
- * @access public
2936
- * @since 2.5.0
2937
- */
2938
- function ot_recognized_dimension_unit_types( $field_id = '' ) {
2939
-
2940
- return apply_filters(
2941
- 'ot_recognized_dimension_unit_types',
2942
- array(
2943
- 'px' => 'px',
2944
- '%' => '%',
2945
- 'em' => 'em',
2946
- 'pt' => 'pt',
2947
- ),
2948
- $field_id
2949
- );
2950
- }
2951
- }
2952
-
2953
- if ( ! function_exists( 'ot_recognized_spacing_unit_types' ) ) {
2954
-
2955
- /**
2956
- * Returns an array of all available spacing unit types.
2957
- *
2958
- * @uses apply_filters()
2959
- *
2960
- * @param string $field_id ID that's passed to the filter.
2961
- *
2962
- * @return array
2963
- *
2964
- * @access public
2965
- * @since 2.5.0
2966
- */
2967
- function ot_recognized_spacing_unit_types( $field_id ) {
2968
-
2969
- return apply_filters(
2970
- 'ot_recognized_spacing_unit_types',
2971
- array(
2972
- 'px' => 'px',
2973
- '%' => '%',
2974
- 'em' => 'em',
2975
- 'pt' => 'pt',
2976
- ),
2977
- $field_id
2978
- );
2979
-
2980
- }
2981
- }
2982
-
2983
- if ( ! function_exists( 'ot_recognized_google_font_families' ) ) {
2984
-
2985
- /**
2986
- * Recognized Google font families
2987
- *
2988
- * @uses apply_filters()
2989
- *
2990
- * @param string $field_id ID that's passed to the filter.
2991
- *
2992
- * @return array
2993
- *
2994
- * @access public
2995
- * @since 2.5.0
2996
- */
2997
- function ot_recognized_google_font_families( $field_id ) {
2998
-
2999
- $families = array();
3000
- $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
3001
-
3002
- // Forces an array rebuild when we switch themes.
3003
- if ( empty( $ot_google_fonts ) ) {
3004
- $ot_google_fonts = ot_fetch_google_fonts( true, true );
3005
- }
3006
-
3007
- foreach ( (array) $ot_google_fonts as $key => $item ) {
3008
-
3009
- if ( isset( $item['family'] ) ) {
3010
- $families[ $key ] = $item['family'];
3011
- }
3012
- }
3013
-
3014
- return apply_filters( 'ot_recognized_google_font_families', $families, $field_id );
3015
- }
3016
- }
3017
-
3018
- if ( ! function_exists( 'ot_recognized_google_font_variants' ) ) {
3019
-
3020
- /**
3021
- * Recognized Google font variants
3022
- *
3023
- * @uses apply_filters()
3024
- *
3025
- * @param string $field_id ID that's passed to the filter.
3026
- * @param string $family The font family.
3027
- *
3028
- * @return array
3029
- *
3030
- * @access public
3031
- * @since 2.5.0
3032
- */
3033
- function ot_recognized_google_font_variants( $field_id, $family ) {
3034
-
3035
- $variants = array();
3036
- $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
3037
-
3038
- if ( isset( $ot_google_fonts[ $family ]['variants'] ) ) {
3039
- $variants = $ot_google_fonts[ $family ]['variants'];
3040
- }
3041
-
3042
- return apply_filters( 'ot_recognized_google_font_variants', $variants, $field_id, $family );
3043
- }
3044
- }
3045
-
3046
- if ( ! function_exists( 'ot_recognized_google_font_subsets' ) ) {
3047
-
3048
- /**
3049
- * Recognized Google font subsets
3050
- *
3051
- * @uses apply_filters()
3052
- *
3053
- * @param string $field_id ID that's passed to the filter.
3054
- * @param string $family The font family.
3055
- *
3056
- * @return array
3057
- *
3058
- * @access public
3059
- * @since 2.5.0
3060
- */
3061
- function ot_recognized_google_font_subsets( $field_id, $family ) {
3062
-
3063
- $subsets = array();
3064
- $ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
3065
-
3066
- if ( isset( $ot_google_fonts[ $family ]['subsets'] ) ) {
3067
- $subsets = $ot_google_fonts[ $family ]['subsets'];
3068
- }
3069
-
3070
- return apply_filters( 'ot_recognized_google_font_subsets', $subsets, $field_id, $family );
3071
- }
3072
- }
3073
-
3074
- if ( ! function_exists( 'ot_measurement_unit_types' ) ) {
3075
-
3076
- /**
3077
- * Measurement Units
3078
- *
3079
- * Returns an array of all available unit types.
3080
- * Renamed in version 2.0 to avoid name collisions.
3081
- *
3082
- * @uses apply_filters()
3083
- *
3084
- * @param string $field_id ID that's passed to the filter.
3085
- *
3086
- * @return array
3087
- *
3088
- * @access public
3089
- * @since 1.1.8
3090
- * @since 2.0
3091
- */
3092
- function ot_measurement_unit_types( $field_id = '' ) {
3093
-
3094
- return apply_filters(
3095
- 'ot_measurement_unit_types',
3096
- array(
3097
- 'px' => 'px',
3098
- '%' => '%',
3099
- 'em' => 'em',
3100
- 'pt' => 'pt',
3101
- ),
3102
- $field_id
3103
- );
3104
-
3105
- }
3106
- }
3107
-
3108
- if ( ! function_exists( 'ot_radio_images' ) ) {
3109
-
3110
- /**
3111
- * Radio Images default array.
3112
- *
3113
- * Returns an array of all available radio images.
3114
- * You can filter this function to change the images
3115
- * on a per option basis.
3116
- *
3117
- * @uses apply_filters()
3118
- *
3119
- * @param string $field_id ID that's passed to the filter.
3120
- *
3121
- * @return array
3122
- *
3123
- * @access public
3124
- * @since 2.0
3125
- */
3126
- function ot_radio_images( $field_id ) {
3127
-
3128
- return apply_filters(
3129
- 'ot_radio_images',
3130
- array(
3131
- array(
3132
- 'value' => 'left-sidebar',
3133
- 'label' => esc_html__( 'Left Sidebar', 'option-tree' ),
3134
- 'src' => OT_URL . 'assets/images/layout/left-sidebar.png',
3135
- ),
3136
- array(
3137
- 'value' => 'right-sidebar',
3138
- 'label' => esc_html__( 'Right Sidebar', 'option-tree' ),
3139
- 'src' => OT_URL . 'assets/images/layout/right-sidebar.png',
3140
- ),
3141
- array(
3142
- 'value' => 'full-width',
3143
- 'label' => esc_html__( 'Full Width (no sidebar)', 'option-tree' ),
3144
- 'src' => OT_URL . 'assets/images/layout/full-width.png',
3145
- ),
3146
- array(
3147
- 'value' => 'dual-sidebar',
3148
- 'label' => esc_html__( 'Dual Sidebar', 'option-tree' ),
3149
- 'src' => OT_URL . 'assets/images/layout/dual-sidebar.png',
3150
- ),
3151
- array(
3152
- 'value' => 'left-dual-sidebar',
3153
- 'label' => esc_html__( 'Left Dual Sidebar', 'option-tree' ),
3154
- 'src' => OT_URL . 'assets/images/layout/left-dual-sidebar.png',
3155
- ),
3156
- array(
3157
- 'value' => 'right-dual-sidebar',
3158
- 'label' => esc_html__( 'Right Dual Sidebar', 'option-tree' ),
3159
- 'src' => OT_URL . 'assets/images/layout/right-dual-sidebar.png',
3160
- ),
3161
- ),
3162
- $field_id
3163
- );
3164
-
3165
- }
3166
- }
3167
-
3168
- if ( ! function_exists( 'ot_list_item_settings' ) ) {
3169
-
3170
- /**
3171
- * Default List Item Settings array.
3172
- *
3173
- * Returns an array of the default list item settings.
3174
- * You can filter this function to change the settings
3175
- * on a per option basis.
3176
- *
3177
- * @uses apply_filters()
3178
- *
3179
- * @param string $field_id ID that's passed to the filter.
3180
- *
3181
- * @return array
3182
- *
3183
- * @access public
3184
- * @since 2.0
3185
- */
3186
- function ot_list_item_settings( $field_id ) {
3187
-
3188
- $settings = apply_filters(
3189
- 'ot_list_item_settings',
3190
- array(
3191
- array(
3192
- 'id' => 'image',
3193
- 'label' => esc_html__( 'Image', 'option-tree' ),
3194
- 'desc' => '',
3195
- 'std' => '',
3196
- 'type' => 'upload',
3197
- 'rows' => '',
3198
- 'class' => '',
3199
- 'post_type' => '',
3200
- 'choices' => array(),
3201
- ),
3202
- array(
3203
- 'id' => 'link',
3204
- 'label' => esc_html__( 'Link', 'option-tree' ),
3205
- 'desc' => '',
3206
- 'std' => '',
3207
- 'type' => 'text',
3208
- 'rows' => '',
3209
- 'class' => '',
3210
- 'post_type' => '',
3211
- 'choices' => array(),
3212
- ),
3213
- array(
3214
- 'id' => 'description',
3215
- 'label' => esc_html__( 'Description', 'option-tree' ),
3216
- 'desc' => '',
3217
- 'std' => '',
3218
- 'type' => 'textarea-simple',
3219
- 'rows' => 10,
3220
- 'class' => '',
3221
- 'post_type' => '',
3222
- 'choices' => array(),
3223
- ),
3224
- ),
3225
- $field_id
3226
- );
3227
-
3228
- return $settings;
3229
- }
3230
- }
3231
-
3232
- if ( ! function_exists( 'ot_slider_settings' ) ) {
3233
-
3234
- /**
3235
- * Default Slider Settings array.
3236
- *
3237
- * Returns an array of the default slider settings.
3238
- * You can filter this function to change the settings
3239
- * on a per option basis.
3240
- *
3241
- * @uses apply_filters()
3242
- *
3243
- * @param string $field_id ID that's passed to the filter.
3244
- *
3245
- * @return array
3246
- *
3247
- * @access public
3248
- * @since 2.0
3249
- */
3250
- function ot_slider_settings( $field_id ) {
3251
-
3252
- $settings = apply_filters(
3253
- 'image_slider_fields',
3254
- array(
3255
- array(
3256
- 'name' => 'image',
3257
- 'type' => 'image',
3258
- 'label' => esc_html__( 'Image', 'option-tree' ),
3259
- 'class' => '',
3260
- ),
3261
- array(
3262
- 'name' => 'link',
3263
- 'type' => 'text',
3264
- 'label' => esc_html__( 'Link', 'option-tree' ),
3265
- 'class' => '',
3266
- ),
3267
- array(
3268
- 'name' => 'description',
3269
- 'type' => 'textarea',
3270
- 'label' => esc_html__( 'Description', 'option-tree' ),
3271
- 'class' => '',
3272
- ),
3273
- ),
3274
- $field_id
3275
- );
3276
-
3277
- // Fix the array keys, values, and just get it 2.0 ready.
3278
- foreach ( $settings as $_k => $setting ) {
3279
-
3280
- foreach ( $setting as $s_key => $s_value ) {
3281
-
3282
- if ( 'name' === $s_key ) {
3283
-
3284
- $settings[ $_k ]['id'] = $s_value;
3285
- unset( $settings[ $_k ]['name'] );
3286
- } elseif ( 'type' === $s_key ) {
3287
-
3288
- if ( 'input' === $s_value ) {
3289
-
3290
- $settings[ $_k ]['type'] = 'text';
3291
- } elseif ( 'textarea' === $s_value ) {
3292
-
3293
- $settings[ $_k ]['type'] = 'textarea-simple';
3294
- } elseif ( 'image' === $s_value ) {
3295
-
3296
- $settings[ $_k ]['type'] = 'upload';
3297
- }
3298
- }
3299
- }
3300
- }
3301
-
3302
- return $settings;
3303
- }
3304
- }
3305
-
3306
- if ( ! function_exists( 'ot_social_links_settings' ) ) {
3307
-
3308
- /**
3309
- * Default Social Links Settings array.
3310
- *
3311
- * Returns an array of the default social links settings.
3312
- * You can filter this function to change the settings
3313
- * on a per option basis.
3314
- *
3315
- * @uses apply_filters()
3316
- *
3317
- * @param string $field_id ID that's passed to the filter.
3318
- *
3319
- * @return array
3320
- *
3321
- * @access public
3322
- * @since 2.4.0
3323
- */
3324
- function ot_social_links_settings( $field_id ) {
3325
-
3326
- /* translators: %s: the http protocol */
3327
- $string = esc_html__( 'Enter a link to the profile or page on the social website. Remember to add the %s part to the front of the link.', 'option-tree' );
3328
- $settings = apply_filters(
3329
- 'ot_social_links_settings',
3330
- array(
3331
- array(
3332
- 'id' => 'name',
3333
- 'label' => esc_html__( 'Name', 'option-tree' ),
3334
- 'desc' => esc_html__( 'Enter the name of the social website.', 'option-tree' ),
3335
- 'std' => '',
3336
- 'type' => 'text',
3337
- 'class' => 'option-tree-setting-title',
3338
- ),
3339
- array(
3340
- 'id' => 'title',
3341
- 'label' => 'Title',
3342
- 'desc' => esc_html__( 'Enter the text shown in the title attribute of the link.', 'option-tree' ),
3343
- 'type' => 'text',
3344
- ),
3345
- array(
3346
- 'id' => 'href',
3347
- 'label' => 'Link',
3348
- 'desc' => sprintf( $string, '<code>http:// or https://</code>' ),
3349
- 'type' => 'text',
3350
- ),
3351
- ),
3352
- $field_id
3353
- );
3354
-
3355
- return $settings;
3356
- }
3357
- }
3358
-
3359
- if ( ! function_exists( 'ot_insert_css_with_markers' ) ) {
3360
-
3361
- /**
3362
- * Inserts CSS with field_id markers.
3363
- *
3364
- * Inserts CSS into a dynamic.css file, placing it between
3365
- * BEGIN and END field_id markers. Replaces existing marked info,
3366
- * but still retains surrounding data.
3367
- *
3368
- * @param string $field_id The CSS option field ID.
3369
- * @param string $insertion The current option_tree array.
3370
- * @param bool $meta Whether or not the value is stored in meta.
3371
- * @return bool True on write success, false on failure.
3372
- *
3373
- * @access public
3374
- * @since 1.1.8
3375
- * @updated 2.5.3
3376
- */
3377
- function ot_insert_css_with_markers( $field_id = '', $insertion = '', $meta = false ) {
3378
-
3379
- // Missing $field_id or $insertion exit early.
3380
- if ( '' === $field_id || '' === $insertion ) {
3381
- return;
3382
- }
3383
-
3384
- // Path to the dynamic.css file.
3385
- $filepath = get_stylesheet_directory() . '/dynamic.css';
3386
- if ( is_multisite() ) {
3387
- $multisite_filepath = get_stylesheet_directory() . '/dynamic-' . get_current_blog_id() . '.css';
3388
- if ( file_exists( $multisite_filepath ) ) {
3389
- $filepath = $multisite_filepath;
3390
- }
3391
- }
3392
-
3393
- // Allow filter on path.
3394
- $filepath = apply_filters( 'css_option_file_path', $filepath, $field_id );
3395
-
3396
- // Grab a copy of the paths array.
3397
- $ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
3398
- if ( is_multisite() ) {
3399
- $ot_css_file_paths = get_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
3400
- }
3401
-
3402
- // Set the path for this field.
3403
- $ot_css_file_paths[ $field_id ] = $filepath;
3404
-
3405
- /* update the paths */
3406
- if ( is_multisite() ) {
3407
- update_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
3408
- } else {
3409
- update_option( 'ot_css_file_paths', $ot_css_file_paths );
3410
- }
3411
-
3412
- // Remove CSS from file, but ensure the file is actually CSS first.
3413
- $file_parts = explode( '.', basename( $filepath ) );
3414
- $file_ext = end( $file_parts );
3415
- if ( is_writeable( $filepath ) && 'css' === $file_ext ) {
3416
-
3417
- $insertion = ot_normalize_css( $insertion );
3418
- $regex = '/{{([a-zA-Z0-9\_\-\#\|\=]+)}}/';
3419
- $marker = $field_id;
3420
-
3421
- // Match custom CSS.
3422
- preg_match_all( $regex, $insertion, $matches );
3423
-
3424
- // Loop through CSS.
3425
- foreach ( $matches[0] as $option ) {
3426
-
3427
- $value = '';
3428
- $option_array = explode( '|', str_replace( array( '{{', '}}' ), '', $option ) );
3429
- $option_id = isset( $option_array[0] ) ? $option_array[0] : '';
3430
- $option_key = isset( $option_array[1] ) ? $option_array[1] : '';
3431
- $option_type = ot_get_option_type_by_id( $option_id );
3432
- $fallback = '';
3433
-
3434
- // Get the meta array value.
3435
- if ( $meta ) {
3436
- global $post;
3437
-
3438
- $value = get_post_meta( $post->ID, $option_id, true );
3439
-
3440
- // Get the options array value.
3441
- } else {
3442
- $options = get_option( ot_options_id() );
3443
-
3444
- if ( isset( $options[ $option_id ] ) ) {
3445
- $value = $options[ $option_id ];
3446
- }
3447
- }
3448
-
3449
- // This in an array of values.
3450
- if ( is_array( $value ) ) {
3451
-
3452
- if ( empty( $option_key ) ) {
3453
-
3454
- // Measurement.
3455
- if ( 'measurement' === $option_type ) {
3456
- $unit = ! empty( $value[1] ) ? $value[1] : 'px';
3457
-
3458
- // Set $value with measurement properties.
3459
- if ( isset( $value[0] ) && strlen( $value[0] ) > 0 ) {
3460
- $value = $value[0] . $unit;
3461
- }
3462
-
3463
- // Border.
3464
- } elseif ( 'border' === $option_type ) {
3465
- $border = array();
3466
-
3467
- $unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
3468
-
3469
- if ( isset( $value['width'] ) && strlen( $value['width'] ) > 0 ) {
3470
- $border[] = $value['width'] . $unit;
3471
- }
3472
-
3473
- if ( ! empty( $value['style'] ) ) {
3474
- $border[] = $value['style'];
3475
- }
3476
-
3477
- if ( ! empty( $value['color'] ) ) {
3478
- $border[] = $value['color'];
3479
- }
3480
-
3481
- // Set $value with border properties or empty string.
3482
- $value = ! empty( $border ) ? implode( ' ', $border ) : '';
3483
-
3484
- // Box Shadow.
3485
- } elseif ( 'box-shadow' === $option_type ) {
3486
-
3487
- $value_safe = array();
3488
- foreach ( $value as $val ) {
3489
- if ( ! empty( $val ) ) {
3490
- $value_safe[] = $val;
3491
- }
3492
- }
3493
- // Set $value with box-shadow properties or empty string.
3494
- $value = ! empty( $value_safe ) ? implode( ' ', $value_safe ) : '';
3495
-
3496
- // Dimension.
3497
- } elseif ( 'dimension' === $option_type ) {
3498
- $dimension = array();
3499
-
3500
- $unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
3501
-
3502
- if ( isset( $value['width'] ) && strlen( $value['width'] ) > 0 ) {
3503
- $dimension[] = $value['width'] . $unit;
3504
- }
3505
-
3506
- if ( isset( $value['height'] ) && strlen( $value['height'] ) > 0 ) {
3507
- $dimension[] = $value['height'] . $unit;
3508
- }
3509
-
3510
- // Set $value with dimension properties or empty string.
3511
- $value = ! empty( $dimension ) ? implode( ' ', $dimension ) : '';
3512
-
3513
- // Spacing.
3514
- } elseif ( 'spacing' === $option_type ) {
3515
- $spacing = array();
3516
-
3517
- $unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
3518
-
3519
- if ( isset( $value['top'] ) && strlen( $value['top'] ) > 0 ) {
3520
- $spacing[] = $value['top'] . $unit;
3521
- }
3522
-
3523
- if ( isset( $value['right'] ) && strlen( $value['right'] ) > 0 ) {
3524
- $spacing[] = $value['right'] . $unit;
3525
- }
3526
-
3527
- if ( isset( $value['bottom'] ) && strlen( $value['bottom'] ) > 0 ) {
3528
- $spacing[] = $value['bottom'] . $unit;
3529
- }
3530
-
3531
- if ( isset( $value['left'] ) && strlen( $value['left'] ) > 0 ) {
3532
- $spacing[] = $value['left'] . $unit;
3533
- }
3534
-
3535
- // Set $value with spacing properties or empty string.
3536
- $value = ! empty( $spacing ) ? implode( ' ', $spacing ) : '';
3537
-
3538
- // Typography.
3539
- } elseif ( 'typography' === $option_type ) {
3540
- $font = array();
3541
-
3542
- if ( ! empty( $value['font-color'] ) ) {
3543
- $font[] = 'color: ' . $value['font-color'] . ';';
3544
- }
3545
-
3546
- if ( ! empty( $value['font-family'] ) ) {
3547
- foreach ( ot_recognized_font_families( $marker ) as $key => $v ) {
3548
- if ( $key === $value['font-family'] ) {
3549
- $font[] = 'font-family: ' . $v . ';';
3550
- }
3551
- }
3552
- }
3553
-
3554
- if ( ! empty( $value['font-size'] ) ) {
3555
- $font[] = 'font-size: ' . $value['font-size'] . ';';
3556
- }
3557
-
3558
- if ( ! empty( $value['font-style'] ) ) {
3559
- $font[] = 'font-style: ' . $value['font-style'] . ';';
3560
- }
3561
-
3562
- if ( ! empty( $value['font-variant'] ) ) {
3563
- $font[] = 'font-variant: ' . $value['font-variant'] . ';';
3564
- }
3565
-
3566
- if ( ! empty( $value['font-weight'] ) ) {
3567
- $font[] = 'font-weight: ' . $value['font-weight'] . ';';
3568
- }
3569
-
3570
- if ( ! empty( $value['letter-spacing'] ) ) {
3571
- $font[] = 'letter-spacing: ' . $value['letter-spacing'] . ';';
3572
- }
3573
-
3574
- if ( ! empty( $value['line-height'] ) ) {
3575
- $font[] = 'line-height: ' . $value['line-height'] . ';';
3576
- }
3577
-
3578
- if ( ! empty( $value['text-decoration'] ) ) {
3579
- $font[] = 'text-decoration: ' . $value['text-decoration'] . ';';
3580
- }
3581
-
3582
- if ( ! empty( $value['text-transform'] ) ) {
3583
- $font[] = 'text-transform: ' . $value['text-transform'] . ';';
3584
- }
3585
-
3586
- // Set $value with font properties or empty string.
3587
- $value = ! empty( $font ) ? implode( "\n", $font ) : '';
3588
-
3589
- // Background.
3590
- } elseif ( 'background' === $option_type ) {
3591
- $bg = array();
3592
-
3593
- if ( ! empty( $value['background-color'] ) ) {
3594
- $bg[] = $value['background-color'];
3595
- }
3596
-
3597
- if ( ! empty( $value['background-image'] ) ) {
3598
-
3599
- // If an attachment ID is stored here fetch its URL and replace the value.
3600
- if ( wp_attachment_is_image( $value['background-image'] ) ) {
3601
-
3602
- $attachment_data = wp_get_attachment_image_src( $value['background-image'], 'original' );
3603
-
3604
- // Check for attachment data.
3605
- if ( $attachment_data ) {
3606
- $value['background-image'] = $attachment_data[0];
3607
- }
3608
- }
3609
-
3610
- $bg[] = 'url("' . $value['background-image'] . '")';
3611
- }
3612
-
3613
- if ( ! empty( $value['background-repeat'] ) ) {
3614
- $bg[] = $value['background-repeat'];
3615
- }
3616
-
3617
- if ( ! empty( $value['background-attachment'] ) ) {
3618
- $bg[] = $value['background-attachment'];
3619
- }
3620
-
3621
- if ( ! empty( $value['background-position'] ) ) {
3622
- $bg[] = $value['background-position'];
3623
- }
3624
-
3625
- if ( ! empty( $value['background-size'] ) ) {
3626
- $size = $value['background-size'];
3627
- }
3628
-
3629
- // Set $value with background properties or empty string.
3630
- $value = ! empty( $bg ) ? 'background: ' . implode( ' ', $bg ) . ';' : '';
3631
-
3632
- if ( isset( $size ) ) {
3633
- if ( ! empty( $bg ) ) {
3634
- $value .= apply_filters( 'ot_insert_css_with_markers_bg_size_white_space', "\n\x20\x20", $option_id );
3635
- }
3636
- $value .= "background-size: $size;";
3637
- }
3638
- }
3639
- } elseif ( ! empty( $value[ $option_key ] ) ) {
3640
- $value = $value[ $option_key ];
3641
- }
3642
- }
3643
-
3644
- // If an attachment ID is stored here fetch its URL and replace the value.
3645
- if ( 'upload' === $option_type && wp_attachment_is_image( $value ) ) {
3646
-
3647
- $attachment_data = wp_get_attachment_image_src( $value, 'original' );
3648
-
3649
- // Check for attachment data.
3650
- if ( $attachment_data ) {
3651
- $value = $attachment_data[0];
3652
- }
3653
- }
3654
-
3655
- // Attempt to fallback when `$value` is empty.
3656
- if ( empty( $value ) ) {
3657
-
3658
- // We're trying to access a single array key.
3659
- if ( ! empty( $option_key ) ) {
3660
-
3661
- // Link Color `inherit`.
3662
- if ( 'link-color' === $option_type ) {
3663
- $fallback = 'inherit';
3664
- }
3665
- } else {
3666
-
3667
- // Border.
3668
- if ( 'border' === $option_type ) {
3669
- $fallback = 'inherit';
3670
- }
3671
-
3672
- // Box Shadow.
3673
- if ( 'box-shadow' === $option_type ) {
3674
- $fallback = 'none';
3675
- }
3676
-
3677
- // Colorpicker.
3678
- if ( 'colorpicker' === $option_type ) {
3679
- $fallback = 'inherit';
3680
- }
3681
-
3682
- // Colorpicker Opacity.
3683
- if ( 'colorpicker-opacity' === $option_type ) {
3684
- $fallback = 'inherit';
3685
- }
3686
- }
3687
-
3688
- /**
3689
- * Filter the `dynamic.css` fallback value.
3690
- *
3691
- * @since 2.5.3
3692
- *
3693
- * @param string $fallback The default CSS fallback value.
3694
- * @param string $option_id The option ID.
3695
- * @param string $option_type The option type.
3696
- * @param string $option_key The option array key.
3697
- */
3698
- $fallback = apply_filters( 'ot_insert_css_with_markers_fallback', $fallback, $option_id, $option_type, $option_key );
3699
- }
3700
-
3701
- // Let's fallback!
3702
- if ( ! empty( $fallback ) ) {
3703
- $value = $fallback;
3704
- }
3705
-
3706
- // Filter the CSS.
3707
- $value = apply_filters( 'ot_insert_css_with_markers_value', $value, $option_id );
3708
-
3709
- // Insert CSS, even if the value is empty.
3710
- $insertion = stripslashes( str_replace( $option, $value, $insertion ) );
3711
- }
3712
-
3713
- // Can't write to the file so we error out.
3714
- if ( ! is_writable( $filepath ) ) {
3715
- /* translators: %s: file path */
3716
- $string = esc_html__( 'Unable to write to file %s.', 'option-tree' );
3717
- add_settings_error( 'option-tree', 'dynamic_css', sprintf( $string, '<code>' . $filepath . '</code>' ), 'error' );
3718
- return false;
3719
- }
3720
-
3721
- // Open file.
3722
- $f = @fopen( $filepath, 'w' ); // phpcs:ignore
3723
-
3724
- // Can't write to the file return false.
3725
- if ( ! $f ) {
3726
- /* translators: %s: file path */
3727
- $string = esc_html__( 'Unable to open the %s file in write mode.', 'option-tree' );
3728
- add_settings_error( 'option-tree', 'dynamic_css', sprintf( $string, '<code>' . $filepath . '</code>' ), 'error' );
3729
- return false;
3730
- }
3731
-
3732
- // Create array from the lines of code.
3733
- $markerdata = explode( "\n", implode( '', file( $filepath ) ) );
3734
-
3735
- $searching = true;
3736
- $foundit = false;
3737
-
3738
- // Has array of lines.
3739
- if ( ! empty( $markerdata ) ) {
3740
-
3741
- // Foreach line of code.
3742
- foreach ( $markerdata as $n => $markerline ) {
3743
-
3744
- // Found begining of marker, set $searching to false.
3745
- if ( "/* BEGIN {$marker} */" === $markerline ) {
3746
- $searching = false;
3747
- }
3748
-
3749
- // Keep searching each line of CSS.
3750
- if ( true === $searching ) {
3751
- if ( $n + 1 < count( $markerdata ) ) {
3752
- fwrite( $f, "{$markerline}\n" ); // phpcs:ignore
3753
- } else {
3754
- fwrite( $f, "{$markerline}" ); // phpcs:ignore
3755
- }
3756
- }
3757
-
3758
- // Found end marker write code.
3759
- if ( "/* END {$marker} */" === $markerline ) {
3760
- fwrite( $f, "/* BEGIN {$marker} */\n" ); // phpcs:ignore
3761
- fwrite( $f, "{$insertion}\n" ); // phpcs:ignore
3762
- fwrite( $f, "/* END {$marker} */\n" ); // phpcs:ignore
3763
- $searching = true;
3764
- $foundit = true;
3765
- }
3766
- }
3767
- }
3768
-
3769
- // Nothing inserted, write code. DO IT, DO IT!
3770
- if ( ! $foundit ) {
3771
- fwrite( $f, "/* BEGIN {$marker} */\n" ); // phpcs:ignore
3772
- fwrite( $f, "{$insertion}\n" ); // phpcs:ignore
3773
- fwrite( $f, "/* END {$marker} */\n" ); // phpcs:ignore
3774
- }
3775
-
3776
- // Close file.
3777
- fclose( $f ); // phpcs:ignore
3778
- return true;
3779
- }
3780
-
3781
- return false;
3782
- }
3783
- }
3784
-
3785
- if ( ! function_exists( 'ot_remove_old_css' ) ) {
3786
-
3787
- /**
3788
- * Remove old CSS.
3789
- *
3790
- * Removes CSS when the textarea is empty, but still retains surrounding styles.
3791
- *
3792
- * @param string $field_id The CSS option field ID.
3793
- * @return bool True on write success, false on failure.
3794
- *
3795
- * @access public
3796
- * @since 2.0
3797
- */
3798
- function ot_remove_old_css( $field_id = '' ) {
3799
-
3800
- // Missing $field_id string.
3801
- if ( '' === $field_id ) {
3802
- return false;
3803
- }
3804
-
3805
- // Path to the dynamic.css file.
3806
- $filepath = get_stylesheet_directory() . '/dynamic.css';
3807
-
3808
- // Allow filter on path.
3809
- $filepath = apply_filters( 'css_option_file_path', $filepath, $field_id );
3810
-
3811
- // Remove CSS from file, but ensure the file is actually CSS first.
3812
- if ( is_writeable( $filepath ) && 'css' === end( explode( '.', basename( $filepath ) ) ) ) {
3813
-
3814
- // Open the file.
3815
- $f = @fopen( $filepath, 'w' ); // phpcs:ignore
3816
-
3817
- // Can't write to the file return false.
3818
- if ( ! $f ) {
3819
- /* translators: %s: file path */
3820
- $string = esc_html__( 'Unable to open the %s file in write mode.', 'option-tree' );
3821
- add_settings_error( 'option-tree', 'dynamic_css', sprintf( $string, '<code>' . $filepath . '</code>' ), 'error' );
3822
- return false;
3823
- }
3824
-
3825
- // Get each line in the file.
3826
- $markerdata = explode( "\n", implode( '', file( $filepath ) ) );
3827
-
3828
- $searching = true;
3829
-
3830
- // Has array of lines.
3831
- if ( ! empty( $markerdata ) ) {
3832
-
3833
- // Foreach line of code.
3834
- foreach ( $markerdata as $n => $markerline ) {
3835
-
3836
- // Found beginning of marker, set $searching to false.
3837
- if ( "/* BEGIN {$field_id} */" === $markerline ) {
3838
- $searching = false;
3839
- }
3840
-
3841
- // Searching is true, keep writing each line of CSS.
3842
- if ( true === $searching ) {
3843
- if ( $n + 1 < count( $markerdata ) ) {
3844
- fwrite( $f, "{$markerline}\n" ); // phpcs:ignore
3845
- } else {
3846
- fwrite( $f, "{$markerline}" ); // phpcs:ignore
3847
- }
3848
- }
3849
-
3850
- // Found end marker delete old CSS.
3851
- if ( "/* END {$field_id} */" === $markerline ) {
3852
- fwrite( $f, '' ); // phpcs:ignore
3853
- $searching = true;
3854
- }
3855
- }
3856
- }
3857
-
3858
- // Close file.
3859
- fclose( $f ); // phpcs:ignore
3860
- return true;
3861
- }
3862
-
3863
- return false;
3864
- }
3865
- }
3866
-
3867
- if ( ! function_exists( 'ot_normalize_css' ) ) {
3868
-
3869
- /**
3870
- * Normalize CSS
3871
- *
3872
- * Normalize & Convert all line-endings to UNIX format.
3873
- *
3874
- * @param string $css The CSS styles.
3875
- *
3876
- * @return string
3877
- *
3878
- * @access public
3879
- * @since 1.1.8
3880
- * @updated 2.0
3881
- */
3882
- function ot_normalize_css( $css ) {
3883
-
3884
- // Normalize & Convert.
3885
- $css = str_replace( "\r\n", "\n", $css );
3886
- $css = str_replace( "\r", "\n", $css );
3887
-
3888
- // Don't allow out-of-control blank lines .
3889
- $css = preg_replace( "/\n{2,}/", "\n\n", $css );
3890
-
3891
- return $css;
3892
- }
3893
- }
3894
-
3895
- if ( ! function_exists( 'ot_loop_through_option_types' ) ) {
3896
-
3897
- /**
3898
- * Helper function to loop over the option types.
3899
- *
3900
- * @param string $type The current option type.
3901
- * @param bool $child Whether of not there are children elements.
3902
- *
3903
- * @return string
3904
- *
3905
- * @access public
3906
- * @since 2.0
3907
- */
3908
- function ot_loop_through_option_types( $type = '', $child = false ) {
3909
-
3910
- $content = '';
3911
- $types = ot_option_types_array();
3912
-
3913
- if ( $child ) {
3914
- unset( $types['list-item'] );
3915
- }
3916
-
3917
- foreach ( $types as $key => $value ) {
3918
- $content .= '<option value="' . esc_attr( $key ) . '" ' . selected( $type, $key, false ) . '>' . esc_html( $value ) . '</option>';
3919
- }
3920
-
3921
- return $content;
3922
-
3923
- }
3924
- }
3925
-
3926
- if ( ! function_exists( 'ot_loop_through_choices' ) ) {
3927
-
3928
- /**
3929
- * Helper function to loop over choices.
3930
- *
3931
- * @param string $name The form element name.
3932
- * @param array $choices The array of choices.
3933
- *
3934
- * @return string
3935
- *
3936
- * @access public
3937
- * @since 2.0
3938
- */
3939
- function ot_loop_through_choices( $name, $choices = array() ) {
3940
-
3941
- $content = '';
3942
-
3943
- foreach ( (array) $choices as $key => $choice ) {
3944
- if ( is_array( $choice ) ) {
3945
- $content .= '<li class="ui-state-default list-choice">' . ot_choices_view( $name, $key, $choice ) . '</li>';
3946
- }
3947
- }
3948
-
3949
- return $content;
3950
- }
3951
- }
3952
-
3953
- if ( ! function_exists( 'ot_loop_through_sub_settings' ) ) {
3954
-
3955
- /**
3956
- * Helper function to loop over sub settings.
3957
- *
3958
- * @param string $name The form element name.
3959
- * @param array $settings The array of settings.
3960
- *
3961
- * @return string
3962
- *
3963
- * @access public
3964
- * @since 2.0
3965
- */
3966
- function ot_loop_through_sub_settings( $name, $settings = array() ) {
3967
-
3968
- $content = '';
3969
-
3970
- foreach ( $settings as $key => $setting ) {
3971
- if ( is_array( $setting ) ) {
3972
- $content .= '<li class="ui-state-default list-sub-setting">' . ot_settings_view( $name, $key, $setting ) . '</li>';
3973
- }
3974
- }
3975
-
3976
- return $content;
3977
- }
3978
- }
3979
-
3980
- if ( ! function_exists( 'ot_sections_view' ) ) {
3981
-
3982
- /**
3983
- * Helper function to display sections.
3984
- *
3985
- * This function is used in AJAX to add a new section
3986
- * and when section have already been added and saved.
3987
- *
3988
- * @param string $name The form element name.
3989
- * @param int $key The array key for the current element.
3990
- * @param array $section An array of values for the current section.
3991
- *
3992
- * @return string
3993
- *
3994
- * @access public
3995
- * @since 2.0
3996
- */
3997
- function ot_sections_view( $name, $key, $section = array() ) {
3998
-
3999
- /* translators: %s: Section Title emphasized */
4000
- $str_title = esc_html__( '%s: Displayed as a menu item on the Theme Options page.', 'option-tree' );
4001
-
4002
- /* translators: %s: Section ID emphasized */
4003
- $str_id = esc_html__( '%s: A unique lower case alphanumeric string, underscores allowed.', 'option-tree' );
4004
-
4005
- return '
4006
- <div class="option-tree-setting is-section">
4007
- <div class="open">' . ( isset( $section['title'] ) ? esc_attr( $section['title'] ) : 'Section ' . ( absint( $key ) + 1 ) ) . '</div>
4008
- <div class="button-section">
4009
- <a href="javascript:void(0);" class="option-tree-setting-edit option-tree-ui-button button left-item" title="' . esc_html__( 'edit', 'option-tree' ) . '">
4010
- <span class="icon ot-icon-pencil"></span>' . esc_html__( 'Edit', 'option-tree' ) . '
4011
- </a>
4012
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4013
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4014
- </a>
4015
- </div>
4016
- <div class="option-tree-setting-body">
4017
- <div class="format-settings">
4018
- <div class="format-setting type-text">
4019
- <div class="description">' . sprintf( $str_title, '<strong>' . esc_html__( 'Section Title', 'option-tree' ) . '</strong>', 'option-tree' ) . '</div>
4020
- <div class="format-setting-inner">
4021
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][title]" value="' . ( isset( $section['title'] ) ? esc_attr( $section['title'] ) : '' ) . '" class="widefat option-tree-ui-input option-tree-setting-title section-title" autocomplete="off" />
4022
- </div>
4023
- </div>
4024
- </div>
4025
- <div class="format-settings">
4026
- <div class="format-setting type-text">
4027
- <div class="description">' . sprintf( $str_id, '<strong>' . esc_html__( 'Section ID', 'option-tree' ) . '</strong>', 'option-tree' ) . '</div>
4028
- <div class="format-setting-inner">
4029
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][id]" value="' . ( isset( $section['id'] ) ? esc_attr( $section['id'] ) : '' ) . '" class="widefat option-tree-ui-input section-id" autocomplete="off" />
4030
- </div>
4031
- </div>
4032
- </div>
4033
- </div>
4034
- </div>';
4035
- }
4036
- }
4037
-
4038
- if ( ! function_exists( 'ot_settings_view' ) ) {
4039
-
4040
- /**
4041
- * Helper function to display settings.
4042
- *
4043
- * This function is used in AJAX to add a new setting
4044
- * and when settings have already been added and saved.
4045
- *
4046
- * @param string $name The form element name.
4047
- * @param int $key The array key for the current element.
4048
- * @param array $setting An array of values for the current setting.
4049
- *
4050
- * @return string
4051
- *
4052
- * @access public
4053
- * @since 2.0
4054
- */
4055
- function ot_settings_view( $name, $key, $setting = array() ) {
4056
-
4057
- $child = ( false !== strpos( $name, '][settings]' ) ) ? true : false;
4058
- $type = isset( $setting['type'] ) ? $setting['type'] : '';
4059
- $std = isset( $setting['std'] ) ? $setting['std'] : '';
4060
- $operator = isset( $setting['operator'] ) ? esc_attr( $setting['operator'] ) : 'and';
4061
-
4062
- // Serialize the standard value just in case.
4063
- if ( is_array( $std ) ) {
4064
- $std = maybe_serialize( $std );
4065
- }
4066
-
4067
- if ( in_array( $type, array( 'css', 'javascript', 'textarea', 'textarea-simple' ), true ) ) {
4068
- $std_form_element = '<textarea class="textarea" rows="10" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]">' . esc_html( $std ) . '</textarea>';
4069
- } else {
4070
- $std_form_element = '<input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]" value="' . esc_attr( $std ) . '" class="widefat option-tree-ui-input" autocomplete="off" />';
4071
- }
4072
-
4073
- /* translators: %s: Label emphasized */
4074
- $str_label = esc_html__( '%s: Displayed as the label of a form element on the Theme Options page.', 'option-tree' );
4075
-
4076
- /* translators: %s: ID emphasized */
4077
- $str_id = esc_html__( '%s: A unique lower case alphanumeric string, underscores allowed.', 'option-tree' );
4078
-
4079
- /* translators: %s: Type emphasized */
4080
- $str_type = esc_html__( '%s: Choose one of the available option types from the dropdown.', 'option-tree' );
4081
-
4082
- /* translators: %s: Description emphasized */
4083
- $str_desc = esc_html__( '%s: Enter a detailed description for the users to read on the Theme Options page, HTML is allowed. This is also where you enter content for both the Textblock & Textblock Titled option types.', 'option-tree' );
4084
-
4085
- /* translators: %s: Choices emphasized */
4086
- $str_choices = esc_html__( '%s: This will only affect the following option types: Checkbox, Radio, Select & Select Image.', 'option-tree' );
4087
-
4088
- /* translators: %s: Settings emphasized */
4089
- $str_settings = esc_html__( '%s: This will only affect the List Item option type.', 'option-tree' );
4090
-
4091
- /* translators: %1$s: Standard emphasized, %2$s: visual path to documentation */
4092
- $str_standard = esc_html__( '%1$s: Setting the standard value for your option only works for some option types. Read the %2$s for more information on which ones.', 'option-tree' );
4093
-
4094
- /* translators: %s: Rows emphasized */
4095
- $str_rows = esc_html__( '%s: Enter a numeric value for the number of rows in your textarea. This will only affect the following option types: CSS, Textarea, & Textarea Simple.', 'option-tree' );
4096
-
4097
- /* translators: %s: Post Type emphasized */
4098
- $str_post_type = esc_html__( '%s: Add a comma separated list of post type like \'post,page\'. This will only affect the following option types: Custom Post Type Checkbox, & Custom Post Type Select.', 'option-tree' );
4099
-
4100
- /* translators: %s: Taxonomy emphasized */
4101
- $str_taxonomy = esc_html__( '%s: Add a comma separated list of any registered taxonomy like \'category,post_tag\'. This will only affect the following option types: Taxonomy Checkbox, & Taxonomy Select.', 'option-tree' );
4102
-
4103
- /* translators: %1$s: Min, Max, & Step emphasized, %2$s: format, %3$s: range, %4$s: minimum interval */
4104
- $str_min_max_step = esc_html__( '%1$s: Add a comma separated list of options in the following format %2$s (slide from %3$s in intervals of %4$s). The three values represent the minimum, maximum, and step options and will only affect the Numeric Slider option type.', 'option-tree' );
4105
-
4106
- /* translators: %s: CSS Class emphasized */
4107
- $str_css_class = esc_html__( '%s: Add and optional class to this option type.', 'option-tree' );
4108
-
4109
- /* translators: %1$s: Condition emphasized, %2$s: example value, %3$s: list of valid conditions */
4110
- $str_condition = esc_html__( '%1$s: Add a comma separated list (no spaces) of conditions in which the field will be visible, leave this setting empty to always show the field. In these examples, %2$s is a placeholder for your condition, which can be in the form of %3$s.', 'option-tree' );
4111
-
4112
- /* translators: %s: Operator emphasized */
4113
- $str_operator = esc_html__( '%s: Choose the logical operator to compute the result of the conditions.', 'option-tree' );
4114
-
4115
- return '
4116
- <div class="option-tree-setting">
4117
- <div class="open">' . ( isset( $setting['label'] ) ? esc_attr( $setting['label'] ) : 'Setting ' . ( absint( $key ) + 1 ) ) . '</div>
4118
- <div class="button-section">
4119
- <a href="javascript:void(0);" class="option-tree-setting-edit option-tree-ui-button button left-item" title="' . esc_html__( 'Edit', 'option-tree' ) . '">
4120
- <span class="icon ot-icon-pencil"></span>' . esc_html__( 'Edit', 'option-tree' ) . '
4121
- </a>
4122
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4123
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4124
- </a>
4125
- </div>
4126
- <div class="option-tree-setting-body">
4127
- <div class="format-settings">
4128
- <div class="format-setting type-text wide-desc">
4129
- <div class="description">' . sprintf( $str_label, '<strong>' . esc_html__( 'Label', 'option-tree' ) . '</strong>' ) . '</div>
4130
- <div class="format-setting-inner">
4131
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][label]" value="' . ( isset( $setting['label'] ) ? esc_attr( $setting['label'] ) : '' ) . '" class="widefat option-tree-ui-input option-tree-setting-title" autocomplete="off" />
4132
- </div>
4133
- </div>
4134
- </div>
4135
- <div class="format-settings">
4136
- <div class="format-setting type-text wide-desc">
4137
- <div class="description">' . sprintf( $str_id, '<strong>' . esc_html__( 'ID', 'option-tree' ) . '</strong>' ) . '</div>
4138
- <div class="format-setting-inner">
4139
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][id]" value="' . ( isset( $setting['id'] ) ? esc_attr( $setting['id'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4140
- </div>
4141
- </div>
4142
- </div>
4143
- <div class="format-settings">
4144
- <div class="format-setting type-select wide-desc">
4145
- <div class="description">' . sprintf( $str_type, '<strong>' . esc_html__( 'Type', 'option-tree' ) . '</strong>' ) . '</div>
4146
- <div class="format-setting-inner">
4147
- <select name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][type]" value="' . esc_attr( $type ) . '" class="option-tree-ui-select">
4148
- ' . ot_loop_through_option_types( $type, $child ) . '
4149
- </select>
4150
- </div>
4151
- </div>
4152
- </div>
4153
- <div class="format-settings">
4154
- <div class="format-setting type-textarea wide-desc">
4155
- <div class="description">' . sprintf( $str_desc, '<strong>' . esc_html__( 'Description', 'option-tree' ) . '</strong>' ) . '</div>
4156
- <div class="format-setting-inner">
4157
- <textarea class="textarea" rows="10" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][desc]">' . ( isset( $setting['desc'] ) ? esc_html( $setting['desc'] ) : '' ) . '</textarea>
4158
- </div>
4159
- </div>
4160
- </div>
4161
- <div class="format-settings">
4162
- <div class="format-setting type-textblock wide-desc">
4163
- <div class="description">' . sprintf( $str_choices, '<strong>' . esc_html__( 'Choices', 'option-tree' ) . '</strong>' ) . '</div>
4164
- <div class="format-setting-inner">
4165
- <ul class="option-tree-setting-wrap option-tree-sortable" data-name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . ']">
4166
- ' . ( isset( $setting['choices'] ) ? ot_loop_through_choices( $name . '[' . $key . ']', $setting['choices'] ) : '' ) . '
4167
- </ul>
4168
- <a href="javascript:void(0);" class="option-tree-choice-add option-tree-ui-button button hug-left">' . esc_html__( 'Add Choice', 'option-tree' ) . '</a>
4169
- </div>
4170
- </div>
4171
- </div>
4172
- <div class="format-settings">
4173
- <div class="format-setting type-textblock wide-desc">
4174
- <div class="description">' . sprintf( $str_settings, '<strong>' . esc_html__( 'Settings', 'option-tree' ) . '</strong>' ) . '</div>
4175
- <div class="format-setting-inner">
4176
- <ul class="option-tree-setting-wrap option-tree-sortable" data-name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . ']">
4177
- ' . ( isset( $setting['settings'] ) ? ot_loop_through_sub_settings( $name . '[' . $key . '][settings]', $setting['settings'] ) : '' ) . '
4178
- </ul>
4179
- <a href="javascript:void(0);" class="option-tree-list-item-setting-add option-tree-ui-button button hug-left">' . esc_html__( 'Add Setting', 'option-tree' ) . '</a>
4180
- </div>
4181
- </div>
4182
- </div>
4183
- <div class="format-settings">
4184
- <div class="format-setting type-text wide-desc">
4185
- <div class="description">' . sprintf( $str_standard, '<strong>' . esc_html__( 'Standard', 'option-tree' ) . '</strong>', '<code>' . esc_html__( 'OptionTree->Documentation', 'option-tree' ) . '</code>' ) . '</div>
4186
- <div class="format-setting-inner">
4187
- ' . $std_form_element . '
4188
- </div>
4189
- </div>
4190
- </div>
4191
- <div class="format-settings">
4192
- <div class="format-setting type-text wide-desc">
4193
- <div class="description">' . sprintf( $str_rows, '<strong>' . esc_html__( 'Rows', 'option-tree' ) . '</strong>' ) . '</div>
4194
- <div class="format-setting-inner">
4195
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][rows]" value="' . ( isset( $setting['rows'] ) ? esc_attr( $setting['rows'] ) : '' ) . '" class="widefat option-tree-ui-input" />
4196
- </div>
4197
- </div>
4198
- </div>
4199
- <div class="format-settings">
4200
- <div class="format-setting type-text wide-desc">
4201
- <div class="description">' . sprintf( $str_post_type, '<strong>' . esc_html__( 'Post Type', 'option-tree' ) . '</strong>' ) . '</div>
4202
- <div class="format-setting-inner">
4203
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][post_type]" value="' . ( isset( $setting['post_type'] ) ? esc_attr( $setting['post_type'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4204
- </div>
4205
- </div>
4206
- </div>
4207
- <div class="format-settings">
4208
- <div class="format-setting type-text wide-desc">
4209
- <div class="description">' . sprintf( $str_taxonomy, '<strong>' . esc_html__( 'Taxonomy', 'option-tree' ) . '</strong>' ) . '</div>
4210
- <div class="format-setting-inner">
4211
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][taxonomy]" value="' . ( isset( $setting['taxonomy'] ) ? esc_attr( $setting['taxonomy'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4212
- </div>
4213
- </div>
4214
- </div>
4215
- <div class="format-settings">
4216
- <div class="format-setting type-text wide-desc">
4217
- <div class="description">' . sprintf( $str_min_max_step, '<strong>' . esc_html__( 'Min, Max, & Step', 'option-tree' ) . '</strong>', '<code>0,100,1</code>', '<code>0-100</code>', '<code>1</code>' ) . '</div>
4218
- <div class="format-setting-inner">
4219
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][min_max_step]" value="' . ( isset( $setting['min_max_step'] ) ? esc_attr( $setting['min_max_step'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4220
- </div>
4221
- </div>
4222
- </div>
4223
- <div class="format-settings">
4224
- <div class="format-setting type-text wide-desc">
4225
- <div class="description">' . sprintf( $str_css_class, '<strong>' . esc_html__( 'CSS Class', 'option-tree' ) . '</strong>' ) . '</div>
4226
- <div class="format-setting-inner">
4227
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][class]" value="' . ( isset( $setting['class'] ) ? esc_attr( $setting['class'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4228
- </div>
4229
- </div>
4230
- </div>
4231
- <div class="format-settings">
4232
- <div class="format-setting type-text wide-desc">
4233
- <div class="description">' . sprintf( $str_condition, '<strong>' . esc_html__( 'Condition', 'option-tree' ) . '</strong>', '<code>value</code>', '<code>field_id:is(value)</code>, <code>field_id:not(value)</code>, <code>field_id:contains(value)</code>, <code>field_id:less_than(value)</code>, <code>field_id:less_than_or_equal_to(value)</code>, <code>field_id:greater_than(value)</code>, or <code>field_id:greater_than_or_equal_to(value)</code>' ) . '</div>
4234
- <div class="format-setting-inner">
4235
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][condition]" value="' . ( isset( $setting['condition'] ) ? esc_attr( $setting['condition'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4236
- </div>
4237
- </div>
4238
- </div>
4239
- <div class="format-settings">
4240
- <div class="format-setting type-select wide-desc">
4241
- <div class="description">' . sprintf( $str_operator, '<strong>' . esc_html__( 'Operator', 'option-tree' ) . '</strong>' ) . '</div>
4242
- <div class="format-setting-inner">
4243
- <select name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][operator]" value="' . esc_attr( $operator ) . '" class="option-tree-ui-select">
4244
- <option value="and" ' . selected( $operator, 'and', false ) . '>' . esc_html__( 'and', 'option-tree' ) . '</option>
4245
- <option value="or" ' . selected( $operator, 'or', false ) . '>' . esc_html__( 'or', 'option-tree' ) . '</option>
4246
- </select>
4247
- </div>
4248
- </div>
4249
- </div>
4250
- </div>
4251
- </div>
4252
- ' . ( ! $child ? '<input type="hidden" class="hidden-section" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][section]" value="' . ( isset( $setting['section'] ) ? esc_attr( $setting['section'] ) : '' ) . '" />' : '' );
4253
- }
4254
- }
4255
-
4256
- if ( ! function_exists( 'ot_choices_view' ) ) {
4257
-
4258
- /**
4259
- * Helper function to display setting choices.
4260
- *
4261
- * This function is used in AJAX to add a new choice
4262
- * and when choices have already been added and saved.
4263
- *
4264
- * @param string $name The form element name.
4265
- * @param int $key The array key for the current element.
4266
- * @param array $choice An array of values for the current choice.
4267
- *
4268
- * @return string
4269
- *
4270
- * @access public
4271
- * @since 2.0
4272
- */
4273
- function ot_choices_view( $name, $key, $choice = array() ) {
4274
-
4275
- return '
4276
- <div class="option-tree-setting">
4277
- <div class="open">' . ( isset( $choice['label'] ) ? esc_attr( $choice['label'] ) : 'Choice ' . ( absint( $key ) + 1 ) ) . '</div>
4278
- <div class="button-section">
4279
- <a href="javascript:void(0);" class="option-tree-setting-edit option-tree-ui-button button left-item" title="' . esc_html__( 'Edit', 'option-tree' ) . '">
4280
- <span class="icon ot-icon-pencil"></span>' . esc_html__( 'Edit', 'option-tree' ) . '
4281
- </a>
4282
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4283
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4284
- </a>
4285
- </div>
4286
- <div class="option-tree-setting-body">
4287
- <div class="format-settings">
4288
- <div class="format-setting-label">
4289
- <h5>' . esc_html__( 'Label', 'option-tree' ) . '</h5>
4290
- </div>
4291
- <div class="format-setting type-text wide-desc">
4292
- <div class="format-setting-inner">
4293
- <input type="text" name="' . esc_attr( $name ) . '[choices][' . esc_attr( $key ) . '][label]" value="' . ( isset( $choice['label'] ) ? esc_attr( $choice['label'] ) : '' ) . '" class="widefat option-tree-ui-input option-tree-setting-title" autocomplete="off" />
4294
- </div>
4295
- </div>
4296
- </div>
4297
- <div class="format-settings">
4298
- <div class="format-setting-label">
4299
- <h5>' . esc_html__( 'Value', 'option-tree' ) . '</h5>
4300
- </div>
4301
- <div class="format-setting type-text wide-desc">
4302
- <div class="format-setting-inner">
4303
- <input type="text" name="' . esc_attr( $name ) . '[choices][' . esc_attr( $key ) . '][value]" value="' . ( isset( $choice['value'] ) ? esc_attr( $choice['value'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4304
- </div>
4305
- </div>
4306
- </div>
4307
- <div class="format-settings">
4308
- <div class="format-setting-label">
4309
- <h5>' . esc_html__( 'Image Source (Radio Image only)', 'option-tree' ) . '</h5>
4310
- </div>
4311
- <div class="format-setting type-text wide-desc">
4312
- <div class="format-setting-inner">
4313
- <input type="text" name="' . esc_attr( $name ) . '[choices][' . esc_attr( $key ) . '][src]" value="' . ( isset( $choice['src'] ) ? esc_attr( $choice['src'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4314
- </div>
4315
- </div>
4316
- </div>
4317
- </div>
4318
- </div>';
4319
-
4320
- }
4321
- }
4322
-
4323
- if ( ! function_exists( 'ot_contextual_help_view' ) ) {
4324
-
4325
- /**
4326
- * Helper function to display sections.
4327
- *
4328
- * This function is used in AJAX to add a new section
4329
- * and when section have already been added and saved.
4330
- *
4331
- * @param string $name The name/ID of the help page.
4332
- * @param int $key The array key for the current element.
4333
- * @param array $content An array of values for the current section.
4334
- *
4335
- * @return string
4336
- *
4337
- * @access public
4338
- * @since 2.0
4339
- */
4340
- function ot_contextual_help_view( $name, $key, $content = array() ) {
4341
-
4342
- /* translators: %s: Title emphasized */
4343
- $str_title = esc_html__( '%s: Displayed as a contextual help menu item on the Theme Options page.', 'option-tree' );
4344
-
4345
- /* translators: %s: ID emphasized */
4346
- $str_id = esc_html__( '%s: A unique lower case alphanumeric string, underscores allowed.', 'option-tree' );
4347
-
4348
- /* translators: %s: Content emphasized */
4349
- $str_content = esc_html__( '%s: Enter the HTML content about this contextual help item displayed on the Theme Option page for end users to read.', 'option-tree' );
4350
-
4351
- return '
4352
- <div class="option-tree-setting">
4353
- <div class="open">' . ( isset( $content['title'] ) ? esc_attr( $content['title'] ) : 'Content ' . ( absint( $key ) + 1 ) ) . '</div>
4354
- <div class="button-section">
4355
- <a href="javascript:void(0);" class="option-tree-setting-edit option-tree-ui-button button left-item" title="' . esc_html__( 'Edit', 'option-tree' ) . '">
4356
- <span class="icon ot-icon-pencil"></span>' . esc_html__( 'Edit', 'option-tree' ) . '
4357
- </a>
4358
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4359
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4360
- </a>
4361
- </div>
4362
- <div class="option-tree-setting-body">
4363
- <div class="format-settings">
4364
- <div class="format-setting type-text no-desc">
4365
- <div class="description">' . sprintf( $str_title, '<strong>' . esc_html__( 'Title', 'option-tree' ) . '</strong>' ) . '</div>
4366
- <div class="format-setting-inner">
4367
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][title]" value="' . ( isset( $content['title'] ) ? esc_attr( $content['title'] ) : '' ) . '" class="widefat option-tree-ui-input option-tree-setting-title" autocomplete="off" />
4368
- </div>
4369
- </div>
4370
- </div>
4371
- <div class="format-settings">
4372
- <div class="format-setting type-text no-desc">
4373
- <div class="description">' . sprintf( $str_id, '<strong>' . esc_html__( 'ID', 'option-tree' ) . '</strong>' ) . '</div>
4374
- <div class="format-setting-inner">
4375
- <input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][id]" value="' . ( isset( $content['id'] ) ? esc_attr( $content['id'] ) : '' ) . '" class="widefat option-tree-ui-input" autocomplete="off" />
4376
- </div>
4377
- </div>
4378
- </div>
4379
- <div class="format-settings">
4380
- <div class="format-setting type-textarea no-desc">
4381
- <div class="description">' . sprintf( $str_content, '<strong>' . esc_html__( 'Content', 'option-tree' ) . '</strong>' ) . '</div>
4382
- <div class="format-setting-inner">
4383
- <textarea class="textarea" rows="15" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][content]">' . ( isset( $content['content'] ) ? esc_textarea( $content['content'] ) : '' ) . '</textarea>
4384
- </div>
4385
- </div>
4386
- </div>
4387
- </div>
4388
- </div>';
4389
-
4390
- }
4391
- }
4392
-
4393
- if ( ! function_exists( 'ot_layout_view' ) ) {
4394
-
4395
- /**
4396
- * Helper function to display sections.
4397
- *
4398
- * @param string $key Layout ID.
4399
- * @param string $data Layout encoded value.
4400
- * @param string $active_layout Active layout ID.
4401
- *
4402
- * @return string
4403
- *
4404
- * @access public
4405
- * @since 2.0
4406
- */
4407
- function ot_layout_view( $key, $data = '', $active_layout = '' ) {
4408
-
4409
- return '
4410
- <div class="option-tree-setting">
4411
- <div class="open">' . ( isset( $key ) ? esc_attr( $key ) : esc_html__( 'Layout', 'option-tree' ) ) . '</div>
4412
- <div class="button-section">
4413
- <a href="javascript:void(0);" class="option-tree-layout-activate option-tree-ui-button button left-item' . ( $active_layout === $key ? ' active' : '' ) . '" title="' . esc_html__( 'Activate', 'option-tree' ) . '">
4414
- <span class="icon ot-icon-square-o"></span>' . esc_html__( 'Activate', 'option-tree' ) . '
4415
- </a>
4416
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4417
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4418
- </a>
4419
- </div>
4420
- <input type="hidden" name="' . esc_attr( ot_layouts_id() ) . '[' . esc_attr( $key ) . ']" value="' . esc_attr( $data ) . '" />
4421
- </div>';
4422
- }
4423
- }
4424
-
4425
- if ( ! function_exists( 'ot_list_item_view' ) ) {
4426
-
4427
- /**
4428
- * Helper function to display list items.
4429
- *
4430
- * This function is used in AJAX to add a new list items
4431
- * and when they have already been added and saved.
4432
- *
4433
- * @param string $name The form field name.
4434
- * @param int $key The array key for the current element.
4435
- * @param array $list_item An array of values for the current list item.
4436
- * @param int $post_id The post ID.
4437
- * @param string $get_option The option page ID.
4438
- * @param array $settings The settings.
4439
- * @param string $type The list type.
4440
- *
4441
- * @access public
4442
- * @since 2.0
4443
- */
4444
- function ot_list_item_view( $name, $key, $list_item = array(), $post_id = 0, $get_option = '', $settings = array(), $type = '' ) {
4445
-
4446
- // Required title setting.
4447
- $required_setting = array(
4448
- array(
4449
- 'id' => 'title',
4450
- 'label' => __( 'Title', 'option-tree' ),
4451
- 'desc' => '',
4452
- 'std' => '',
4453
- 'type' => 'text',
4454
- 'rows' => '',
4455
- 'class' => 'option-tree-setting-title',
4456
- 'post_type' => '',
4457
- 'choices' => array(),
4458
- ),
4459
- );
4460
-
4461
- // Load the old filterable slider settings.
4462
- if ( 'slider' === $type ) {
4463
- $settings = ot_slider_settings( $name );
4464
- }
4465
-
4466
- // If no settings array load the filterable list item settings.
4467
- if ( empty( $settings ) ) {
4468
- $settings = ot_list_item_settings( $name );
4469
- }
4470
-
4471
- // Merge the two settings array.
4472
- $settings = array_merge( $required_setting, $settings );
4473
-
4474
- echo '
4475
- <div class="option-tree-setting">
4476
- <div class="open">' . ( isset( $list_item['title'] ) ? esc_attr( $list_item['title'] ) : '' ) . '</div>
4477
- <div class="button-section">
4478
- <a href="javascript:void(0);" class="option-tree-setting-edit option-tree-ui-button button left-item" title="' . esc_html__( 'Edit', 'option-tree' ) . '">
4479
- <span class="icon ot-icon-pencil"></span>' . esc_html__( 'Edit', 'option-tree' ) . '
4480
- </a>
4481
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4482
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4483
- </a>
4484
- </div>
4485
- <div class="option-tree-setting-body">
4486
- ';
4487
-
4488
- foreach ( $settings as $field ) {
4489
-
4490
- // Set field value.
4491
- $field_value = isset( $list_item[ $field['id'] ] ) ? $list_item[ $field['id'] ] : '';
4492
-
4493
- // Set default to standard value.
4494
- if ( isset( $field['std'] ) ) {
4495
- $field_value = ot_filter_std_value( $field_value, $field['std'] );
4496
- }
4497
-
4498
- // filter the title label and description.
4499
- if ( 'title' === $field['id'] ) {
4500
-
4501
- // filter the label.
4502
- $field['label'] = apply_filters( 'ot_list_item_title_label', $field['label'], $name );
4503
-
4504
- // filter the description.
4505
- $field['desc'] = apply_filters( 'ot_list_item_title_desc', $field['desc'], $name );
4506
- }
4507
-
4508
- // Make life easier.
4509
- $_field_name = $get_option ? $get_option . '[' . $name . ']' : $name;
4510
-
4511
- // Build the arguments array.
4512
- $_args = array(
4513
- 'type' => $field['type'],
4514
- 'field_id' => $name . '_' . $field['id'] . '_' . $key,
4515
- 'field_name' => $_field_name . '[' . $key . '][' . $field['id'] . ']',
4516
- 'field_value' => $field_value,
4517
- 'field_desc' => isset( $field['desc'] ) ? $field['desc'] : '',
4518
- 'field_std' => isset( $field['std'] ) ? $field['std'] : '',
4519
- 'field_rows' => isset( $field['rows'] ) ? $field['rows'] : 10,
4520
- 'field_post_type' => isset( $field['post_type'] ) && ! empty( $field['post_type'] ) ? $field['post_type'] : 'post',
4521
- 'field_taxonomy' => isset( $field['taxonomy'] ) && ! empty( $field['taxonomy'] ) ? $field['taxonomy'] : 'category',
4522
- 'field_min_max_step' => isset( $field['min_max_step'] ) && ! empty( $field['min_max_step'] ) ? $field['min_max_step'] : '0,100,1',
4523
- 'field_class' => isset( $field['class'] ) ? $field['class'] : '',
4524
- 'field_condition' => isset( $field['condition'] ) ? $field['condition'] : '',
4525
- 'field_operator' => isset( $field['operator'] ) ? $field['operator'] : 'and',
4526
- 'field_choices' => isset( $field['choices'] ) && ! empty( $field['choices'] ) ? $field['choices'] : array(),
4527
- 'field_settings' => isset( $field['settings'] ) && ! empty( $field['settings'] ) ? $field['settings'] : array(),
4528
- 'post_id' => $post_id,
4529
- 'get_option' => $get_option,
4530
- );
4531
-
4532
- $conditions = '';
4533
-
4534
- // Setup the conditions.
4535
- if ( isset( $field['condition'] ) && ! empty( $field['condition'] ) ) {
4536
-
4537
- /* doing magic on the conditions so they work in a list item */
4538
- $conditionals = explode( ',', $field['condition'] );
4539
- foreach ( $conditionals as $condition ) {
4540
- $parts = explode( ':', $condition );
4541
- if ( isset( $parts[0] ) ) {
4542
- $field['condition'] = str_replace( $condition, $name . '_' . $parts[0] . '_' . $key . ':' . $parts[1], $field['condition'] );
4543
- }
4544
- }
4545
-
4546
- $conditions = ' data-condition="' . esc_attr( $field['condition'] ) . '"';
4547
- $conditions .= isset( $field['operator'] ) && in_array( $field['operator'], array( 'and', 'AND', 'or', 'OR' ), true ) ? ' data-operator="' . esc_attr( $field['operator'] ) . '"' : '';
4548
- }
4549
-
4550
- // Build the setting CSS class.
4551
- if ( ! empty( $_args['field_class'] ) ) {
4552
- $classes = explode( ' ', $_args['field_class'] );
4553
-
4554
- foreach ( $classes as $_key => $value ) {
4555
- $classes[ $_key ] = $value . '-wrap';
4556
- }
4557
-
4558
- $class = 'format-settings ' . implode( ' ', $classes );
4559
- } else {
4560
- $class = 'format-settings';
4561
- }
4562
-
4563
- // Option label.
4564
- echo '<div id="setting_' . esc_attr( $_args['field_id'] ) . '" class="' . esc_attr( $class ) . '"' . $conditions . '>'; // phpcs:ignore
4565
-
4566
- // Don't show title with textblocks.
4567
- if ( 'textblock' !== $_args['type'] && ! empty( $field['label'] ) ) {
4568
- echo '<div class="format-setting-label">';
4569
- echo '<h3 class="label">' . esc_attr( $field['label'] ) . '</h3>';
4570
- echo '</div>';
4571
- }
4572
-
4573
- // Only allow simple textarea inside a list-item due to known DOM issues with wp_editor().
4574
- if ( false === apply_filters( 'ot_override_forced_textarea_simple', false, $field['id'] ) && 'textarea' === $_args['type'] ) {
4575
- $_args['type'] = 'textarea-simple';
4576
- }
4577
-
4578
- // Option body, list-item is not allowed inside another list-item.
4579
- if ( 'list-item' !== $_args['type'] && 'slider' !== $_args['type'] ) {
4580
- echo ot_display_by_type( $_args ); // phpcs:ignore
4581
- }
4582
-
4583
- echo '</div>';
4584
- }
4585
-
4586
- echo '</div>';
4587
-
4588
- echo '</div>';
4589
- }
4590
- }
4591
-
4592
- if ( ! function_exists( 'ot_social_links_view' ) ) {
4593
-
4594
- /**
4595
- * Helper function to display social links.
4596
- *
4597
- * This function is used in AJAX to add a new list items
4598
- * and when they have already been added and saved.
4599
- *
4600
- * @param string $name The form field name.
4601
- * @param int $key The array key for the current element.
4602
- * @param array $list_item An array of values for the current list item.
4603
- * @param int $post_id The post ID.
4604
- * @param string $get_option The option page ID.
4605
- * @param array $settings The settings.
4606
- *
4607
- * @access public
4608
- * @since 2.4.0
4609
- */
4610
- function ot_social_links_view( $name, $key, $list_item = array(), $post_id = 0, $get_option = '', $settings = array() ) {
4611
-
4612
- // If no settings array load the filterable social links settings.
4613
- if ( empty( $settings ) ) {
4614
- $settings = ot_social_links_settings( $name );
4615
- }
4616
-
4617
- echo '
4618
- <div class="option-tree-setting">
4619
- <div class="open">' . ( isset( $list_item['name'] ) ? esc_attr( $list_item['name'] ) : '' ) . '</div>
4620
- <div class="button-section">
4621
- <a href="javascript:void(0);" class="option-tree-setting-edit option-tree-ui-button button left-item" title="' . esc_html__( 'Edit', 'option-tree' ) . '">
4622
- <span class="icon ot-icon-pencil"></span>' . esc_html__( 'Edit', 'option-tree' ) . '
4623
- </a>
4624
- <a href="javascript:void(0);" class="option-tree-setting-remove option-tree-ui-button button button-secondary light right-item" title="' . esc_html__( 'Delete', 'option-tree' ) . '">
4625
- <span class="icon ot-icon-trash-o"></span>' . esc_html__( 'Delete', 'option-tree' ) . '
4626
- </a>
4627
- </div>
4628
- <div class="option-tree-setting-body">
4629
- ';
4630
-
4631
- foreach ( $settings as $field ) {
4632
-
4633
- // Set field value.
4634
- $field_value = isset( $list_item[ $field['id'] ] ) ? $list_item[ $field['id'] ] : '';
4635
-
4636
- // Set default to standard value.
4637
- if ( isset( $field['std'] ) ) {
4638
- $field_value = ot_filter_std_value( $field_value, $field['std'] );
4639
- }
4640
-
4641
- // Make life easier.
4642
- $_field_name = $get_option ? $get_option . '[' . $name . ']' : $name;
4643
-
4644
- // Build the arguments array.
4645
- $_args = array(
4646
- 'type' => $field['type'],
4647
- 'field_id' => $name . '_' . $field['id'] . '_' . $key,
4648
- 'field_name' => $_field_name . '[' . $key . '][' . $field['id'] . ']',
4649
- 'field_value' => $field_value,
4650
- 'field_desc' => isset( $field['desc'] ) ? $field['desc'] : '',
4651
- 'field_std' => isset( $field['std'] ) ? $field['std'] : '',
4652
- 'field_rows' => isset( $field['rows'] ) ? $field['rows'] : 10,
4653
- 'field_post_type' => isset( $field['post_type'] ) && ! empty( $field['post_type'] ) ? $field['post_type'] : 'post',
4654
- 'field_taxonomy' => isset( $field['taxonomy'] ) && ! empty( $field['taxonomy'] ) ? $field['taxonomy'] : 'category',
4655
- 'field_min_max_step' => isset( $field['min_max_step'] ) && ! empty( $field['min_max_step'] ) ? $field['min_max_step'] : '0,100,1',
4656
- 'field_class' => isset( $field['class'] ) ? $field['class'] : '',
4657
- 'field_condition' => isset( $field['condition'] ) ? $field['condition'] : '',
4658
- 'field_operator' => isset( $field['operator'] ) ? $field['operator'] : 'and',
4659
- 'field_choices' => isset( $field['choices'] ) && ! empty( $field['choices'] ) ? $field['choices'] : array(),
4660
- 'field_settings' => isset( $field['settings'] ) && ! empty( $field['settings'] ) ? $field['settings'] : array(),
4661
- 'post_id' => $post_id,
4662
- 'get_option' => $get_option,
4663
- );
4664
-
4665
- $conditions = '';
4666
-
4667
- // Setup the conditions.
4668
- if ( isset( $field['condition'] ) && ! empty( $field['condition'] ) ) {
4669
-
4670
- // Doing magic on the conditions so they work in a list item.
4671
- $conditionals = explode( ',', $field['condition'] );
4672
- foreach ( $conditionals as $condition ) {
4673
- $parts = explode( ':', $condition );
4674
- if ( isset( $parts[0] ) ) {
4675
- $field['condition'] = str_replace( $condition, $name . '_' . $parts[0] . '_' . $key . ':' . $parts[1], $field['condition'] );
4676
- }
4677
- }
4678
-
4679
- $conditions = ' data-condition="' . esc_attr( $field['condition'] ) . '"';
4680
- $conditions .= isset( $field['operator'] ) && in_array( $field['operator'], array( 'and', 'AND', 'or', 'OR' ), true ) ? ' data-operator="' . esc_attr( $field['operator'] ) . '"' : '';
4681
- }
4682
-
4683
- // Option label.
4684
- echo '<div id="setting_' . esc_attr( $_args['field_id'] ) . '" class="format-settings"' . $conditions . '>'; // phpcs:ignore
4685
-
4686
- // Don't show title with textblocks.
4687
- if ( 'textblock' !== $_args['type'] && ! empty( $field['label'] ) ) {
4688
- echo '<div class="format-setting-label">';
4689
- echo '<h3 class="label">' . esc_attr( $field['label'] ) . '</h3>';
4690
- echo '</div>';
4691
- }
4692
-
4693
- // Only allow simple textarea inside a list-item due to known DOM issues with wp_editor().
4694
- if ( 'textarea' === $_args['type'] ) {
4695
- $_args['type'] = 'textarea-simple';
4696
- }
4697
-
4698
- // Option body, list-item is not allowed inside another list-item.
4699
- if ( 'list-item' !== $_args['type'] && 'slider' !== $_args['type'] && 'social-links' !== $_args['type'] ) {
4700
- echo ot_display_by_type( $_args ); // phpcs:ignore
4701
- }
4702
-
4703
- echo '</div>';
4704
- }
4705
-
4706
- echo '</div>';
4707
-
4708
- echo '</div>';
4709
- }
4710
- }
4711
-
4712
- if ( ! function_exists( 'ot_theme_options_layouts_form' ) ) {
4713
-
4714
- /**
4715
- * Helper function to display Theme Options layouts form.
4716
- *
4717
- * @access public
4718
- * @since 2.0
4719
- */
4720
- function ot_theme_options_layouts_form() {
4721
-
4722
- echo '<form method="post" id="option-tree-options-layouts-form">';
4723
-
4724
- // Form nonce.
4725
- wp_nonce_field( 'option_tree_modify_layouts_form', 'option_tree_modify_layouts_nonce' );
4726
-
4727
- // Get the saved layouts.
4728
- $layouts = get_option( ot_layouts_id() );
4729
-
4730
- // Set active layout.
4731
- $active_layout = isset( $layouts['active_layout'] ) ? $layouts['active_layout'] : '';
4732
-
4733
- if ( is_array( $layouts ) && 1 < count( $layouts ) ) {
4734
-
4735
- $active_layout = $layouts['active_layout'];
4736
-
4737
- echo '<input type="hidden" id="the_current_layout" value="' . esc_attr( $active_layout ) . '" />';
4738
-
4739
- echo '<div class="option-tree-active-layout">';
4740
-
4741
- echo '<select name="' . esc_attr( ot_layouts_id() ) . '[active_layout]" class="option-tree-ui-select">';
4742
-
4743
- $hidden = '';
4744
-
4745
- foreach ( $layouts as $key => $data ) {
4746
-
4747
- if ( 'active_layout' === $key ) {
4748
- continue;
4749
- }
4750
-
4751
- echo '<option ' . selected( $key, $active_layout, false ) . ' value="' . esc_attr( $key ) . '">' . esc_attr( $key ) . '</option>';
4752
- $hidden_safe .= '<input type="hidden" name="' . esc_attr( ot_layouts_id() ) . '[' . esc_attr( $key ) . ']" value="' . esc_attr( isset( $data ) ? $data : '' ) . '" />';
4753
- }
4754
-
4755
- echo '</select>';
4756
-
4757
- echo '</div>';
4758
-
4759
- echo $hidden_safe; // phpcs:ignore
4760
- }
4761
-
4762
- /* new layout wrapper */
4763
- echo '<div class="option-tree-save-layout' . ( ! empty( $active_layout ) ? ' active-layout' : '' ) . '">';
4764
-
4765
- /* add new layout */
4766
- echo '<input type="text" name="' . esc_attr( ot_layouts_id() ) . '[_add_new_layout_]" value="" class="widefat option-tree-ui-input" autocomplete="off" />';
4767
-
4768
- echo '<button type="submit" class="option-tree-ui-button button button-primary save-layout" title="' . esc_html__( 'New Layout', 'option-tree' ) . '">' . esc_html__( 'New Layout', 'option-tree' ) . '</button>';
4769
-
4770
- echo '</div>';
4771
-
4772
- echo '</form>';
4773
- }
4774
- }
4775
-
4776
- if ( ! function_exists( 'ot_sanitize_option_id' ) ) {
4777
-
4778
- /**
4779
- * Helper function to sanitize the option ID's.
4780
- *
4781
- * @param string $input The string to sanitize.
4782
- * @return string
4783
- *
4784
- * @access public
4785
- * @since 2.0
4786
- */
4787
- function ot_sanitize_option_id( $input ) {
4788
- return preg_replace( '/[^a-z0-9]/', '_', trim( strtolower( $input ) ) );
4789
- }
4790
- }
4791
-
4792
- if ( ! function_exists( 'ot_sanitize_layout_id' ) ) {
4793
-
4794
- /**
4795
- * Helper function to sanitize the layout ID's.
4796
- *
4797
- * @param string $input The string to sanitize.
4798
- * @return string
4799
- *
4800
- * @access public
4801
- * @since 2.0
4802
- */
4803
- function ot_sanitize_layout_id( $input ) {
4804
- return preg_replace( '/[^a-z0-9]/', '-', trim( strtolower( $input ) ) );
4805
- }
4806
- }
4807
-
4808
- if ( ! function_exists( 'ot_convert_array_to_string' ) ) {
4809
-
4810
- /**
4811
- * Convert choices array to string.
4812
- *
4813
- * @param array $input The array to convert to a string.
4814
- *
4815
- * @return bool|string
4816
- *
4817
- * @access public
4818
- * @since 2.0
4819
- */
4820
- function ot_convert_array_to_string( $input ) {
4821
-
4822
- if ( is_array( $input ) ) {
4823
-
4824
- foreach ( $input as $k => $choice ) {
4825
- $choices[ $k ] = $choice['value'] . '|' . $choice['label'];
4826
-
4827
- if ( isset( $choice['src'] ) ) {
4828
- $choices[ $k ] .= '|' . $choice['src'];
4829
- }
4830
- }
4831
-
4832
- return implode( ',', $choices );
4833
- }
4834
-
4835
- return false;
4836
- }
4837
- }
4838
-
4839
- if ( ! function_exists( 'ot_convert_string_to_array' ) ) {
4840
-
4841
- /**
4842
- * Convert choices string to array.
4843
- *
4844
- * @param string $input The string to convert to an array.
4845
- *
4846
- * @return bool|array
4847
- *
4848
- * @access public
4849
- * @since 2.0
4850
- */
4851
- function ot_convert_string_to_array( $input ) {
4852
-
4853
- if ( '' !== $input ) {
4854
-
4855
- // Empty choices array.
4856
- $choices = array();
4857
-
4858
- // Exlode the string into an array.
4859
- foreach ( explode( ',', $input ) as $k => $choice ) {
4860
-
4861
- // If ":" is splitting the string go deeper.
4862
- if ( preg_match( '/\|/', $choice ) ) {
4863
- $split = explode( '|', $choice );
4864
-
4865
- if ( 2 > count( $split ) ) {
4866
- continue;
4867
- }
4868
-
4869
- $choices[ $k ]['value'] = trim( $split[0] );
4870
- $choices[ $k ]['label'] = trim( $split[1] );
4871
-
4872
- // If radio image there are three values.
4873
- if ( isset( $split[2] ) ) {
4874
- $choices[ $k ]['src'] = trim( $split[2] );
4875
- }
4876
- } else {
4877
- $choices[ $k ]['value'] = trim( $choice );
4878
- $choices[ $k ]['label'] = trim( $choice );
4879
- }
4880
- }
4881
-
4882
- // Return a formatted choices array.
4883
- return $choices;
4884
- }
4885
-
4886
- return false;
4887
- }
4888
- }
4889
-
4890
- if ( ! function_exists( 'ot_strpos_array' ) ) {
4891
-
4892
- /**
4893
- * Helper function - strpos() in array recursively.
4894
- *
4895
- * @param string $haystack The string to search in.
4896
- * @param array $needles Keys to search for.
4897
- * @return bool
4898
- *
4899
- * @access public
4900
- * @since 2.0
4901
- */
4902
- function ot_strpos_array( $haystack, $needles = array() ) {
4903
-
4904
- foreach ( $needles as $needle ) {
4905
- if ( false !== strpos( $haystack, $needle ) ) {
4906
- return true;
4907
- }
4908
- }
4909
-
4910
- return false;
4911
- }
4912
- }
4913
-
4914
- if ( ! function_exists( 'ot_array_keys_exists' ) ) {
4915
-
4916
- /**
4917
- * Helper function - array_key_exists() recursively.
4918
- *
4919
- * @param array $haystack The array to search in.
4920
- * @param array $needles Keys to search for.
4921
- * @return bool
4922
- *
4923
- * @access public
4924
- * @since 2.0
4925
- */
4926
- function ot_array_keys_exists( $haystack, $needles = array() ) {
4927
-
4928
- foreach ( $needles as $k ) {
4929
- if ( isset( $haystack[ $k ] ) ) {
4930
- return true;
4931
- }
4932
- }
4933
-
4934
- return false;
4935
- }
4936
- }
4937
-
4938
- if ( ! function_exists( 'ot_stripslashes' ) ) {
4939
-
4940
- /**
4941
- * Custom stripslashes from single value or array.
4942
- *
4943
- * @param mixed $input The string or array to stripslashes from.
4944
- * @return mixed
4945
- *
4946
- * @access public
4947
- * @since 2.0
4948
- */
4949
- function ot_stripslashes( $input ) {
4950
-
4951
- if ( is_array( $input ) ) {
4952
-
4953
- foreach ( $input as &$val ) {
4954
-
4955
- if ( is_array( $val ) ) {
4956
- $val = ot_stripslashes( $val );
4957
- } else {
4958
- $val = stripslashes( trim( $val ) );
4959
- }
4960
- }
4961
- } else {
4962
- $input = stripslashes( trim( $input ) );
4963
- }
4964
-
4965
- return $input;
4966
- }
4967
- }
4968
-
4969
- if ( ! function_exists( 'ot_reverse_wpautop' ) ) {
4970
-
4971
- /**
4972
- * Reverse wpautop.
4973
- *
4974
- * @param string $string The string to be filtered.
4975
- * @return string
4976
- *
4977
- * @access public
4978
- * @since 2.0.9
4979
- */
4980
- function ot_reverse_wpautop( $string = '' ) {
4981
-
4982
- // Return if string is empty.
4983
- if ( '' === trim( $string ) ) {
4984
- return '';
4985
- }
4986
-
4987
- // Remove all new lines & <p> tags.
4988
- $string = str_replace( array( "\n", '<p>' ), '', $string );
4989
-
4990
- // Replace <br /> with \r.
4991
- $string = str_replace( array( '<br />', '<br>', '<br/>' ), "\r", $string );
4992
-
4993
- // Replace </p> with \r\n.
4994
- $string = str_replace( '</p>', "\r\n", $string );
4995
-
4996
- // Return clean string.
4997
- return trim( $string );
4998
- }
4999
- }
5000
-
5001
- if ( ! function_exists( 'ot_range' ) ) {
5002
-
5003
- /**
5004
- * Returns an array of elements from start to limit, inclusive.
5005
- *
5006
- * Occasionally zero will be some impossibly large number to
5007
- * the "E" power when creating a range from negative to positive.
5008
- * This function attempts to fix that by setting that number back to "0".
5009
- *
5010
- * @param string $start First value of the sequence.
5011
- * @param string $limit The sequence is ended upon reaching the limit value.
5012
- * @param int $step If a step value is given, it will be used as the increment
5013
- * between elements in the sequence. step should be given as a
5014
- * positive number. If not specified, step will default to 1.
5015
- *
5016
- * @return array
5017
- *
5018
- * @access public
5019
- * @since 2.0.12
5020
- */
5021
- function ot_range( $start, $limit, $step = 1 ) {
5022
-
5023
- if ( $step < 0 ) {
5024
- $step = 1;
5025
- }
5026
-
5027
- $range = range( $start, $limit, $step );
5028
-
5029
- foreach ( $range as $k => $v ) {
5030
- if ( strpos( $v, 'E' ) ) {
5031
- $range[ $k ] = 0;
5032
- }
5033
- }
5034
-
5035
- return $range;
5036
- }
5037
- }
5038
-
5039
- if ( ! function_exists( 'ot_encode' ) ) {
5040
-
5041
- /**
5042
- * Helper function to return encoded strings.
5043
- *
5044
- * @param array $value The array to encode.
5045
- *
5046
- * @return string|bool
5047
- *
5048
- * @access public
5049
- * @since 2.0.13
5050
- * @updated 2.7.0
5051
- */
5052
- function ot_encode( $value ) {
5053
- if ( is_array( $value ) ) {
5054
- return base64_encode( maybe_serialize( $value ) ); // phpcs:ignore
5055
- }
5056
-
5057
- return false;
5058
- }
5059
- }
5060
-
5061
- if ( ! function_exists( 'ot_decode' ) ) {
5062
-
5063
- /**
5064
- * Helper function to return decoded arrays.
5065
- *
5066
- * @param string $value Encoded serialized array.
5067
- *
5068
- * @return array
5069
- *
5070
- * @access public
5071
- * @since 2.0.13
5072
- */
5073
- function ot_decode( $value ) {
5074
-
5075
- $fallback = array();
5076
- $decoded = base64_decode( $value ); // phpcs:ignore
5077
-
5078
- // Search for an array.
5079
- preg_match( '/a:\d+:{.*?}/', $decoded, $array_matches, PREG_OFFSET_CAPTURE, 0 );
5080
-
5081
- // Search for an object.
5082
- preg_match( '/O|C:\+?\d+:"[a-z0-9_]+”:\+?\d+:/i', $decoded, $obj_matches, PREG_OFFSET_CAPTURE, 0 );
5083
-
5084
- // Prevent object injection or non arrays.
5085
- if ( $obj_matches || ! $array_matches ) {
5086
- return $fallback;
5087
- }
5088
-
5089
- // Convert the options to an array.
5090
- $decoded = maybe_unserialize( $decoded );
5091
-
5092
- if ( is_array( $decoded ) ) {
5093
- return $decoded;
5094
- }
5095
-
5096
- return $fallback;
5097
- }
5098
- }
5099
-
5100
- if ( ! function_exists( 'ot_filter_std_value' ) ) {
5101
-
5102
- /**
5103
- * Helper function to filter standard option values.
5104
- *
5105
- * @param mixed $value Saved string or array value.
5106
- * @param mixed $std Standard string or array value.
5107
- *
5108
- * @return mixed String or array.
5109
- *
5110
- * @access public
5111
- * @since 2.0.15
5112
- */
5113
- function ot_filter_std_value( $value = '', $std = '' ) {
5114
-
5115
- if ( is_string( $std ) && ! empty( $std ) ) {
5116
-
5117
- // Search for an array.
5118
- preg_match( '/a:\d+:{.*?}/', $std, $array_matches, PREG_OFFSET_CAPTURE, 0 );
5119
-
5120
- // Search for an object.
5121
- preg_match( '/O:\d+:"[a-z0-9_]+":\d+:{.*?}/i', $std, $obj_matches, PREG_OFFSET_CAPTURE, 0 );
5122
-
5123
- // Prevent object injection.
5124
- if ( $array_matches && ! $obj_matches ) {
5125
- $std = maybe_unserialize( $std );
5126
- } elseif ( $obj_matches ) {
5127
- $std = '';
5128
- }
5129
- }
5130
-
5131
- if ( is_array( $value ) && is_array( $std ) ) {
5132
- foreach ( $value as $k => $v ) {
5133
- if ( '' === $value[ $k ] && isset( $std[ $k ] ) ) {
5134
- $value[ $k ] = $std[ $k ];
5135
- }
5136
- }
5137
- } elseif ( '' === $value && ! empty( $std ) ) {
5138
- $value = $std;
5139
- }
5140
-
5141
- return $value;
5142
- }
5143
- }
5144
-
5145
- if ( ! function_exists( 'ot_set_google_fonts' ) ) {
5146
-
5147
- /**
5148
- * Helper function to set the Google fonts array.
5149
- *
5150
- * @param string $id The option ID.
5151
- * @param bool $value The option value.
5152
- *
5153
- * @access public
5154
- * @since 2.5.0
5155
- */
5156
- function ot_set_google_fonts( $id = '', $value = '' ) {
5157
-
5158
- $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
5159
-
5160
- if ( is_array( $value ) && ! empty( $value ) ) {
5161
- $ot_set_google_fonts[ $id ] = $value;
5162
- } elseif ( isset( $ot_set_google_fonts[ $id ] ) ) {
5163
- unset( $ot_set_google_fonts[ $id ] );
5164
- }
5165
-
5166
- set_theme_mod( 'ot_set_google_fonts', $ot_set_google_fonts );
5167
- }
5168
- }
5169
-
5170
- if ( ! function_exists( 'ot_update_google_fonts_after_save' ) ) {
5171
-
5172
- /**
5173
- * Helper function to remove unused options from the Google fonts array.
5174
- *
5175
- * @param array $options The array of saved options.
5176
- *
5177
- * @access public
5178
- * @since 2.5.0
5179
- */
5180
- function ot_update_google_fonts_after_save( $options = array() ) {
5181
-
5182
- $ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
5183
-
5184
- foreach ( $ot_set_google_fonts as $key => $set ) {
5185
- if ( ! isset( $options[ $key ] ) ) {
5186
- unset( $ot_set_google_fonts[ $key ] );
5187
- }
5188
- }
5189
- set_theme_mod( 'ot_set_google_fonts', $ot_set_google_fonts );
5190
- }
5191
-
5192
- add_action( 'ot_after_theme_options_save', 'ot_update_google_fonts_after_save', 1 );
5193
- }
5194
-
5195
- if ( ! function_exists( 'ot_fetch_google_fonts' ) ) {
5196
-
5197
- /**
5198
- * Helper function to fetch the Google fonts array.
5199
- *
5200
- * @param bool $normalize Whether or not to return a normalized array. Default 'true'.
5201
- * @param bool $force_rebuild Whether or not to force the array to be rebuilt. Default 'false'.
5202
- *
5203
- * @return array
5204
- *
5205
- * @access public
5206
- * @since 2.5.0
5207
- */
5208
- function ot_fetch_google_fonts( $normalize = true, $force_rebuild = false ) {
5209
-
5210
- // Google Fonts cache key.
5211
- $ot_google_fonts_cache_key = apply_filters( 'ot_google_fonts_cache_key', 'ot_google_fonts_cache' );
5212
-
5213
- // Get the fonts from cache.
5214
- $ot_google_fonts = apply_filters( 'ot_google_fonts_cache', get_transient( $ot_google_fonts_cache_key ) );
5215
-
5216
- if ( $force_rebuild || ! is_array( $ot_google_fonts ) || empty( $ot_google_fonts ) ) {
5217
-
5218
- $ot_google_fonts = array();
5219
-
5220
- // API url and key.
5221
- $ot_google_fonts_api_url = apply_filters( 'ot_google_fonts_api_url', 'https://www.googleapis.com/webfonts/v1/webfonts' );
5222
- $ot_google_fonts_api_key = apply_filters( 'ot_google_fonts_api_key', false );
5223
-
5224
- if ( false === $ot_google_fonts_api_key ) {
5225
- return array();
5226
- }
5227
-
5228
- // API arguments.
5229
- $ot_google_fonts_fields = apply_filters(
5230
- 'ot_google_fonts_fields',
5231
- array(
5232
- 'family',
5233
- 'variants',
5234
- 'subsets',
5235
- )
5236
- );
5237
- $ot_google_fonts_sort = apply_filters( 'ot_google_fonts_sort', 'alpha' );
5238
-
5239
- // Initiate API request.
5240
- $ot_google_fonts_query_args = array(
5241
- 'key' => $ot_google_fonts_api_key,
5242
- 'fields' => 'items(' . implode( ',', $ot_google_fonts_fields ) . ')',
5243
- 'sort' => $ot_google_fonts_sort,
5244
- );
5245
-
5246
- // Build and make the request.
5247
- $ot_google_fonts_query = esc_url_raw( add_query_arg( $ot_google_fonts_query_args, $ot_google_fonts_api_url ) );
5248
- $ot_google_fonts_response = wp_safe_remote_get(
5249
- $ot_google_fonts_query,
5250
- array(
5251
- 'sslverify' => false,
5252
- 'timeout' => 15,
5253
- )
5254
- );
5255
-
5256
- // Continue if we got a valid response.
5257
- if ( 200 === wp_remote_retrieve_response_code( $ot_google_fonts_response ) ) {
5258
-
5259
- $response_body = wp_remote_retrieve_body( $ot_google_fonts_response );
5260
-
5261
- if ( $response_body ) {
5262
-
5263
- // JSON decode the response body and cache the result.
5264
- $ot_google_fonts_data = json_decode( trim( $response_body ), true );
5265
-
5266
- if ( is_array( $ot_google_fonts_data ) && isset( $ot_google_fonts_data['items'] ) ) {
5267
-
5268
- $ot_google_fonts = $ot_google_fonts_data['items'];
5269
-
5270
- // Normalize the array key.
5271
- $ot_google_fonts_tmp = array();
5272
- foreach ( $ot_google_fonts as $key => $value ) {
5273
- if ( ! isset( $value['family'] ) ) {
5274
- continue;
5275
- }
5276
-
5277
- $id = preg_replace( '/[^a-z0-9_\-]/', '', strtolower( remove_accents( $value['family'] ) ) );
5278
-
5279
- if ( $id ) {
5280
- $ot_google_fonts_tmp[ $id ] = $value;
5281
- }
5282
- }
5283
-
5284
- $ot_google_fonts = $ot_google_fonts_tmp;
5285
- set_theme_mod( 'ot_google_fonts', $ot_google_fonts );
5286
- set_transient( $ot_google_fonts_cache_key, $ot_google_fonts, WEEK_IN_SECONDS );
5287
- }
5288
- }
5289
- }
5290
- }
5291
-
5292
- return $normalize ? ot_normalize_google_fonts( $ot_google_fonts ) : $ot_google_fonts;
5293
- }
5294
- }
5295
-
5296
- if ( ! function_exists( 'ot_normalize_google_fonts' ) ) {
5297
-
5298
- /**
5299
- * Helper function to normalize the Google fonts array.
5300
- *
5301
- * @param array $google_fonts An array of fonts to normalize.
5302
- *
5303
- * @return array
5304
- *
5305
- * @access public
5306
- * @since 2.5.0
5307
- */
5308
- function ot_normalize_google_fonts( $google_fonts ) {
5309
-
5310
- $ot_normalized_google_fonts = array();
5311
-
5312
- if ( is_array( $google_fonts ) && ! empty( $google_fonts ) ) {
5313
-
5314
- foreach ( $google_fonts as $google_font ) {
5315
-
5316
- if ( isset( $google_font['family'] ) ) {
5317
-
5318
- $id = str_replace( ' ', '+', $google_font['family'] );
5319
-
5320
- $ot_normalized_google_fonts[ $id ] = array(
5321
- 'family' => $google_font['family'],
5322
- );
5323
-
5324
- if ( isset( $google_font['variants'] ) ) {
5325
- $ot_normalized_google_fonts[ $id ]['variants'] = $google_font['variants'];
5326
- }
5327
-
5328
- if ( isset( $google_font['subsets'] ) ) {
5329
- $ot_normalized_google_fonts[ $id ]['subsets'] = $google_font['subsets'];
5330
- }
5331
- }
5332
- }
5333
- }
5334
-
5335
- return $ot_normalized_google_fonts;
5336
- }
5337
- }
5338
-
5339
- if ( ! function_exists( 'ot_wpml_register_string' ) ) {
5340
-
5341
- /**
5342
- * Helper function to register a WPML string.
5343
- *
5344
- * @param string $id The string ID.
5345
- * @param string $value The string value.
5346
- *
5347
- * @access public
5348
- * @since 2.1
5349
- */
5350
- function ot_wpml_register_string( $id, $value ) {
5351
- if ( function_exists( 'icl_register_string' ) ) {
5352
- icl_register_string( 'Theme Options', $id, $value );
5353
- }
5354
- }
5355
- }
5356
-
5357
- if ( ! function_exists( 'ot_wpml_unregister_string' ) ) {
5358
-
5359
- /**
5360
- * Helper function to unregister a WPML string.
5361
- *
5362
- * @param string $id The string ID.
5363
- *
5364
- * @access public
5365
- * @since 2.1
5366
- */
5367
- function ot_wpml_unregister_string( $id ) {
5368
- if ( function_exists( 'icl_unregister_string' ) ) {
5369
- icl_unregister_string( 'Theme Options', $id );
5370
- }
5371
- }
5372
- }
5373
-
5374
- if ( ! function_exists( 'ot_maybe_migrate_settings' ) ) {
5375
-
5376
- /**
5377
- * Maybe migrate Settings.
5378
- *
5379
- * @access public
5380
- * @since 2.3.3
5381
- */
5382
- function ot_maybe_migrate_settings() {
5383
-
5384
- // Filter the ID to migrate from.
5385
- $settings_id = apply_filters( 'ot_migrate_settings_id', '' );
5386
-
5387
- // Attempt to migrate Settings.
5388
- if ( ! empty( $settings_id ) && false === get_option( ot_settings_id() ) && ot_settings_id() !== $settings_id ) {
5389
-
5390
- // Old settings.
5391
- $settings = get_option( $settings_id );
5392
-
5393
- // Check for array keys.
5394
- if ( isset( $settings['sections'] ) && isset( $settings['settings'] ) ) {
5395
- update_option( ot_settings_id(), $settings );
5396
- }
5397
- }
5398
- }
5399
- }
5400
-
5401
- if ( ! function_exists( 'ot_maybe_migrate_options' ) ) {
5402
-
5403
- /**
5404
- * Maybe migrate Option.
5405
- *
5406
- * @access public
5407
- * @since 2.3.3
5408
- */
5409
- function ot_maybe_migrate_options() {
5410
-
5411
- // Filter the ID to migrate from.
5412
- $options_id = apply_filters( 'ot_migrate_options_id', '' );
5413
-
5414
- // Attempt to migrate Theme Options.
5415
- if ( ! empty( $options_id ) && false === get_option( ot_options_id() ) && ot_options_id() !== $options_id ) {
5416
-
5417
- // Old options.
5418
- $options = get_option( $options_id );
5419
-
5420
- // Migrate to new ID.
5421
- update_option( ot_options_id(), $options );
5422
- }
5423
- }
5424
- }
5425
-
5426
- if ( ! function_exists( 'ot_maybe_migrate_layouts' ) ) {
5427
-
5428
- /**
5429
- * Maybe migrate Layouts.
5430
- *
5431
- * @access public
5432
- * @since 2.3.3
5433
- */
5434
- function ot_maybe_migrate_layouts() {
5435
-
5436
- // Filter the ID to migrate from.
5437
- $layouts_id = apply_filters( 'ot_migrate_layouts_id', '' );
5438
-
5439
- // Attempt to migrate Layouts.
5440
- if ( ! empty( $layouts_id ) && false === get_option( ot_layouts_id() ) && ot_layouts_id() !== $layouts_id ) {
5441
-
5442
- // Old options.
5443
- $layouts = get_option( $layouts_id );
5444
-
5445
- // Migrate to new ID.
5446
- update_option( ot_layouts_id(), $layouts );
5447
- }
5448
- }
5449
- }
5450
-
5451
- if ( ! function_exists( 'ot_meta_box_post_format_gallery' ) ) {
5452
-
5453
- /**
5454
- * Returns an array with the post format gallery meta box.
5455
- *
5456
- * @param mixed $pages Excepts a comma separated string or array of
5457
- * post_types and is what tells the metabox where to
5458
- * display. Default 'post'.
5459
- * @return array
5460
- *
5461
- * @access public
5462
- * @since 2.4.0
5463
- */
5464
- function ot_meta_box_post_format_gallery( $pages = 'post' ) {
5465
-
5466
- if ( ! current_theme_supports( 'post-formats' ) || ! in_array( 'gallery', current( get_theme_support( 'post-formats' ) ), true ) ) {
5467
- return false;
5468
- }
5469
-
5470
- if ( is_string( $pages ) ) {
5471
- $pages = explode( ',', $pages );
5472
- }
5473
-
5474
- return apply_filters(
5475
- 'ot_meta_box_post_format_gallery',
5476
- array(
5477
- 'id' => 'ot-post-format-gallery',
5478
- 'title' => esc_html__( 'Gallery', 'option-tree' ),
5479
- 'desc' => '',
5480
- 'pages' => $pages,
5481
- 'context' => 'side',
5482
- 'priority' => 'low',
5483
- 'fields' => array(
5484
- array(
5485
- 'id' => '_format_gallery',
5486
- 'label' => '',
5487
- 'desc' => '',
5488
- 'std' => '',
5489
- 'type' => 'gallery',
5490
- 'class' => 'ot-gallery-shortcode',
5491
- ),
5492
- ),
5493
- ),
5494
- $pages
5495
- );
5496
- }
5497
- }
5498
-
5499
- if ( ! function_exists( 'ot_meta_box_post_format_link' ) ) {
5500
-
5501
- /**
5502
- * Returns an array with the post format link metabox.
5503
- *
5504
- * @param mixed $pages Excepts a comma separated string or array of
5505
- * post_types and is what tells the metabox where to
5506
- * display. Default 'post'.
5507
- * @return array
5508
- *
5509
- * @access public
5510
- * @since 2.4.0
5511
- */
5512
- function ot_meta_box_post_format_link( $pages = 'post' ) {
5513
-
5514
- if ( ! current_theme_supports( 'post-formats' ) || ! in_array( 'link', current( get_theme_support( 'post-formats' ) ), true ) ) {
5515
- return false;
5516
- }
5517
-
5518
- if ( is_string( $pages ) ) {
5519
- $pages = explode( ',', $pages );
5520
- }
5521
-
5522
- return apply_filters(
5523
- 'ot_meta_box_post_format_link',
5524
- array(
5525
- 'id' => 'ot-post-format-link',
5526
- 'title' => esc_html__( 'Link', 'option-tree' ),
5527
- 'desc' => '',
5528
- 'pages' => $pages,
5529
- 'context' => 'side',
5530
- 'priority' => 'low',
5531
- 'fields' => array(
5532
- array(
5533
- 'id' => '_format_link_url',
5534
- 'label' => '',
5535
- 'desc' => esc_html__( 'Link URL', 'option-tree' ),
5536
- 'std' => '',
5537
- 'type' => 'text',
5538
- ),
5539
- array(
5540
- 'id' => '_format_link_title',
5541
- 'label' => '',
5542
- 'desc' => esc_html__( 'Link Title', 'option-tree' ),
5543
- 'std' => '',
5544
- 'type' => 'text',
5545
- ),
5546
- ),
5547
- ),
5548
- $pages
5549
- );
5550
- }
5551
- }
5552
-
5553
- if ( ! function_exists( 'ot_meta_box_post_format_quote' ) ) {
5554
-
5555
- /**
5556
- * Returns an array with the post format quote metabox.
5557
- *
5558
- * @param mixed $pages Excepts a comma separated string or array of
5559
- * post_types and is what tells the metabox where to
5560
- * display. Default 'post'.
5561
- * @return array
5562
- *
5563
- * @access public
5564
- * @since 2.4.0
5565
- */
5566
- function ot_meta_box_post_format_quote( $pages = 'post' ) {
5567
-
5568
- if ( ! current_theme_supports( 'post-formats' ) || ! in_array( 'quote', current( get_theme_support( 'post-formats' ) ), true ) ) {
5569
- return false;
5570
- }
5571
-
5572
- if ( is_string( $pages ) ) {
5573
- $pages = explode( ',', $pages );
5574
- }
5575
-
5576
- return apply_filters(
5577
- 'ot_meta_box_post_format_quote',
5578
- array(
5579
- 'id' => 'ot-post-format-quote',
5580
- 'title' => esc_html__( 'Quote', 'option-tree' ),
5581
- 'desc' => '',
5582
- 'pages' => $pages,
5583
- 'context' => 'side',
5584
- 'priority' => 'low',
5585
- 'fields' => array(
5586
- array(
5587
- 'id' => '_format_quote_source_name',
5588
- 'label' => '',
5589
- 'desc' => esc_html__( 'Source Name (ex. author, singer, actor)', 'option-tree' ),
5590
- 'std' => '',
5591
- 'type' => 'text',
5592
- ),
5593
- array(
5594
- 'id' => '_format_quote_source_url',
5595
- 'label' => '',
5596
- 'desc' => esc_html__( 'Source URL', 'option-tree' ),
5597
- 'std' => '',
5598
- 'type' => 'text',
5599
- ),
5600
- array(
5601
- 'id' => '_format_quote_source_title',
5602
- 'label' => '',
5603
- 'desc' => esc_html__( 'Source Title (ex. book, song, movie)', 'option-tree' ),
5604
- 'std' => '',
5605
- 'type' => 'text',
5606
- ),
5607
- array(
5608
- 'id' => '_format_quote_source_date',
5609
- 'label' => '',
5610
- 'desc' => esc_html__( 'Source Date', 'option-tree' ),
5611
- 'std' => '',
5612
- 'type' => 'text',
5613
- ),
5614
- ),
5615
- ),
5616
- $pages
5617
- );
5618
-
5619
- }
5620
- }
5621
-
5622
- if ( ! function_exists( 'ot_meta_box_post_format_video' ) ) {
5623
-
5624
- /**
5625
- * Returns an array with the post format video metabox.
5626
- *
5627
- * @param mixed $pages Excepts a comma separated string or array of
5628
- * post_types and is what tells the metabox where to
5629
- * display. Default 'post'.
5630
- * @return array
5631
- *
5632
- * @access public
5633
- * @since 2.4.0
5634
- */
5635
- function ot_meta_box_post_format_video( $pages = 'post' ) {
5636
-
5637
- if ( ! current_theme_supports( 'post-formats' ) || ! in_array( 'video', current( get_theme_support( 'post-formats' ) ), true ) ) {
5638
- return false;
5639
- }
5640
-
5641
- if ( is_string( $pages ) ) {
5642
- $pages = explode( ',', $pages );
5643
- }
5644
-
5645
- /* translators: %1$s: link to WorPress Codex, %2$s: video shortcode */
5646
- $string = esc_html__( 'Embed video from services like Youtube, Vimeo, or Hulu. You can find a list of supported oEmbed sites in the %1$s. Alternatively, you could use the built-in %2$s shortcode.', 'option-tree' );
5647
-
5648
- return apply_filters(
5649
- 'ot_meta_box_post_format_video',
5650
- array(
5651
- 'id' => 'ot-post-format-video',
5652
- 'title' => __( 'Video', 'option-tree' ),
5653
- 'desc' => '',
5654
- 'pages' => $pages,
5655
- 'context' => 'side',
5656
- 'priority' => 'low',
5657
- 'fields' => array(
5658
- array(
5659
- 'id' => '_format_video_embed',
5660
- 'label' => '',
5661
- 'desc' => sprintf( $string, '<a href="https://codex.wordpress.org/Embeds" target="_blank">' . esc_html__( 'WordPress Codex', 'option-tree' ) . '</a>', '<code>[video]</code>' ),
5662
- 'std' => '',
5663
- 'type' => 'textarea',
5664
- ),
5665
- ),
5666
- ),
5667
- $pages
5668
- );
5669
- }
5670
- }
5671
-
5672
- if ( ! function_exists( 'ot_meta_box_post_format_audio' ) ) {
5673
-
5674
- /**
5675
- * Returns an array with the post format audio metabox.
5676
- *
5677
- * @param mixed $pages Excepts a comma separated string or array of
5678
- * post_types and is what tells the metabox where to
5679
- * display. Default 'post'.
5680
- * @return array
5681
- *
5682
- * @access public
5683
- * @since 2.4.0
5684
- */
5685
- function ot_meta_box_post_format_audio( $pages = 'post' ) {
5686
-
5687
- if ( ! current_theme_supports( 'post-formats' ) || ! in_array( 'audio', current( get_theme_support( 'post-formats' ) ), true ) ) {
5688
- return false;
5689
- }
5690
-
5691
- if ( is_string( $pages ) ) {
5692
- $pages = explode( ',', $pages );
5693
- }
5694
-
5695
- /* translators: %1$s: link to WorPress Codex, %2$s: audio shortcode */
5696
- $string = esc_html__( 'Embed audio from services like SoundCloud and Radio. You can find a list of supported oEmbed sites in the %1$s. Alternatively, you could use the built-in %2$s shortcode.', 'option-tree' );
5697
-
5698
- return apply_filters(
5699
- 'ot_meta_box_post_format_audio',
5700
- array(
5701
- 'id' => 'ot-post-format-audio',
5702
- 'title' => esc_html__( 'Audio', 'option-tree' ),
5703
- 'desc' => '',
5704
- 'pages' => $pages,
5705
- 'context' => 'side',
5706
- 'priority' => 'low',
5707
- 'fields' => array(
5708
- array(
5709
- 'id' => '_format_audio_embed',
5710
- 'label' => '',
5711
- 'desc' => sprintf( $string, '<a href="https://codex.wordpress.org/Embeds" target="_blank">' . esc_html__( 'WordPress Codex', 'option-tree' ) . '</a>', '<code>[audio]</code>' ),
5712
- 'std' => '',
5713
- 'type' => 'textarea',
5714
- ),
5715
- ),
5716
- ),
5717
- $pages
5718
- );
5719
-
5720
- }
5721
- }
5722
-
5723
- if ( ! function_exists( 'ot_get_option_type_by_id' ) ) {
5724
-
5725
- /**
5726
- * Returns the option type by ID.
5727
- *
5728
- * @param string $option_id The option ID.
5729
- * @param string $settings_id The settings array ID.
5730
- * @return string The option type.
5731
- *
5732
- * @access public
5733
- * @since 2.4.2
5734
- */
5735
- function ot_get_option_type_by_id( $option_id, $settings_id = '' ) {
5736
-
5737
- if ( empty( $settings_id ) ) {
5738
- $settings_id = ot_settings_id();
5739
- }
5740
-
5741
- $settings = get_option( $settings_id, array() );
5742
-
5743
- if ( isset( $settings['settings'] ) ) {
5744
-
5745
- foreach ( $settings['settings'] as $value ) {
5746
-
5747
- if ( $option_id === $value['id'] && isset( $value['type'] ) ) {
5748
- return $value['type'];
5749
- }
5750
- }
5751
- }
5752
-
5753
- return false;
5754
- }
5755
- }
5756
-
5757
- if ( ! function_exists( '_ot_settings_potential_shared_terms' ) ) {
5758
-
5759
- /**
5760
- * Build an array of potential Theme Options that could share terms.
5761
- *
5762
- * @return array
5763
- *
5764
- * @access private
5765
- * @since 2.5.4
5766
- */
5767
- function _ot_settings_potential_shared_terms() {
5768
-
5769
- $options = array();
5770
- $settings = get_option( ot_settings_id(), array() );
5771
- $option_types = array(
5772
- 'category-checkbox',
5773
- 'category-select',
5774
- 'tag-checkbox',
5775
- 'tag-select',
5776
- 'taxonomy-checkbox',
5777
- 'taxonomy-select',
5778
- );
5779
-
5780
- if ( isset( $settings['settings'] ) ) {
5781
-
5782
- foreach ( $settings['settings'] as $value ) {
5783
-
5784
- if ( isset( $value['type'] ) ) {
5785
-
5786
- if ( 'list-item' === $value['type'] && isset( $value['settings'] ) ) {
5787
-
5788
- $saved = ot_get_option( $value['id'] );
5789
-
5790
- foreach ( $value['settings'] as $item ) {
5791
-
5792
- if ( isset( $value['id'] ) && isset( $item['type'] ) && in_array( $item['type'], $option_types, true ) ) {
5793
- $sub_options = array();
5794
-
5795
- foreach ( $saved as $sub_key => $sub_value ) {
5796
- if ( isset( $sub_value[ $item['id'] ] ) ) {
5797
- $sub_options[ $sub_key ] = $sub_value[ $item['id'] ];
5798
- }
5799
- }
5800
-
5801
- if ( ! empty( $sub_options ) ) {
5802
- $options[] = array(
5803
- 'id' => $item['id'],
5804
- 'taxonomy' => $value['taxonomy'],
5805
- 'parent' => $value['id'],
5806
- 'value' => $sub_options,
5807
- );
5808
- }
5809
- }
5810
- }
5811
- }
5812
-
5813
- if ( in_array( $value['type'], $option_types, true ) ) {
5814
- $saved = ot_get_option( $value['id'] );
5815
- if ( ! empty( $saved ) ) {
5816
- $options[] = array(
5817
- 'id' => $value['id'],
5818
- 'taxonomy' => $value['taxonomy'],
5819
- 'value' => $saved,
5820
- );
5821
- }
5822
- }
5823
- }
5824
- }
5825
- }
5826
-
5827
- return $options;
5828
- }
5829
- }
5830
-
5831
- if ( ! function_exists( '_ot_meta_box_potential_shared_terms' ) ) {
5832
-
5833
- /**
5834
- * Build an array of potential Meta Box options that could share terms.
5835
- *
5836
- * @return array
5837
- *
5838
- * @access private
5839
- * @since 2.5.4
5840
- */
5841
- function _ot_meta_box_potential_shared_terms() {
5842
- global $ot_meta_boxes;
5843
-
5844
- $options = array();
5845
- $settings = $ot_meta_boxes;
5846
- $option_types = array(
5847
- 'category-checkbox',
5848
- 'category-select',
5849
- 'tag-checkbox',
5850
- 'tag-select',
5851
- 'taxonomy-checkbox',
5852
- 'taxonomy-select',
5853
- );
5854
-
5855
- foreach ( $settings as $setting ) {
5856
-
5857
- if ( isset( $setting['fields'] ) ) {
5858
-
5859
- foreach ( $setting['fields'] as $value ) {
5860
-
5861
- if ( isset( $value['type'] ) ) {
5862
-
5863
- if ( 'list-item' === $value['type'] && isset( $value['settings'] ) ) {
5864
-
5865
- $children = array();
5866
-
5867
- foreach ( $value['settings'] as $item ) {
5868
-
5869
- if ( isset( $value['id'] ) && isset( $item['type'] ) && in_array( $item['type'], $option_types, true ) ) {
5870
- $children[ $value['id'] ][] = $item['id'];
5871
- }
5872
- }
5873
-
5874
- if ( ! empty( $children[ $value['id'] ] ) ) {
5875
- $options[] = array(
5876
- 'id' => $value['id'],
5877
- 'children' => $children[ $value['id'] ],
5878
- 'taxonomy' => $value['taxonomy'],
5879
- );
5880
- }
5881
- }
5882
-
5883
- if ( in_array( $value['type'], $option_types, true ) ) {
5884
- $options[] = array(
5885
- 'id' => $value['id'],
5886
- 'taxonomy' => $value['taxonomy'],
5887
- );
5888
- }
5889
- }
5890
- }
5891
- }
5892
- }
5893
-
5894
- return $options;
5895
- }
5896
- }
5897
-
5898
- if ( ! function_exists( 'ot_split_shared_term' ) ) {
5899
-
5900
- /**
5901
- * Update terms when a term gets split.
5902
- *
5903
- * @param int $term_id ID of the formerly shared term.
5904
- * @param int $new_term_id ID of the new term created for the $term_taxonomy_id.
5905
- * @param int $term_taxonomy_id ID for the term_taxonomy row affected by the split.
5906
- * @param string $taxonomy Taxonomy for the split term.
5907
- *
5908
- * @access public
5909
- * @since 2.5.4
5910
- */
5911
- function ot_split_shared_term( $term_id, $new_term_id, $term_taxonomy_id, $taxonomy ) {
5912
- unset( $term_taxonomy_id );
5913
-
5914
- // Process the Theme Options.
5915
- $settings = _ot_settings_potential_shared_terms();
5916
- $old_options = get_option( ot_options_id(), array() );
5917
- $new_options = $old_options;
5918
-
5919
- // Process the saved settings.
5920
- if ( ! empty( $settings ) && ! empty( $old_options ) ) {
5921
-
5922
- // Loop over the Theme Options.
5923
- foreach ( $settings as $option ) {
5924
-
5925
- if ( ! is_array( $option['taxonomy'] ) ) {
5926
- $option['taxonomy'] = explode( ',', $option['taxonomy'] );
5927
- }
5928
-
5929
- if ( ! in_array( $taxonomy, $option['taxonomy'], true ) ) {
5930
- continue;
5931
- }
5932
-
5933
- // The option ID was found.
5934
- if ( array_key_exists( $option['id'], $old_options ) || ( isset( $option['parent'] ) && array_key_exists( $option['parent'], $old_options ) ) ) {
5935
-
5936
- // This is a list item, we have to go deeper.
5937
- if ( isset( $option['parent'] ) ) {
5938
-
5939
- // Loop over the array.
5940
- foreach ( $option['value'] as $key => $value ) {
5941
-
5942
- // The value is an array of IDs.
5943
- if ( is_array( $value ) ) {
5944
-
5945
- // Loop over the sub array.
5946
- foreach ( $value as $sub_key => $sub_value ) {
5947
-
5948
- if ( $sub_value === $term_id ) {
5949
- unset( $new_options[ $option['parent'] ][ $key ][ $option['id'] ][ $sub_key ] );
5950
- $new_options[ $option['parent'] ][ $key ][ $option['id'] ][ $new_term_id ] = $new_term_id;
5951
- }
5952
- }
5953
- } elseif ( $value === $term_id ) {
5954
- unset( $new_options[ $option['parent'] ][ $key ][ $option['id'] ] );
5955
- $new_options[ $option['parent'] ][ $key ][ $option['id'] ] = $new_term_id;
5956
- }
5957
- }
5958
- } else {
5959
-
5960
- // The value is an array of IDs.
5961
- if ( is_array( $option['value'] ) ) {
5962
-
5963
- // Loop over the array.
5964
- foreach ( $option['value'] as $key => $value ) {
5965
-
5966
- // It's a single value, just replace it.
5967
- if ( $value === $term_id ) {
5968
- unset( $new_options[ $option['id'] ][ $key ] );
5969
- $new_options[ $option['id'] ][ $new_term_id ] = $new_term_id;
5970
- }
5971
- }
5972
-
5973
- // It's a single value, just replace it.
5974
- } elseif ( $option['value'] === $term_id ) {
5975
- $new_options[ $option['id'] ] = $new_term_id;
5976
- }
5977
- }
5978
- }
5979
- }
5980
- }
5981
-
5982
- // Options need to be updated.
5983
- if ( $old_options !== $new_options ) {
5984
- update_option( ot_options_id(), $new_options );
5985
- }
5986
-
5987
- // Process the Meta Boxes.
5988
- $meta_settings = _ot_meta_box_potential_shared_terms();
5989
-
5990
- if ( ! empty( $meta_settings ) ) {
5991
-
5992
- foreach ( $meta_settings as $option ) {
5993
-
5994
- if ( ! is_array( $option['taxonomy'] ) ) {
5995
- $option['taxonomy'] = explode( ',', $option['taxonomy'] );
5996
- }
5997
-
5998
- if ( ! in_array( $taxonomy, $option['taxonomy'], true ) ) {
5999
- continue;
6000
- }
6001
-
6002
- if ( isset( $option['children'] ) ) {
6003
- $post_ids = get_posts(
6004
- array(
6005
- 'fields' => 'ids',
6006
- 'meta_key' => $option['id'], // phpcs:ignore
6007
- )
6008
- );
6009
-
6010
- if ( $post_ids ) {
6011
-
6012
- foreach ( $post_ids as $post_id ) {
6013
-
6014
- // Get the meta.
6015
- $old_meta = get_post_meta( $post_id, $option['id'], true );
6016
- $new_meta = $old_meta;
6017
-
6018
- // Has a saved value.
6019
- if ( ! empty( $old_meta ) && is_array( $old_meta ) ) {
6020
-
6021
- // Loop over the array.
6022
- foreach ( $old_meta as $key => $value ) {
6023
-
6024
- foreach ( $value as $sub_key => $sub_value ) {
6025
-
6026
- if ( in_array( $sub_key, $option['children'], true ) ) {
6027
-
6028
- // The value is an array of IDs.
6029
- if ( is_array( $sub_value ) ) {
6030
-
6031
- // Loop over the array.
6032
- foreach ( $sub_value as $sub_sub_key => $sub_sub_value ) {
6033
-
6034
- // It's a single value, just replace it.
6035
- if ( $sub_sub_value === $term_id ) {
6036
- unset( $new_meta[ $key ][ $sub_key ][ $sub_sub_key ] );
6037
- $new_meta[ $key ][ $sub_key ][ $new_term_id ] = $new_term_id;
6038
- }
6039
- }
6040
-
6041
- // It's a single value, just replace it.
6042
- } elseif ( $sub_value === $term_id ) {
6043
- $new_meta[ $key ][ $sub_key ] = $new_term_id;
6044
- }
6045
- }
6046
- }
6047
- }
6048
-
6049
- // Update.
6050
- if ( $old_meta !== $new_meta ) {
6051
- update_post_meta( $post_id, $option['id'], $new_meta, $old_meta );
6052
- }
6053
- }
6054
- }
6055
- }
6056
- } else {
6057
- $post_ids = get_posts(
6058
- array(
6059
- 'fields' => 'ids',
6060
- 'meta_query' => array( // phpcs:ignore
6061
- 'key' => $option['id'],
6062
- 'value' => $term_id,
6063
- 'compare' => 'IN',
6064
- ),
6065
- )
6066
- );
6067
-
6068
- if ( $post_ids ) {
6069
-
6070
- foreach ( $post_ids as $post_id ) {
6071
-
6072
- // Get the meta.
6073
- $old_meta = get_post_meta( $post_id, $option['id'], true );
6074
- $new_meta = $old_meta;
6075
-
6076
- // Has a saved value.
6077
- if ( ! empty( $old_meta ) ) {
6078
-
6079
- // The value is an array of IDs.
6080
- if ( is_array( $old_meta ) ) {
6081
-
6082
- // Loop over the array.
6083
- foreach ( $old_meta as $key => $value ) {
6084
-
6085
- // It's a single value, just replace it.
6086
- if ( $value === $term_id ) {
6087
- unset( $new_meta[ $key ] );
6088
- $new_meta[ $new_term_id ] = $new_term_id;
6089
- }
6090
- }
6091
-
6092
- // It's a single value, just replace it.
6093
- } elseif ( $old_meta === $term_id ) {
6094
- $new_meta = $new_term_id;
6095
- }
6096
-
6097
- // Update.
6098
- if ( $old_meta !== $new_meta ) {
6099
- update_post_meta( $post_id, $option['id'], $new_meta, $old_meta );
6100
- }
6101
- }
6102
- }
6103
- }
6104
- }
6105
- }
6106
- }
6107
- }
6108
-
6109
- add_action( 'split_shared_term', 'ot_split_shared_term', 10, 4 );
6110
- }
6111
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/ot-functions-compat.php DELETED
@@ -1,366 +0,0 @@
1
- <?php if ( ! defined( 'OT_VERSION' ) ) exit( 'No direct script access allowed' );
2
- /**
3
- * Compatibility Functions.
4
- *
5
- * @package OptionTree
6
- * @author Derek Herman <derek@valendesigns.com>
7
- * @copyright Copyright (c) 2013, Derek Herman
8
- * @since 2.0
9
- */
10
-
11
- /* run the actions & filters */
12
- add_action( 'admin_init', 'compat_ot_import_from_files', 1 );
13
- add_filter( 'ot_option_types_array', 'compat_ot_option_types_array', 10, 1 );
14
- add_filter( 'ot_recognized_font_styles', 'compat_ot_recognized_font_styles', 10, 2 );
15
- add_filter( 'ot_recognized_font_weights', 'compat_ot_recognized_font_weights', 10, 2 );
16
- add_filter( 'ot_recognized_font_variants', 'compat_ot_recognized_font_variants', 10, 2 );
17
- add_filter( 'ot_recognized_font_families', 'compat_ot_recognized_font_families', 10, 2 );
18
- add_filter( 'ot_recognized_background_repeat', 'compat_ot_recognized_background_repeat', 10, 2 );
19
- add_filter( 'ot_recognized_background_position', 'compat_ot_recognized_background_position', 10, 2 );
20
- add_filter( 'ot_measurement_unit_types', 'compat_ot_measurement_unit_types', 10, 2 );
21
-
22
- /**
23
- * Import from the old 1.x files for backwards compatibility.
24
- *
25
- * @return void
26
- *
27
- * @access private
28
- * @since 2.0.8
29
- */
30
- if ( ! function_exists( 'compat_ot_import_from_files' ) ) {
31
-
32
- function compat_ot_import_from_files() {
33
-
34
- delete_transient('_nx_meta_activation_notice');
35
-
36
- /* file path & name without extention */
37
- $ot_xml = '/option-tree/theme-options.xml';
38
- $ot_data = '/option-tree/theme-options.txt';
39
- $ot_layout = '/option-tree/layouts.txt';
40
-
41
- /* XML file path - child theme first then parent */
42
- if ( is_readable( get_stylesheet_directory() . $ot_xml ) ) {
43
-
44
- $xml_file = get_stylesheet_directory_uri() . $ot_xml;
45
-
46
- } else if ( is_readable( get_template_directory() . $ot_xml ) ) {
47
-
48
- $xml_file = get_template_directory_uri() . $ot_xml;
49
-
50
- }
51
-
52
- /* Data file path - child theme first then parent */
53
- if ( is_readable( get_stylesheet_directory() . $ot_data ) ) {
54
-
55
- $data_file = get_stylesheet_directory_uri() . $ot_data;
56
-
57
- } else if ( is_readable( get_template_directory() . $ot_data ) ) {
58
-
59
- $data_file = get_template_directory_uri() . $ot_data;
60
-
61
- }
62
-
63
- /* Layout file path - child theme first then parent */
64
- if ( is_readable( get_stylesheet_directory() . $ot_layout ) ) {
65
-
66
- $layout_file = get_stylesheet_directory_uri() . $ot_layout;
67
-
68
- } else if ( is_readable( get_template_directory() . $ot_layout ) ) {
69
-
70
- $layout_file = get_template_directory_uri() . $ot_layout;
71
-
72
- }
73
-
74
- /* check for files */
75
- $has_xml = isset( $xml_file ) ? true : false;
76
- $has_data = isset( $data_file ) ? true : false;
77
- $has_layout = isset( $layout_file ) ? true : false;
78
-
79
- /* auto import XML file */
80
- if ( $has_xml == true && ! get_option( ot_settings_id() ) && class_exists( 'SimpleXMLElement' ) ) {
81
-
82
- $settings = ot_import_xml( $xml_file );
83
-
84
- if ( isset( $settings ) && ! empty( $settings ) ) {
85
-
86
- update_option( ot_settings_id(), $settings );
87
-
88
- }
89
-
90
- }
91
-
92
- /* auto import Data file */
93
- if ( $has_data == true && ! get_option( ot_options_id() ) ) {
94
-
95
- $get_data = wp_remote_get( $data_file );
96
-
97
- if ( is_wp_error( $get_data ) )
98
- return false;
99
-
100
- $rawdata = isset( $get_data['body'] ) ? $get_data['body'] : '';
101
- $options = unserialize( ot_decode( $rawdata ) );
102
-
103
- /* get settings array */
104
- $settings = get_option( ot_settings_id() );
105
-
106
- /* has options */
107
- if ( is_array( $options ) ) {
108
-
109
- /* validate options */
110
- if ( is_array( $settings ) ) {
111
-
112
- foreach( $settings['settings'] as $setting ) {
113
-
114
- if ( isset( $options[$setting['id']] ) ) {
115
-
116
- $content = ot_stripslashes( $options[$setting['id']] );
117
-
118
- $options[$setting['id']] = ot_validate_setting( $content, $setting['type'], $setting['id'] );
119
-
120
- }
121
-
122
- }
123
-
124
- }
125
-
126
- /* update the option tree array */
127
- update_option( ot_options_id(), $options );
128
-
129
- }
130
-
131
- }
132
-
133
- /* auto import Layout file */
134
- if ( $has_layout == true && ! get_option( ot_layouts_id() ) ) {
135
-
136
- $get_data = wp_remote_get( $layout_file );
137
-
138
- if ( is_wp_error( $get_data ) )
139
- return false;
140
-
141
- $rawdata = isset( $get_data['body'] ) ? $get_data['body'] : '';
142
- $layouts = unserialize( ot_decode( $rawdata ) );
143
-
144
- /* get settings array */
145
- $settings = get_option( ot_settings_id() );
146
-
147
- /* has layouts */
148
- if ( is_array( $layouts ) ) {
149
-
150
- /* validate options */
151
- if ( is_array( $settings ) ) {
152
-
153
- foreach( $layouts as $key => $value ) {
154
-
155
- if ( $key == 'active_layout' )
156
- continue;
157
-
158
- $options = unserialize( ot_decode( $value ) );
159
-
160
- foreach( $settings['settings'] as $setting ) {
161
-
162
- if ( isset( $options[$setting['id']] ) ) {
163
-
164
- $content = ot_stripslashes( $options[$setting['id']] );
165
-
166
- $options[$setting['id']] = ot_validate_setting( $content, $setting['type'], $setting['id'] );
167
-
168
- }
169
-
170
- }
171
-
172
- $layouts[$key] = ot_encode( serialize( $options ) );
173
-
174
- }
175
-
176
- }
177
-
178
- /* update the option tree array */
179
- if ( isset( $layouts['active_layout'] ) ) {
180
-
181
- update_option( ot_options_id(), unserialize( ot_decode( $layouts[$layouts['active_layout']] ) ) );
182
-
183
- }
184
-
185
- /* update the option tree layouts array */
186
- update_option( ot_layouts_id(), $layouts );
187
-
188
- }
189
-
190
- }
191
-
192
- }
193
-
194
- }
195
-
196
- /**
197
- * Filters the option types array.
198
- *
199
- * Allows the old 'option_tree_option_types' filter to
200
- * change the new 'ot_option_types_array' return value.
201
- *
202
- * @return array
203
- *
204
- * @access public
205
- * @since 2.0
206
- */
207
- if ( ! function_exists( 'compat_ot_option_types_array' ) ) {
208
-
209
- function compat_ot_option_types_array( $array ) {
210
-
211
- return apply_filters( 'option_tree_option_types', $array );
212
-
213
- }
214
-
215
- }
216
-
217
- /**
218
- * Filters the recognized font styles array.
219
- *
220
- * Allows the old 'recognized_font_styles' filter to
221
- * change the new 'ot_recognized_font_styles' return value.
222
- *
223
- * @return array
224
- *
225
- * @access public
226
- * @since 2.0
227
- */
228
- if ( ! function_exists( 'compat_ot_recognized_font_styles' ) ) {
229
-
230
- function compat_ot_recognized_font_styles( $array, $id ) {
231
-
232
- return apply_filters( 'recognized_font_styles', $array, $id );
233
-
234
- }
235
-
236
- }
237
-
238
- /**
239
- * Filters the recognized font weights array.
240
- *
241
- * Allows the old 'recognized_font_weights' filter to
242
- * change the new 'ot_recognized_font_weights' return value.
243
- *
244
- * @return array
245
- *
246
- * @access public
247
- * @since 2.0
248
- */
249
- if ( ! function_exists( 'compat_ot_recognized_font_weights' ) ) {
250
-
251
- function compat_ot_recognized_font_weights( $array, $id ) {
252
-
253
- return apply_filters( 'recognized_font_weights', $array, $id );
254
-
255
- }
256
-
257
- }
258
-
259
- /**
260
- * Filters the recognized font variants array.
261
- *
262
- * Allows the old 'recognized_font_variants' filter to
263
- * change the new 'ot_recognized_font_variants' return value.
264
- *
265
- * @return array
266
- *
267
- * @access public
268
- * @since 2.0
269
- */
270
- if ( ! function_exists( 'compat_ot_recognized_font_variants' ) ) {
271
-
272
- function compat_ot_recognized_font_variants( $array, $id ) {
273
-
274
- return apply_filters( 'recognized_font_variants', $array, $id );
275
-
276
- }
277
-
278
- }
279
-
280
- /**
281
- * Filters the recognized font families array.
282
- *
283
- * Allows the old 'recognized_font_families' filter to
284
- * change the new 'ot_recognized_font_families' return value.
285
- *
286
- * @return array
287
- *
288
- * @access public
289
- * @since 2.0
290
- */
291
- if ( ! function_exists( 'compat_ot_recognized_font_families' ) ) {
292
-
293
- function compat_ot_recognized_font_families( $array, $id ) {
294
-
295
- return apply_filters( 'recognized_font_families', $array, $id );
296
-
297
- }
298
-
299
- }
300
-
301
- /**
302
- * Filters the recognized background repeat array.
303
- *
304
- * Allows the old 'recognized_background_repeat' filter to
305
- * change the new 'ot_recognized_background_repeat' return value.
306
- *
307
- * @return array
308
- *
309
- * @access public
310
- * @since 2.0
311
- */
312
- if ( ! function_exists( 'compat_ot_recognized_background_repeat' ) ) {
313
-
314
- function compat_ot_recognized_background_repeat( $array, $id ) {
315
-
316
- return apply_filters( 'recognized_background_repeat', $array, $id );
317
-
318
- }
319
-
320
- }
321
-
322
- /**
323
- * Filters the recognized background position array.
324
- *
325
- * Allows the old 'recognized_background_position' filter to
326
- * change the new 'ot_recognized_background_position' return value.
327
- *
328
- * @return array
329
- *
330
- * @access public
331
- * @since 2.0
332
- */
333
- if ( ! function_exists( 'compat_ot_recognized_background_position' ) ) {
334
-
335
- function compat_ot_recognized_background_position( $array, $id ) {
336
-
337
- return apply_filters( 'recognized_background_position', $array, $id );
338
-
339
- }
340
-
341
- }
342
-
343
- /**
344
- * Filters the measurement unit types array.
345
- *
346
- * Allows the old 'measurement_unit_types' filter to
347
- * change the new 'ot_measurement_unit_types' return value.
348
- *
349
- * @return array
350
- *
351
- * @access public
352
- * @since 2.0
353
- */
354
- if ( ! function_exists( 'compat_ot_measurement_unit_types' ) ) {
355
-
356
- function compat_ot_measurement_unit_types( $array, $id ) {
357
-
358
- return apply_filters( 'measurement_unit_types', $array, $id );
359
-
360
- }
361
-
362
- }
363
-
364
-
365
- /* End of file ot-functions-compat.php */
366
- /* Location: ./includes/ot-functions-compat.php */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/ot-functions-deprecated.php DELETED
@@ -1,94 +0,0 @@
1
- <?php
2
- /**
3
- * OptionTree Deprecated Functions.
4
- *
5
- * @package OptionTree
6
- */
7
-
8
- if ( ! defined( 'OT_VERSION' ) ) {
9
- exit( 'No direct script access allowed' );
10
- }
11
-
12
- if ( ! function_exists( 'get_option_tree' ) ) {
13
-
14
- /**
15
- * Displays or returns a value from the 'option_tree' array.
16
- *
17
- * @param string $item_id The item ID.
18
- * @param array $options Options array.
19
- * @param bool $echo Whether to echo or return value.
20
- * @param bool $is_array Whether the value option is an array or string.
21
- * @param int $offset The array key.
22
- * @return mixed Array or comma separated lists of values.
23
- *
24
- * @access public
25
- * @since 1.0.0
26
- * @updated 2.0
27
- * @deprecated 2.0
28
- */
29
- function get_option_tree( $item_id = '', $options = array(), $echo = false, $is_array = false, $offset = -1 ) {
30
-
31
- // Load saved options.
32
- if ( ! $options ) {
33
- $options = get_option( ot_options_id() );
34
- }
35
-
36
- // No value return.
37
- if ( ! isset( $options[ $item_id ] ) || empty( $options[ $item_id ] ) ) {
38
- return;
39
- }
40
-
41
- // Set content value & strip slashes.
42
- $content = option_tree_stripslashes( $options[ $item_id ] );
43
-
44
- if ( true === $is_array ) {
45
- if ( ! is_array( $content ) ) {
46
- $content = explode( ',', $content );
47
- }
48
-
49
- if ( is_numeric( $offset ) && 0 <= $offset ) {
50
- $content = $content[ $offset ];
51
- } elseif ( ! is_numeric( $offset ) && isset( $content[ $offset ] ) ) {
52
- $content = $content[ $offset ];
53
- }
54
- } else {
55
- if ( is_array( $content ) ) {
56
- $content = implode( ',', $content );
57
- }
58
- }
59
-
60
- if ( $echo ) {
61
- echo $content; // phpcs:ignore
62
- }
63
-
64
- return $content;
65
- }
66
- }
67
-
68
- if ( ! function_exists( 'option_tree_stripslashes' ) ) {
69
-
70
- /**
71
- * Custom stripslashes from single value or array.
72
- *
73
- * @param mixed $input Input string or array.
74
- * @return mixed
75
- *
76
- * @access public
77
- * @since 1.1.3
78
- * @deprecated 2.0
79
- */
80
- function option_tree_stripslashes( $input ) {
81
- if ( is_array( $input ) ) {
82
- foreach ( $input as &$val ) {
83
- if ( is_array( $val ) ) {
84
- $val = option_tree_stripslashes( $val );
85
- } else {
86
- $val = stripslashes( $val );
87
- }
88
- }
89
- } else {
90
- $input = stripslashes( $input );
91
- }
92
- return $input;
93
- }
94
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/ot-functions-docs-page.php DELETED
@@ -1,1020 +0,0 @@
1
- <?php if ( ! defined( 'OT_VERSION' ) ) exit( 'No direct script access allowed' );
2
- /**
3
- * OptionTree documentation page functions.
4
- *
5
- * @package OptionTree
6
- * @author Derek Herman <derek@valendesigns.com>
7
- * @copyright Copyright (c) 2013, Derek Herman
8
- * @since 2.0
9
- */
10
-
11
- /**
12
- * Creating Options option type.
13
- *
14
- * @return string
15
- *
16
- * @access public
17
- * @since 2.0
18
- */
19
- if ( ! function_exists( 'ot_type_creating_options' ) ) {
20
-
21
- function ot_type_creating_options() {
22
-
23
- /* format setting outer wrapper */
24
- echo '<div class="format-setting type-textblock wide-desc">';
25
-
26
- /* description */
27
- echo '<div class="description">';
28
-
29
- echo '<h4>'. __( 'Label', 'option-tree' ) . ':</h4>';
30
- echo '<p>' . __( 'The Label field should be a short but descriptive block of text 100 characters or less with no HTML.', 'option-tree' ) . '</p>';
31
-
32
- echo '<h4>'. __( 'ID', 'option-tree' ) . ':</h4>';
33
- echo '<p>' . __( 'The ID field is a unique alphanumeric key used to differentiate each theme option (underscores are acceptable). Also, the plugin will change all text you write in this field to lowercase and replace spaces and special characters with an underscore automatically.', 'option-tree' ) . '</p>';
34
-
35
- echo '<h4>'. __( 'Type', 'option-tree' ) . ':</h4>';
36
- echo '<p>' . __( 'You are required to choose one of the supported option types when creating a new option. Here is a list of the available option types. For more information about each type click the <code>Option Types</code> tab to the left.', 'option-tree' ) . '</p>';
37
-
38
- echo '<ul class="docs-ul">';
39
- foreach( ot_option_types_array() as $key => $value )
40
- echo '<li>' . $value . '</li>';
41
- echo '</ul>';
42
-
43
- echo '<h4>'. __( 'Description', 'option-tree' ) . ':</h4>';
44
- echo '<p>' . __( 'Enter a detailed description for the users to read on the Theme Options page, HTML is allowed. This is also where you enter content for both the Textblock & Textblock Titled option types.', 'option-tree' ) . '</p>';
45
-
46
- echo '<h4>'. __( 'Choices', 'option-tree' ) . ':</h4>';
47
- echo '<p>' . __( 'Click the "Add Choice" button to add an item to the choices array. This will only affect the following option types: Checkbox, Radio, Select & Select Image.', 'option-tree' ) . '</p>';
48
-
49
- echo '<h4>'. __( 'Settings', 'option-tree' ) . ':</h4>';
50
- echo '<p>' . __( 'Click the "Add Setting" button found inside a newly created setting to add an item to the settings array. This will only affect the List Item type.', 'option-tree' ) . '</p>';
51
-
52
- echo '<h4>'. __( 'Standard', 'option-tree' ) . ':</h4>';
53
- echo '<p>' . __( 'Setting the standard value for your option only works for some option types. Those types are one that have a single string value saved to them and not an array of values.', 'option-tree' ) . '</p>';
54
-
55
- echo '<h4>'. __( 'Rows', 'option-tree' ) . ':</h4>';
56
- echo '<p>' . __( 'Enter a numeric value for the number of rows in your textarea. This will only affect the following option types: CSS, Textarea, & Textarea Simple.', 'option-tree' ) . '</p>';
57
-
58
- echo '<h4>'. __( 'Post Type', 'option-tree' ) . ':</h4>';
59
- echo '<p>' . __( 'Add a comma separated list of post type like <code>post,page</code>. This will only affect the following option types: Custom Post Type Checkbox, & Custom Post Type Select. Below are the default post types available with WordPress and that are also compatible with OptionTree. You can also add your own custom <code>post_type</code>. At this time <code>any</code> does not seem to return results properly and is something I plan on looking into.', 'option-tree' ) . '</p>';
60
-
61
- echo '<ul class="docs-ul">';
62
- echo '<li><code>post</code></li>';
63
- echo '<li><code>page</code></li>';
64
- echo '<li><code>attachment</code></li>';
65
- echo '</ul>';
66
-
67
- echo '<h4>'. __( 'Taxonomy', 'option-tree' ) . ':</h4>';
68
- echo '<p>' . __( 'Add a comma separated list of any registered taxonomy like <code>category,post_tag</code>. This will only affect the following option types: Taxonomy Checkbox, & Taxonomy Select.', 'option-tree' ) . '</p>';
69
-
70
- echo '<h4>'. __( 'Min, Max, & Step', 'option-tree' ) . ':</h4>';
71
- echo '<p>' . __( 'Add a comma separated list of options in the following format <code>0,100,1</code> (slide from <code>0-100</code> in intervals of <code>1</code>). The three values represent the minimum, maximum, and step options and will only affect the Numeric Slider option type.', 'option-tree' ) . '</p>';
72
-
73
- echo '<h4>'. __( 'CSS Class', 'option-tree' ) . ':</h4>';
74
- echo '<p>' . __( 'Add and optional class to any option type.', 'option-tree' ) . '</p>';
75
-
76
- echo '<h4>'. __( 'Condition', 'option-tree' ) . ':</h4>';
77
- echo '<p>' . sprintf( __( 'Add a comma separated list (no spaces) of conditions in which the field will be visible, leave this setting empty to always show the field. In these examples, %s is a placeholder for your condition, which can be in the form of %s.', 'option-tree' ), '<code>value</code>', '<code>field_id:is(value)</code>, <code>field_id:not(value)</code>, <code>field_id:contains(value)</code>, <code>field_id:less_than(value)</code>, <code>field_id:less_than_or_equal_to(value)</code>, <code>field_id:greater_than(value)</code>, or <code>field_id:greater_than_or_equal_to(value)</code>' ) . '</p>';
78
-
79
- echo '<h4>'. __( 'Operator', 'option-tree' ) . ':</h4>';
80
- echo '<p>' . sprintf( __( 'Choose the logical operator to compute the result of the conditions. Your options are %s and %s.', 'option-tree' ), '<code>and</code>', '<code>or</code>' ) . '</p>';
81
-
82
- echo '</div>';
83
-
84
- echo '</div>';
85
-
86
- }
87
-
88
- }
89
-
90
- /**
91
- * ot_get_option() option type.
92
- *
93
- * This is a callback function to display text about ot_get_option().
94
- *
95
- * @return string
96
- *
97
- * @access public
98
- * @since 2.0
99
- */
100
- if ( ! function_exists( 'ot_type_option_types' ) ) {
101
-
102
- function ot_type_option_types() {
103
-
104
- /* format setting outer wrapper */
105
- echo '<div class="format-setting type-textblock wide-desc">';
106
-
107
- /* description */
108
- echo '<div class="description">';
109
-
110
- echo '<h4>'. __( 'Background', 'option-tree' ) . ':</h4>';
111
- echo '<p>' . sprintf( __( 'The Background option type is for adding background styles to your theme either dynamically via the CSS option type below or manually with %s. The Background option type has filters that allow you to remove fields or change the defaults. For example, you can filter %s to remove unwanted fields from all Background options or an individual one. You can also filter %s. These filters allow you to fine tune the select lists for your specific needs.', 'option-tree' ), '<code>ot_get_option()</code>', '<code>ot_recognized_background_fields</code>', '<code>ot_recognized_background_repeat</code>, <code>ot_recognized_background_attachment</code>, <code>ot_recognized_background_position</code>, ' . __( 'and', 'option-tree' ) . ' <code>ot_type_background_size_choices</code>' ) . '</p>';
112
-
113
- echo '<h4>'. __( 'Border', 'option-tree' ) . ':</h4>';
114
- echo '<p>' . sprintf( __( 'The Border option type is used to set width, unit, style, and color values. The text input excepts a numerical value and the unit select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter. The style select lets you choose the border style. The default styles are %s, %s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s filter. The colorpicker saves a hexadecimal color code.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_border_unit_types</code>', '<code>hidden</code>', '<code>dashed</code>', '<code>solid</code>', '<code>double</code>', '<code>groove</code>', '<code>ridge</code>', '<code>inset</code>', '<code>outset</code>', '<code>ot_recognized_border_style_types</code>' ) . '</p>';
115
-
116
- echo '<h4>'. __( 'Box Shadow', 'option-tree' ) . ':</h4>';
117
- echo '<p>' . sprintf( __( 'The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values.', 'option-tree' ), '<code>inset</code>', '<code>offset-x</code>', '<code>offset-y</code>', '<code>blur-radius</code>', '<code>spread-radius</code>', '<code>color</code>' ) . '</p>';
118
-
119
- echo '<h4>'. __( 'Category Checkbox', 'option-tree' ) . ':</h4>';
120
- echo '<p>' . __( 'The Category Checkbox option type displays a list of category IDs. It allows the user to check multiple category IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
121
-
122
- echo '<h4>'. __( 'Category Select', 'option-tree' ) . ':</h4>';
123
- echo '<p>' . __( 'The Category Select option type displays a list of category IDs. It allows the user to select only one category ID and will return that value for use in a custom function or loop.', 'option-tree' ) . '</p>';
124
-
125
- echo '<h4>'. __( 'Checkbox', 'option-tree' ) . ':</h4>';
126
- echo '<p>' . __( 'The Checkbox option type displays a group of choices. It allows the user to check multiple choices and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
127
-
128
- echo '<h4>'. __( 'Colorpicker', 'option-tree' ) . ':</h4>';
129
- echo '<p>' . __( 'The Colorpicker option type saves a hexadecimal color code for use in CSS. Use it to modify the color of something in your theme.', 'option-tree' ) . '</p>';
130
-
131
- echo '<h4>'. __( 'Colorpicker Opacity', 'option-tree' ) . ':</h4>';
132
- echo '<p>' . sprintf( __( 'The Colorpicker Opacity option type saves a hexadecimal color code with an opacity value from %s to %s in increments of %s. Though the value is saved as hexadecimal, if used within the CSS option type the color and opacity values will be converted into a valid RGBA CSS value.', 'option-tree' ), '<code>0</code>', '<code>1</code>', '<code>0.01</code>' ) . '</p>';
133
-
134
- echo '<h4>'. __( 'CSS', 'option-tree' ) . ':</h4>';
135
- echo '<p>' . sprintf( __( 'The CSS option type is a textarea that when used properly can add dynamic CSS to your theme from within OptionTree. Unfortunately, due server limitations you will need to create a file named %s at the root level of your theme and change permissions using %s so the server can write to the file. I have had the most success setting this single file to %s but feel free to play around with permissions until everything is working. A good starting point is %s. When the server can save to the file, CSS will automatically be updated when you save your Theme Options.', 'option-tree' ), '<code>dynamic.css</code>', '<code>chmod</code>', '<code>0777</code>', '<code>0666</code>' ) . '</p>';
136
-
137
- echo '<p class="aside">' . sprintf( __( 'This example assumes you have an option with the ID of %1$s. Which means this option will automatically insert the value of %1$s into the %2$s when the Theme Options are saved.', 'option-tree' ), '<code>demo_background</code>', '<code>dynamic.css</code>' ) . '</p>';
138
-
139
- echo '<p>'. __( 'Input', 'option-tree' ) . ':</p>';
140
- echo '<pre><code>body {
141
- {{demo_background}}
142
- background-color: {{demo_background|background-color}};
143
- }</code></pre>';
144
-
145
- echo '<p>'. __( 'Output', 'option-tree' ) . ':</p>';
146
- echo '<pre><code>/* BEGIN demo_background */
147
- body {
148
- background: color image repeat attachment position;
149
- background-color: color;
150
- }
151
- /* END demo_background */</code></pre>';
152
-
153
- echo '<h4>'. __( 'Custom Post Type Checkbox', 'option-tree' ) . ':</h4>';
154
- echo '<p>' . sprintf( __( 'The Custom Post Type Select option type displays a list of IDs from any available WordPress post type or custom post type. It allows the user to check multiple post IDs for use in a custom function or loop. Requires at least one valid %1$s in the %1$s field.', 'option-tree' ), '<code>post_type</code>' ) . '</p>';
155
-
156
- echo '<h4>'. __( 'Custom Post Type Select', 'option-tree' ) . ':</h4>';
157
- echo '<p>' . sprintf( __( 'The Custom Post Type Select option type displays a list of IDs from any available WordPress post type or custom post type. It will return a single post ID for use in a custom function or loop. Requires at least one valid %1$s in the %1$s field.', 'option-tree' ), '<code>post_type</code>' ) . '</p>';
158
-
159
- echo '<h4>'. __( 'Date Picker', 'option-tree' ) . ':</h4>';
160
- echo '<p>' . __( 'The Date Picker option type is tied to a standard form input field which displays a calendar pop-up that allow the user to pick any date when focus is given to the input field. The returned value is a date formatted string.', 'option-tree' ) . '</p>';
161
-
162
- echo '<h4>'. __( 'Date Time Picker', 'option-tree' ) . ':</h4>';
163
- echo '<p>' . __( 'The Date Time Picker option type is tied to a standard form input field which displays a calendar pop-up that allow the user to pick any date and time when focus is given to the input field. The returned value is a date and time formatted string.', 'option-tree' ) . '</p>';
164
-
165
- echo '<h4>'. __( 'Dimension', 'option-tree' ) . ':</h4>';
166
- echo '<p>' . sprintf( __( 'The Dimension option type is used to set width and height values. The text inputs except numerical values and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_dimension_unit_types</code>' ) . '</p>';
167
-
168
- echo '<h4>'. __( 'Gallery', 'option-tree' ) . ':</h4>';
169
- echo '<p>' . __( 'The Gallery option type saves a comma separated list of image attachment IDs. You will need to create a front-end function to display the images in your theme.', 'option-tree' ) . '</p>';
170
-
171
- echo '<h4>'. __( 'Google Fonts', 'option-tree' ) . ':</h4>';
172
- echo '<p>' . sprintf( __( 'The Google Fonts option type will dynamically enqueue any number of Google Web Fonts into the document %1$s. As well, once the option has been saved each font family will automatically be inserted into the %2$s array for the Typography option type. You can further modify the font stack by using the %3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s parameter is being passed from %7$s, so it will be the ID of a Typography option type. This will allow you to add additional web safe fonts to individual font families on an as-need basis.', 'option-tree' ), '<code>HEAD</code>', '<code>font-family</code>', '<code>ot_google_font_stack</code>', '<code>$font_stack</code>', '<code>$family</code>', '<code>$field_id</code>', '<code>ot_recognized_font_families</code>' ) . '</p>';
173
-
174
- echo '<h4>'. __( 'JavaScript', 'option-tree' ) . ':</h4>';
175
- echo '<p>' . sprintf( __( 'The JavaScript option type is a textarea that uses the %s code editor to highlight your JavaScript and display errors as you type.', 'option-tree' ), '<code>ace.js</code>' ) . '</p>';
176
-
177
- echo '<h4>'. __( 'Link Color', 'option-tree' ) . ':</h4>';
178
- echo '<p>' . __( 'The Link Color option type is used to set all link color states.', 'option-tree' ) . '</p>';
179
-
180
- echo '<h4>'. __( 'List Item', 'option-tree' ) . ':</h4>';
181
- echo '<p>' . __( 'The List Item option type replaced the Slider option type and allows for a great deal of customization. You can add settings to the List Item and those settings will be displayed to the user when they add a new List Item. Typical use is for creating sliding content or blocks of code for custom layouts.', 'option-tree' ) . '</p>';
182
-
183
- echo '<h4>'. __( 'Measurement', 'option-tree' ) . ':</h4>';
184
- echo '<p>' . sprintf( __( 'The Measurement option type is a mix of input and select fields. The text input excepts a value and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_measurement_unit_types</code>' ) . '</p>';
185
-
186
- echo '<p>' . sprintf( __( 'Example filter to add new units to the Measurement option type. Added to %s.', 'option-tree' ), '<code>functions.php</code>' ) . '</p>';
187
- echo '<pre><code>function filter_measurement_unit_types( $array, $field_id ) {
188
-
189
- /* only run the filter on measurement with a field ID of my_measurement */
190
- if ( $field_id == \'my_measurement\' ) {
191
- $array[\'in\'] = \'inches\';
192
- $array[\'ft\'] = \'feet\';
193
- }
194
-
195
- return $array;
196
- }
197
- add_filter( \'ot_measurement_unit_types\', \'filter_measurement_unit_types\', 10, 2 );</code></pre>';
198
-
199
- echo '<p>' . __( 'Example filter to completely change the units in the Measurement option type. Added to <code>functions.php</code>.', 'option-tree' ) . '</p>';
200
- echo '<pre><code>function filter_measurement_unit_types( $array, $field_id ) {
201
-
202
- /* only run the filter on measurement with a field ID of my_measurement */
203
- if ( $field_id == \'my_measurement\' ) {
204
- $array = array(
205
- \'in\' => \'inches\',
206
- \'ft\' => \'feet\'
207
- );
208
- }
209
-
210
- return $array;
211
- }
212
- add_filter( \'ot_measurement_unit_types\', \'filter_measurement_unit_types\', 10, 2 );</code></pre>';
213
-
214
- echo '<h4>'. __( 'Numeric Slider', 'option-tree' ) . ':</h4>';
215
- echo '<p>' . __( 'The Numeric Slider option type displays a jQuery UI slider. It will return a single numerical value for use in a custom function or loop.', 'option-tree' ) . '</p>';
216
-
217
- echo '<h4>'. __( 'On/Off', 'option-tree' ) . ':</h4>';
218
- echo '<p>' . sprintf( __( 'The On/Off option type displays a simple switch that can be used to turn things on or off. The saved return value is either %s or %s.', 'option-tree' ), '<code>on</code>', '<code>off</code>' ) . '</p>';
219
-
220
- echo '<h4>'. __( 'Page Checkbox', 'option-tree' ) . ':</h4>';
221
- echo '<p>' . __( 'The Page Checkbox option type displays a list of page IDs. It allows the user to check multiple page IDs for use in a custom function or loop.', 'option-tree' ) . '</p>';
222
-
223
- echo '<h4>'. __( 'Page Select', 'option-tree' ) . ':</h4>';
224
- echo '<p>' . __( 'The Page Select option type displays a list of page IDs. It will return a single page ID for use in a custom function or loop.', 'option-tree' ) . '</p>';
225
-
226
- echo '<h4>'. __( 'Post Checkbox', 'option-tree' ) . ':</h4>';
227
- echo '<p>' . __( 'The Post Checkbox option type displays a list of post IDs. It allows the user to check multiple post IDs for use in a custom function or loop.', 'option-tree' ) . '</p>';
228
-
229
- echo '<h4>'. __( 'Post Select', 'option-tree' ) . ':</h4>';
230
- echo '<p>' . __( 'The Post Select option type displays a list of post IDs. It will return a single post ID for use in a custom function or loop.', 'option-tree' ) . '</p>';
231
-
232
- echo '<h4>'. __( 'Radio', 'option-tree' ) . ':</h4>';
233
- echo '<p>' . __( 'The Radio option type displays a group of choices. It allows the user to choose one and will return that value as a string for use in a custom function or loop.', 'option-tree' ) . '</p>';
234
-
235
- echo '<h4>'. __( 'Radio Image', 'option-tree' ) . ':</h4>';
236
- echo '<p>' . sprintf( __( 'the Radio Images option type is primarily used for layouts. However, you can filter the image list using %s. As well, you can add your own custom images using the choices array.', 'option-tree' ), '<code>ot_radio_images</code>' ) . '</p>';
237
-
238
- echo '<p>' . __( 'This example executes the <code>ot_radio_images</code> filter on layout images attached to the <code>my_radio_images</code> field. Added to <code>functions.php</code>.', 'option-tree' ) . '</p>';
239
- echo '<pre><code>function filter_radio_images( $array, $field_id ) {
240
-
241
- /* only run the filter where the field ID is my_radio_images */
242
- if ( $field_id == \'my_radio_images\' ) {
243
- $array = array(
244
- array(
245
- \'value\' => \'left-sidebar\',
246
- \'label\' => __( \'Left Sidebar\', \'option-tree\' ),
247
- \'src\' => OT_URL . \'/assets/images/layout/left-sidebar.png\'
248
- ),
249
- array(
250
- \'value\' => \'right-sidebar\',
251
- \'label\' => __( \'Right Sidebar\', \'option-tree\' ),
252
- \'src\' => OT_URL . \'/assets/images/layout/right-sidebar.png\'
253
- )
254
- );
255
- }
256
-
257
- return $array;
258
-
259
- }
260
- add_filter( \'ot_radio_images\', \'filter_radio_images\', 10, 2 );</code></pre>';
261
-
262
- echo '<h4>'. __( 'Select', 'option-tree' ) . ':</h4>';
263
- echo '<p>' . __( 'The Select option type is used to list anything you want that would be chosen from a select list.', 'option-tree' ) . '</p>';
264
-
265
- echo '<h4>'. __( 'Sidebar Select', 'option-tree' ) . ':</h4>';
266
- echo '<p>' . sprintf( __( 'This option type makes it possible for users to select a WordPress registered sidebar to use on a specific area. By using the two provided filters, %s, and %s we can be selective about which sidebars are available on a specific content area.', 'option-tree' ), '<code>ot_recognized_sidebars</code>', '<code>ot_recognized_sidebars_{$field_id}</code>' ) . '</p>';
267
- echo '<p>' . sprintf( __( 'For example, if we create a WordPress theme that provides the ability to change the Blog Sidebar and we don\'t want to have the footer sidebars available on this area, we can unset those sidebars either manually or by using a regular expression if we have a common name like %s.', 'option-tree' ), '<code>footer-sidebar-$i</code>' ) . '</p>';
268
-
269
- echo '<h4>'. __( 'Slider', 'option-tree' ) . ':</h4>';
270
- echo '<p>' . __( 'The Slider option type is technically deprecated. Use the List Item option type instead, as it\'s infinitely more customizable. Typical use is for creating sliding image content.', 'option-tree' ) . '</p>';
271
-
272
- echo '<h4>'. __( 'Social Links', 'option-tree' ) . ':</h4>';
273
- echo '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'option-tree' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>';
274
-
275
- echo '<h4>'. __( 'Spacing', 'option-tree' ) . ':</h4>';
276
- echo '<p>' . sprintf( __( 'The Spacing option type is used to set spacing values such as padding or margin in the form of top, right, bottom, and left. The text inputs except numerical values and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_spacing_unit_types</code>' ) . '</p>';
277
-
278
- echo '<h4>'. __( 'Tab', 'option-tree' ) . ':</h4>';
279
- echo '<p>' . __( 'The Tab option type will break a section or metabox into tabbed content.', 'option-tree' ) . '</p>';
280
-
281
- echo '<h4>'. __( 'Tag Checkbox', 'option-tree' ) . ':</h4>';
282
- echo '<p>' . __( 'The Tag Checkbox option type displays a list of tag IDs. It allows the user to check multiple tag IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
283
-
284
- echo '<h4>'. __( 'Tag Select', 'option-tree' ) . ':</h4>';
285
- echo '<p>' . __( 'The Tag Select option type displays a list of tag IDs. It allows the user to select only one tag ID and will return that value for use in a custom function or loop.', 'option-tree' ) . '</p>';
286
-
287
- echo '<h4>'. __( 'Taxonomy Checkbox', 'option-tree' ) . ':</h4>';
288
- echo '<p>' . __( 'The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows the user to check multiple taxonomy IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
289
-
290
- echo '<h4>'. __( 'Taxonomy Select', 'option-tree' ) . ':</h4>';
291
- echo '<p>' . __( 'The Taxonomy Select option type displays a list of taxonomy IDs. It allows the user to select only one taxonomy ID and will return that value for use in a custom function or loop.', 'option-tree' ) . '</p>';
292
-
293
- echo '<h4>'. __( 'Text', 'option-tree' ) . ':</h4>';
294
- echo '<p>' . __( 'The Text option type is used to save string values. For example, any optional or required text that is of reasonably short character length.', 'option-tree' ) . '</p>';
295
-
296
- echo '<h4>'. __( 'Textarea', 'option-tree' ) . ':</h4>';
297
- echo '<p>' . sprintf( __( 'The Textarea option type is a large string value used for custom code or text in the theme and has a WYSIWYG editor that can be filtered to change the how it is displayed. For example, you can filter %s, %s, %s, and %s.', 'option-tree' ), '<code>wpautop</code>', '<code>media_buttons</code>', '<code>tinymce</code>', '<code>quicktags</code>' ) . '</p>';
298
-
299
- echo '<p class="aside">' . __( 'Example filters to alter the Textarea option type. Added to <code>functions.php</code>.', 'option-tree' ) . '</p>';
300
-
301
- echo '<p>' . __( 'This example keeps WordPress from executing the <code>wpautop</code> filter on the line breaks. The default is <code>true</code> which means it wraps line breaks with an HTML <code>p</code> tag.', 'option-tree' ) . '</p>';
302
- echo '<pre><code>function filter_textarea_wpautop( $content, $field_id ) {
303
-
304
- /* only run the filter on the textarea with a field ID of my_textarea */
305
- if ( $field_id == \'my_textarea\' ) {
306
- return false;
307
- }
308
-
309
- return $content;
310
-
311
- }
312
- add_filter( \'ot_wpautop\', \'filter_textarea_wpautop\', 10, 2 );</code></pre>';
313
-
314
- echo '<p>' . __( 'This example keeps WordPress from executing the <code>media_buttons</code> filter on the textarea WYSIWYG. The default is <code>true</code> which means show the buttons.', 'option-tree' ) . '</p>';
315
- echo '<pre><code>function filter_textarea_media_buttons( $content, $field_id ) {
316
-
317
- /* only run the filter on the textarea with a field ID of my_textarea */
318
- if ( $field_id == \'my_textarea\' ) {
319
- return false;
320
- }
321
-
322
- return $content;
323
-
324
- }
325
- add_filter( \'ot_media_buttons\', \'filter_textarea_media_buttons\', 10, 2 );</code></pre>';
326
-
327
- echo '<p>' . __( 'This example keeps WordPress from executing the <code>tinymce</code> filter on the textarea WYSIWYG. The default is <code>true</code> which means show the tinymce.', 'option-tree' ) . '</p>';
328
- echo '<pre><code>function filter_textarea_tinymce( $content, $field_id ) {
329
-
330
- /* only run the filter on the textarea with a field ID of my_textarea */
331
- if ( $field_id == \'my_textarea\' ) {
332
- return false;
333
- }
334
-
335
- return $content;
336
-
337
- }
338
- add_filter( \'ot_tinymce\', \'filter_textarea_tinymce\', 10, 2 );</code></pre>';
339
-
340
- echo '<p>' . __( 'This example alters the <code>quicktags</code> filter on the textarea WYSIWYG. The default is <code>array( \'buttons\' => \'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close\' )</code> which means show those quicktags. It also means you can filter in your own custom quicktags.', 'option-tree' ) . '</p>';
341
- echo '<pre><code>function filter_textarea_quicktags( $content, $field_id ) {
342
-
343
- /* only run the filter on the textarea with a field ID of my_textarea */
344
- if ( $field_id == \'my_textarea\' ) {
345
- return array( \'buttons\' => \'strong,em,link,block,del,ins,img,ul,ol,li,code,more,spell,close,fullscreen\' );
346
- } else if ( $field_id == \'my_other_textarea\' ) {
347
- return false; /* show no quicktags */
348
- }
349
-
350
- return $content;
351
-
352
- }
353
- add_filter( \'ot_quicktags\', \'filter_textarea_quicktags\', 10, 1 );</code></pre>';
354
-
355
- echo '<h4>'. __( 'Textarea Simple', 'option-tree' ) . ':</h4>';
356
- echo '<p>' . __( 'The Textarea Simple option type is a large string value used for custom code or text in the theme. The Textarea Simple does not have a WYSIWYG editor.', 'option-tree' ) . '</p>';
357
-
358
- echo '<p class="aside">' . sprintf( __( 'This example tells WordPress to execute the %s filter on the line breaks. The default is %s which means it does not wraps line breaks with an HTML %s tag. Added to %s.', 'option-tree' ), '<code>wpautop</code>', '<code>false</code>', '<code>p</code>', '<code>functions.php</code>' ) . '</p>';
359
- echo '<pre><code>function filter_textarea_simple_wpautop( $content, $field_id ) {
360
-
361
- /* only run the filter on the textarea with a field ID of my_textarea */
362
- if ( $field_id == \'my_textarea\' ) {
363
- return true;
364
- }
365
-
366
- return $content;
367
-
368
- }
369
- add_filter( \'ot_wpautop\', \'filter_textarea_simple_wpautop\', 10, 2 );</code></pre>';
370
-
371
- echo '<h4>'. __( 'Textblock', 'option-tree' ) . ':</h4>';
372
- echo '<p>' . __( 'The Textblock option type is used only on the Theme Option page. It will allow you to create & display HTML, but has no title above the text block. You can then use the Textblock to add a more detailed set of instruction on how the options are used in your theme. You would never use this in your themes template files as it does not save a value.', 'option-tree' ) . '</p>';
373
-
374
- echo '<h4>'. __( 'Textblock Titled', 'option-tree' ) . ':</h4>';
375
- echo '<p>' . __( 'The Textblock Titled option type is used only on the Theme Option page. It will allow you to create & display HTML, and has a title above the text block. You can then use the Textblock Titled to add a more detailed set of instruction on how the options are used in your theme. You would never use this in your themes template files as it does not save a value.', 'option-tree' ) . '</p>';
376
-
377
- echo '<h4>'. __( 'Typography', 'option-tree' ) . ':</h4>';
378
- echo '<p>' . sprintf( __( 'The Typography option type is for adding typography styles to your theme either dynamically via the CSS option type above or manually with %s. The Typography option type has filters that allow you to remove fields or change the defaults. For example, you can filter %s to remove unwanted fields from all Background options or an individual one. You can also filter %s. These filters allow you to fine tune the select lists for your specific needs.', 'option-tree' ), '<code>ot_get_option()</code>', '<code>ot_recognized_typography_fields</code>', '<code>ot_recognized_font_families</code>, <code>ot_recognized_font_sizes</code>, <code>ot_recognized_font_styles</code>, <code>ot_recognized_font_variants</code>, <code>ot_recognized_font_weights</code>, <code>ot_recognized_letter_spacing</code>, <code>ot_recognized_line_heights</code>, <code>ot_recognized_text_decorations</code> ' . __( 'and', 'option-tree' ) . ' <code>ot_recognized_text_transformations</code>' ) . '</p>';
379
-
380
- echo '<p class="aside">' . __( 'This example would filter <code>ot_recognized_font_families</code> to build your own font stack. Added to <code>functions.php</code>.', 'option-tree' ) . '</p>';
381
- echo '<pre><code>function filter_ot_recognized_font_families( $array, $field_id ) {
382
-
383
- /* only run the filter when the field ID is my_google_fonts_headings */
384
- if ( $field_id == \'my_google_fonts_headings\' ) {
385
- $array = array(
386
- \'sans-serif\' => \'sans-serif\',
387
- \'open-sans\' => \'"Open Sans", sans-serif\',
388
- \'droid-sans\' => \'"Droid Sans", sans-serif\'
389
- );
390
- }
391
-
392
- return $array;
393
-
394
- }
395
- add_filter( \'ot_recognized_font_families\', \'filter_ot_recognized_font_families\', 10, 2 );</code></pre>';
396
-
397
- echo '<h4>'. __( 'Upload', 'option-tree' ) . ':</h4>';
398
- echo '<p>' . sprintf( __( 'The Upload option type is used to upload any WordPress supported media. After uploading, users are required to press the "%s" button in order to populate the input with the URI of that media. There is one caveat of this feature. If you import the theme options and have uploaded media on one site the old URI will not reflect the URI of your new site. You will have to re-upload or %s any media to your new server and change the URIs if necessary.', 'option-tree' ), apply_filters( 'ot_upload_text', __( 'Send to OptionTree', 'option-tree' ) ), 'FTP' ) . '</p>';
399
-
400
- echo '</div>';
401
-
402
- echo '</div>';
403
-
404
- }
405
-
406
- }
407
-
408
- /**
409
- * ot_get_option() option type.
410
- *
411
- * This is a callback function to display text about ot_get_option().
412
- *
413
- * @return string
414
- *
415
- * @access public
416
- * @since 2.0
417
- */
418
- if ( ! function_exists( 'ot_type_ot_get_option' ) ) {
419
-
420
- function ot_type_ot_get_option() {
421
-
422
- /* format setting outer wrapper */
423
- echo '<div class="format-setting type-textblock wide-desc">';
424
-
425
- /* description */
426
- echo '<div class="description">';
427
-
428
- echo '<h4>'. __( 'Description', 'option-tree' ) . ':</h4>';
429
-
430
- echo '<p>' . __( 'This function returns a value from the "option_tree" array of saved values or the default value supplied. The returned value would be mixed. Meaning it could be a string, integer, boolean, or array.', 'option-tree' ) . '</p>';
431
-
432
- echo '<h4>' . __( 'Usage', 'option-tree' ) . ':</h4>';
433
-
434
- echo '<p><code>&lt;?php ot_get_option( $option_id, $default ); ?&gt;</code></p>';
435
-
436
- echo '<h4>' . __( 'Parameters', 'option-tree' ) . ':</h4>';
437
-
438
- echo '<code>$option_id</code>';
439
-
440
- echo '<p>(<em>' . __( 'string', 'option-tree' ) . '</em>) (<em>' . __( 'required', 'option-tree' ) . '</em>) ' . __( 'Enter the options unique identifier.', 'option-tree' ) . '<br />' . __( 'Default:', 'option-tree' ) . ' <em>' . __( 'None', 'option-tree' ) . '</em></p>';
441
-
442
- echo '<code>$default</code>';
443
-
444
- echo '<p>(<em>' . __( 'string', 'option-tree' ) . '</em>) (<em>' . __( 'optional', 'option-tree' ) . '</em>) ' . __( 'Enter a default return value. This is just incase the request returns null.', 'option-tree' ) . '<br />' . __( 'Default', 'option-tree' ) . ': <em>' . __( 'None', 'option-tree' ) . '</em></p>';
445
-
446
- echo '</div>';
447
-
448
- echo '</div>';
449
-
450
- }
451
-
452
- }
453
-
454
- /**
455
- * get_option_tree() option type.
456
- *
457
- * This is a callback function to display text about get_option_tree().
458
- *
459
- * @return string
460
- *
461
- * @access public
462
- * @since 2.0
463
- */
464
- if ( ! function_exists( 'ot_type_get_option_tree' ) ) {
465
-
466
- function ot_type_get_option_tree() {
467
-
468
- /* format setting outer wrapper */
469
- echo '<div class="format-setting type-textblock wide-desc">';
470
-
471
- /* description */
472
- echo '<div class="description">';
473
-
474
- echo '<p class="deprecated">' . __( 'This function has been deprecated. That means it has been replaced by a new function or is no longer supported, and may be removed from future versions. All code that uses this function should be converted to use its replacement.', 'option-tree' ) . '</p>';
475
-
476
- echo '<p>' . __( 'Use', 'option-tree' ) . '<code>ot_get_option()</code>' . __( 'instead', 'option-tree' ) . '.</p>';
477
-
478
- echo '<h4>'. __( 'Description', 'option-tree' ) . ':</h4>';
479
-
480
- echo '<p>' . __( 'This function returns, or echos if asked, a value from the "option_tree" array of saved values.', 'option-tree' ) . '</p>';
481
-
482
- echo '<h4>' . __( 'Usage', 'option-tree' ) . ':</h4>';
483
-
484
- echo '<p><code>&lt;?php get_option_tree( $item_id, $options, $echo, $is_array, $offset ); ?&gt;</code></p>';
485
-
486
- echo '<h4>' . __( 'Parameters', 'option-tree' ) . ':</h4>';
487
-
488
- echo '<code>$item_id</code>';
489
-
490
- echo '<p>(<em>' . __( 'string', 'option-tree' ) . '</em>) (<em>' . __( 'required', 'option-tree' ) . '</em>) ' . __( 'Enter a unique Option Key to get a returned value or array.', 'option-tree' ) . '<br />' . __( 'Default:', 'option-tree' ) . ' <em>' . __( 'None', 'option-tree' ) . '</em></p>';
491
-
492
- echo '<code>$options</code>';
493
-
494
- echo '<p>(<em>' . __( 'array', 'option-tree' ) . '</em>) (<em>' . __( 'optional', 'option-tree' ) . '</em>) ' . __( 'Used to cut down on database queries in template files.', 'option-tree' ) . '<br />' . __( 'Default', 'option-tree' ) . ': <em>' . __( 'None', 'option-tree' ) . '</em></p>';
495
-
496
- echo '<code>$echo</code>';
497
-
498
- echo '<p>(<em>' . __( 'boolean', 'option-tree' ) . '</em>) (<em>' . __( 'optional', 'option-tree' ) . '</em>) ' . __( 'Echo the output.', 'option-tree' ) . '<br />' . __( 'Default', 'option-tree' ) . ': FALSE</p>';
499
-
500
- echo '<code>$is_array</code>';
501
-
502
- echo '<p>(<em>' . __( 'boolean', 'option-tree' ) . '</em>) (<em>' . __( 'optional', 'option-tree' ) . '</em>) ' . __( 'Used to indicate the $item_id is an array of values.', 'option-tree' ) . '<br />' . __( 'Default', 'option-tree' ) . ': FALSE</p>';
503
-
504
- echo '<code>$offset</code>';
505
-
506
- echo '<p>(<em>' . __( 'integer', 'option-tree' ) . '</em>) (<em>' . __( 'optional', 'option-tree' ) . '</em>) ' . __( 'Numeric offset key for the $item_id array, -1 will return all values (an array starts at 0).', 'option-tree' ) . '<br />' . __( 'Default', 'option-tree' ) . ': -1</p>';
507
-
508
- echo '</div>';
509
-
510
- echo '</div>';
511
-
512
- }
513
-
514
- }
515
-
516
- /**
517
- * Examples option type.
518
- *
519
- * @return string
520
- *
521
- * @access public
522
- * @since 2.0
523
- */
524
- if ( ! function_exists( 'ot_type_examples' ) ) {
525
-
526
- function ot_type_examples() {
527
-
528
- /* format setting outer wrapper */
529
- echo '<div class="format-setting type-textblock wide-desc">';
530
-
531
- /* description */
532
- echo '<div class="description">';
533
-
534
- echo '<p class="aside">' . __( 'If you\'re using the plugin version of OptionTree it is highly recommended to include a <code>function_exists</code> check in your code, as described in the examples below. If you\'ve integrated OptionTree directly into your themes root directory, you will <strong>not</strong> need to wrap your code with <code>function_exists</code>, as you\'re guaranteed to have the <code>ot_get_option()</code> function available.', 'option-tree' ) . '</p>';
535
-
536
- echo '<h4>' . __( 'String Examples', 'option-tree' ) . ':</h4>';
537
-
538
- echo '<p>' . __( 'Returns the value of <code>test_input</code>.', 'option-tree' ) . '</p>';
539
-
540
- echo '<pre><code>if ( function_exists( \'ot_get_option\' ) ) {
541
- $test_input = ot_get_option( \'test_input\' );
542
- }</code></pre>';
543
-
544
- echo '<p>' . __( 'Returns the value of <code>test_input</code>, but also has a default value if it returns empty.', 'option-tree' ) . '</p>';
545
-
546
- echo '<pre><code>if ( function_exists( \'ot_get_option\' ) ) {
547
- $test_input = ot_get_option( \'test_input\', \'default input value goes here.\' );
548
- }</code></pre>';
549
-
550
- echo '<h4>' . __( 'Array Examples', 'option-tree' ) . ':</h4>';
551
-
552
- echo '<p>' . __( 'Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</code>. It then echos an unordered list of links (navigation) using <code>wp_list_pages()</code>.', 'option-tree' ) . '</p>';
553
-
554
- echo '<pre><code>if ( function_exists( \'ot_get_option\' ) ) {
555
- /* get an array of page id\'s */
556
- $ids = ot_get_option( \'navigation_ids\', array() );
557
-
558
- /* echo custom navigation using wp_list_pages() */
559
- if ( ! empty( $ids ) )
560
- echo \'&lt;ul&gt;\';
561
- wp_list_pages(
562
- array(
563
- \'include\' => $ids,
564
- \'title_li\' => \'\'
565
- )
566
- );
567
- echo \'&lt;/ul&gt;\';
568
- }
569
-
570
- }</code></pre>';
571
-
572
- echo '<p>' . __( 'The next two examples demonstrate how to use the <strong>Measurement</strong> option type. The Measurement option type is an array with two key/value pairs. The first is the value of measurement and the second is the unit of measurement.', 'option-tree' ) . '</p>';
573
-
574
- echo '<pre><code>if ( function_exists( \'ot_get_option\' ) ) {
575
- /* get the array */
576
- $measurement = ot_get_option( \'measurement_option_type_id\' );
577
-
578
- /* only echo values if they actually exist, else echo some default value */
579
- if ( isset( measurement[0] ) && $measurement[1] ) {
580
- echo $measurement[0].$measurement[1];
581
- } else {
582
- echo \'10px\';
583
- }
584
-
585
- }</code></pre>';
586
-
587
- echo '<pre><code>if ( function_exists( \'ot_get_option\' ) ) {
588
- /* get the array, and have a default just incase */
589
- $measurement = ot_get_option( \'measurement_option_type_id\', array( \'10\', \'px\' ) );
590
-
591
- /* implode array into a string value */
592
- if ( ! empty( measurement ) ) {
593
- echo implode( \'\', $measurement );
594
- }
595
-
596
- }</code></pre>';
597
-
598
- echo '<p>' . __( 'This example displays a very basic slider loop.', 'option-tree' ) . '</p>';
599
-
600
- echo '<pre><code>if ( function_exists( \'ot_get_option\' ) ) {
601
-
602
- /* get the slider array */
603
- $slides = ot_get_option( \'my_slider\', array() );
604
-
605
- if ( ! empty( $slides ) ) {
606
- foreach( $slides as $slide ) {
607
- echo \'
608
- &lt;li&gt;
609
- &lt;a href="\' . $slide[\'link\'] . \'"&gt;&lt;img src="\' . $slide[\'image\'] . \'" alt="\' . $slide[\'title\'] . \'" /&gt;&lt;/a&gt;
610
- &lt;div class="description">\' . $slide[\'description\'] . \'&lt;/div&gt;
611
- &lt;/li&gt;\';
612
- }
613
- }
614
-
615
- }</code></pre>';
616
-
617
- echo '</div>';
618
-
619
- echo '</div>';
620
-
621
- }
622
-
623
- }
624
-
625
- /**
626
- * Layouts Overview option type.
627
- *
628
- * @return string
629
- *
630
- * @access public
631
- * @since 2.0
632
- */
633
- if ( ! function_exists( 'ot_type_layouts_overview' ) ) {
634
-
635
- function ot_type_layouts_overview() {
636
-
637
- /* format setting outer wrapper */
638
- echo '<div class="format-setting type-textblock wide-desc">';
639
-
640
- /* description */
641
- echo '<div class="description">';
642
-
643
- echo '<h4>'. __( 'It\'s Super Simple', 'option-tree' ) . '</h4>';
644
-
645
- echo '<p>' . __( 'Layouts make your theme awesome! With theme options data that you can save/import/export you can package themes with different color variations, or make it easy to do A/B testing on text and so much more. Basically, you save a snapshot of your data as a layout.', 'option-tree' ) . '</p>';
646
-
647
- echo '<p>' . __( 'Once you have created all your different layouts, or theme variations, you can save them to a separate text file for repackaging with your theme. Alternatively, you could just make different variations for yourself and change your theme with the click of a button, all without deleting your previous options data.', 'option-tree' ) . '</p>';
648
-
649
- echo '<p class="aside">' . __( ' Adding a layout is ridiculously easy, follow these steps and you\'ll be on your way to having a WordPress super theme.', 'option-tree' ) . '</p>';
650
-
651
- echo '<h4>' . __( 'For Developers', 'option-tree' ) . ':</h4>';
652
-
653
- echo '<h5>' . __( 'Creating a Layout', 'option-tree' ) . ':</h5>';
654
- echo '<ul class="docs-ul">';
655
- echo '<li>'. __( 'Go to the <code>OptionTre->Settings->Layouts</code> tab.', 'option-tree' ) . '</li>';
656
- echo '<li>' . __( 'Enter a name for your layout in the text field and hit "Save Layouts", you\'ve created your first layout.', 'option-tree' ) . '</li>';
657
- echo '<li>' . __( 'Adding a new layout is as easy as repeating the steps above.', 'option-tree' ) . '</li>';
658
- echo '</ul>';
659
-
660
- echo '<h5>' . __( 'Activating a Layout', 'option-tree' ) . ':</h5>';
661
- echo '<ul class="docs-ul">';
662
- echo '<li>'. __( 'Go to the <code>OptionTre->Settings->Layouts</code> tab.', 'option-tree' ) . '</li>';
663
- echo '<li>' . __( 'Click on the activate layout button in the actions list.', 'option-tree' ) . '</li>';
664
- echo '</ul>';
665
-
666
- echo '<h5>' . __( 'Deleting a Layout', 'option-tree' ) . ':</h5>';
667
- echo '<ul class="docs-ul">';
668
- echo '<li>'. __( 'Go to the <code>OptionTre->Settings->Layouts</code> tab.', 'option-tree' ) . '</li>';
669
- echo '<li>' . __( 'Click on the delete layout button in the actions list.', 'option-tree' ) . '</li>';
670
- echo '</ul>';
671
-
672
- echo '<h5>' . __( 'Edit Layout Data', 'option-tree' ) . ':</h5>';
673
- echo '<ul class="docs-ul">';
674
- echo '<li>'. __( 'Go to the <code>Appearance->Theme Options</code> page.', 'option-tree' ) . '</li>';
675
- echo '<li>' . __( 'Modify and save your theme options and the layout will be updated automatically.', 'option-tree' ) . '</li>';
676
- echo '<li>' . __( 'Saving theme options data will update the currently active layout, so before you start saving make sure you want to modify the current layout.', 'option-tree' ) . '</li>';
677
- echo '<li>' . __( 'If you want to edit a new layout, first create it then save your theme options.', 'option-tree' ) . '</li>';
678
- echo '</ul>';
679
-
680
- echo '<h4>' . __( 'End-Users Mode', 'option-tree' ) . ':</h4>';
681
-
682
- echo '<h5>' . __( 'Creating a Layout', 'option-tree' ) . ':</h5>';
683
- echo '<ul class="docs-ul">';
684
- echo '<li>'. __( 'Go to the <code>Appearance->Theme Options</code> page.', 'option-tree' ) . '</li>';
685
- echo '<li>' . __( 'Enter a name for your layout in the text field and hit "New Layout", you\'ve created your first layout.', 'option-tree' ) . '</li>';
686
- echo '<li>' . __( 'Adding a new layout is as easy as repeating the steps above.', 'option-tree' ) . '</li>';
687
- echo '</ul>';
688
-
689
- echo '<h5>' . __( 'Activating a Layout', 'option-tree' ) . ':</h5>';
690
- echo '<ul class="docs-ul">';
691
- echo '<li>'. __( 'Go to the <code>Appearance->Theme Options</code> page.', 'option-tree' ) . '</li>';
692
- echo '<li>' . __( 'Choose a layout from the select list and click the "Activate Layout" button.', 'option-tree' ) . '</li>';
693
- echo '</ul>';
694
-
695
- echo '<h5>' . __( 'Deleting a Layout', 'option-tree' ) . ':</h5>';
696
- echo '<ul class="docs-ul">';
697
- echo '<li>'. __( 'End-Users mode does not allow deleting layouts.', 'option-tree' ) . '</li>';
698
- echo '</ul>';
699
-
700
- echo '<h5>' . __( 'Edit Layout Data', 'option-tree' ) . ':</h5>';
701
- echo '<ul class="docs-ul">';
702
- echo '<li>'. __( 'Go to the <code>Appearance->Theme Options</code> tab.', 'option-tree' ) . '</li>';
703
- echo '<li>' . __( 'Modify and save your theme options and the layout will be updated automatically.', 'option-tree' ) . '</li>';
704
- echo '<li>' . __( 'Saving theme options data will update the currently active layout, so before you start saving make sure you want to modify the current layout.', 'option-tree' ) . '</li>';
705
- echo '</ul>';
706
-
707
- echo '</div>';
708
-
709
- echo '</div>';
710
-
711
- }
712
-
713
- }
714
-
715
- /**
716
- * Meta Boxes option type.
717
- *
718
- * @return string
719
- *
720
- * @access public
721
- * @since 2.0
722
- */
723
- if ( ! function_exists( 'ot_type_meta_boxes' ) ) {
724
-
725
- function ot_type_meta_boxes() {
726
-
727
- /* format setting outer wrapper */
728
- echo '<div class="format-setting type-textblock wide-desc">';
729
-
730
- /* description */
731
- echo '<div class="description">';
732
-
733
- echo '<h4>'. __( 'How-to-guide', 'option-tree' ) . '</h4>';
734
-
735
- echo '<p>' . __( 'There are a few simple steps you need to take in order to use OptionTree\'s built in Meta Box API. In the code below I\'ll show you a basic demo of how to create your very own custom meta box using any number of the option types you have at your disposal. If you would like to see some demo code, there is a directory named <code>theme-mode</code> inside the <code>assets</code> directory that contains a file named <code>demo-meta-boxes.php</code> you can reference.', 'option-tree' ) . '</p>';
736
-
737
- echo '<p>' . __( 'It\'s important to note that Meta Boxes do not support WYSIWYG editors at this time and if you set one of your options to Textarea it will automatically revert to a Textarea Simple until a valid solution is found. WordPress released this statement regarding the wp_editor() function:', 'option-tree' ) . '</p>';
738
-
739
- echo '<blockquote>' . __( 'Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. What this means in practical terms, is that you cannot put it in meta-boxes that can be dragged and placed elsewhere on the page.', 'option-tree' ) . '</blockquote>';
740
-
741
- echo '<h5>' . __( 'Create and include your custom meta boxes file.', 'option-tree' ) . '</h5>';
742
- echo '<ul class="docs-ul">';
743
- echo '<li>'. __( 'Create a file and name it anything you want, maybe <code>meta-boxes.php</code>.', 'option-tree' ) . '</li>';
744
- echo '<li>'. __( 'As well, you\'ll probably want to create a directory named <code>includes</code> to put your <code>meta-boxes.php</code> into which will help keep you file structure nice and tidy.', 'option-tree' ) . '</li>';
745
- echo '<li>' . __( 'Add the following code to your <code>functions.php</code>.', 'option-tree' ) . '</li>';
746
- echo '</ul>';
747
-
748
- echo '<pre><code>/**
749
- * Meta Boxes
750
- */
751
- require( trailingslashit( get_template_directory() ) . \'includes/meta-boxes.php\' );
752
- </code></pre>';
753
-
754
- echo '<ul class="docs-ul">';
755
- echo '<li>' . __( 'Add a variation of the following code to your <code>meta-boxes.php</code>. You\'ll obviously need to fill it in with all your custom array values. It\'s important to note here that we use the <code>admin_init</code> filter because if you were to call the <code>ot_register_meta_box</code> function before OptionTree was loaded the sky would fall on your head.', 'option-tree' ) . '</li>';
756
- echo '</ul>';
757
-
758
- echo "<pre><code>/**
759
- * Initialize the meta boxes.
760
- */
761
- add_action( 'admin_init', 'custom_meta_boxes' );
762
-
763
- function custom_meta_boxes() {
764
-
765
- &#36;my_meta_box = array(
766
- 'id' => 'my_meta_box',
767
- 'title' => 'My Meta Box',
768
- 'desc' => '',
769
- 'pages' => array( 'post' ),
770
- 'context' => 'normal',
771
- 'priority' => 'high',
772
- 'fields' => array(
773
- array(
774
- 'id' => 'background',
775
- 'label' => 'Background',
776
- 'desc' => '',
777
- 'std' => '',
778
- 'type' => 'background',
779
- 'class' => '',
780
- 'choices' => array()
781
- )
782
- )
783
- );
784
-
785
- ot_register_meta_box( &#36;my_meta_box );
786
-
787
- }</code></pre>";
788
-
789
- echo '</div>';
790
-
791
- echo '</div>';
792
-
793
- }
794
-
795
- }
796
-
797
- /**
798
- * Theme Mode option type.
799
- *
800
- * @return string
801
- *
802
- * @access public
803
- * @since 2.0
804
- */
805
- if ( ! function_exists( 'ot_type_theme_mode' ) ) {
806
-
807
- function ot_type_theme_mode() {
808
-
809
- /* format setting outer wrapper */
810
- echo '<div class="format-setting type-textblock wide-desc">';
811
-
812
- /* description */
813
- echo '<div class="description">';
814
-
815
- echo '<h4>'. __( 'How-to-guide', 'option-tree' ) . '</h4>';
816
-
817
- echo '<p>' . __( 'There are a few simple steps you need to take in order to use OptionTree as a theme included module. In the code below I\'ll show you a basic demo of how to include the entire plugin as a module, which will allow you to have the most up-to-date version of OptionTree without ever needing to hack the core of the plugin. If you would like to see some demo code, there is a directory named <code>theme-mode</code> inside the <code>assets</code> directory that contains a file named <code>demo-theme-options.php</code> you can reference.', 'option-tree' ) . '</p>';
818
-
819
- echo '<h5>' . __( 'Step 1: Include the plugin & turn on theme mode.', 'option-tree' ) . '</h5>';
820
- echo '<ul class="docs-ul">';
821
- echo '<li>' . sprintf( __( 'Download the latest version of %s and unarchive the %s directory.', 'option-tree' ), '<a href="http://wordpress.org/extend/plugins/option-tree/" rel="nofollow" target="_blank">' . __( 'OptionTree', 'option-tree' ) . '</a>', '<code>.zip</code>' ) . '</li>';
822
- echo '<li>' . sprintf( __( 'Put the %s directory in the root of your theme. For example, the server path would be %s.', 'option-tree' ), '<code>option-tree</code>', '<code>/wp-content/themes/theme-name/option-tree/</code>' ) . '</li>';
823
- echo '<li>' . sprintf( __( 'Add the following code to the beginning of your %s.', 'option-tree' ), '<code>functions.php</code>' ) . '</li>';
824
- echo '</ul>';
825
-
826
- echo '<pre><code>/**
827
- * Required: set \'ot_theme_mode\' filter to true.
828
- */
829
- add_filter( \'ot_theme_mode\', \'__return_true\' );
830
-
831
- /**
832
- * Required: include OptionTree.
833
- */
834
- require( trailingslashit( get_template_directory() ) . \'option-tree/ot-loader.php\' );
835
- </code></pre>';
836
-
837
- echo '<p>' . sprintf( __( 'For a list of all the OptionTree UI display filters refer to the %s file found in the %s directory of this plugin. This file is the starting point for developing themes with Theme Mode.', 'option-tree' ), '<code>demo-functions.php</code>', '<code>/assets/theme-mode/</code>' ) . '</p>';
838
-
839
- echo '<p class="aside">' . __( 'You now have OptionTree built into your theme and anytime an update is available replace the old version with the new one.', 'option-tree' ) . '</p>';
840
-
841
- echo '<h5>' . __( 'Step 2: Create Theme Options without using the UI Builder.', 'option-tree' ) . '</h5>';
842
- echo '<ul class="docs-ul">';
843
- echo '<li>'. __( 'Create a file and name it anything you want, maybe <code>theme-options.php</code>, or use the built in file export to create it for you. Remember, you should always check the file for errors before including it in your theme.', 'option-tree' ) . '</li>';
844
- echo '<li>'. __( 'As well, you\'ll probably want to create a directory named <code>includes</code> to put your <code>theme-options.php</code> into which will help keep you file structure nice and tidy.', 'option-tree' ) . '</li>';
845
- echo '<li>' . __( 'Add the following code to your <code>functions.php</code>.', 'option-tree' ) . '</li>';
846
- echo '</ul>';
847
-
848
- echo '<pre><code>/**
849
- * Theme Options
850
- */
851
- require( trailingslashit( get_template_directory() ) . \'includes/theme-options.php\' );
852
- </code></pre>';
853
-
854
- echo '<ul class="docs-ul">';
855
- echo '<li>' . __( 'Add a variation of the following code to your <code>theme-options.php</code>. You\'ll obviously need to fill it in with all your custom array values for contextual help (optional), sections (required), and settings (required).', 'option-tree' ) . '</li>';
856
- echo '</ul>';
857
-
858
- echo '<p>' . __( 'The code below is a boilerplate to get your started. For a full list of the available option types click the "Option Types" tab above. Also a quick note, you don\'t need to put OptionTree in theme mode to manually create options but you will want to hide the docs and settings as each time you load the admin area the settings be written over with the code below if they\'ve changed in any way. However, this ensures your settings do not get tampered with by the end-user.', 'option-tree' ) . '</p>';
859
-
860
- echo "<pre><code>/**
861
- * Initialize the options before anything else.
862
- */
863
- add_action( 'init', 'custom_theme_options', 1 );
864
-
865
- /**
866
- * Build the custom settings & update OptionTree.
867
- */
868
- function custom_theme_options() {
869
-
870
- /* OptionTree is not loaded yet, or this is not an admin request */
871
- if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
872
- return false;
873
-
874
- /**
875
- * Get a copy of the saved settings array.
876
- */
877
- &#36;saved_settings = get_option( 'option_tree_settings', array() );
878
-
879
- /**
880
- * Custom settings array that will eventually be
881
- * passes to the OptionTree Settings API Class.
882
- */
883
- &#36;custom_settings = array(
884
- 'contextual_help' => array(
885
- 'content' => array(
886
- array(
887
- 'id' => 'general_help',
888
- 'title' => 'General',
889
- 'content' => '&lt;p&gt;Help content goes here!&lt;/p&gt;'
890
- )
891
- ),
892
- 'sidebar' => '&lt;p&gt;Sidebar content goes here!&lt;/p&gt;',
893
- ),
894
- 'sections' => array(
895
- array(
896
- 'id' => 'general',
897
- 'title' => 'General'
898
- )
899
- ),
900
- 'settings' => array(
901
- array(
902
- 'id' => 'my_checkbox',
903
- 'label' => 'Checkbox',
904
- 'desc' => '',
905
- 'std' => '',
906
- 'type' => 'checkbox',
907
- 'section' => 'general',
908
- 'class' => '',
909
- 'choices' => array(
910
- array(
911
- 'value' => 'yes',
912
- 'label' => 'Yes'
913
- )
914
- )
915
- ),
916
- array(
917
- 'id' => 'my_layout',
918
- 'label' => 'Layout',
919
- 'desc' => 'Choose a layout for your theme',
920
- 'std' => 'right-sidebar',
921
- 'type' => 'radio-image',
922
- 'section' => 'general',
923
- 'class' => '',
924
- 'choices' => array(
925
- array(
926
- 'value' => 'left-sidebar',
927
- 'label' => 'Left Sidebar',
928
- 'src' => OT_URL . '/assets/images/layout/left-sidebar.png'
929
- ),
930
- array(
931
- 'value' => 'right-sidebar',
932
- 'label' => 'Right Sidebar',
933
- 'src' => OT_URL . '/assets/images/layout/right-sidebar.png'
934
- ),
935
- array(
936
- 'value' => 'full-width',
937
- 'label' => 'Full Width (no sidebar)',
938
- 'src' => OT_URL . '/assets/images/layout/full-width.png'
939
- ),
940
- array(
941
- 'value' => 'dual-sidebar',
942
- 'label' => __( 'Dual Sidebar', 'option-tree' ),
943
- 'src' => OT_URL . '/assets/images/layout/dual-sidebar.png'
944
- ),
945
- array(
946
- 'value' => 'left-dual-sidebar',
947
- 'label' => __( 'Left Dual Sidebar', 'option-tree' ),
948
- 'src' => OT_URL . '/assets/images/layout/left-dual-sidebar.png'
949
- ),
950
- array(
951
- 'value' => 'right-dual-sidebar',
952
- 'label' => __( 'Right Dual Sidebar', 'option-tree' ),
953
- 'src' => OT_URL . '/assets/images/layout/right-dual-sidebar.png'
954
- )
955
- )
956
- ),
957
- array(
958
- 'id' => 'my_slider',
959
- 'label' => 'Images',
960
- 'desc' => '',
961
- 'std' => '',
962
- 'type' => 'list-item',
963
- 'section' => 'general',
964
- 'class' => '',
965
- 'choices' => array(),
966
- 'settings' => array(
967
- array(
968
- 'id' => 'slider_image',
969
- 'label' => 'Image',
970
- 'desc' => '',
971
- 'std' => '',
972
- 'type' => 'upload',
973
- 'class' => '',
974
- 'choices' => array()
975
- ),
976
- array(
977
- 'id' => 'slider_link',
978
- 'label' => 'Link to Post',
979
- 'desc' => 'Enter the posts url.',
980
- 'std' => '',
981
- 'type' => 'text',
982
- 'class' => '',
983
- 'choices' => array()
984
- ),
985
- array(
986
- 'id' => 'slider_description',
987
- 'label' => 'Description',
988
- 'desc' => 'This text is used to add fancy captions in the slider.',
989
- 'std' => '',
990
- 'type' => 'textarea',
991
- 'class' => '',
992
- 'choices' => array()
993
- )
994
- )
995
- )
996
- )
997
- );
998
-
999
- /* settings are not the same update the DB */
1000
- if ( &#36;saved_settings !== &#36;custom_settings ) {
1001
- update_option( 'option_tree_settings', &#36;custom_settings );
1002
- }
1003
-
1004
- /* Lets OptionTree know the UI Builder is being overridden */
1005
- global &#36;ot_has_custom_theme_options;
1006
- &#36;ot_has_custom_theme_options = true;
1007
-
1008
- }
1009
- </code></pre>";
1010
-
1011
- echo '</div>';
1012
-
1013
- echo '</div>';
1014
-
1015
- }
1016
-
1017
- }
1018
-
1019
- /* End of file ot-functions-docs-page.php */
1020
- /* Location: ./includes/ot-functions-docs-page.php */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/includes/ot-functions-option-types.php DELETED
@@ -1,3227 +0,0 @@
1
- <?php
2
- /**
3
- * OptionTree Option Type Functions.
4
- *
5
- * Functions used to build each option type.
6
- *
7
- * @package OptionTree
8
- */
9
-
10
- if ( ! defined( 'OT_VERSION' ) ) {
11
- exit( 'No direct script access allowed' );
12
- }
13
-
14
- if ( ! function_exists( 'ot_display_by_type' ) ) {
15
-
16
- /**
17
- * Builds the HTML for each of the available option types by calling those
18
- * function with call_user_func and passing the arguments to the second param.
19
- *
20
- * All fields are required!
21
- *
22
- * @param array $args The array of arguments are as follows.
23
- * @var string $type Type of option.
24
- * @var string $field_id The field ID.
25
- * @var string $field_name The field Name.
26
- * @var mixed $field_value The field value is a string or an array of values.
27
- * @var string $field_desc The field description.
28
- * @var string $field_std The standard value.
29
- * @var string $field_class Extra CSS classes.
30
- * @var array $field_choices The array of option choices.
31
- * @var array $field_settings The array of settings for a list item.
32
- *
33
- * @access public
34
- * @since 2.0
35
- */
36
- function ot_display_by_type( $args = array() ) {
37
-
38
- // Allow filters to be executed on the array.
39
- $args = apply_filters( 'ot_display_by_type', $args );
40
-
41
- if ( empty( $args['type'] ) ) {
42
- return;
43
- }
44
-
45
- // Build the function name.
46
- $function_name_by_type = str_replace( '-', '_', 'ot_type_' . $args['type'] );
47
-
48
- // Call the function & pass in arguments array.
49
- if ( function_exists( $function_name_by_type ) ) {
50
- call_user_func( $function_name_by_type, $args );
51
- } else {
52
- echo '<p>' . esc_html__( 'Sorry, this function does not exist', 'option-tree' ) . '</p>';
53
- }
54
-
55
- }
56
- }
57
-
58
- if ( ! function_exists( 'ot_type_background' ) ) {
59
-
60
- /**
61
- * Background option type.
62
- *
63
- * See @ot_display_by_type to see the full list of available arguments.
64
- *
65
- * @param array $args An array of arguments.
66
- *
67
- * @access public
68
- * @since 2.0
69
- */
70
- function ot_type_background( $args = array() ) {
71
-
72
- // Turns arguments array into variables.
73
- extract( $args ); // phpcs:ignore
74
-
75
- // Verify a description.
76
- $has_desc = ! empty( $field_desc ) ? true : false;
77
-
78
- // If an attachment ID is stored here fetch its URL and replace the value.
79
- if ( isset( $field_value['background-image'] ) && wp_attachment_is_image( $field_value['background-image'] ) ) {
80
-
81
- $attachment_data = wp_get_attachment_image_src( $field_value['background-image'], 'original' );
82
-
83
- /* check for attachment data */
84
- if ( $attachment_data ) {
85
-
86
- $field_src = $attachment_data[0];
87
-
88
- }
89
- }
90
-
91
- // Format setting outer wrapper.
92
- echo '<div class="format-setting type-background ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
93
-
94
- // Description.
95
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
96
-
97
- // Format setting inner wrapper.
98
- echo '<div class="format-setting-inner">';
99
-
100
- // Allow fields to be filtered.
101
- $ot_recognized_background_fields = apply_filters(
102
- 'ot_recognized_background_fields',
103
- array(
104
- 'background-color',
105
- 'background-repeat',
106
- 'background-attachment',
107
- 'background-position',
108
- 'background-size',
109
- 'background-image',
110
- ),
111
- $field_id
112
- );
113
-
114
- echo '<div class="ot-background-group">';
115
-
116
- // Build background color.
117
- if ( in_array( 'background-color', $ot_recognized_background_fields, true ) ) {
118
-
119
- echo '<div class="option-tree-ui-colorpicker-input-wrap">';
120
-
121
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
122
-
123
- $background_color = isset( $field_value['background-color'] ) ? $field_value['background-color'] : '';
124
-
125
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[background-color]" id="' . esc_attr( $field_id ) . '-picker" value="' . esc_attr( $background_color ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
126
-
127
- echo '</div>';
128
- }
129
-
130
- // Build background repeat.
131
- if ( in_array( 'background-repeat', $ot_recognized_background_fields, true ) ) {
132
-
133
- $background_repeat = isset( $field_value['background-repeat'] ) ? esc_attr( $field_value['background-repeat'] ) : '';
134
-
135
- echo '<select name="' . esc_attr( $field_name ) . '[background-repeat]" id="' . esc_attr( $field_id ) . '-repeat" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
136
-
137
- echo '<option value="">' . esc_html__( 'background-repeat', 'option-tree' ) . '</option>';
138
- foreach ( ot_recognized_background_repeat( $field_id ) as $key => $value ) {
139
-
140
- echo '<option value="' . esc_attr( $key ) . '" ' . selected( $background_repeat, $key, false ) . '>' . esc_attr( $value ) . '</option>';
141
- }
142
-
143
- echo '</select>';
144
- }
145
-
146
- // Build background attachment.
147
- if ( in_array( 'background-attachment', $ot_recognized_background_fields, true ) ) {
148
-
149
- $background_attachment = isset( $field_value['background-attachment'] ) ? $field_value['background-attachment'] : '';
150
-
151
- echo '<select name="' . esc_attr( $field_name ) . '[background-attachment]" id="' . esc_attr( $field_id ) . '-attachment" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
152
-
153
- echo '<option value="">' . esc_html__( 'background-attachment', 'option-tree' ) . '</option>';
154
-
155
- foreach ( ot_recognized_background_attachment( $field_id ) as $key => $value ) {
156
-
157
- echo '<option value="' . esc_attr( $key ) . '" ' . selected( $background_attachment, $key, false ) . '>' . esc_attr( $value ) . '</option>';
158
- }
159
-
160
- echo '</select>';
161
- }
162
-
163
- // Build background position.
164
- if ( in_array( 'background-position', $ot_recognized_background_fields, true ) ) {
165
-
166
- $background_position = isset( $field_value['background-position'] ) ? $field_value['background-position'] : '';
167
-
168
- echo '<select name="' . esc_attr( $field_name ) . '[background-position]" id="' . esc_attr( $field_id ) . '-position" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
169
-
170
- echo '<option value="">' . esc_html__( 'background-position', 'option-tree' ) . '</option>';
171
-
172
- foreach ( ot_recognized_background_position( $field_id ) as $key => $value ) {
173
-
174
- echo '<option value="' . esc_attr( $key ) . '" ' . selected( $background_position, $key, false ) . '>' . esc_attr( $value ) . '</option>';
175
- }
176
-
177
- echo '</select>';
178
- }
179
-
180
- // Build background size .
181
- if ( in_array( 'background-size', $ot_recognized_background_fields, true ) ) {
182
-
183
- /**
184
- * Use this filter to create a select instead of an text input.
185
- * Be sure to return the array in the correct format. Add an empty
186
- * value to the first choice so the user can leave it blank.
187
- *
188
- * Example: array(
189
- * array(
190
- * 'label' => 'background-size',
191
- * 'value' => ''
192
- * ),
193
- * array(
194
- * 'label' => 'cover',
195
- * 'value' => 'cover'
196
- * ),
197
- * array(
198
- * 'label' => 'contain',
199
- * 'value' => 'contain'
200
- * )
201
- * )
202
- */
203
- $choices = apply_filters( 'ot_type_background_size_choices', '', $field_id );
204
-
205
- if ( is_array( $choices ) && ! empty( $choices ) ) {
206
-
207
- // Build select.
208
- echo '<select name="' . esc_attr( $field_name ) . '[background-size]" id="' . esc_attr( $field_id ) . '-size" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
209
-
210
- foreach ( (array) $choices as $choice ) {
211
- if ( isset( $choice['value'] ) && isset( $choice['label'] ) ) {
212
- echo '<option value="' . esc_attr( $choice['value'] ) . '" ' . selected( ( isset( $field_value['background-size'] ) ? $field_value['background-size'] : '' ), $choice['value'], false ) . '>' . esc_attr( $choice['label'] ) . '</option>';
213
- }
214
- }
215
-
216
- echo '</select>';
217
- } else {
218
-
219
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[background-size]" id="' . esc_attr( $field_id ) . '-size" value="' . esc_attr( isset( $field_value['background-size'] ) ? $field_value['background-size'] : '' ) . '" class="widefat ot-background-size-input option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'background-size', 'option-tree' ) . '" />';
220
- }
221
- }
222
-
223
- echo '</div>';
224
-
225
- // Build background image.
226
- if ( in_array( 'background-image', $ot_recognized_background_fields, true ) ) {
227
-
228
- echo '<div class="option-tree-ui-upload-parent">';
229
-
230
- // Input.
231
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[background-image]" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( isset( $field_value['background-image'] ) ? $field_value['background-image'] : '' ) . '" class="widefat option-tree-ui-upload-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'background-image', 'option-tree' ) . '" />';
232
-
233
- // Add media button.
234
- echo '<a href="javascript:void(0);" class="ot_upload_media option-tree-ui-button button button-primary light" rel="' . esc_attr( $post_id ) . '" title="' . esc_html__( 'Add Media', 'option-tree' ) . '"><span class="icon ot-icon-plus-circle"></span>' . esc_html__( 'Add Media', 'option-tree' ) . '</a>';
235
-
236
- echo '</div>';
237
-
238
- // Media.
239
- if ( isset( $field_value['background-image'] ) && '' !== $field_value['background-image'] ) {
240
-
241
- /* replace image src */
242
- if ( isset( $field_src ) ) {
243
- $field_value['background-image'] = $field_src;
244
- }
245
-
246
- echo '<div class="option-tree-ui-media-wrap" id="' . esc_attr( $field_id ) . '_media">';
247
-
248
- if ( preg_match( '/\.(?:jpe?g|png|gif|ico)$/i', $field_value['background-image'] ) ) {
249
- echo '<div class="option-tree-ui-image-wrap"><img src="' . esc_url_raw( $field_value['background-image'] ) . '" alt="" /></div>';
250
- }
251
-
252
- echo '<a href="javascript:(void);" class="option-tree-ui-remove-media option-tree-ui-button button button-secondary light" title="' . esc_html__( 'Remove Media', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"></span>' . esc_html__( 'Remove Media', 'option-tree' ) . '</a>';
253
-
254
- echo '</div>';
255
- }
256
- }
257
-
258
- echo '</div>';
259
-
260
- echo '</div>';
261
- }
262
- }
263
-
264
- if ( ! function_exists( 'ot_type_border' ) ) {
265
-
266
- /**
267
- * Border Option Type
268
- *
269
- * See @ot_display_by_type to see the full list of available arguments.
270
- *
271
- * @param array $args The options arguments.
272
- *
273
- * @access public
274
- * @since 2.5.0
275
- */
276
- function ot_type_border( $args = array() ) {
277
-
278
- // Turns arguments array into variables.
279
- extract( $args ); // phpcs:ignore
280
-
281
- // Verify a description.
282
- $has_desc = ! empty( $field_desc ) ? true : false;
283
-
284
- // Format setting outer wrapper.
285
- echo '<div class="format-setting type-border ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
286
-
287
- // Description.
288
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
289
-
290
- // Format setting inner wrapper.
291
- echo '<div class="format-setting-inner">';
292
-
293
- // Allow fields to be filtered.
294
- $ot_recognized_border_fields = apply_filters(
295
- 'ot_recognized_border_fields',
296
- array(
297
- 'width',
298
- 'unit',
299
- 'style',
300
- 'color',
301
- ),
302
- $field_id
303
- );
304
-
305
- // Build border width.
306
- if ( in_array( 'width', $ot_recognized_border_fields, true ) ) {
307
-
308
- $width = isset( $field_value['width'] ) ? $field_value['width'] : '';
309
-
310
- echo '<div class="ot-option-group ot-option-group--one-sixth"><input type="text" name="' . esc_attr( $field_name ) . '[width]" id="' . esc_attr( $field_id ) . '-width" value="' . esc_attr( $width ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'width', 'option-tree' ) . '" /></div>';
311
- }
312
-
313
- // Build unit dropdown.
314
- if ( in_array( 'unit', $ot_recognized_border_fields, true ) ) {
315
-
316
- echo '<div class="ot-option-group ot-option-group--one-fourth">';
317
-
318
- echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
319
-
320
- echo '<option value="">' . esc_html__( 'unit', 'option-tree' ) . '</option>';
321
-
322
- foreach ( ot_recognized_border_unit_types( $field_id ) as $unit ) {
323
- echo '<option value="' . esc_attr( $unit ) . '" ' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
324
- }
325
-
326
- echo '</select>';
327
-
328
- echo '</div>';
329
- }
330
-
331
- // Build style dropdown.
332
- if ( in_array( 'style', $ot_recognized_border_fields, true ) ) {
333
-
334
- echo '<div class="ot-option-group ot-option-group--one-fourth">';
335
-
336
- echo '<select name="' . esc_attr( $field_name ) . '[style]" id="' . esc_attr( $field_id ) . '-style" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
337
-
338
- echo '<option value="">' . esc_html__( 'style', 'option-tree' ) . '</option>';
339
-
340
- foreach ( ot_recognized_border_style_types( $field_id ) as $key => $style ) {
341
- echo '<option value="' . esc_attr( $key ) . '" ' . ( isset( $field_value['style'] ) ? selected( $field_value['style'], $key, false ) : '' ) . '>' . esc_attr( $style ) . '</option>';
342
- }
343
-
344
- echo '</select>';
345
-
346
- echo '</div>';
347
- }
348
-
349
- // Build color.
350
- if ( in_array( 'color', $ot_recognized_border_fields, true ) ) {
351
-
352
- echo '<div class="option-tree-ui-colorpicker-input-wrap">';
353
-
354
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
355
-
356
- $color = isset( $field_value['color'] ) ? $field_value['color'] : '';
357
-
358
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . esc_attr( $field_id ) . '-picker" value="' . esc_attr( $color ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
359
-
360
- echo '</div>';
361
- }
362
-
363
- echo '</div>';
364
-
365
- echo '</div>';
366
- }
367
- }
368
-
369
- if ( ! function_exists( 'ot_type_box_shadow' ) ) {
370
-
371
- /**
372
- * Box Shadow Option Type
373
- *
374
- * See @ot_display_by_type to see the full list of available arguments.
375
- *
376
- * @param array $args The options arguments.
377
- *
378
- * @access public
379
- * @since 2.5.0
380
- */
381
- function ot_type_box_shadow( $args = array() ) {
382
-
383
- // Turns arguments array into variables.
384
- extract( $args ); // phpcs:ignore
385
-
386
- // Verify a description.
387
- $has_desc = ! empty( $field_desc ) ? true : false;
388
-
389
- // Format setting outer wrapper.
390
- echo '<div class="format-setting type-box-shadow ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
391
-
392
- // Description.
393
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
394
-
395
- // Format setting inner wrapper.
396
- echo '<div class="format-setting-inner">';
397
-
398
- // Allow fields to be filtered.
399
- $ot_recognized_box_shadow_fields = apply_filters(
400
- 'ot_recognized_box_shadow_fields',
401
- array(
402
- 'inset',
403
- 'offset-x',
404
- 'offset-y',
405
- 'blur-radius',
406
- 'spread-radius',
407
- 'color',
408
- ),
409
- $field_id
410
- );
411
-
412
- // Build inset.
413
- if ( in_array( 'inset', $ot_recognized_box_shadow_fields, true ) ) {
414
-
415
- echo '<div class="ot-option-group ot-option-group--checkbox"><p>';
416
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[inset]" id="' . esc_attr( $field_id ) . '-inset" value="inset" ' . ( isset( $field_value['inset'] ) ? checked( $field_value['inset'], 'inset', false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
417
- echo '<label for="' . esc_attr( $field_id ) . '-inset">inset</label>';
418
- echo '</p></div>';
419
- }
420
-
421
- // Build horizontal offset.
422
- if ( in_array( 'offset-x', $ot_recognized_box_shadow_fields, true ) ) {
423
-
424
- $offset_x = isset( $field_value['offset-x'] ) ? esc_attr( $field_value['offset-x'] ) : '';
425
-
426
- echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-h ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[offset-x]" id="' . esc_attr( $field_id ) . '-offset-x" value="' . esc_attr( $offset_x ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'offset-x', 'option-tree' ) . '" /></div>';
427
- }
428
-
429
- // Build vertical offset.
430
- if ( in_array( 'offset-y', $ot_recognized_box_shadow_fields, true ) ) {
431
-
432
- $offset_y = isset( $field_value['offset-y'] ) ? esc_attr( $field_value['offset-y'] ) : '';
433
-
434
- echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-v ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[offset-y]" id="' . esc_attr( $field_id ) . '-offset-y" value="' . esc_attr( $offset_y ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'offset-y', 'option-tree' ) . '" /></div>';
435
- }
436
-
437
- // Build blur-radius radius.
438
- if ( in_array( 'blur-radius', $ot_recognized_box_shadow_fields, true ) ) {
439
-
440
- $blur_radius = isset( $field_value['blur-radius'] ) ? esc_attr( $field_value['blur-radius'] ) : '';
441
-
442
- echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-circle ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[blur-radius]" id="' . esc_attr( $field_id ) . '-blur-radius" value="' . esc_attr( $blur_radius ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'blur-radius', 'option-tree' ) . '" /></div>';
443
- }
444
-
445
- // Build spread-radius radius.
446
- if ( in_array( 'spread-radius', $ot_recognized_box_shadow_fields, true ) ) {
447
-
448
- $spread_radius = isset( $field_value['spread-radius'] ) ? esc_attr( $field_value['spread-radius'] ) : '';
449
-
450
- echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-alt ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[spread-radius]" id="' . esc_attr( $field_id ) . '-spread-radius" value="' . esc_attr( $spread_radius ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'spread-radius', 'option-tree' ) . '" /></div>';
451
- }
452
-
453
- // Build color.
454
- if ( in_array( 'color', $ot_recognized_box_shadow_fields, true ) ) {
455
-
456
- echo '<div class="option-tree-ui-colorpicker-input-wrap">';
457
-
458
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
459
-
460
- $color = isset( $field_value['color'] ) ? $field_value['color'] : '';
461
-
462
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . esc_attr( $field_id ) . '-picker" value="' . esc_attr( $color ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
463
-
464
- echo '</div>';
465
- }
466
-
467
- echo '</div>';
468
-
469
- echo '</div>';
470
- }
471
- }
472
-
473
- if ( ! function_exists( 'ot_type_category_checkbox' ) ) {
474
-
475
- /**
476
- * Category Checkbox option type.
477
- *
478
- * See @ot_display_by_type to see the full list of available arguments.
479
- *
480
- * @param array $args An array of arguments.
481
- *
482
- * @access public
483
- * @since 2.0
484
- */
485
- function ot_type_category_checkbox( $args = array() ) {
486
-
487
- // Turns arguments array into variables.
488
- extract( $args );// phpcs:ignore
489
-
490
- // Verify a description.
491
- $has_desc = ! empty( $field_desc ) ? true : false;
492
-
493
- // Format setting outer wrapper.
494
- echo '<div class="format-setting type-category-checkbox type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
495
-
496
- // Description.
497
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
498
-
499
- // Format setting inner wrapper.
500
- echo '<div class="format-setting-inner">';
501
-
502
- // Get category array.
503
- $categories = get_categories( apply_filters( 'ot_type_category_checkbox_query', array( 'hide_empty' => false ), $field_id ) );
504
-
505
- // Build categories.
506
- if ( ! empty( $categories ) ) {
507
- foreach ( $categories as $category ) {
508
- echo '<p>';
509
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $category->term_id ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $category->term_id ) . '" value="' . esc_attr( $category->term_id ) . '" ' . ( isset( $field_value[ $category->term_id ] ) ? checked( $field_value[ $category->term_id ], $category->term_id, false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
510
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $category->term_id ) . '">' . esc_attr( $category->name ) . '</label>';
511
- echo '</p>';
512
- }
513
- } else {
514
- echo '<p>' . esc_html__( 'No Categories Found', 'option-tree' ) . '</p>';
515
- }
516
-
517
- echo '</div>';
518
-
519
- echo '</div>';
520
- }
521
- }
522
-
523
- if ( ! function_exists( 'ot_type_category_select' ) ) {
524
-
525
- /**
526
- * Category Select option type.
527
- *
528
- * See @ot_display_by_type to see the full list of available arguments.
529
- *
530
- * @param array $args An array of arguments.
531
- *
532
- * @access public
533
- * @since 2.0
534
- */
535
- function ot_type_category_select( $args = array() ) {
536
-
537
- // Turns arguments array into variables.
538
- extract( $args ); // phpcs:ignore
539
-
540
- // Verify a description.
541
- $has_desc = ! empty( $field_desc ) ? true : false;
542
-
543
- // Format setting outer wrapper.
544
- echo '<div class="format-setting type-category-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
545
-
546
- // Description.
547
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
548
-
549
- // Format setting inner wrapper.
550
- echo '<div class="format-setting-inner">';
551
-
552
- // Build category.
553
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
554
-
555
- // Get category array.
556
- $categories = get_categories( apply_filters( 'ot_type_category_select_query', array( 'hide_empty' => false ), $field_id ) );
557
-
558
- // Has cats.
559
- if ( ! empty( $categories ) ) {
560
- echo '<option value="">-- ' . esc_html__( 'Choose One', 'option-tree' ) . ' --</option>';
561
- foreach ( $categories as $category ) {
562
- echo '<option value="' . esc_attr( $category->term_id ) . '" ' . selected( $field_value, $category->term_id, false ) . '>' . esc_attr( $category->name ) . '</option>';
563
- }
564
- } else {
565
- echo '<option value="">' . esc_html__( 'No Categories Found', 'option-tree' ) . '</option>';
566
- }
567
-
568
- echo '</select>';
569
-
570
- echo '</div>';
571
-
572
- echo '</div>';
573
- }
574
- }
575
-
576
- if ( ! function_exists( 'ot_type_checkbox' ) ) {
577
-
578
- /**
579
- * Checkbox option type.
580
- *
581
- * See @ot_display_by_type to see the full list of available arguments.
582
- *
583
- * @param array $args An array of arguments.
584
- *
585
- * @access public
586
- * @since 2.0
587
- */
588
- function ot_type_checkbox( $args = array() ) {
589
-
590
- // Turns arguments array into variables.
591
- extract( $args ); // phpcs:ignore
592
-
593
- // Verify a description.
594
- $has_desc = ! empty( $field_desc ) ? true : false;
595
-
596
- // Format setting outer wrapper.
597
- echo '<div class="format-setting type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
598
-
599
- // Description.
600
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
601
-
602
- // Format setting inner wrapper.
603
- echo '<div class="format-setting-inner">';
604
-
605
- // Build checkbox.
606
- foreach ( (array) $field_choices as $key => $choice ) {
607
- if ( isset( $choice['value'] ) && isset( $choice['label'] ) ) {
608
- echo '<p>';
609
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $key ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '" ' . ( isset( $field_value[ $key ] ) ? checked( $field_value[ $key ], $choice['value'], false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
610
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '">' . esc_attr( $choice['label'] ) . '</label>';
611
- echo '</p>';
612
- }
613
- }
614
-
615
- echo '</div>';
616
-
617
- echo '</div>';
618
- }
619
- }
620
-
621
- if ( ! function_exists( 'ot_type_colorpicker' ) ) {
622
-
623
- /**
624
- * Colorpicker option type.
625
- *
626
- * See @ot_display_by_type to see the full list of available arguments.
627
- *
628
- * @param array $args An array of arguments.
629
- *
630
- * @access public
631
- * @since 2.0
632
- * @updated 2.2.0
633
- */
634
- function ot_type_colorpicker( $args = array() ) {
635
-
636
- // Turns arguments array into variables.
637
- extract( $args ); // phpcs:ignore
638
-
639
- // Verify a description.
640
- $has_desc = ! empty( $field_desc ) ? true : false;
641
-
642
- // Format setting outer wrapper.
643
- echo '<div class="format-setting type-colorpicker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
644
-
645
- // Description.
646
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
647
-
648
- // Format setting inner wrapper.
649
- echo '<div class="format-setting-inner">';
650
-
651
- // Build colorpicker.
652
- echo '<div class="option-tree-ui-colorpicker-input-wrap">';
653
-
654
- // Colorpicker JS.
655
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '"); });</script>';
656
-
657
- // Input.
658
- echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '"' . ( ! empty( $field_std ) ? ' data-default-color="' . esc_attr( $field_std ) . '"' : '' ) . ' />';
659
-
660
- echo '</div>';
661
-
662
- echo '</div>';
663
-
664
- echo '</div>';
665
- }
666
- }
667
-
668
- if ( ! function_exists( 'ot_type_colorpicker_opacity' ) ) {
669
-
670
- /**
671
- * Colorpicker Opacity option type.
672
- *
673
- * See @ot_display_by_type to see the full list of available arguments.
674
- *
675
- * @param array $args An array of arguments.
676
- *
677
- * @access public
678
- * @since 2.5.0
679
- */
680
- function ot_type_colorpicker_opacity( $args = array() ) {
681
-
682
- $args['field_class'] = isset( $args['field_class'] ) ? $args['field_class'] . ' ot-colorpicker-opacity' : 'ot-colorpicker-opacity';
683
- ot_type_colorpicker( $args );
684
- }
685
- }
686
-
687
- if ( ! function_exists( 'ot_type_css' ) ) {
688
-
689
- /**
690
- * CSS option type.
691
- *
692
- * See @ot_display_by_type to see the full list of available arguments.
693
- *
694
- * @param array $args An array of arguments.
695
- *
696
- * @access public
697
- * @since 2.0
698
- */
699
- function ot_type_css( $args = array() ) {
700
-
701
- // Turns arguments array into variables.
702
- extract( $args ); // phpcs:ignore
703
-
704
- // Verify a description.
705
- $has_desc = ! empty( $field_desc ) ? true : false;
706
-
707
- // Format setting outer wrapper.
708
- echo '<div class="format-setting type-css simple ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
709
-
710
- // Description.
711
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
712
-
713
- // Format setting inner wrapper.
714
- echo '<div class="format-setting-inner">';
715
-
716
- // Build textarea for CSS.
717
- echo '<textarea class="hidden" id="textarea_' . esc_attr( $field_id ) . '" name="' . esc_attr( $field_name ) . '">' . esc_textarea( $field_value ) . '</textarea>';
718
-
719
- // Build pre to convert it into ace editor later.
720
- echo '<pre class="ot-css-editor ' . esc_attr( $field_class ) . '" id="' . esc_attr( $field_id ) . '">' . esc_textarea( $field_value ) . '</pre>';
721
-
722
- echo '</div>';
723
-
724
- echo '</div>';
725
- }
726
- }
727
-
728
- if ( ! function_exists( 'ot_type_custom_post_type_checkbox' ) ) {
729
-
730
- /**
731
- * Custom Post Type Checkbox option type.
732
- *
733
- * See @ot_display_by_type to see the full list of available arguments.
734
- *
735
- * @param array $args An array of arguments.
736
- *
737
- * @access public
738
- * @since 2.0
739
- */
740
- function ot_type_custom_post_type_checkbox( $args = array() ) {
741
-
742
- // Turns arguments array into variables.
743
- extract( $args ); // phpcs:ignore
744
-
745
- // Verify a description.
746
- $has_desc = ! empty( $field_desc ) ? true : false;
747
-
748
- // Format setting outer wrapper.
749
- echo '<div class="format-setting type-custom-post-type-checkbox type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
750
-
751
- // Description.
752
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
753
-
754
- // Format setting inner wrapper.
755
- echo '<div class="format-setting-inner">';
756
-
757
- // Setup the post types.
758
- $post_type = isset( $field_post_type ) ? explode( ',', $field_post_type ) : array( 'post' );
759
-
760
- // Query posts array.
761
- $my_posts = get_posts(
762
- apply_filters(
763
- 'ot_type_custom_post_type_checkbox_query',
764
- array(
765
- 'post_type' => $post_type,
766
- 'posts_per_page' => -1,
767
- 'orderby' => 'title',
768
- 'order' => 'ASC',
769
- 'post_status' => 'any',
770
- ),
771
- $field_id
772
- )
773
- );
774
-
775
- // Has posts.
776
- if ( is_array( $my_posts ) && ! empty( $my_posts ) ) {
777
- foreach ( $my_posts as $my_post ) {
778
- $post_title = ! empty( $my_post->post_title ) ? $my_post->post_title : 'Untitled';
779
- echo '<p>';
780
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $my_post->ID ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $my_post->ID ) . '" value="' . esc_attr( $my_post->ID ) . '" ' . ( isset( $field_value[ $my_post->ID ] ) ? checked( $field_value[ $my_post->ID ], $my_post->ID, false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
781
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $my_post->ID ) . '">' . esc_html( $post_title ) . '</label>';
782
- echo '</p>';
783
- }
784
- } else {
785
- echo '<p>' . esc_html__( 'No Posts Found', 'option-tree' ) . '</p>';
786
- }
787
-
788
- echo '</div>';
789
-
790
- echo '</div>';
791
- }
792
- }
793
-
794
- if ( ! function_exists( 'ot_type_custom_post_type_select' ) ) {
795
-
796
- /**
797
- * Custom Post Type Select option type.
798
- *
799
- * See @ot_display_by_type to see the full list of available arguments.
800
- *
801
- * @param array $args An array of arguments.
802
- *
803
- * @access public
804
- * @since 2.0
805
- */
806
- function ot_type_custom_post_type_select( $args = array() ) {
807
-
808
- // Turns arguments array into variables.
809
- extract( $args ); // phpcs:ignore
810
-
811
- // Verify a description.
812
- $has_desc = ! empty( $field_desc ) ? true : false;
813
-
814
- // Format setting outer wrapper.
815
- echo '<div class="format-setting type-custom-post-type-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
816
-
817
- // Description.
818
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
819
-
820
- // Format setting inner wrapper.
821
- echo '<div class="format-setting-inner">';
822
-
823
- // Build category.
824
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
825
-
826
- // Setup the post types.
827
- $post_type = isset( $field_post_type ) ? explode( ',', $field_post_type ) : array( 'post' );
828
-
829
- // Query posts array.
830
- $my_posts = get_posts(
831
- apply_filters(
832
- 'ot_type_custom_post_type_select_query',
833
- array(
834
- 'post_type' => $post_type,
835
- 'posts_per_page' => -1,
836
- 'orderby' => 'title',
837
- 'order' => 'ASC',
838
- 'post_status' => 'any',
839
- ),
840
- $field_id
841
- )
842
- );
843
-
844
- // Has posts.
845
- if ( is_array( $my_posts ) && ! empty( $my_posts ) ) {
846
- echo '<option value="">-- ' . esc_html__( 'Choose One', 'option-tree' ) . ' --</option>';
847
- foreach ( $my_posts as $my_post ) {
848
- $post_title = ! empty( $my_post->post_title ) ? $my_post->post_title : 'Untitled';
849
- echo '<option value="' . esc_attr( $my_post->ID ) . '" ' . selected( $field_value, $my_post->ID, false ) . '>' . esc_html( $post_title ) . '</option>';
850
- }
851
- } else {
852
- echo '<option value="">' . esc_html__( 'No Posts Found', 'option-tree' ) . '</option>';
853
- }
854
-
855
- echo '</select>';
856
-
857
- echo '</div>';
858
-
859
- echo '</div>';
860
- }
861
- }
862
-
863
- if ( ! function_exists( 'ot_type_date_picker' ) ) {
864
-
865
- /**
866
- * Date Picker option type.
867
- *
868
- * See @ot_display_by_type to see the full list of available arguments.
869
- *
870
- * @param array $args An array of arguments.
871
- *
872
- * @access public
873
- * @since 2.3
874
- */
875
- function ot_type_date_picker( $args = array() ) {
876
-
877
- // Turns arguments array into variables.
878
- extract( $args ); // phpcs:ignore
879
-
880
- // Verify a description.
881
- $has_desc = ! empty( $field_desc ) ? true : false;
882
-
883
- // Filter date format.
884
- $date_format = apply_filters( 'ot_type_date_picker_date_format', 'yy-mm-dd', $field_id );
885
-
886
- /**
887
- * Filter the addition of the readonly attribute.
888
- *
889
- * @since 2.5.0
890
- *
891
- * @param bool $is_readonly Whether to add the 'readonly' attribute. Default 'false'.
892
- * @param string $field_id The field ID.
893
- */
894
- $is_readonly = apply_filters( 'ot_type_date_picker_readonly', false, $field_id );
895
-
896
- // Format setting outer wrapper.
897
- echo '<div class="format-setting type-date-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
898
-
899
- // Date picker JS.
900
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_date_picker("' . esc_attr( $field_id ) . '", "' . esc_attr( $date_format ) . '"); });</script>';
901
-
902
- // Description.
903
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
904
-
905
- // Format setting inner wrapper.
906
- echo '<div class="format-setting-inner">';
907
-
908
- // Build date picker.
909
- echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '"' . ( true === $is_readonly ? ' readonly' : '' ) . ' />';
910
-
911
- echo '</div>';
912
-
913
- echo '</div>';
914
- }
915
- }
916
-
917
- if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
918
-
919
- /**
920
- * Date Time Picker option type.
921
- *
922
- * See @ot_display_by_type to see the full list of available arguments.
923
- *
924
- * @param array $args An array of arguments.
925
- *
926
- * @access public
927
- * @since 2.3
928
- */
929
- function ot_type_date_time_picker( $args = array() ) {
930
-
931
- // Turns arguments array into variables.
932
- extract( $args ); // phpcs:ignore
933
-
934
- // Verify a description.
935
- $has_desc = ! empty( $field_desc ) ? true : false;
936
-
937
- // Filter date format.
938
- $date_format = apply_filters( 'ot_type_date_time_picker_date_format', 'yy-mm-dd', $field_id );
939
-
940
- /**
941
- * Filter the addition of the readonly attribute.
942
- *
943
- * @since 2.5.0
944
- *
945
- * @param bool $is_readonly Whether to add the 'readonly' attribute. Default 'false'.
946
- * @param string $field_id The field ID.
947
- */
948
- $is_readonly = apply_filters( 'ot_type_date_time_picker_readonly', false, $field_id );
949
-
950
- // Format setting outer wrapper.
951
- echo '<div class="format-setting type-date-time-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
952
-
953
- // Date time picker JS.
954
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_date_time_picker("' . esc_attr( $field_id ) . '", "' . esc_attr( $date_format ) . '"); });</script>';
955
-
956
- // Description.
957
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
958
-
959
- // Format setting inner wrapper.
960
- echo '<div class="format-setting-inner">';
961
-
962
- // Build date time picker.
963
- echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '"' . ( true === $is_readonly ? ' readonly' : '' ) . ' />';
964
-
965
- echo '</div>';
966
-
967
- echo '</div>';
968
- }
969
- }
970
-
971
- if ( ! function_exists( 'ot_type_dimension' ) ) {
972
-
973
- /**
974
- * Dimension Option Type
975
- *
976
- * See @ot_display_by_type to see the full list of available arguments.
977
- *
978
- * @param array $args The options arguments.
979
- *
980
- * @access public
981
- * @since 2.5.0
982
- */
983
- function ot_type_dimension( $args = array() ) {
984
-
985
- // Turns arguments array into variables.
986
- extract( $args ); // phpcs:ignore
987
-
988
- // Verify a description.
989
- $has_desc = ! empty( $field_desc ) ? true : false;
990
-
991
- // Format setting outer wrapper.
992
- echo '<div class="format-setting type-dimension ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
993
-
994
- // Description.
995
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
996
-
997
- // Format setting inner wrapper.
998
- echo '<div class="format-setting-inner">';
999
-
1000
- // Allow fields to be filtered.
1001
- $ot_recognized_dimension_fields = apply_filters(
1002
- 'ot_recognized_dimension_fields',
1003
- array(
1004
- 'width',
1005
- 'height',
1006
- 'unit',
1007
- ),
1008
- $field_id
1009
- );
1010
-
1011
- // Build width dimension.
1012
- if ( in_array( 'width', $ot_recognized_dimension_fields, true ) ) {
1013
-
1014
- $width = isset( $field_value['width'] ) ? esc_attr( $field_value['width'] ) : '';
1015
- echo '<div class="ot-option-group ot-option-group--one-third"><span class="ot-icon-arrows-h ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[width]" id="' . esc_attr( $field_id ) . '-width" value="' . esc_attr( $width ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'width', 'option-tree' ) . '" /></div>';
1016
- }
1017
-
1018
- // Build height dimension.
1019
- if ( in_array( 'height', $ot_recognized_dimension_fields, true ) ) {
1020
-
1021
- $height = isset( $field_value['height'] ) ? esc_attr( $field_value['height'] ) : '';
1022
- echo '<div class="ot-option-group ot-option-group--one-third"><span class="ot-icon-arrows-v ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[height]" id="' . esc_attr( $field_id ) . '-height" value="' . esc_attr( $height ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'height', 'option-tree' ) . '" /></div>';
1023
- }
1024
-
1025
- // Build unit dropdown.
1026
- if ( in_array( 'unit', $ot_recognized_dimension_fields, true ) ) {
1027
-
1028
- echo '<div class="ot-option-group ot-option-group--one-third ot-option-group--is-last">';
1029
-
1030
- echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1031
-
1032
- echo '<option value="">' . esc_html__( 'unit', 'option-tree' ) . '</option>';
1033
-
1034
- foreach ( ot_recognized_dimension_unit_types( $field_id ) as $unit ) {
1035
- echo '<option value="' . esc_attr( $unit ) . '" ' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
1036
- }
1037
-
1038
- echo '</select>';
1039
-
1040
- echo '</div>';
1041
- }
1042
-
1043
- echo '</div>';
1044
-
1045
- echo '</div>';
1046
- }
1047
- }
1048
-
1049
- if ( ! function_exists( 'ot_type_gallery' ) ) {
1050
-
1051
- /**
1052
- * Gallery option type.
1053
- *
1054
- * See @ot_display_by_type to see the full list of available arguments.
1055
- *
1056
- * @param array $args The options arguments.
1057
- *
1058
- * @access public
1059
- * @since 2.2.0
1060
- */
1061
- function ot_type_gallery( $args = array() ) {
1062
-
1063
- // Turns arguments array into variables.
1064
- extract( $args ); // phpcs:ignore
1065
-
1066
- // Verify a description.
1067
- $has_desc = ! empty( $field_desc ) ? true : false;
1068
-
1069
- // Format setting outer wrapper.
1070
- echo '<div class="format-setting type-gallery ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1071
-
1072
- // Description.
1073
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1074
-
1075
- // Format setting inner wrapper.
1076
- echo '<div class="format-setting-inner">';
1077
-
1078
- $field_value = trim( $field_value );
1079
-
1080
- // Saved values.
1081
- echo '<input type="hidden" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="ot-gallery-value ' . esc_attr( $field_class ) . '" />';
1082
-
1083
- // Search the string for the IDs.
1084
- preg_match( '/ids=\'(.*?)\'/', $field_value, $matches );
1085
-
1086
- // Turn the field value into an array of IDs.
1087
- if ( isset( $matches[1] ) ) {
1088
-
1089
- // Found the IDs in the shortcode.
1090
- $ids = explode( ',', $matches[1] );
1091
- } else {
1092
-
1093
- // The string is only IDs.
1094
- $ids = ! empty( $field_value ) && '' !== $field_value ? explode( ',', $field_value ) : array();
1095
- }
1096
-
1097
- // Has attachment IDs.
1098
- if ( ! empty( $ids ) ) {
1099
-
1100
- echo '<ul class="ot-gallery-list">';
1101
-
1102
- foreach ( $ids as $id ) {
1103
-
1104
- if ( '' === $id ) {
1105
- continue;
1106
- }
1107
-
1108
- $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
1109
-
1110
- echo '<li><img src="' . esc_url_raw( $thumbnail[0] ) . '" width="75" height="75" /></li>';
1111
- }
1112
-
1113
- echo '</ul>';
1114
-
1115
- echo '
1116
- <div class="ot-gallery-buttons">
1117
- <a href="#" class="option-tree-ui-button button button-secondary hug-left ot-gallery-delete">' . esc_html__( 'Delete Gallery', 'option-tree' ) . '</a>
1118
- <a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . esc_html__( 'Edit Gallery', 'option-tree' ) . '</a>
1119
- </div>';
1120
-
1121
- } else {
1122
-
1123
- echo '
1124
- <div class="ot-gallery-buttons">
1125
- <a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . esc_html__( 'Create Gallery', 'option-tree' ) . '</a>
1126
- </div>';
1127
-
1128
- }
1129
-
1130
- echo '</div>';
1131
-
1132
- echo '</div>';
1133
- }
1134
- }
1135
-
1136
- if ( ! function_exists( 'ot_type_google_fonts' ) ) {
1137
-
1138
- /**
1139
- * Google Fonts option type.
1140
- *
1141
- * See @ot_display_by_type to see the full list of available arguments.
1142
- *
1143
- * @param array $args An array of arguments.
1144
- *
1145
- * @access public
1146
- * @since 2.5.0
1147
- */
1148
- function ot_type_google_fonts( $args = array() ) {
1149
-
1150
- // Turns arguments array into variables.
1151
- extract( $args ); // phpcs:ignore
1152
-
1153
- // Verify a description.
1154
- $has_desc = ! empty( $field_desc ) ? true : false;
1155
-
1156
- // Format setting outer wrapper.
1157
- echo '<div class="format-setting type-google-font ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1158
-
1159
- // Description.
1160
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1161
-
1162
- // Format setting inner wrapper.
1163
- echo '<div class="format-setting-inner">';
1164
-
1165
- // Allow fields to be filtered.
1166
- $ot_recognized_google_fonts_fields = apply_filters(
1167
- 'ot_recognized_google_font_fields',
1168
- array(
1169
- 'variants',
1170
- 'subsets',
1171
- ),
1172
- $field_id
1173
- );
1174
-
1175
- // Set a default to show at least one item.
1176
- if ( ! is_array( $field_value ) || empty( $field_value ) ) {
1177
- $field_value = array(
1178
- array(
1179
- 'family' => '',
1180
- 'variants' => array(),
1181
- 'subsets' => array(),
1182
- ),
1183
- );
1184
- }
1185
-
1186
- foreach ( $field_value as $key => $value ) {
1187
-
1188
- echo '<div class="type-google-font-group">';
1189
-
1190
- // Build font family.
1191
- $family = isset( $value['family'] ) ? $value['family'] : '';
1192
- echo '<div class="option-tree-google-font-family">';
1193
- echo '<a href="javascript:void(0);" class="js-remove-google-font option-tree-ui-button button button-secondary light" title="' . esc_html__( 'Remove Google Font', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"/>' . esc_html__( 'Remove Google Font', 'option-tree' ) . '</a>';
1194
- echo '<select name="' . esc_attr( $field_name ) . '[' . esc_attr( $key ) . '][family]" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1195
- echo '<option value="">' . esc_html__( '-- Choose One --', 'option-tree' ) . '</option>';
1196
- foreach ( ot_recognized_google_font_families( $field_id ) as $family_key => $family_value ) {
1197
- echo '<option value="' . esc_attr( $family_key ) . '" ' . selected( $family, $family_key, false ) . '>' . esc_html( $family_value ) . '</option>';
1198
- }
1199
- echo '</select>';
1200
- echo '</div>';
1201
-
1202
- // Build font variants.
1203
- if ( in_array( 'variants', $ot_recognized_google_fonts_fields, true ) ) {
1204
- $variants = isset( $value['variants'] ) ? $value['variants'] : array();
1205
- echo '<div class="option-tree-google-font-variants" data-field-id-prefix="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '-" data-field-name="' . esc_attr( $field_name ) . '[' . esc_attr( $key ) . '][variants]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1206
- foreach ( ot_recognized_google_font_variants( $field_id, $family ) as $variant_key => $variant ) {
1207
- echo '<p class="checkbox-wrap">';
1208
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $key ) . '][variants][]" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '-' . esc_attr( $variant ) . '" value="' . esc_attr( $variant ) . '" ' . checked( in_array( $variant, $variants, true ), true, false ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
1209
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '-' . esc_attr( $variant ) . '">' . esc_html( $variant ) . '</label>';
1210
- echo '</p>';
1211
- }
1212
- echo '</div>';
1213
- }
1214
-
1215
- // Build font subsets.
1216
- if ( in_array( 'subsets', $ot_recognized_google_fonts_fields, true ) ) {
1217
- $subsets = isset( $value['subsets'] ) ? $value['subsets'] : array();
1218
- echo '<div class="option-tree-google-font-subsets" data-field-id-prefix="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '-" data-field-name="' . esc_attr( $field_name ) . '[' . esc_attr( $key ) . '][subsets]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1219
- foreach ( ot_recognized_google_font_subsets( $field_id, $family ) as $subset_key => $subset ) {
1220
- echo '<p class="checkbox-wrap">';
1221
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $key ) . '][subsets][]" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '-' . esc_attr( $subset ) . '" value="' . esc_attr( $subset ) . '" ' . checked( in_array( $subset, $subsets, true ), true, false ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
1222
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '-' . esc_attr( $subset ) . '">' . esc_html( $subset ) . '</label>';
1223
- echo '</p>';
1224
- }
1225
- echo '</div>';
1226
- }
1227
-
1228
- echo '</div>';
1229
- }
1230
-
1231
- echo '<div class="type-google-font-group-clone">';
1232
-
1233
- /* build font family */
1234
- echo '<div class="option-tree-google-font-family">';
1235
- echo '<a href="javascript:void(0);" class="js-remove-google-font option-tree-ui-button button button-secondary light" title="' . esc_html__( 'Remove Google Font', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"/>' . esc_html__( 'Remove Google Font', 'option-tree' ) . '</a>';
1236
- echo '<select name="' . esc_attr( $field_name ) . '[%key%][family]" id="' . esc_attr( $field_id ) . '-%key%" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1237
- echo '<option value="">' . esc_html__( '-- Choose One --', 'option-tree' ) . '</option>';
1238
-
1239
- foreach ( ot_recognized_google_font_families( $field_id ) as $family_key => $family_value ) {
1240
- echo '<option value="' . esc_attr( $family_key ) . '">' . esc_html( $family_value ) . '</option>';
1241
- }
1242
-
1243
- echo '</select>';
1244
- echo '</div>';
1245
-
1246
- // Build font variants.
1247
- if ( in_array( 'variants', $ot_recognized_google_fonts_fields, true ) ) {
1248
- echo '<div class="option-tree-google-font-variants" data-field-id-prefix="' . esc_attr( $field_id ) . '-%key%-" data-field-name="' . esc_attr( $field_name ) . '[%key%][variants]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1249
- echo '</div>';
1250
- }
1251
-
1252
- // Build font subsets.
1253
- if ( in_array( 'subsets', $ot_recognized_google_fonts_fields, true ) ) {
1254
- echo '<div class="option-tree-google-font-subsets" data-field-id-prefix="' . esc_attr( $field_id ) . '-%key%-" data-field-name="' . esc_attr( $field_name ) . '[%key%][subsets]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
1255
- echo '</div>';
1256
- }
1257
-
1258
- echo '</div>';
1259
-
1260
- echo '<a href="javascript:void(0);" class="js-add-google-font option-tree-ui-button button button-primary right hug-right" title="' . esc_html__( 'Add Google Font', 'option-tree' ) . '">' . esc_html__( 'Add Google Font', 'option-tree' ) . '</a>';
1261
-
1262
- echo '</div>';
1263
-
1264
- echo '</div>';
1265
- }
1266
- }
1267
-
1268
- if ( ! function_exists( 'ot_type_javascript' ) ) {
1269
-
1270
- /**
1271
- * JavaScript option type.
1272
- *
1273
- * See @ot_display_by_type to see the full list of available arguments.
1274
- *
1275
- * @param array $args An array of arguments.
1276
- *
1277
- * @access public
1278
- * @since 2.5.0
1279
- */
1280
- function ot_type_javascript( $args = array() ) {
1281
-
1282
- // Turns arguments array into variables.
1283
- extract( $args ); // phpcs:ignore
1284
-
1285
- // Verify a description.
1286
- $has_desc = ! empty( $field_desc ) ? true : false;
1287
-
1288
- // Format setting outer wrapper.
1289
- echo '<div class="format-setting type-javascript simple ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1290
-
1291
- // Description.
1292
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1293
-
1294
- // Format setting inner wrapper.
1295
- echo '<div class="format-setting-inner">';
1296
-
1297
- // Build textarea for CSS.
1298
- echo '<textarea class="hidden" id="textarea_' . esc_attr( $field_id ) . '" name="' . esc_attr( $field_name ) . '">' . esc_textarea( $field_value ) . '</textarea>';
1299
-
1300
- // Build pre to convert it into ace editor later.
1301
- echo '<pre class="ot-javascript-editor ' . esc_attr( $field_class ) . '" id="' . esc_attr( $field_id ) . '">' . esc_textarea( $field_value ) . '</pre>';
1302
-
1303
- echo '</div>';
1304
-
1305
- echo '</div>';
1306
- }
1307
- }
1308
-
1309
- if ( ! function_exists( 'ot_type_link_color' ) ) {
1310
-
1311
- /**
1312
- * Link Color option type.
1313
- *
1314
- * See @ot_display_by_type to see the full list of available arguments.
1315
- *
1316
- * @param array $args The options arguments.
1317
- *
1318
- * @access public
1319
- * @since 2.5.0
1320
- */
1321
- function ot_type_link_color( $args = array() ) {
1322
-
1323
- // Turns arguments array into variables.
1324
- extract( $args ); // phpcs:ignore
1325
-
1326
- // Verify a description.
1327
- $has_desc = ! empty( $field_desc ) ? true : false;
1328
-
1329
- // Format setting outer wrapper.
1330
- echo '<div class="format-setting type-link-color ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1331
-
1332
- // Description.
1333
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1334
-
1335
- // Format setting inner wrapper.
1336
- echo '<div class="format-setting-inner">';
1337
-
1338
- // Allow fields to be filtered.
1339
- $ot_recognized_link_color_fields = apply_filters(
1340
- 'ot_recognized_link_color_fields',
1341
- array(
1342
- 'link' => _x( 'Standard', 'color picker', 'option-tree' ),
1343
- 'hover' => _x( 'Hover', 'color picker', 'option-tree' ),
1344
- 'active' => _x( 'Active', 'color picker', 'option-tree' ),
1345
- 'visited' => _x( 'Visited', 'color picker', 'option-tree' ),
1346
- 'focus' => _x( 'Focus', 'color picker', 'option-tree' ),
1347
- ),
1348
- $field_id
1349
- );
1350
-
1351
- // Build link color fields.
1352
- foreach ( $ot_recognized_link_color_fields as $type => $label ) {
1353
-
1354
- if ( array_key_exists( $type, $ot_recognized_link_color_fields ) ) {
1355
-
1356
- echo '<div class="option-tree-ui-colorpicker-input-wrap">';
1357
-
1358
- echo '<label for="' . esc_attr( $field_id ) . '-picker-' . esc_attr( $type ) . '" class="option-tree-ui-colorpicker-label">' . esc_attr( $label ) . '</label>';
1359
-
1360
- // Colorpicker JS.
1361
- echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker-' . esc_attr( $type ) . '"); });</script>';
1362
-
1363
- // Set color.
1364
- $color = isset( $field_value[ $type ] ) ? esc_attr( $field_value[ $type ] ) : '';
1365
-
1366
- // Set default color.
1367
- $std = isset( $field_std[ $type ] ) ? 'data-default-color="' . $field_std[ $type ] . '"' : '';
1368
-
1369
- // Input.
1370
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[' . esc_attr( $type ) . ']" id="' . esc_attr( $field_id ) . '-picker-' . esc_attr( $type ) . '" value="' . esc_attr( $color ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" ' . esc_attr( $std ) . ' />';
1371
-
1372
- echo '</div>';
1373
-
1374
- }
1375
- }
1376
-
1377
- echo '</div>';
1378
-
1379
- echo '</div>';
1380
- }
1381
- }
1382
-
1383
- if ( ! function_exists( 'ot_type_list_item' ) ) {
1384
-
1385
- /**
1386
- * List Item option type.
1387
- *
1388
- * See @ot_display_by_type to see the full list of available arguments.
1389
- *
1390
- * @param array $args An array of arguments.
1391
- *
1392
- * @access public
1393
- * @since 2.0
1394
- */
1395
- function ot_type_list_item( $args = array() ) {
1396
-
1397
- // Turns arguments array into variables.
1398
- extract( $args ); // phpcs:ignore
1399
-
1400
- // Verify a description.
1401
- $has_desc = ! empty( $field_desc ) ? true : false;
1402
-
1403
- // Default.
1404
- $sortable = true;
1405
-
1406
- // Check if the list can be sorted.
1407
- if ( ! empty( $field_class ) ) {
1408
- $classes = explode( ' ', $field_class );
1409
- if ( in_array( 'not-sortable', $classes, true ) ) {
1410
- $sortable = false;
1411
- str_replace( 'not-sortable', '', $field_class );
1412
- }
1413
- }
1414
-
1415
- // Format setting outer wrapper.
1416
- echo '<div class="format-setting type-list-item ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1417
-
1418
- // Description.
1419
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1420
-
1421
- // Format setting inner wrapper.
1422
- echo '<div class="format-setting-inner">';
1423
-
1424
- // Pass the settings array arround.
1425
- echo '<input type="hidden" name="' . esc_attr( $field_id ) . '_settings_array" id="' . esc_attr( $field_id ) . '_settings_array" value="' . esc_attr( ot_encode( $field_settings ) ) . '" />';
1426
-
1427
- /**
1428
- * Settings pages have array wrappers like 'option_tree'.
1429
- * So we need that value to create a proper array to save to.
1430
- * This is only for NON metabox settings.
1431
- */
1432
- if ( ! isset( $get_option ) ) {
1433
- $get_option = '';
1434
- }
1435
-
1436
- // Build list items.
1437
- echo '<ul class="option-tree-setting-wrap' . ( $sortable ? ' option-tree-sortable' : '' ) . '" data-name="' . esc_attr( $field_id ) . '" data-id="' . esc_attr( $post_id ) . '" data-get-option="' . esc_attr( $get_option ) . '" data-type="' . esc_attr( $type ) . '">';
1438
-
1439
- if ( is_array( $field_value ) && ! empty( $field_value ) ) {
1440
-
1441
- foreach ( $field_value as $key => $list_item ) {
1442
-
1443
- echo '<li class="ui-state-default list-list-item">';
1444
- ot_list_item_view( $field_id, $key, $list_item, $post_id, $get_option, $field_settings, $type );
1445
- echo '</li>';
1446
- }
1447
- }
1448
-
1449
- echo '</ul>';
1450
-
1451
- // Button.
1452
- echo '<a href="javascript:void(0);" class="option-tree-list-item-add option-tree-ui-button button button-primary right hug-right" title="' . esc_html__( 'Add New', 'option-tree' ) . '">' . esc_html__( 'Add New', 'option-tree' ) . '</a>';
1453
-
1454
- // Description.
1455
- $list_desc = $sortable ? __( 'You can re-order with drag & drop, the order will update after saving.', 'option-tree' ) : '';
1456
- echo '<div class="list-item-description">' . esc_html( apply_filters( 'ot_list_item_description', $list_desc, $field_id ) ) . '</div>';
1457
-
1458
- echo '</div>';
1459
-
1460
- echo '</div>';
1461
- }
1462
- }
1463
-
1464
- if ( ! function_exists( 'ot_type_measurement' ) ) {
1465
-
1466
- /**
1467
- * Measurement option type.
1468
- *
1469
- * See @ot_display_by_type to see the full list of available arguments.
1470
- *
1471
- * @param array $args An array of arguments.
1472
- *
1473
- * @access public
1474
- * @since 2.0
1475
- */
1476
- function ot_type_measurement( $args = array() ) {
1477
-
1478
- // Turns arguments array into variables.
1479
- extract( $args ); // phpcs:ignore
1480
-
1481
- // Verify a description.
1482
- $has_desc = ! empty( $field_desc ) ? true : false;
1483
-
1484
- // Format setting outer wrapper.
1485
- echo '<div class="format-setting type-measurement ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1486
-
1487
- // Description.
1488
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1489
-
1490
- // Format setting inner wrapper.
1491
- echo '<div class="format-setting-inner">';
1492
-
1493
- echo '<div class="option-tree-ui-measurement-input-wrap">';
1494
-
1495
- echo '<input type="text" name="' . esc_attr( $field_name ) . '[0]" id="' . esc_attr( $field_id ) . '-0" value="' . esc_attr( ( isset( $field_value[0] ) ? $field_value[0] : '' ) ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
1496
-
1497
- echo '</div>';
1498
-
1499
- // Build measurement.
1500
- echo '<select name="' . esc_attr( $field_name ) . '[1]" id="' . esc_attr( $field_id ) . '-1" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1501
-
1502
- echo '<option value="">' . esc_html__( 'unit', 'option-tree' ) . '</option>';
1503
-
1504
- foreach ( ot_measurement_unit_types( $field_id ) as $unit ) {
1505
- echo '<option value="' . esc_attr( $unit ) . '" ' . ( isset( $field_value[1] ) ? selected( $field_value[1], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
1506
- }
1507
-
1508
- echo '</select>';
1509
-
1510
- echo '</div>';
1511
-
1512
- echo '</div>';
1513
- }
1514
- }
1515
-
1516
- if ( ! function_exists( 'ot_type_numeric_slider' ) ) {
1517
-
1518
- /**
1519
- * Numeric Slider option type.
1520
- *
1521
- * See @ot_display_by_type to see the full list of available arguments.
1522
- *
1523
- * @param array $args An array of arguments.
1524
- *
1525
- * @access public
1526
- * @since 2.1
1527
- */
1528
- function ot_type_numeric_slider( $args = array() ) {
1529
-
1530
- // Turns arguments array into variables.
1531
- extract( $args ); // phpcs:ignore
1532
-
1533
- // Verify a description.
1534
- $has_desc = ! empty( $field_desc ) ? true : false;
1535
-
1536
- $_options = explode( ',', $field_min_max_step );
1537
- $min = isset( $_options[0] ) ? $_options[0] : 0;
1538
- $max = isset( $_options[1] ) ? $_options[1] : 100;
1539
- $step = isset( $_options[2] ) ? $_options[2] : 1;
1540
-
1541
- // Format setting outer wrapper.
1542
- echo '<div class="format-setting type-numeric-slider ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1543
-
1544
- // Description.
1545
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1546
-
1547
- // Format setting inner wrapper.
1548
- echo '<div class="format-setting-inner">';
1549
-
1550
- echo '<div class="ot-numeric-slider-wrap">';
1551
-
1552
- echo '<input type="hidden" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="ot-numeric-slider-hidden-input" value="' . esc_attr( $field_value ) . '" data-min="' . esc_attr( $min ) . '" data-max="' . esc_attr( $max ) . '" data-step="' . esc_attr( $step ) . '">';
1553
-
1554
- echo '<input type="text" class="ot-numeric-slider-helper-input widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" value="' . esc_attr( $field_value ) . '" readonly>';
1555
-
1556
- echo '<div id="ot_numeric_slider_' . esc_attr( $field_id ) . '" class="ot-numeric-slider"></div>';
1557
-
1558
- echo '</div>';
1559
-
1560
- echo '</div>';
1561
-
1562
- echo '</div>';
1563
- }
1564
- }
1565
-
1566
- if ( ! function_exists( 'ot_type_on_off' ) ) {
1567
-
1568
- /**
1569
- * On/Off option type
1570
- *
1571
- * See @ot_display_by_type to see the full list of available arguments.
1572
- *
1573
- * @param array $args The options arguments.
1574
- *
1575
- * @access public
1576
- * @since 2.2.0
1577
- */
1578
- function ot_type_on_off( $args = array() ) {
1579
-
1580
- // Turns arguments array into variables.
1581
- extract( $args ); // phpcs:ignore
1582
-
1583
- // Verify a description.
1584
- $has_desc = ! empty( $field_desc ) ? true : false;
1585
-
1586
- // Format setting outer wrapper.
1587
- echo '<div class="format-setting type-radio ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1588
-
1589
- // Description.
1590
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1591
-
1592
- // Format setting inner wrapper.
1593
- echo '<div class="format-setting-inner">';
1594
-
1595
- // Force only two choices, and allowing filtering on the choices value & label.
1596
- $field_choices = array(
1597
- array(
1598
- /**
1599
- * Filter the value of the On button.
1600
- *
1601
- * @since 2.5.0
1602
- *
1603
- * @param string $value The On button value. Default 'on'.
1604
- * @param string $field_id The field ID.
1605
- * @param string $filter_id For filtering both on/off value with one function.
1606
- */
1607
- 'value' => apply_filters( 'ot_on_off_switch_on_value', 'on', $field_id, 'on' ),
1608
- /**
1609
- * Filter the label of the On button.
1610
- *
1611
- * @since 2.5.0
1612
- *
1613
- * @param string $label The On button label. Default 'On'.
1614
- * @param string $field_id The field ID.
1615
- * @param string $filter_id For filtering both on/off label with one function.
1616
- */
1617
- 'label' => apply_filters( 'ot_on_off_switch_on_label', esc_html__( 'On', 'option-tree' ), $field_id, 'on' ),
1618
- ),
1619
- array(
1620
- /**
1621
- * Filter the value of the Off button.
1622
- *
1623
- * @since 2.5.0
1624
- *
1625
- * @param string $value The Off button value. Default 'off'.
1626
- * @param string $field_id The field ID.
1627
- * @param string $filter_id For filtering both on/off value with one function.
1628
- */
1629
- 'value' => apply_filters( 'ot_on_off_switch_off_value', 'off', $field_id, 'off' ),
1630
- /**
1631
- * Filter the label of the Off button.
1632
- *
1633
- * @since 2.5.0
1634
- *
1635
- * @param string $label The Off button label. Default 'Off'.
1636
- * @param string $field_id The field ID.
1637
- * @param string $filter_id For filtering both on/off label with one function.
1638
- */
1639
- 'label' => apply_filters( 'ot_on_off_switch_off_label', esc_html__( 'Off', 'option-tree' ), $field_id, 'off' ),
1640
- ),
1641
- );
1642
-
1643
- /**
1644
- * Filter the width of the On/Off switch.
1645
- *
1646
- * @since 2.5.0
1647
- *
1648
- * @param string $switch_width The switch width. Default '100px'.
1649
- * @param string $field_id The field ID.
1650
- */
1651
- $switch_width = apply_filters( 'ot_on_off_switch_width', '100px', $field_id );
1652
-
1653
- echo '<div class="on-off-switch"' . ( '100px' !== $switch_width ? sprintf( ' style="width:%s"', esc_attr( $switch_width ) ) : '' ) . '>'; // phpcs:ignore
1654
-
1655
- // Build radio.
1656
- foreach ( (array) $field_choices as $key => $choice ) {
1657
- echo '
1658
- <input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '" ' . checked( $field_value, $choice['value'], false ) . ' class="radio option-tree-ui-radio ' . esc_attr( $field_class ) . '" />
1659
- <label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" onclick="">' . esc_attr( $choice['label'] ) . '</label>';
1660
- }
1661
-
1662
- echo '<span class="slide-button"></span>';
1663
-
1664
- echo '</div>';
1665
-
1666
- echo '</div>';
1667
-
1668
- echo '</div>';
1669
-
1670
- }
1671
- }
1672
-
1673
- if ( ! function_exists( 'ot_type_page_checkbox' ) ) {
1674
-
1675
- /**
1676
- * Page Checkbox option type.
1677
- *
1678
- * See @ot_display_by_type to see the full list of available arguments.
1679
- *
1680
- * @param array $args An array of arguments.
1681
- *
1682
- * @access public
1683
- * @since 2.0
1684
- */
1685
- function ot_type_page_checkbox( $args = array() ) {
1686
-
1687
- // Turns arguments array into variables.
1688
- extract( $args ); // phpcs:ignore
1689
-
1690
- // Verify a description.
1691
- $has_desc = ! empty( $field_desc ) ? true : false;
1692
-
1693
- // Format setting outer wrapper.
1694
- echo '<div class="format-setting type-page-checkbox type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1695
-
1696
- // Description.
1697
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1698
-
1699
- // Format setting inner wrapper.
1700
- echo '<div class="format-setting-inner">';
1701
-
1702
- // Query pages array.
1703
- $my_posts = get_posts(
1704
- apply_filters(
1705
- 'ot_type_page_checkbox_query',
1706
- array(
1707
- 'post_type' => array( 'page' ),
1708
- 'posts_per_page' => -1,
1709
- 'orderby' => 'title',
1710
- 'order' => 'ASC',
1711
- 'post_status' => 'any',
1712
- ),
1713
- $field_id
1714
- )
1715
- );
1716
-
1717
- // Has pages.
1718
- if ( is_array( $my_posts ) && ! empty( $my_posts ) ) {
1719
- foreach ( $my_posts as $my_post ) {
1720
- $post_title = ! empty( $my_post->post_title ) ? $my_post->post_title : 'Untitled';
1721
- echo '<p>';
1722
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $my_post->ID ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $my_post->ID ) . '" value="' . esc_attr( $my_post->ID ) . '" ' . ( isset( $field_value[ $my_post->ID ] ) ? checked( $field_value[ $my_post->ID ], $my_post->ID, false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
1723
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $my_post->ID ) . '">' . esc_html( $post_title ) . '</label>';
1724
- echo '</p>';
1725
- }
1726
- } else {
1727
- echo '<p>' . esc_html__( 'No Pages Found', 'option-tree' ) . '</p>';
1728
- }
1729
-
1730
- echo '</div>';
1731
-
1732
- echo '</div>';
1733
- }
1734
- }
1735
-
1736
- if ( ! function_exists( 'ot_type_page_select' ) ) {
1737
-
1738
- /**
1739
- * Page Select option type.
1740
- *
1741
- * See @ot_display_by_type to see the full list of available arguments.
1742
- *
1743
- * @param array $args An array of arguments.
1744
- *
1745
- * @access public
1746
- * @since 2.0
1747
- */
1748
- function ot_type_page_select( $args = array() ) {
1749
-
1750
- // Turns arguments array into variables.
1751
- extract( $args ); // phpcs:ignore
1752
-
1753
- // Verify a description.
1754
- $has_desc = ! empty( $field_desc ) ? true : false;
1755
-
1756
- // Format setting outer wrapper.
1757
- echo '<div class="format-setting type-page-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1758
-
1759
- // Description.
1760
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1761
-
1762
- // Format setting inner wrapper.
1763
- echo '<div class="format-setting-inner">';
1764
-
1765
- // Build page select.
1766
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1767
-
1768
- // Query pages array.
1769
- $my_posts = get_posts(
1770
- apply_filters(
1771
- 'ot_type_page_select_query',
1772
- array(
1773
- 'post_type' => array( 'page' ),
1774
- 'posts_per_page' => -1,
1775
- 'orderby' => 'title',
1776
- 'order' => 'ASC',
1777
- 'post_status' => 'any',
1778
- ),
1779
- $field_id
1780
- )
1781
- );
1782
-
1783
- // Has pages.
1784
- if ( is_array( $my_posts ) && ! empty( $my_posts ) ) {
1785
- echo '<option value="">-- ' . esc_html__( 'Choose One', 'option-tree' ) . ' --</option>';
1786
- foreach ( $my_posts as $my_post ) {
1787
- $post_title = ! empty( $my_post->post_title ) ? $my_post->post_title : 'Untitled';
1788
- echo '<option value="' . esc_attr( $my_post->ID ) . '" ' . selected( $field_value, $my_post->ID, false ) . '>' . esc_html( $post_title ) . '</option>';
1789
- }
1790
- } else {
1791
- echo '<option value="">' . esc_html__( 'No Pages Found', 'option-tree' ) . '</option>';
1792
- }
1793
-
1794
- echo '</select>';
1795
-
1796
- echo '</div>';
1797
-
1798
- echo '</div>';
1799
- }
1800
- }
1801
-
1802
- if ( ! function_exists( 'ot_type_post_checkbox' ) ) {
1803
-
1804
- /**
1805
- * Post Checkbox option type.
1806
- *
1807
- * See @ot_display_by_type to see the full list of available arguments.
1808
- *
1809
- * @param array $args An array of arguments.
1810
- *
1811
- * @access public
1812
- * @since 2.0
1813
- */
1814
- function ot_type_post_checkbox( $args = array() ) {
1815
-
1816
- // Turns arguments array into variables.
1817
- extract( $args ); // phpcs:ignore
1818
-
1819
- // Verify a description.
1820
- $has_desc = ! empty( $field_desc ) ? true : false;
1821
-
1822
- // Format setting outer wrapper.
1823
- echo '<div class="format-setting type-post-checkbox type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1824
-
1825
- // Description.
1826
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1827
-
1828
- // Format setting inner wrapper.
1829
- echo '<div class="format-setting-inner">';
1830
-
1831
- // Query posts array.
1832
- $my_posts = get_posts(
1833
- apply_filters(
1834
- 'ot_type_post_checkbox_query',
1835
- array(
1836
- 'post_type' => array( 'post' ),
1837
- 'posts_per_page' => -1,
1838
- 'orderby' => 'title',
1839
- 'order' => 'ASC',
1840
- 'post_status' => 'any',
1841
- ),
1842
- $field_id
1843
- )
1844
- );
1845
-
1846
- // Has posts.
1847
- if ( is_array( $my_posts ) && ! empty( $my_posts ) ) {
1848
- foreach ( $my_posts as $my_post ) {
1849
- $post_title = ! empty( $my_post->post_title ) ? $my_post->post_title : 'Untitled';
1850
- echo '<p>';
1851
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $my_post->ID ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $my_post->ID ) . '" value="' . esc_attr( $my_post->ID ) . '" ' . ( isset( $field_value[ $my_post->ID ] ) ? checked( $field_value[ $my_post->ID ], $my_post->ID, false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
1852
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $my_post->ID ) . '">' . esc_html( $post_title ) . '</label>';
1853
- echo '</p>';
1854
- }
1855
- } else {
1856
- echo '<p>' . esc_html__( 'No Posts Found', 'option-tree' ) . '</p>';
1857
- }
1858
-
1859
- echo '</div>';
1860
-
1861
- echo '</div>';
1862
- }
1863
- }
1864
-
1865
- if ( ! function_exists( 'ot_type_post_select' ) ) {
1866
-
1867
- /**
1868
- * Post Select option type.
1869
- *
1870
- * See @ot_display_by_type to see the full list of available arguments.
1871
- *
1872
- * @param array $args An array of arguments.
1873
- *
1874
- * @access public
1875
- * @since 2.0
1876
- */
1877
- function ot_type_post_select( $args = array() ) {
1878
-
1879
- // Turns arguments array into variables.
1880
- extract( $args ); // phpcs:ignore
1881
-
1882
- // Verify a description.
1883
- $has_desc = ! empty( $field_desc ) ? true : false;
1884
-
1885
- // Format setting outer wrapper.
1886
- echo '<div class="format-setting type-post-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1887
-
1888
- /* description */
1889
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1890
-
1891
- // Format setting inner wrapper.
1892
- echo '<div class="format-setting-inner">';
1893
-
1894
- // Build page select.
1895
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
1896
-
1897
- // Query posts array.
1898
- $my_posts = get_posts(
1899
- apply_filters(
1900
- 'ot_type_post_select_query',
1901
- array(
1902
- 'post_type' => array( 'post' ),
1903
- 'posts_per_page' => -1,
1904
- 'orderby' => 'title',
1905
- 'order' => 'ASC',
1906
- 'post_status' => 'any',
1907
- ),
1908
- $field_id
1909
- )
1910
- );
1911
-
1912
- // Has posts.
1913
- if ( is_array( $my_posts ) && ! empty( $my_posts ) ) {
1914
- echo '<option value="">-- ' . esc_html__( 'Choose One', 'option-tree' ) . ' --</option>';
1915
- foreach ( $my_posts as $my_post ) {
1916
- $post_title = ! empty( $my_post->post_title ) ? $my_post->post_title : 'Untitled';
1917
- echo '<option value="' . esc_attr( $my_post->ID ) . '" ' . selected( $field_value, $my_post->ID, false ) . '>' . esc_html( $post_title ) . '</option>';
1918
- }
1919
- } else {
1920
- echo '<option value="">' . esc_html__( 'No Posts Found', 'option-tree' ) . '</option>';
1921
- }
1922
-
1923
- echo '</select>';
1924
-
1925
- echo '</div>';
1926
-
1927
- echo '</div>';
1928
- }
1929
- }
1930
-
1931
- if ( ! function_exists( 'ot_type_radio' ) ) {
1932
-
1933
- /**
1934
- * Radio option type.
1935
- *
1936
- * See @ot_display_by_type to see the full list of available arguments.
1937
- *
1938
- * @param array $args An array of arguments.
1939
- *
1940
- * @access public
1941
- * @since 2.0
1942
- */
1943
- function ot_type_radio( $args = array() ) {
1944
-
1945
- // Turns arguments array into variables.
1946
- extract( $args ); // phpcs:ignore
1947
-
1948
- // Verify a description.
1949
- $has_desc = ! empty( $field_desc ) ? true : false;
1950
-
1951
- // Format setting outer wrapper.
1952
- echo '<div class="format-setting type-radio ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1953
-
1954
- // Description.
1955
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1956
-
1957
- // Format setting inner wrapper.
1958
- echo '<div class="format-setting-inner">';
1959
-
1960
- // Build radio.
1961
- foreach ( (array) $field_choices as $key => $choice ) {
1962
- echo '<p><input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '" ' . checked( $field_value, $choice['value'], false ) . ' class="radio option-tree-ui-radio ' . esc_attr( $field_class ) . '" /><label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '">' . esc_attr( $choice['label'] ) . '</label></p>';
1963
- }
1964
-
1965
- echo '</div>';
1966
-
1967
- echo '</div>';
1968
- }
1969
- }
1970
-
1971
- if ( ! function_exists( 'ot_type_radio_image' ) ) {
1972
-
1973
- /**
1974
- * Radio Images option type.
1975
- *
1976
- * See @ot_display_by_type to see the full list of available arguments.
1977
- *
1978
- * @param array $args An array of arguments.
1979
- *
1980
- * @access public
1981
- * @since 2.0
1982
- */
1983
- function ot_type_radio_image( $args = array() ) {
1984
-
1985
- // Turns arguments array into variables.
1986
- extract( $args ); // phpcs:ignore
1987
-
1988
- // Verify a description.
1989
- $has_desc = ! empty( $field_desc ) ? true : false;
1990
-
1991
- // Format setting outer wrapper.
1992
- echo '<div class="format-setting type-radio-image ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
1993
-
1994
- // Description.
1995
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
1996
-
1997
- // Format setting inner wrapper.
1998
- echo '<div class="format-setting-inner">';
1999
-
2000
- /**
2001
- * Load the default filterable images if nothing
2002
- * has been set in the choices array.
2003
- */
2004
- if ( empty( $field_choices ) ) {
2005
- $field_choices = ot_radio_images( $field_id );
2006
- }
2007
-
2008
- // Build radio image.
2009
- foreach ( (array) $field_choices as $key => $choice ) {
2010
-
2011
- $src = str_replace( 'OT_URL', OT_URL, $choice['src'] );
2012
- $src = str_replace( 'OT_THEME_URL', OT_THEME_URL, $src );
2013
-
2014
- // Make radio image source filterable.
2015
- $src = apply_filters( 'ot_type_radio_image_src', $src, $field_id );
2016
-
2017
- /**
2018
- * Filter the image attributes.
2019
- *
2020
- * @since 2.5.3
2021
- *
2022
- * @param string $attributes The image attributes.
2023
- * @param string $field_id The field ID.
2024
- * @param array $choice The choice.
2025
- */
2026
- $attributes = apply_filters( 'ot_type_radio_image_attributes', '', $field_id, $choice );
2027
-
2028
- echo '<div class="option-tree-ui-radio-images">';
2029
- echo '<p style="display:none"><input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '" ' . checked( $field_value, $choice['value'], false ) . ' class="option-tree-ui-radio option-tree-ui-images" /><label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '">' . esc_attr( $choice['label'] ) . '</label></p>';
2030
- echo '<img ' . sanitize_text_field( $attributes ) . ' src="' . esc_url( $src ) . '" alt="' . esc_attr( $choice['label'] ) . '" title="' . esc_attr( $choice['label'] ) . '" class="option-tree-ui-radio-image ' . esc_attr( $field_class ) . ( $field_value === $choice['value'] ? ' option-tree-ui-radio-image-selected' : '' ) . '" />'; // phpcs:ignore
2031
- echo '</div>';
2032
- }
2033
-
2034
- echo '</div>';
2035
-
2036
- echo '</div>';
2037
- }
2038
- }
2039
-
2040
- if ( ! function_exists( 'ot_type_select' ) ) {
2041
-
2042
- /**
2043
- * Select option type.
2044
- *
2045
- * See @ot_display_by_type to see the full list of available arguments.
2046
- *
2047
- * @param array $args An array of arguments.
2048
- *
2049
- * @access public
2050
- * @since 2.0
2051
- */
2052
- function ot_type_select( $args = array() ) {
2053
-
2054
- // Turns arguments array into variables.
2055
- extract( $args ); // phpcs:ignore
2056
-
2057
- // Verify a description.
2058
- $has_desc = ! empty( $field_desc ) ? true : false;
2059
-
2060
- // Format setting outer wrapper.
2061
- echo '<div class="format-setting type-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2062
-
2063
- // Description.
2064
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2065
-
2066
- // Filter choices array.
2067
- $field_choices = apply_filters( 'ot_type_select_choices', $field_choices, $field_id );
2068
-
2069
- // Format setting inner wrapper.
2070
- echo '<div class="format-setting-inner">';
2071
-
2072
- // Build select.
2073
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
2074
- foreach ( (array) $field_choices as $choice ) {
2075
- if ( isset( $choice['value'] ) && isset( $choice['label'] ) ) {
2076
- echo '<option value="' . esc_attr( $choice['value'] ) . '"' . selected( $field_value, $choice['value'], false ) . '>' . esc_attr( $choice['label'] ) . '</option>';
2077
- }
2078
- }
2079
-
2080
- echo '</select>';
2081
-
2082
- echo '</div>';
2083
-
2084
- echo '</div>';
2085
- }
2086
- }
2087
-
2088
- if ( ! function_exists( 'ot_type_sidebar_select' ) ) {
2089
-
2090
- /**
2091
- * Sidebar Select option type.
2092
- *
2093
- * This option type makes it possible for users to select a WordPress registered sidebar
2094
- * to use on a specific area. By using the two provided filters, 'ot_recognized_sidebars',
2095
- * and 'ot_recognized_sidebars_{$field_id}' we can be selective about which sidebars are
2096
- * available on a specific content area.
2097
- *
2098
- * For example, if we create a WordPress theme that provides the ability to change the
2099
- * Blog Sidebar and we don't want to have the footer sidebars available on this area,
2100
- * we can unset those sidebars either manually or by using a regular expression if we
2101
- * have a common name like footer-sidebar-$i.
2102
- *
2103
- * @param array $args An array of arguments.
2104
- *
2105
- * @access public
2106
- * @since 2.1
2107
- */
2108
- function ot_type_sidebar_select( $args = array() ) {
2109
-
2110
- // Turns arguments array into variables.
2111
- extract( $args ); // phpcs:ignore
2112
-
2113
- // Verify a description.
2114
- $has_desc = ! empty( $field_desc ) ? true : false;
2115
-
2116
- // Format setting outer wrapper.
2117
- echo '<div class="format-setting type-sidebar-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2118
-
2119
- // Description.
2120
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2121
-
2122
- // Format setting inner wrapper.
2123
- echo '<div class="format-setting-inner">';
2124
-
2125
- // Build page select.
2126
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
2127
-
2128
- // Get the registered sidebars.
2129
- global $wp_registered_sidebars;
2130
-
2131
- $sidebars = array();
2132
- foreach ( $wp_registered_sidebars as $id => $sidebar ) {
2133
- $sidebars[ $id ] = $sidebar['name'];
2134
- }
2135
-
2136
- // Filters to restrict which sidebars are allowed to be selected, for example we can restrict footer sidebars to be selectable on a blog page.
2137
- $sidebars = apply_filters( 'ot_recognized_sidebars', $sidebars );
2138
- $sidebars = apply_filters( 'ot_recognized_sidebars_' . $field_id, $sidebars );
2139
-
2140
- // Has sidebars.
2141
- if ( count( $sidebars ) ) {
2142
- echo '<option value="">-- ' . esc_html__( 'Choose Sidebar', 'option-tree' ) . ' --</option>';
2143
- foreach ( $sidebars as $id => $sidebar ) {
2144
- echo '<option value="' . esc_attr( $id ) . '" ' . selected( $field_value, $id, false ) . '>' . esc_attr( $sidebar ) . '</option>';
2145
- }
2146
- } else {
2147
- echo '<option value="">' . esc_html__( 'No Sidebars', 'option-tree' ) . '</option>';
2148
- }
2149
-
2150
- echo '</select>';
2151
-
2152
- echo '</div>';
2153
-
2154
- echo '</div>';
2155
- }
2156
- }
2157
-
2158
- if ( ! function_exists( 'ot_type_slider' ) ) {
2159
-
2160
- /**
2161
- * List Item option type.
2162
- *
2163
- * See @ot_display_by_type to see the full list of available arguments.
2164
- *
2165
- * @param array $args An array of arguments.
2166
- *
2167
- * @access public
2168
- * @since 2.0
2169
- */
2170
- function ot_type_slider( $args = array() ) {
2171
-
2172
- // Turns arguments array into variables.
2173
- extract( $args ); // phpcs:ignore
2174
-
2175
- // Verify a description.
2176
- $has_desc = ! empty( $field_desc ) ? true : false;
2177
-
2178
- // Format setting outer wrapper.
2179
- echo '<div class="format-setting type-slider ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2180
-
2181
- // Description.
2182
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2183
-
2184
- // Format setting inner wrapper.
2185
- echo '<div class="format-setting-inner">';
2186
-
2187
- // Pass the settings array around.
2188
- echo '<input type="hidden" name="' . esc_attr( $field_id ) . '_settings_array" id="' . esc_attr( $field_id ) . '_settings_array" value="' . esc_attr( ot_encode( $field_settings ) ) . '" />';
2189
-
2190
- /**
2191
- * Settings pages have array wrappers like 'option_tree'.
2192
- * So we need that value to create a proper array to save to.
2193
- * This is only for NON metabox settings.
2194
- */
2195
- if ( ! isset( $get_option ) ) {
2196
- $get_option = '';
2197
- }
2198
-
2199
- // Build list items.
2200
- echo '<ul class="option-tree-setting-wrap option-tree-sortable" data-name="' . esc_attr( $field_id ) . '" data-id="' . esc_attr( $post_id ) . '" data-get-option="' . esc_attr( $get_option ) . '" data-type="' . esc_attr( $type ) . '">';
2201
-
2202
- if ( is_array( $field_value ) && ! empty( $field_value ) ) {
2203
-
2204
- foreach ( $field_value as $key => $list_item ) {
2205
-
2206
- echo '<li class="ui-state-default list-list-item">';
2207
- ot_list_item_view( $field_id, $key, $list_item, $post_id, $get_option, $field_settings, $type );
2208
- echo '</li>';
2209
- }
2210
- }
2211
-
2212
- echo '</ul>';
2213
-
2214
- // Button.
2215
- echo '<a href="javascript:void(0);" class="option-tree-list-item-add option-tree-ui-button button button-primary right hug-right" title="' . esc_html__( 'Add New', 'option-tree' ) . '">' . esc_html__( 'Add New', 'option-tree' ) . '</a>'; // phpcs:ignore
2216
-
2217
- // Description.
2218
- echo '<div class="list-item-description">' . esc_html__( 'You can re-order with drag & drop, the order will update after saving.', 'option-tree' ) . '</div>';
2219
-
2220
- echo '</div>';
2221
-
2222
- echo '</div>';
2223
- }
2224
- }
2225
-
2226
- if ( ! function_exists( 'ot_type_social_links' ) ) {
2227
-
2228
- /**
2229
- * Social Links option type.
2230
- *
2231
- * See @ot_display_by_type to see the full list of available arguments.
2232
- *
2233
- * @param array $args An array of arguments.
2234
- *
2235
- * @access public
2236
- * @since 2.4.0
2237
- */
2238
- function ot_type_social_links( $args = array() ) {
2239
-
2240
- // Turns arguments array into variables.
2241
- extract( $args ); // phpcs:ignore
2242
-
2243
- // Load the default social links.
2244
- if ( empty( $field_value ) && apply_filters( 'ot_type_social_links_load_defaults', true, $field_id ) ) {
2245
-
2246
- $field_value = apply_filters(
2247
- 'ot_type_social_links_defaults',
2248
- array(
2249
- array(
2250
- 'name' => __( 'Facebook', 'option-tree' ),
2251
- 'title' => '',
2252
- 'href' => '',
2253
- ),
2254
- array(
2255
- 'name' => __( 'Twitter', 'option-tree' ),
2256
- 'title' => '',
2257
- 'href' => '',
2258
- ),
2259
- array(
2260
- 'name' => __( 'Google+', 'option-tree' ),
2261
- 'title' => '',
2262
- 'href' => '',
2263
- ),
2264
- array(
2265
- 'name' => __( 'LinkedIn', 'option-tree' ),
2266
- 'title' => '',
2267
- 'href' => '',
2268
- ),
2269
- array(
2270
- 'name' => __( 'Pinterest', 'option-tree' ),
2271
- 'title' => '',
2272
- 'href' => '',
2273
- ),
2274
- array(
2275
- 'name' => __( 'Youtube', 'option-tree' ),
2276
- 'title' => '',
2277
- 'href' => '',
2278
- ),
2279
- array(
2280
- 'name' => __( 'Dribbble', 'option-tree' ),
2281
- 'title' => '',
2282
- 'href' => '',
2283
- ),
2284
- array(
2285
- 'name' => __( 'Github', 'option-tree' ),
2286
- 'title' => '',
2287
- 'href' => '',
2288
- ),
2289
- array(
2290
- 'name' => __( 'Forrst', 'option-tree' ),
2291
- 'title' => '',
2292
- 'href' => '',
2293
- ),
2294
- array(
2295
- 'name' => __( 'Digg', 'option-tree' ),
2296
- 'title' => '',
2297
- 'href' => '',
2298
- ),
2299
- array(
2300
- 'name' => __( 'Delicious', 'option-tree' ),
2301
- 'title' => '',
2302
- 'href' => '',
2303
- ),
2304
- array(
2305
- 'name' => __( 'Tumblr', 'option-tree' ),
2306
- 'title' => '',
2307
- 'href' => '',
2308
- ),
2309
- array(
2310
- 'name' => __( 'Skype', 'option-tree' ),
2311
- 'title' => '',
2312
- 'href' => '',
2313
- ),
2314
- array(
2315
- 'name' => __( 'SoundCloud', 'option-tree' ),
2316
- 'title' => '',
2317
- 'href' => '',
2318
- ),
2319
- array(
2320
- 'name' => __( 'Vimeo', 'option-tree' ),
2321
- 'title' => '',
2322
- 'href' => '',
2323
- ),
2324
- array(
2325
- 'name' => __( 'Flickr', 'option-tree' ),
2326
- 'title' => '',
2327
- 'href' => '',
2328
- ),
2329
- array(
2330
- 'name' => __( 'VK.com', 'option-tree' ),
2331
- 'title' => '',
2332
- 'href' => '',
2333
- ),
2334
- ),
2335
- $field_id
2336
- );
2337
-
2338
- }
2339
-
2340
- // Verify a description.
2341
- $has_desc = ! empty( $field_desc ) ? true : false;
2342
-
2343
- // Format setting outer wrapper.
2344
- echo '<div class="format-setting type-social-list-item ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2345
-
2346
- // Description.
2347
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2348
-
2349
- // Format setting inner wrapper.
2350
- echo '<div class="format-setting-inner">';
2351
-
2352
- // Pass the settings array around.
2353
- echo '<input type="hidden" name="' . esc_attr( $field_id ) . '_settings_array" id="' . esc_attr( $field_id ) . '_settings_array" value="' . esc_attr( ot_encode( $field_settings ) ) . '" />';
2354
-
2355
- /**
2356
- * Settings pages have array wrappers like 'option_tree'.
2357
- * So we need that value to create a proper array to save to.
2358
- * This is only for NON metabox settings.
2359
- */
2360
- if ( ! isset( $get_option ) ) {
2361
- $get_option = '';
2362
- }
2363
-
2364
- // Build list items.
2365
- echo '<ul class="option-tree-setting-wrap option-tree-sortable" data-name="' . esc_attr( $field_id ) . '" data-id="' . esc_attr( $post_id ) . '" data-get-option="' . esc_attr( $get_option ) . '" data-type="' . esc_attr( $type ) . '">';
2366
-
2367
- if ( is_array( $field_value ) && ! empty( $field_value ) ) {
2368
-
2369
- foreach ( $field_value as $key => $link ) {
2370
-
2371
- echo '<li class="ui-state-default list-list-item">';
2372
- ot_social_links_view( $field_id, $key, $link, $post_id, $get_option, $field_settings );
2373
- echo '</li>';
2374
- }
2375
- }
2376
-
2377
- echo '</ul>';
2378
-
2379
- // Button.
2380
- echo '<a href="javascript:void(0);" class="option-tree-social-links-add option-tree-ui-button button button-primary right hug-right" title="' . esc_html__( 'Add New', 'option-tree' ) . '">' . esc_html__( 'Add New', 'option-tree' ) . '</a>'; // phpcs:ignore
2381
-
2382
- // Description.
2383
- echo '<div class="list-item-description">' . esc_html( apply_filters( 'ot_social_links_description', __( 'You can re-order with drag & drop, the order will update after saving.', 'option-tree' ), $field_id ) ) . '</div>';
2384
-
2385
- echo '</div>';
2386
-
2387
- echo '</div>';
2388
- }
2389
- }
2390
-
2391
- if ( ! function_exists( 'ot_type_spacing' ) ) {
2392
-
2393
- /**
2394
- * Spacing Option Type.
2395
- *
2396
- * See @ot_display_by_type to see the full list of available arguments.
2397
- *
2398
- * @param array $args An array of arguments.
2399
- *
2400
- * @access public
2401
- * @since 2.5.0
2402
- */
2403
- function ot_type_spacing( $args = array() ) {
2404
-
2405
- // Turns arguments array into variables.
2406
- extract( $args ); // phpcs:ignore
2407
-
2408
- // Verify a description.
2409
- $has_desc = ! empty( $field_desc ) ? true : false;
2410
-
2411
- // Format setting outer wrapper.
2412
- echo '<div class="format-setting type-spacing ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2413
-
2414
- // Description.
2415
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2416
-
2417
- // Format setting inner wrapper.
2418
- echo '<div class="format-setting-inner">';
2419
-
2420
- // Allow fields to be filtered.
2421
- $ot_recognized_spacing_fields = apply_filters(
2422
- 'ot_recognized_spacing_fields',
2423
- array(
2424
- 'top',
2425
- 'right',
2426
- 'bottom',
2427
- 'left',
2428
- 'unit',
2429
- ),
2430
- $field_id
2431
- );
2432
-
2433
- // Build top spacing.
2434
- if ( in_array( 'top', $ot_recognized_spacing_fields, true ) ) {
2435
-
2436
- $top = isset( $field_value['top'] ) ? $field_value['top'] : '';
2437
-
2438
- echo '<div class="ot-option-group"><span class="ot-icon-arrow-up ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[top]" id="' . esc_attr( $field_id ) . '-top" value="' . esc_attr( $top ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'top', 'option-tree' ) . '" /></div>';
2439
- }
2440
-
2441
- // Build right spacing.
2442
- if ( in_array( 'right', $ot_recognized_spacing_fields, true ) ) {
2443
-
2444
- $right = isset( $field_value['right'] ) ? $field_value['right'] : '';
2445
-
2446
- echo '<div class="ot-option-group"><span class="ot-icon-arrow-right ot-option-group--icon"></span></span><input type="text" name="' . esc_attr( $field_name ) . '[right]" id="' . esc_attr( $field_id ) . '-right" value="' . esc_attr( $right ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'right', 'option-tree' ) . '" /></div>';
2447
- }
2448
-
2449
- // Build bottom spacing.
2450
- if ( in_array( 'bottom', $ot_recognized_spacing_fields, true ) ) {
2451
-
2452
- $bottom = isset( $field_value['bottom'] ) ? $field_value['bottom'] : '';
2453
-
2454
- echo '<div class="ot-option-group"><span class="ot-icon-arrow-down ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[bottom]" id="' . esc_attr( $field_id ) . '-bottom" value="' . esc_attr( $bottom ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'bottom', 'option-tree' ) . '" /></div>';
2455
- }
2456
-
2457
- // Build left spacing.
2458
- if ( in_array( 'left', $ot_recognized_spacing_fields, true ) ) {
2459
-
2460
- $left = isset( $field_value['left'] ) ? $field_value['left'] : '';
2461
-
2462
- echo '<div class="ot-option-group"><span class="ot-icon-arrow-left ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[left]" id="' . esc_attr( $field_id ) . '-left" value="' . esc_attr( $left ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . esc_html__( 'left', 'option-tree' ) . '" /></div>';
2463
- }
2464
-
2465
- // Build unit dropdown.
2466
- if ( in_array( 'unit', $ot_recognized_spacing_fields, true ) ) {
2467
-
2468
- echo '<div class="ot-option-group ot-option-group--is-last">';
2469
-
2470
- echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
2471
-
2472
- echo '<option value="">' . esc_html__( 'unit', 'option-tree' ) . '</option>';
2473
-
2474
- foreach ( ot_recognized_spacing_unit_types( $field_id ) as $unit ) {
2475
- echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
2476
- }
2477
-
2478
- echo '</select>';
2479
-
2480
- echo '</div>';
2481
- }
2482
-
2483
- echo '</div>';
2484
-
2485
- echo '</div>';
2486
- }
2487
- }
2488
-
2489
- if ( ! function_exists( 'ot_type_tab' ) ) {
2490
-
2491
- /**
2492
- * Tab option type.
2493
- *
2494
- * See @ot_display_by_type to see the full list of available arguments.
2495
- *
2496
- * @access public
2497
- * @since 2.3.0
2498
- */
2499
- function ot_type_tab() {
2500
- echo '<div class="format-setting type-tab"><br /></div>';
2501
- }
2502
- }
2503
-
2504
- if ( ! function_exists( 'ot_type_tag_checkbox' ) ) {
2505
-
2506
- /**
2507
- * Tag Checkbox option type.
2508
- *
2509
- * See @ot_display_by_type to see the full list of available arguments.
2510
- *
2511
- * @param array $args An array of arguments.
2512
- *
2513
- * @access public
2514
- * @since 2.0
2515
- */
2516
- function ot_type_tag_checkbox( $args = array() ) {
2517
-
2518
- // Turns arguments array into variables.
2519
- extract( $args ); // phpcs:ignore
2520
-
2521
- // Verify a description.
2522
- $has_desc = ! empty( $field_desc ) ? true : false;
2523
-
2524
- // Format setting outer wrapper.
2525
- echo '<div class="format-setting type-tag-checkbox type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2526
-
2527
- // Description.
2528
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2529
-
2530
- // Format setting inner wrapper.
2531
- echo '<div class="format-setting-inner">';
2532
-
2533
- // Get tags.
2534
- $tags = get_tags( array( 'hide_empty' => false ) );
2535
-
2536
- // Has tags.
2537
- if ( $tags ) {
2538
- foreach ( $tags as $tag ) {
2539
- echo '<p>';
2540
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $tag->term_id ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $tag->term_id ) . '" value="' . esc_attr( $tag->term_id ) . '" ' . ( isset( $field_value[ $tag->term_id ] ) ? checked( $field_value[ $tag->term_id ], $tag->term_id, false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
2541
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $tag->term_id ) . '">' . esc_attr( $tag->name ) . '</label>';
2542
- echo '</p>';
2543
- }
2544
- } else {
2545
- echo '<p>' . esc_html__( 'No Tags Found', 'option-tree' ) . '</p>';
2546
- }
2547
-
2548
- echo '</div>';
2549
-
2550
- echo '</div>';
2551
- }
2552
- }
2553
-
2554
- if ( ! function_exists( 'ot_type_tag_select' ) ) {
2555
-
2556
- /**
2557
- * Tag Select option type.
2558
- *
2559
- * See @ot_display_by_type to see the full list of available arguments.
2560
- *
2561
- * @param array $args An array of arguments.
2562
- *
2563
- * @access public
2564
- * @since 2.0
2565
- */
2566
- function ot_type_tag_select( $args = array() ) {
2567
-
2568
- // Turns arguments array into variables.
2569
- extract( $args ); // phpcs:ignore
2570
-
2571
- // Verify a description.
2572
- $has_desc = ! empty( $field_desc ) ? true : false;
2573
-
2574
- // Format setting outer wrapper.
2575
- echo '<div class="format-setting type-tag-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2576
-
2577
- // Description.
2578
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2579
-
2580
- // Format setting inner wrapper.
2581
- echo '<div class="format-setting-inner">';
2582
-
2583
- // Build tag select.
2584
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
2585
-
2586
- // Get tags.
2587
- $tags = get_tags( array( 'hide_empty' => false ) );
2588
-
2589
- // Has tags.
2590
- if ( $tags ) {
2591
- echo '<option value="">-- ' . esc_html__( 'Choose One', 'option-tree' ) . ' --</option>';
2592
- foreach ( $tags as $tag ) {
2593
- echo '<option value="' . esc_attr( $tag->term_id ) . '"' . selected( $field_value, $tag->term_id, false ) . '>' . esc_attr( $tag->name ) . '</option>';
2594
- }
2595
- } else {
2596
- echo '<option value="">' . esc_html__( 'No Tags Found', 'option-tree' ) . '</option>';
2597
- }
2598
-
2599
- echo '</select>';
2600
-
2601
- echo '</div>';
2602
-
2603
- echo '</div>';
2604
- }
2605
- }
2606
-
2607
- if ( ! function_exists( 'ot_type_taxonomy_checkbox' ) ) {
2608
-
2609
- /**
2610
- * Taxonomy Checkbox option type.
2611
- *
2612
- * See @ot_display_by_type to see the full list of available arguments.
2613
- *
2614
- * @param array $args An array of arguments.
2615
- *
2616
- * @access public
2617
- * @since 2.0
2618
- */
2619
- function ot_type_taxonomy_checkbox( $args = array() ) {
2620
-
2621
- // Turns arguments array into variables.
2622
- extract( $args ); // phpcs:ignore
2623
-
2624
- // Verify a description.
2625
- $has_desc = ! empty( $field_desc ) ? true : false;
2626
-
2627
- // Format setting outer wrapper.
2628
- echo '<div class="format-setting type-taxonomy-checkbox type-checkbox ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2629
-
2630
- // Description.
2631
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2632
-
2633
- // Format setting inner wrapper.
2634
- echo '<div class="format-setting-inner">';
2635
-
2636
- // Setup the taxonomy.
2637
- $taxonomy = isset( $field_taxonomy ) ? explode( ',', $field_taxonomy ) : array( 'category' );
2638
-
2639
- // Get taxonomies.
2640
- $taxonomies = get_categories(
2641
- apply_filters(
2642
- 'ot_type_taxonomy_checkbox_query',
2643
- array(
2644
- 'hide_empty' => false,
2645
- 'taxonomy' => $taxonomy,
2646
- ),
2647
- $field_id
2648
- )
2649
- );
2650
-
2651
- // Has tags.
2652
- if ( $taxonomies ) {
2653
- foreach ( $taxonomies as $taxonomy ) {
2654
- echo '<p>';
2655
- echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . esc_attr( $taxonomy->term_id ) . ']" id="' . esc_attr( $field_id ) . '-' . esc_attr( $taxonomy->term_id ) . '" value="' . esc_attr( $taxonomy->term_id ) . '" ' . ( isset( $field_value[ $taxonomy->term_id ] ) ? checked( $field_value[ $taxonomy->term_id ], $taxonomy->term_id, false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
2656
- echo '<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $taxonomy->term_id ) . '">' . esc_attr( $taxonomy->name ) . '</label>';
2657
- echo '</p>';
2658
- }
2659
- } else {
2660
- echo '<p>' . esc_html__( 'No Taxonomies Found', 'option-tree' ) . '</p>';
2661
- }
2662
-
2663
- echo '</div>';
2664
-
2665
- echo '</div>';
2666
- }
2667
- }
2668
-
2669
- if ( ! function_exists( 'ot_type_taxonomy_select' ) ) {
2670
-
2671
- /**
2672
- * Taxonomy Select option type.
2673
- *
2674
- * See @ot_display_by_type to see the full list of available arguments.
2675
- *
2676
- * @param array $args An array of arguments.
2677
- *
2678
- * @access public
2679
- * @since 2.0
2680
- */
2681
- function ot_type_taxonomy_select( $args = array() ) {
2682
-
2683
- // Turns arguments array into variables.
2684
- extract( $args ); // phpcs:ignore
2685
-
2686
- // Verify a description.
2687
- $has_desc = ! empty( $field_desc ) ? true : false;
2688
-
2689
- // Format setting outer wrapper.
2690
- echo '<div class="format-setting type-tag-select ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2691
-
2692
- // Description.
2693
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2694
-
2695
- // Format setting inner wrapper.
2696
- echo '<div class="format-setting-inner">';
2697
-
2698
- // Build tag select.
2699
- echo '<select name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
2700
-
2701
- // Setup the taxonomy.
2702
- $taxonomy = isset( $field_taxonomy ) ? explode( ',', $field_taxonomy ) : array( 'category' );
2703
-
2704
- // Get taxonomies.
2705
- $taxonomies = get_categories(
2706
- apply_filters(
2707
- 'ot_type_taxonomy_select_query',
2708
- array(
2709
- 'hide_empty' => false,
2710
- 'taxonomy' => $taxonomy,
2711
- ),
2712
- $field_id
2713
- )
2714
- );
2715
-
2716
- // Has tags.
2717
- if ( $taxonomies ) {
2718
- echo '<option value="">-- ' . esc_html__( 'Choose One', 'option-tree' ) . ' --</option>';
2719
- foreach ( $taxonomies as $taxonomy ) {
2720
- echo '<option value="' . esc_attr( $taxonomy->term_id ) . '"' . selected( $field_value, $taxonomy->term_id, false ) . '>' . esc_attr( $taxonomy->name ) . '</option>';
2721
- }
2722
- } else {
2723
- echo '<option value="">' . esc_html__( 'No Taxonomies Found', 'option-tree' ) . '</option>';
2724
- }
2725
-
2726
- echo '</select>';
2727
-
2728
- echo '</div>';
2729
-
2730
- echo '</div>';
2731
- }
2732
- }
2733
-
2734
- if ( ! function_exists( 'ot_type_text' ) ) {
2735
-
2736
- /**
2737
- * Text option type.
2738
- *
2739
- * See @ot_display_by_type to see the full list of available arguments.
2740
- *
2741
- * @param array $args An array of arguments.
2742
- *
2743
- * @access public
2744
- * @since 2.0
2745
- */
2746
- function ot_type_text( $args = array() ) {
2747
-
2748
- // Turns arguments array into variables.
2749
- extract( $args ); // phpcs:ignore
2750
-
2751
- // Verify a description.
2752
- $has_desc = ! empty( $field_desc ) ? true : false;
2753
-
2754
- // Format setting outer wrapper.
2755
- echo '<div class="format-setting type-text ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2756
-
2757
- // Description.
2758
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2759
-
2760
- // Format setting inner wrapper.
2761
- echo '<div class="format-setting-inner">';
2762
-
2763
- // Build text input.
2764
- echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
2765
-
2766
- echo '</div>';
2767
-
2768
- echo '</div>';
2769
- }
2770
- }
2771
-
2772
- if ( ! function_exists( 'ot_type_textarea' ) ) {
2773
-
2774
- /**
2775
- * Textarea option type.
2776
- *
2777
- * See @ot_display_by_type to see the full list of available arguments.
2778
- *
2779
- * @param array $args An array of arguments.
2780
- *
2781
- * @access public
2782
- * @since 2.0
2783
- */
2784
- function ot_type_textarea( $args = array() ) {
2785
-
2786
- // Turns arguments array into variables.
2787
- extract( $args ); // phpcs:ignore
2788
-
2789
- // Verify a description.
2790
- $has_desc = ! empty( $field_desc ) ? true : false;
2791
-
2792
- // Format setting outer wrapper.
2793
- echo '<div class="format-setting type-textarea ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . ' fill-area">';
2794
-
2795
- // Description.
2796
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2797
-
2798
- // Format setting inner wrapper.
2799
- echo '<div class="format-setting-inner">';
2800
-
2801
- // Build textarea.
2802
- wp_editor(
2803
- $field_value,
2804
- esc_attr( $field_id ),
2805
- array(
2806
- 'editor_class' => esc_attr( $field_class ),
2807
- 'wpautop' => apply_filters( 'ot_wpautop', false, $field_id ),
2808
- 'media_buttons' => apply_filters( 'ot_media_buttons', true, $field_id ),
2809
- 'textarea_name' => esc_attr( $field_name ),
2810
- 'textarea_rows' => esc_attr( $field_rows ),
2811
- 'tinymce' => apply_filters( 'ot_tinymce', true, $field_id ),
2812
- 'quicktags' => apply_filters( 'ot_quicktags', array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,spell,close' ), $field_id ),
2813
- )
2814
- );
2815
-
2816
- echo '</div>';
2817
-
2818
- echo '</div>';
2819
- }
2820
- }
2821
-
2822
- if ( ! function_exists( 'ot_type_textarea_simple' ) ) {
2823
-
2824
- /**
2825
- * Textarea Simple option type.
2826
- *
2827
- * See @ot_display_by_type to see the full list of available arguments.
2828
- *
2829
- * @param array $args An array of arguments.
2830
- *
2831
- * @access public
2832
- * @since 2.0
2833
- */
2834
- function ot_type_textarea_simple( $args = array() ) {
2835
-
2836
- // Turns arguments array into variables.
2837
- extract( $args ); // phpcs:ignore
2838
-
2839
- // Verify a description.
2840
- $has_desc = ! empty( $field_desc ) ? true : false;
2841
-
2842
- // Format setting outer wrapper.
2843
- echo '<div class="format-setting type-textarea simple ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
2844
-
2845
- // Description.
2846
- echo $has_desc ? '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>' : '';
2847
-
2848
- // Format setting inner wrapper.
2849
- echo '<div class="format-setting-inner">';
2850
-
2851
- // Filter to allow wpautop.
2852
- $wpautop = apply_filters( 'ot_wpautop', false, $field_id );
2853
-
2854
- // Wpautop $field_value.
2855
- if ( true === $wpautop ) {
2856
- $field_value = wpautop( $field_value );
2857
- }
2858
-
2859
- // Build textarea simple.
2860
- echo '<textarea class="textarea ' . esc_attr( $field_class ) . '" rows="' . esc_attr( $field_rows ) . '" cols="40" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '">' . esc_textarea( $field_value ) . '</textarea>';
2861
-
2862
- echo '</div>';
2863
-
2864
- echo '</div>';
2865
- }
2866
- }
2867
-
2868
- if ( ! function_exists( 'ot_type_textblock' ) ) {
2869
-
2870
- /**
2871
- * Textblock option type.
2872
- *
2873
- * See @ot_display_by_type to see the full list of available arguments.
2874
- *
2875
- * @param array $args An array of arguments.
2876
- *
2877
- * @access public
2878
- * @since 2.0
2879
- */
2880
- function ot_type_textblock( $args = array() ) {
2881
-
2882
- // Turns arguments array into variables.
2883
- extract( $args ); // phpcs:ignore
2884
-
2885
- // Format setting outer wrapper.
2886
- echo '<div class="format-setting type-textblock wide-desc">';
2887
-
2888
- // Description.
2889
- echo '<div class="description">' . wp_kses_post( htmlspecialchars_decode( $field_desc ) ) . '</div>';
2890
-
2891
- echo '</div>';
2892
- }
2893
- }
2894
-
2895
- if ( ! function_exists( 'ot_type_textblock_titled' ) ) {
2896
-
2897
- /**
2898
- * Textblock Titled option type.
2899
- *
2900
- * See @ot_display_by_type to see the full l