Loco Translate - Version 2.3.0

Version Description

  • Added experimental support for multipart uploads
  • Added relocation tab for moving translation sets
  • Creation of missing directories when writing new files
  • Fixed duplicate file addition when iterating over symlink
  • Bumped WP compatibility to 5.2.1
Download this release

Release Info

Developer timwhitlock
Plugin Icon 128x128 Loco Translate
Version 2.3.0
Comparing to
See all releases

Code changes from version 2.2.2 to 2.3.0

Files changed (69) hide show
  1. languages/loco-translate.pot +136 -99
  2. lib/data/locales.php +1 -1
  3. loco.php +2 -2
  4. pub/css/admin.css +1 -1
  5. pub/css/editor.css +1 -1
  6. pub/css/podiff.css +1 -1
  7. pub/css/poview.css +1 -1
  8. pub/css/skins/blue.css +1 -1
  9. pub/css/skins/coffee.css +1 -1
  10. pub/css/skins/ectoplasm.css +1 -1
  11. pub/css/skins/light.css +1 -1
  12. pub/css/skins/midnight.css +1 -1
  13. pub/css/skins/ocean.css +1 -1
  14. pub/css/skins/sunrise.css +1 -1
  15. pub/font/loco.eot +0 -0
  16. pub/font/loco.svg +1 -0
  17. pub/font/loco.ttf +0 -0
  18. pub/font/loco.woff +0 -0
  19. pub/js/debug.js +1 -1
  20. pub/js/delete.js +3 -5
  21. pub/js/editor.js +35 -5
  22. pub/js/min/admin.js +221 -217
  23. pub/js/move.js +52 -0
  24. readme.txt +10 -3
  25. src/admin/bundle/BaseController.php +6 -28
  26. src/admin/bundle/LocaleController.php +1 -0
  27. src/admin/bundle/ViewController.php +5 -2
  28. src/admin/config/SettingsController.php +1 -1
  29. src/admin/file/BaseController.php +9 -3
  30. src/admin/file/DeleteController.php +4 -3
  31. src/admin/file/EditController.php +1 -1
  32. src/admin/file/MoveController.php +185 -0
  33. src/admin/init/InitPoController.php +1 -10
  34. src/ajax/DownloadController.php +1 -1
  35. src/ajax/FsConnectController.php +58 -12
  36. src/ajax/SaveController.php +8 -2
  37. src/ajax/XgettextController.php +0 -1
  38. src/api/WordPressFileSystem.php +41 -19
  39. src/data/Settings.php +2 -0
  40. src/data/Upload.php +71 -0
  41. src/error/AdminNotices.php +12 -19
  42. src/error/Debug.php +15 -0
  43. src/error/Exception.php +21 -0
  44. src/error/UploadException.php +8 -0
  45. src/fs/Directory.php +2 -6
  46. src/fs/File.php +24 -9
  47. src/fs/FileFinder.php +21 -16
  48. src/fs/FileList.php +14 -9
  49. src/fs/FileListInterface.php +6 -1
  50. src/fs/FileWriter.php +61 -17
  51. src/fs/LocaleDirectory.php +1 -0
  52. src/fs/LocaleFile.php +1 -1
  53. src/fs/Locations.php +37 -17
  54. src/fs/Revisions.php +4 -0
  55. src/fs/Siblings.php +1 -3
  56. src/mvc/AdminRouter.php +16 -8
  57. src/mvc/Controller.php +2 -1
  58. src/mvc/FileParams.php +22 -10
  59. src/mvc/HiddenFields.php +2 -0
  60. src/mvc/PostParams.php +1 -2
  61. tpl/admin/bundle/inc-po-table.php +4 -3
  62. tpl/admin/bundle/locale.php +3 -3
  63. tpl/admin/common/inc-fsconn.php +8 -15
  64. tpl/admin/config/settings.php +7 -1
  65. tpl/admin/file/delete.php +1 -1
  66. tpl/admin/file/move-po.php +43 -0
  67. tpl/admin/file/move-pot.php +19 -0
  68. tpl/admin/file/move.php +31 -0
  69. tpl/admin/init/init-po.php +3 -8
languages/loco-translate.pot CHANGED
@@ -1,9 +1,9 @@
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
- "Project-Id-Version: Loco Translate 2.2.2-dev\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2019-03-30 11:42+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -13,9 +13,9 @@ msgstr ""
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.2.2-dev; wp-5.1.1"
17
 
18
- #: src/fs/FileWriter.php:184
19
  #, php-format
20
  msgid "\"%s\" is a directory, not a file"
21
  msgstr ""
@@ -24,7 +24,7 @@ msgstr ""
24
  msgid "\"Hello Dolly\" is part of the WordPress core"
25
  msgstr ""
26
 
27
- #: src/api/WordPressFileSystem.php:84
28
  #, php-format
29
  msgid "%s already exists in this folder"
30
  msgstr ""
@@ -97,7 +97,7 @@ msgid_plural "%s words"
97
  msgstr[0] ""
98
  msgstr[1] ""
99
 
100
- #: tpl/admin/config/settings.php:136
101
  msgid "About file system access"
102
  msgstr ""
103
 
@@ -158,15 +158,15 @@ msgstr ""
158
  msgid "Ajax route not found: \"%s\""
159
  msgstr ""
160
 
161
- #: tpl/admin/config/settings.php:123
162
  msgid "Allow"
163
  msgstr ""
164
 
165
- #: tpl/admin/config/settings.php:126
166
  msgid "Allow (with warning)"
167
  msgstr ""
168
 
169
- #: tpl/admin/config/settings.php:147
170
  msgid "Allow full access to these roles"
171
  msgstr ""
172
 
@@ -195,7 +195,7 @@ msgstr ""
195
  msgid "Author details"
196
  msgstr ""
197
 
198
- #: tpl/admin/init/init-po.php:70
199
  msgid "Available languages"
200
  msgstr ""
201
 
@@ -233,7 +233,7 @@ msgstr ""
233
  msgid "Bundle setup"
234
  msgstr ""
235
 
236
- #: src/admin/bundle/BaseController.php:170
237
  msgid ""
238
  "Changes to this file may be overwritten or deleted when you update WordPress"
239
  msgstr ""
@@ -250,15 +250,15 @@ msgstr ""
250
  msgid "Child theme declares the same Text Domain as the parent theme"
251
  msgstr ""
252
 
253
- #: tpl/admin/init/init-po.php:51
254
  msgid "Choose a language"
255
  msgstr ""
256
 
257
- #: tpl/admin/init/init-po.php:96
258
  msgid "Choose a location"
259
  msgstr ""
260
 
261
- #: tpl/admin/common/inc-fsconn.php:60
262
  msgid "Click \"Connect\" to authenticate with the server"
263
  msgstr ""
264
 
@@ -305,19 +305,19 @@ msgstr[1] ""
305
  msgid "Confirm delete"
306
  msgstr ""
307
 
308
- #: tpl/admin/common/inc-fsconn.php:65
309
  msgid "Connect"
310
  msgstr ""
311
 
312
- #: src/ajax/FsConnectController.php:86
313
  msgid "Connected to remote file system"
314
  msgstr ""
315
 
316
- #: tpl/admin/bundle/inc-po-table.php:53 tpl/admin/bundle/locale.php:69
317
  msgid "Copy"
318
  msgstr ""
319
 
320
- #: tpl/admin/init/init-po.php:152
321
  #, php-format
322
  msgid "Copy target translations from \"%s\""
323
  msgstr ""
@@ -336,11 +336,11 @@ msgstr ""
336
  msgid "Create template instead"
337
  msgstr ""
338
 
339
- #: src/admin/bundle/BaseController.php:144
340
  msgid "Creating this file requires permission"
341
  msgstr ""
342
 
343
- #: tpl/admin/init/init-po.php:82
344
  msgid "Custom language"
345
  msgstr ""
346
 
@@ -350,18 +350,18 @@ msgstr ""
350
  msgid "Debug"
351
  msgstr ""
352
 
353
- #: src/admin/file/BaseController.php:107 tpl/admin/file/diff.php:31
354
- #: tpl/admin/bundle/inc-po-table.php:59 tpl/admin/bundle/locale.php:75
355
  msgid "Delete"
356
  msgstr ""
357
 
358
- #: src/admin/file/DeleteController.php:75
359
- #: src/admin/file/DeleteController.php:93
360
  #, php-format
361
  msgid "Delete %s"
362
  msgstr ""
363
 
364
- #: src/admin/bundle/BaseController.php:147
365
  msgid "Deleting this file requires permission"
366
  msgstr ""
367
 
@@ -378,12 +378,12 @@ msgstr ""
378
  msgid "Directory is writeable"
379
  msgstr ""
380
 
381
- #: tpl/admin/config/settings.php:129
382
  msgid "Disallow"
383
  msgstr ""
384
 
385
- #: src/admin/bundle/LocaleController.php:129 tpl/admin/common/inc-fsconn.php:16
386
- #: tpl/admin/common/inc-fsconn.php:43 tpl/admin/errors/no-backups.php:22
387
  msgid "Documentation"
388
  msgstr ""
389
 
@@ -399,7 +399,7 @@ msgstr ""
399
  msgid "Download controller returned empty output"
400
  msgstr ""
401
 
402
- #: tpl/admin/bundle/inc-po-table.php:47 tpl/admin/bundle/locale.php:63
403
  msgid "Edit"
404
  msgstr ""
405
 
@@ -417,7 +417,7 @@ msgstr ""
417
  msgid "Editing %1$s in %2$s"
418
  msgstr ""
419
 
420
- #: src/admin/file/BaseController.php:103
421
  msgid "Editor"
422
  msgstr ""
423
 
@@ -553,7 +553,7 @@ msgid ""
553
  "it"
554
  msgstr ""
555
 
556
- #: src/js/Strings.php:67 src/error/Exception.php:128
557
  msgid "Error"
558
  msgstr ""
559
 
@@ -573,7 +573,7 @@ msgstr[1] ""
573
  msgid "Extracting strings"
574
  msgstr ""
575
 
576
- #: src/fs/FileWriter.php:242
577
  msgid "Failed to build directory path"
578
  msgstr ""
579
 
@@ -586,28 +586,28 @@ msgstr ""
586
  msgid "Failed to connect to remote server"
587
  msgstr ""
588
 
589
- #: src/fs/FileWriter.php:152
590
  #, php-format
591
  msgid "Failed to copy %s to %s"
592
  msgstr ""
593
 
594
- #: src/ajax/SaveController.php:66
595
  #, php-format
596
  msgid ""
597
  "Failed to create backup file in \"%s\". Check file permissions or disable "
598
  "backups"
599
  msgstr ""
600
 
601
- #: src/fs/FileWriter.php:235
602
  msgid "Failed to create directory"
603
  msgstr ""
604
 
605
- #: src/fs/FileWriter.php:168
606
  #, php-format
607
  msgid "Failed to delete %s"
608
  msgstr ""
609
 
610
- #: src/fs/FileWriter.php:208
611
  msgid "Failed to save file"
612
  msgstr ""
613
 
@@ -619,7 +619,7 @@ msgstr ""
619
  msgid "File backups are disabled in your plugin settings"
620
  msgstr ""
621
 
622
- #: src/admin/file/DeleteController.php:56 src/admin/file/DiffController.php:61
623
  #, php-format
624
  msgid "File deleted"
625
  msgid_plural "%u files deleted"
@@ -634,8 +634,8 @@ msgstr ""
634
  msgid "File doesn't exist"
635
  msgstr ""
636
 
637
- #: src/admin/file/BaseController.php:105 tpl/admin/file/diff.php:60
638
- #: tpl/admin/bundle/inc-po-table.php:20 tpl/admin/bundle/locale.php:43
639
  msgid "File info"
640
  msgstr ""
641
 
@@ -652,30 +652,30 @@ msgid "File is protected by the bundle configuration"
652
  msgstr ""
653
 
654
  #. Refers to bundled plugin or theme translation files - i.e. those supplied by the author
655
- #: src/fs/LocaleDirectory.php:62
656
  msgctxt "File location"
657
  msgid "Author"
658
  msgstr ""
659
 
660
  #. Refers to translation files in Loco's custom/protected directory
661
- #: src/fs/LocaleDirectory.php:68
662
  msgctxt "File location"
663
  msgid "Custom"
664
  msgstr ""
665
 
666
  #. Refers to translation files in an alternative location that isn't Author, System or Custom.
667
- #: src/fs/LocaleDirectory.php:71
668
  msgctxt "File location"
669
  msgid "Other"
670
  msgstr ""
671
 
672
  #. Refers to system-installed translation files - i.e. those under WP_LANG_DIR
673
- #: src/fs/LocaleDirectory.php:65
674
  msgctxt "File location"
675
  msgid "System"
676
  msgstr ""
677
 
678
- #: src/fs/FileWriter.php:254
679
  msgid "File modification is disallowed by your WordPress config"
680
  msgstr ""
681
 
@@ -684,6 +684,13 @@ msgstr ""
684
  msgid "File modified"
685
  msgstr ""
686
 
 
 
 
 
 
 
 
687
  #: tpl/admin/errors/file-missing.php:11
688
  msgid "File not found"
689
  msgstr ""
@@ -701,7 +708,7 @@ msgstr ""
701
  msgid "File size"
702
  msgstr ""
703
 
704
- #: tpl/admin/config/settings.php:106 tpl/admin/config/settings.php:110
705
  msgid "File system access"
706
  msgstr ""
707
 
@@ -734,7 +741,7 @@ msgstr ""
734
  msgid "Find config"
735
  msgstr ""
736
 
737
- #: tpl/admin/bundle/inc-po-table.php:26 tpl/admin/bundle/locale.php:49
738
  msgid "Folder"
739
  msgstr ""
740
 
@@ -768,7 +775,7 @@ msgstr ""
768
  msgid "Go to WordPress Core"
769
  msgstr ""
770
 
771
- #: tpl/admin/config/settings.php:143
772
  msgid "Grant access to roles"
773
  msgstr ""
774
 
@@ -824,7 +831,7 @@ msgstr ""
824
  msgid "Include Fuzzy strings"
825
  msgstr ""
826
 
827
- #: tpl/admin/bundle/inc-po-table.php:56 tpl/admin/bundle/locale.php:72
828
  msgid "Info"
829
  msgstr ""
830
 
@@ -837,8 +844,8 @@ msgstr ""
837
  msgid "Initializing new translations in unknown set"
838
  msgstr ""
839
 
840
- #: src/admin/bundle/LocaleController.php:115
841
- #: src/admin/list/LocalesController.php:35 tpl/admin/init/init-po.php:64
842
  msgid "Installed languages"
843
  msgstr ""
844
 
@@ -850,16 +857,16 @@ msgstr ""
850
  msgid "It needs configuring before you can do any translations"
851
  msgstr ""
852
 
853
- #: tpl/admin/init/init-po.php:158
854
  msgid "Just copy English source strings"
855
  msgstr ""
856
 
857
  #. relative time when something happened in the last 30 seconds
858
- #: src/mvc/FileParams.php:139
859
  msgid "Just now"
860
  msgstr ""
861
 
862
- #: tpl/admin/bundle/inc-po-table.php:11
863
  msgid "Language"
864
  msgstr ""
865
 
@@ -887,7 +894,7 @@ msgstr ""
887
  msgid "Last extracted"
888
  msgstr ""
889
 
890
- #: tpl/admin/bundle/inc-po-table.php:23 tpl/admin/bundle/locale.php:46
891
  #: tpl/admin/list/locales.php:19 tpl/admin/list/inc-table.php:17
892
  msgid "Last modified"
893
  msgstr ""
@@ -958,7 +965,7 @@ msgstr ""
958
  msgid "Loco, Translation Management"
959
  msgstr ""
960
 
961
- #: tpl/admin/config/settings.php:98
962
  msgid "Look for non-standard names:"
963
  msgstr ""
964
 
@@ -985,11 +992,11 @@ msgstr ""
985
  msgid "MO file exists for this language already. Delete it first"
986
  msgstr ""
987
 
988
- #: tpl/admin/config/settings.php:120
989
  msgid "Modification of installed files"
990
  msgstr ""
991
 
992
- #: src/fs/FileWriter.php:258
993
  msgid "Modification of installed files is disallowed by the plugin settings"
994
  msgstr ""
995
 
@@ -999,9 +1006,18 @@ msgctxt "Modified time"
999
  msgid "Updated"
1000
  msgstr ""
1001
 
 
 
 
 
 
 
 
 
 
1002
  #: src/admin/init/InitPoController.php:16
1003
  #: src/admin/init/InitPoController.php:111
1004
- #: src/admin/file/BaseController.php:123 src/admin/bundle/ViewController.php:96
1005
  msgid "New language"
1006
  msgstr ""
1007
 
@@ -1018,7 +1034,7 @@ msgstr ""
1018
  msgid "New translations template for \"%s\""
1019
  msgstr ""
1020
 
1021
- #: src/admin/bundle/LocaleController.php:128
1022
  msgid "No core translation files are installed for this language"
1023
  msgstr ""
1024
 
@@ -1026,7 +1042,7 @@ msgstr ""
1026
  msgid "No files found for this language"
1027
  msgstr ""
1028
 
1029
- #: tpl/admin/init/init-po.php:63
1030
  msgid "No language selected"
1031
  msgstr ""
1032
 
@@ -1034,7 +1050,7 @@ msgstr ""
1034
  msgid "No previous file revisions"
1035
  msgstr ""
1036
 
1037
- #: tpl/admin/bundle/inc-po-table.php:104
1038
  #, php-format
1039
  msgid "No translations found for \"%s\""
1040
  msgstr ""
@@ -1044,7 +1060,7 @@ msgstr ""
1044
  msgid "no wildcards"
1045
  msgstr ""
1046
 
1047
- #: tpl/admin/config/settings.php:86 tpl/admin/config/settings.php:116
1048
  msgid "Not recommended"
1049
  msgstr ""
1050
 
@@ -1060,7 +1076,7 @@ msgid "Nothing matches the text filter"
1060
  msgstr ""
1061
 
1062
  #: src/js/Strings.php:73 src/error/Notice.php:20
1063
- #: tpl/admin/common/inc-fsconn.php:39
1064
  msgid "Notice"
1065
  msgstr ""
1066
 
@@ -1084,7 +1100,7 @@ msgstr ""
1084
  msgid "OK, Load this config"
1085
  msgstr ""
1086
 
1087
- #: src/admin/file/DeleteController.php:98
1088
  #, php-format
1089
  msgid "One dependent file will also be deleted"
1090
  msgid_plural "%u dependent files will also be deleted"
@@ -1098,6 +1114,13 @@ msgid_plural "%s files can't be matched to a known set of strings"
1098
  msgstr[0] ""
1099
  msgstr[1] ""
1100
 
 
 
 
 
 
 
 
1101
  #. Where %2$s is the maximum size of a file that will be included and %3$s is the largest encountered
1102
  #: src/ajax/SyncController.php:63
1103
  #, php-format
@@ -1132,12 +1155,12 @@ msgstr ""
1132
  msgid "Overview"
1133
  msgstr ""
1134
 
1135
- #: src/mvc/AdminRouter.php:235
1136
  msgid "Page not found"
1137
  msgstr ""
1138
 
1139
- #: src/fs/FileWriter.php:205
1140
- msgid "Parent directory doesn't exist"
1141
  msgstr ""
1142
 
1143
  #: tpl/admin/bundle/conf.php:144
@@ -1148,7 +1171,7 @@ msgstr ""
1148
  msgid "Partially configured bundle"
1149
  msgstr ""
1150
 
1151
- #: tpl/admin/bundle/inc-po-table.php:17 tpl/admin/bundle/locale.php:39
1152
  msgid "Pending"
1153
  msgstr ""
1154
 
@@ -1156,7 +1179,7 @@ msgstr ""
1156
  msgid "Permission denied"
1157
  msgstr ""
1158
 
1159
- #: src/fs/FileWriter.php:199
1160
  msgid "Permission denied to update file"
1161
  msgstr ""
1162
 
@@ -1177,7 +1200,7 @@ msgid "Plugin translations &lsaquo; Loco"
1177
  msgstr ""
1178
 
1179
  #: src/mvc/AdminRouter.php:49 src/admin/Navigation.php:44
1180
- #: src/admin/bundle/LocaleController.php:145
1181
  msgid "Plugins"
1182
  msgstr ""
1183
 
@@ -1241,19 +1264,19 @@ msgstr ""
1241
  msgid "PO file missing"
1242
  msgstr ""
1243
 
1244
- #: src/ajax/SaveController.php:100
1245
  msgid "PO file saved and MO file compiled"
1246
  msgstr ""
1247
 
1248
- #: src/ajax/SaveController.php:105
1249
  msgid "PO file saved, but MO file compilation failed"
1250
  msgstr ""
1251
 
1252
- #: src/ajax/SaveController.php:112
1253
  msgid "POT file saved"
1254
  msgstr ""
1255
 
1256
- #: tpl/admin/config/settings.php:93
1257
  msgid "POT template files"
1258
  msgstr ""
1259
 
@@ -1273,7 +1296,7 @@ msgstr ""
1273
  msgid "Recently updated:"
1274
  msgstr ""
1275
 
1276
- #: src/fs/FileWriter.php:149
1277
  msgid "Refusing to copy over an existing file"
1278
  msgstr ""
1279
 
@@ -1282,11 +1305,15 @@ msgstr ""
1282
  msgid "Relative path from bundle root to the official POT file"
1283
  msgstr ""
1284
 
 
 
 
 
1285
  #: tpl/admin/bundle/conf.php:159 tpl/admin/bundle/setup/saved.php:18
1286
  msgid "Reset config"
1287
  msgstr ""
1288
 
1289
- #: src/admin/file/BaseController.php:106 tpl/admin/file/diff.php:30
1290
  msgid "Restore"
1291
  msgstr ""
1292
 
@@ -1313,11 +1340,11 @@ msgstr ""
1313
  msgid "Save config"
1314
  msgstr ""
1315
 
1316
- #: tpl/admin/config/settings.php:115
1317
  msgid "Save credentials in session"
1318
  msgstr ""
1319
 
1320
- #: tpl/admin/config/settings.php:164 tpl/admin/config/prefs.php:28
1321
  msgid "Save settings"
1322
  msgstr ""
1323
 
@@ -1325,7 +1352,7 @@ msgstr ""
1325
  msgid "Saving PO/POT files"
1326
  msgstr ""
1327
 
1328
- #: src/admin/bundle/BaseController.php:150
1329
  msgid "Saving this file requires permission"
1330
  msgstr ""
1331
 
@@ -1337,15 +1364,15 @@ msgstr ""
1337
  msgid "Scan PHP files with extensions:"
1338
  msgstr ""
1339
 
1340
- #: src/admin/bundle/LocaleController.php:136
1341
  msgid "See all core translations"
1342
  msgstr ""
1343
 
1344
- #: tpl/admin/root.php:54 src/admin/bundle/LocaleController.php:146
1345
  msgid "See all plugins"
1346
  msgstr ""
1347
 
1348
- #: tpl/admin/root.php:39 src/admin/bundle/LocaleController.php:141
1349
  msgid "See all themes"
1350
  msgstr ""
1351
 
@@ -1365,7 +1392,7 @@ msgid "Sets"
1365
  msgstr ""
1366
 
1367
  #: src/mvc/AdminRouter.php:67 src/mvc/AdminRouter.php:72
1368
- #: tpl/admin/common/inc-fsconn.php:18 tpl/admin/common/inc-fsconn.php:45
1369
  #: tpl/admin/errors/no-backups.php:24
1370
  msgid "Settings"
1371
  msgstr ""
@@ -1404,7 +1431,7 @@ msgstr ""
1404
  msgid "Skip template"
1405
  msgstr ""
1406
 
1407
- #: src/admin/file/BaseController.php:104
1408
  msgid "Source"
1409
  msgstr ""
1410
 
@@ -1420,7 +1447,7 @@ msgstr ""
1420
  msgid "Source text"
1421
  msgstr ""
1422
 
1423
- #: tpl/admin/init/init-po.php:178
1424
  msgid "Start translating"
1425
  msgstr ""
1426
 
@@ -1433,7 +1460,7 @@ msgid "System diagnostics"
1433
  msgstr ""
1434
 
1435
  #: tpl/admin/file/view-pot.php:9 tpl/admin/file/edit-pot.php:10
1436
- #: tpl/admin/file/info-pot.php:10 tpl/admin/bundle/inc-po-table.php:41
1437
  #: tpl/admin/bundle/conf.php:65
1438
  msgid "Template file"
1439
  msgstr ""
@@ -1442,7 +1469,7 @@ msgstr ""
1442
  msgid "Template file already exists"
1443
  msgstr ""
1444
 
1445
- #: src/ajax/XgettextController.php:63
1446
  msgid "Template file created"
1447
  msgstr ""
1448
 
@@ -1450,7 +1477,7 @@ msgstr ""
1450
  msgid "Template missing"
1451
  msgstr ""
1452
 
1453
- #: tpl/admin/init/init-po.php:141
1454
  msgid "Template options"
1455
  msgstr ""
1456
 
@@ -1496,7 +1523,7 @@ msgid "Theme translations &lsaquo; Loco"
1496
  msgstr ""
1497
 
1498
  #: src/mvc/AdminRouter.php:44 src/admin/Navigation.php:41
1499
- #: src/admin/bundle/LocaleController.php:140
1500
  msgid "Themes"
1501
  msgstr ""
1502
 
@@ -1565,15 +1592,21 @@ msgstr ""
1565
  msgid "This directory can't be written to directly by the web server"
1566
  msgstr ""
1567
 
1568
- #: src/admin/bundle/BaseController.php:167
1569
  msgid "This directory is managed by WordPress, be careful what you delete"
1570
  msgstr ""
1571
 
 
 
 
 
 
 
1572
  #: tpl/admin/file/info.php:39
1573
  msgid "This file can't be updated directly by the web server"
1574
  msgstr ""
1575
 
1576
- #: src/admin/bundle/BaseController.php:164
1577
  msgid "This file may be overwritten or deleted when you update WordPress"
1578
  msgstr ""
1579
 
@@ -1581,6 +1614,10 @@ msgstr ""
1581
  msgid "This information is for developers to find problems in the bundle setup"
1582
  msgstr ""
1583
 
 
 
 
 
1584
  #: tpl/admin/errors/file-isdir.php:14
1585
  msgid "This page was expecting a file, but the path is actually a directory"
1586
  msgstr ""
@@ -1631,7 +1668,7 @@ msgstr ""
1631
  msgid "Translate themes and plugins directly in WordPress"
1632
  msgstr ""
1633
 
1634
- #: tpl/admin/file/info-po.php:26 tpl/admin/bundle/inc-po-table.php:14
1635
  #: tpl/admin/bundle/locale.php:36
1636
  msgid "Translation progress"
1637
  msgstr ""
@@ -1680,7 +1717,7 @@ msgstr ""
1680
  msgid "Upgrade to %s"
1681
  msgstr ""
1682
 
1683
- #: tpl/admin/init/init-po.php:168
1684
  #, php-format
1685
  msgid "Use \"%s\" as template when running Sync"
1686
  msgstr ""
@@ -1716,7 +1753,7 @@ msgstr ""
1716
  msgid "Version %s"
1717
  msgstr ""
1718
 
1719
- #: tpl/admin/bundle/inc-po-table.php:50 tpl/admin/bundle/locale.php:66
1720
  msgid "View"
1721
  msgstr ""
1722
 
@@ -1750,7 +1787,7 @@ msgstr ""
1750
  msgid "Welcome to Loco Translate"
1751
  msgstr ""
1752
 
1753
- #: src/admin/init/InitPoController.php:325 tpl/admin/file/info.php:113
1754
  msgid "What's this?"
1755
  msgstr ""
1756
 
@@ -1758,7 +1795,7 @@ msgstr ""
1758
  msgid "WordPress"
1759
  msgstr ""
1760
 
1761
- #: src/package/Core.php:79 src/admin/bundle/LocaleController.php:135
1762
  msgid "WordPress Core"
1763
  msgstr ""
1764
 
@@ -1766,7 +1803,7 @@ msgstr ""
1766
  msgid "WordPress core"
1767
  msgstr ""
1768
 
1769
- #: tpl/admin/init/init-po.php:58
1770
  msgid "WordPress language"
1771
  msgstr ""
1772
 
@@ -1776,7 +1813,7 @@ msgstr ""
1776
 
1777
  #. When a file or folder cannot be modified due to filesystem permissions
1778
  #: tpl/admin/file/info.php:36 tpl/admin/file/info.php:89
1779
- #: tpl/admin/common/inc-fsconn.php:54
1780
  msgid "Write protected"
1781
  msgstr ""
1782
 
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
+ "Project-Id-Version: Loco Translate 2.3.0\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2019-05-31 14:05+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.3.0; wp-5.2.1"
17
 
18
+ #: src/fs/FileWriter.php:214
19
  #, php-format
20
  msgid "\"%s\" is a directory, not a file"
21
  msgstr ""
24
  msgid "\"Hello Dolly\" is part of the WordPress core"
25
  msgstr ""
26
 
27
+ #: src/api/WordPressFileSystem.php:87
28
  #, php-format
29
  msgid "%s already exists in this folder"
30
  msgstr ""
97
  msgstr[0] ""
98
  msgstr[1] ""
99
 
100
+ #: tpl/admin/config/settings.php:142
101
  msgid "About file system access"
102
  msgstr ""
103
 
158
  msgid "Ajax route not found: \"%s\""
159
  msgstr ""
160
 
161
+ #: tpl/admin/config/settings.php:129
162
  msgid "Allow"
163
  msgstr ""
164
 
165
+ #: tpl/admin/config/settings.php:132
166
  msgid "Allow (with warning)"
167
  msgstr ""
168
 
169
+ #: tpl/admin/config/settings.php:153
170
  msgid "Allow full access to these roles"
171
  msgstr ""
172
 
195
  msgid "Author details"
196
  msgstr ""
197
 
198
+ #: tpl/admin/init/init-po.php:67
199
  msgid "Available languages"
200
  msgstr ""
201
 
233
  msgid "Bundle setup"
234
  msgstr ""
235
 
236
+ #: src/ajax/FsConnectController.php:114
237
  msgid ""
238
  "Changes to this file may be overwritten or deleted when you update WordPress"
239
  msgstr ""
250
  msgid "Child theme declares the same Text Domain as the parent theme"
251
  msgstr ""
252
 
253
+ #: tpl/admin/init/init-po.php:48
254
  msgid "Choose a language"
255
  msgstr ""
256
 
257
+ #: tpl/admin/init/init-po.php:93
258
  msgid "Choose a location"
259
  msgstr ""
260
 
261
+ #: tpl/admin/common/inc-fsconn.php:56
262
  msgid "Click \"Connect\" to authenticate with the server"
263
  msgstr ""
264
 
305
  msgid "Confirm delete"
306
  msgstr ""
307
 
308
+ #: tpl/admin/common/inc-fsconn.php:60
309
  msgid "Connect"
310
  msgstr ""
311
 
312
+ #: src/ajax/FsConnectController.php:101
313
  msgid "Connected to remote file system"
314
  msgstr ""
315
 
316
+ #: tpl/admin/bundle/inc-po-table.php:57 tpl/admin/bundle/locale.php:72
317
  msgid "Copy"
318
  msgstr ""
319
 
320
+ #: tpl/admin/init/init-po.php:147
321
  #, php-format
322
  msgid "Copy target translations from \"%s\""
323
  msgstr ""
336
  msgid "Create template instead"
337
  msgstr ""
338
 
339
+ #: src/ajax/FsConnectController.php:124
340
  msgid "Creating this file requires permission"
341
  msgstr ""
342
 
343
+ #: tpl/admin/init/init-po.php:79
344
  msgid "Custom language"
345
  msgstr ""
346
 
350
  msgid "Debug"
351
  msgstr ""
352
 
353
+ #: src/admin/file/BaseController.php:110 tpl/admin/file/diff.php:31
354
+ #: tpl/admin/bundle/inc-po-table.php:60 tpl/admin/bundle/locale.php:75
355
  msgid "Delete"
356
  msgstr ""
357
 
358
+ #: src/admin/file/DeleteController.php:76
359
+ #: src/admin/file/DeleteController.php:94
360
  #, php-format
361
  msgid "Delete %s"
362
  msgstr ""
363
 
364
+ #: src/ajax/FsConnectController.php:127
365
  msgid "Deleting this file requires permission"
366
  msgstr ""
367
 
378
  msgid "Directory is writeable"
379
  msgstr ""
380
 
381
+ #: tpl/admin/config/settings.php:135
382
  msgid "Disallow"
383
  msgstr ""
384
 
385
+ #: src/admin/bundle/LocaleController.php:130 tpl/admin/common/inc-fsconn.php:16
386
+ #: tpl/admin/common/inc-fsconn.php:41 tpl/admin/errors/no-backups.php:22
387
  msgid "Documentation"
388
  msgstr ""
389
 
399
  msgid "Download controller returned empty output"
400
  msgstr ""
401
 
402
+ #: tpl/admin/bundle/inc-po-table.php:48 tpl/admin/bundle/locale.php:63
403
  msgid "Edit"
404
  msgstr ""
405
 
417
  msgid "Editing %1$s in %2$s"
418
  msgstr ""
419
 
420
+ #: src/admin/file/BaseController.php:105
421
  msgid "Editor"
422
  msgstr ""
423
 
553
  "it"
554
  msgstr ""
555
 
556
+ #: src/js/Strings.php:67 src/error/Exception.php:149
557
  msgid "Error"
558
  msgstr ""
559
 
573
  msgid "Extracting strings"
574
  msgstr ""
575
 
576
+ #: src/fs/FileWriter.php:288
577
  msgid "Failed to build directory path"
578
  msgstr ""
579
 
586
  msgid "Failed to connect to remote server"
587
  msgstr ""
588
 
589
+ #: src/fs/FileWriter.php:160
590
  #, php-format
591
  msgid "Failed to copy %s to %s"
592
  msgstr ""
593
 
594
+ #: src/ajax/SaveController.php:72
595
  #, php-format
596
  msgid ""
597
  "Failed to create backup file in \"%s\". Check file permissions or disable "
598
  "backups"
599
  msgstr ""
600
 
601
+ #: src/fs/FileWriter.php:280
602
  msgid "Failed to create directory"
603
  msgstr ""
604
 
605
+ #: src/fs/FileWriter.php:198
606
  #, php-format
607
  msgid "Failed to delete %s"
608
  msgstr ""
609
 
610
+ #: src/fs/FileWriter.php:249
611
  msgid "Failed to save file"
612
  msgstr ""
613
 
619
  msgid "File backups are disabled in your plugin settings"
620
  msgstr ""
621
 
622
+ #: src/admin/file/DeleteController.php:57 src/admin/file/DiffController.php:61
623
  #, php-format
624
  msgid "File deleted"
625
  msgid_plural "%u files deleted"
634
  msgid "File doesn't exist"
635
  msgstr ""
636
 
637
+ #: src/admin/file/BaseController.php:107 tpl/admin/file/diff.php:60
638
+ #: tpl/admin/bundle/inc-po-table.php:22 tpl/admin/bundle/locale.php:43
639
  msgid "File info"
640
  msgstr ""
641
 
652
  msgstr ""
653
 
654
  #. Refers to bundled plugin or theme translation files - i.e. those supplied by the author
655
+ #: src/fs/LocaleDirectory.php:63
656
  msgctxt "File location"
657
  msgid "Author"
658
  msgstr ""
659
 
660
  #. Refers to translation files in Loco's custom/protected directory
661
+ #: src/fs/LocaleDirectory.php:69
662
  msgctxt "File location"
663
  msgid "Custom"
664
  msgstr ""
665
 
666
  #. Refers to translation files in an alternative location that isn't Author, System or Custom.
667
+ #: src/fs/LocaleDirectory.php:72
668
  msgctxt "File location"
669
  msgid "Other"
670
  msgstr ""
671
 
672
  #. Refers to system-installed translation files - i.e. those under WP_LANG_DIR
673
+ #: src/fs/LocaleDirectory.php:66
674
  msgctxt "File location"
675
  msgid "System"
676
  msgstr ""
677
 
678
+ #: src/fs/FileWriter.php:299
679
  msgid "File modification is disallowed by your WordPress config"
680
  msgstr ""
681
 
684
  msgid "File modified"
685
  msgstr ""
686
 
687
+ #: src/admin/file/MoveController.php:79
688
+ #, php-format
689
+ msgid "File moved"
690
+ msgid_plural "%u files moved"
691
+ msgstr[0] ""
692
+ msgstr[1] ""
693
+
694
  #: tpl/admin/errors/file-missing.php:11
695
  msgid "File not found"
696
  msgstr ""
708
  msgid "File size"
709
  msgstr ""
710
 
711
+ #: tpl/admin/config/settings.php:112 tpl/admin/config/settings.php:116
712
  msgid "File system access"
713
  msgstr ""
714
 
741
  msgid "Find config"
742
  msgstr ""
743
 
744
+ #: tpl/admin/bundle/inc-po-table.php:28 tpl/admin/bundle/locale.php:49
745
  msgid "Folder"
746
  msgstr ""
747
 
775
  msgid "Go to WordPress Core"
776
  msgstr ""
777
 
778
+ #: tpl/admin/config/settings.php:149
779
  msgid "Grant access to roles"
780
  msgstr ""
781
 
831
  msgid "Include Fuzzy strings"
832
  msgstr ""
833
 
834
+ #: tpl/admin/bundle/inc-po-table.php:54 tpl/admin/bundle/locale.php:69
835
  msgid "Info"
836
  msgstr ""
837
 
844
  msgid "Initializing new translations in unknown set"
845
  msgstr ""
846
 
847
+ #: src/admin/bundle/LocaleController.php:116
848
+ #: src/admin/list/LocalesController.php:35 tpl/admin/init/init-po.php:61
849
  msgid "Installed languages"
850
  msgstr ""
851
 
857
  msgid "It needs configuring before you can do any translations"
858
  msgstr ""
859
 
860
+ #: tpl/admin/init/init-po.php:153
861
  msgid "Just copy English source strings"
862
  msgstr ""
863
 
864
  #. relative time when something happened in the last 30 seconds
865
+ #: src/mvc/FileParams.php:145
866
  msgid "Just now"
867
  msgstr ""
868
 
869
+ #: tpl/admin/bundle/inc-po-table.php:13
870
  msgid "Language"
871
  msgstr ""
872
 
894
  msgid "Last extracted"
895
  msgstr ""
896
 
897
+ #: tpl/admin/bundle/inc-po-table.php:25 tpl/admin/bundle/locale.php:46
898
  #: tpl/admin/list/locales.php:19 tpl/admin/list/inc-table.php:17
899
  msgid "Last modified"
900
  msgstr ""
965
  msgid "Loco, Translation Management"
966
  msgstr ""
967
 
968
+ #: tpl/admin/config/settings.php:104
969
  msgid "Look for non-standard names:"
970
  msgstr ""
971
 
992
  msgid "MO file exists for this language already. Delete it first"
993
  msgstr ""
994
 
995
+ #: tpl/admin/config/settings.php:126
996
  msgid "Modification of installed files"
997
  msgstr ""
998
 
999
+ #: src/fs/FileWriter.php:303
1000
  msgid "Modification of installed files is disallowed by the plugin settings"
1001
  msgstr ""
1002
 
1006
  msgid "Updated"
1007
  msgstr ""
1008
 
1009
+ #: src/admin/file/MoveController.php:100 src/admin/file/MoveController.php:127
1010
+ #, php-format
1011
+ msgid "Move %s"
1012
+ msgstr ""
1013
+
1014
+ #: tpl/admin/file/move.php:24
1015
+ msgid "Move files"
1016
+ msgstr ""
1017
+
1018
  #: src/admin/init/InitPoController.php:16
1019
  #: src/admin/init/InitPoController.php:111
1020
+ #: src/admin/file/BaseController.php:129 src/admin/bundle/ViewController.php:96
1021
  msgid "New language"
1022
  msgstr ""
1023
 
1034
  msgid "New translations template for \"%s\""
1035
  msgstr ""
1036
 
1037
+ #: src/admin/bundle/LocaleController.php:129
1038
  msgid "No core translation files are installed for this language"
1039
  msgstr ""
1040
 
1042
  msgid "No files found for this language"
1043
  msgstr ""
1044
 
1045
+ #: tpl/admin/init/init-po.php:60
1046
  msgid "No language selected"
1047
  msgstr ""
1048
 
1050
  msgid "No previous file revisions"
1051
  msgstr ""
1052
 
1053
+ #: tpl/admin/bundle/inc-po-table.php:105
1054
  #, php-format
1055
  msgid "No translations found for \"%s\""
1056
  msgstr ""
1060
  msgid "no wildcards"
1061
  msgstr ""
1062
 
1063
+ #: tpl/admin/config/settings.php:86 tpl/admin/config/settings.php:122
1064
  msgid "Not recommended"
1065
  msgstr ""
1066
 
1076
  msgstr ""
1077
 
1078
  #: src/js/Strings.php:73 src/error/Notice.php:20
1079
+ #: tpl/admin/common/inc-fsconn.php:37
1080
  msgid "Notice"
1081
  msgstr ""
1082
 
1100
  msgid "OK, Load this config"
1101
  msgstr ""
1102
 
1103
+ #: src/admin/file/DeleteController.php:99
1104
  #, php-format
1105
  msgid "One dependent file will also be deleted"
1106
  msgid_plural "%u dependent files will also be deleted"
1114
  msgstr[0] ""
1115
  msgstr[1] ""
1116
 
1117
+ #: src/admin/file/MoveController.php:83
1118
+ #, php-format
1119
+ msgid "One file could not be moved"
1120
+ msgid_plural "%u files could not be moved"
1121
+ msgstr[0] ""
1122
+ msgstr[1] ""
1123
+
1124
  #. Where %2$s is the maximum size of a file that will be included and %3$s is the largest encountered
1125
  #: src/ajax/SyncController.php:63
1126
  #, php-format
1155
  msgid "Overview"
1156
  msgstr ""
1157
 
1158
+ #: src/mvc/AdminRouter.php:243
1159
  msgid "Page not found"
1160
  msgstr ""
1161
 
1162
+ #: src/fs/FileWriter.php:245
1163
+ msgid "Parent directory isn't writable"
1164
  msgstr ""
1165
 
1166
  #: tpl/admin/bundle/conf.php:144
1171
  msgid "Partially configured bundle"
1172
  msgstr ""
1173
 
1174
+ #: tpl/admin/bundle/inc-po-table.php:19 tpl/admin/bundle/locale.php:39
1175
  msgid "Pending"
1176
  msgstr ""
1177
 
1179
  msgid "Permission denied"
1180
  msgstr ""
1181
 
1182
+ #: src/fs/FileWriter.php:239
1183
  msgid "Permission denied to update file"
1184
  msgstr ""
1185
 
1200
  msgstr ""
1201
 
1202
  #: src/mvc/AdminRouter.php:49 src/admin/Navigation.php:44
1203
+ #: src/admin/bundle/LocaleController.php:146
1204
  msgid "Plugins"
1205
  msgstr ""
1206
 
1264
  msgid "PO file missing"
1265
  msgstr ""
1266
 
1267
+ #: src/ajax/SaveController.php:106
1268
  msgid "PO file saved and MO file compiled"
1269
  msgstr ""
1270
 
1271
+ #: src/ajax/SaveController.php:111
1272
  msgid "PO file saved, but MO file compilation failed"
1273
  msgstr ""
1274
 
1275
+ #: src/ajax/SaveController.php:118
1276
  msgid "POT file saved"
1277
  msgstr ""
1278
 
1279
+ #: tpl/admin/config/settings.php:99
1280
  msgid "POT template files"
1281
  msgstr ""
1282
 
1296
  msgid "Recently updated:"
1297
  msgstr ""
1298
 
1299
+ #: src/fs/FileWriter.php:150
1300
  msgid "Refusing to copy over an existing file"
1301
  msgstr ""
1302
 
1305
  msgid "Relative path from bundle root to the official POT file"
1306
  msgstr ""
1307
 
1308
+ #: src/admin/file/BaseController.php:109
1309
+ msgid "Relocate"
1310
+ msgstr ""
1311
+
1312
  #: tpl/admin/bundle/conf.php:159 tpl/admin/bundle/setup/saved.php:18
1313
  msgid "Reset config"
1314
  msgstr ""
1315
 
1316
+ #: src/admin/file/BaseController.php:108 tpl/admin/file/diff.php:30
1317
  msgid "Restore"
1318
  msgstr ""
1319
 
1340
  msgid "Save config"
1341
  msgstr ""
1342
 
1343
+ #: tpl/admin/config/settings.php:121
1344
  msgid "Save credentials in session"
1345
  msgstr ""
1346
 
1347
+ #: tpl/admin/config/settings.php:170 tpl/admin/config/prefs.php:28
1348
  msgid "Save settings"
1349
  msgstr ""
1350
 
1352
  msgid "Saving PO/POT files"
1353
  msgstr ""
1354
 
1355
+ #: src/ajax/FsConnectController.php:133
1356
  msgid "Saving this file requires permission"
1357
  msgstr ""
1358
 
1364
  msgid "Scan PHP files with extensions:"
1365
  msgstr ""
1366
 
1367
+ #: src/admin/bundle/LocaleController.php:137
1368
  msgid "See all core translations"
1369
  msgstr ""
1370
 
1371
+ #: tpl/admin/root.php:54 src/admin/bundle/LocaleController.php:147
1372
  msgid "See all plugins"
1373
  msgstr ""
1374
 
1375
+ #: tpl/admin/root.php:39 src/admin/bundle/LocaleController.php:142
1376
  msgid "See all themes"
1377
  msgstr ""
1378
 
1392
  msgstr ""
1393
 
1394
  #: src/mvc/AdminRouter.php:67 src/mvc/AdminRouter.php:72
1395
+ #: tpl/admin/common/inc-fsconn.php:18 tpl/admin/common/inc-fsconn.php:43
1396
  #: tpl/admin/errors/no-backups.php:24
1397
  msgid "Settings"
1398
  msgstr ""
1431
  msgid "Skip template"
1432
  msgstr ""
1433
 
1434
+ #: src/admin/file/BaseController.php:106
1435
  msgid "Source"
1436
  msgstr ""
1437
 
1447
  msgid "Source text"
1448
  msgstr ""
1449
 
1450
+ #: tpl/admin/init/init-po.php:173
1451
  msgid "Start translating"
1452
  msgstr ""
1453
 
1460
  msgstr ""
1461
 
1462
  #: tpl/admin/file/view-pot.php:9 tpl/admin/file/edit-pot.php:10
1463
+ #: tpl/admin/file/info-pot.php:10 tpl/admin/bundle/inc-po-table.php:42
1464
  #: tpl/admin/bundle/conf.php:65
1465
  msgid "Template file"
1466
  msgstr ""
1469
  msgid "Template file already exists"
1470
  msgstr ""
1471
 
1472
+ #: src/ajax/XgettextController.php:62
1473
  msgid "Template file created"
1474
  msgstr ""
1475
 
1477
  msgid "Template missing"
1478
  msgstr ""
1479
 
1480
+ #: tpl/admin/init/init-po.php:136
1481
  msgid "Template options"
1482
  msgstr ""
1483
 
1523
  msgstr ""
1524
 
1525
  #: src/mvc/AdminRouter.php:44 src/admin/Navigation.php:41
1526
+ #: src/admin/bundle/LocaleController.php:141
1527
  msgid "Themes"
1528
  msgstr ""
1529
 
1592
  msgid "This directory can't be written to directly by the web server"
1593
  msgstr ""
1594
 
1595
+ #: src/ajax/FsConnectController.php:108
1596
  msgid "This directory is managed by WordPress, be careful what you delete"
1597
  msgstr ""
1598
 
1599
+ #: src/ajax/FsConnectController.php:111
1600
+ msgid ""
1601
+ "This directory is managed by WordPress. Removed files may be restored during "
1602
+ "updates"
1603
+ msgstr ""
1604
+
1605
  #: tpl/admin/file/info.php:39
1606
  msgid "This file can't be updated directly by the web server"
1607
  msgstr ""
1608
 
1609
+ #: src/ajax/FsConnectController.php:105
1610
  msgid "This file may be overwritten or deleted when you update WordPress"
1611
  msgstr ""
1612
 
1614
  msgid "This information is for developers to find problems in the bundle setup"
1615
  msgstr ""
1616
 
1617
+ #: src/ajax/FsConnectController.php:130
1618
+ msgid "This move operation requires permission"
1619
+ msgstr ""
1620
+
1621
  #: tpl/admin/errors/file-isdir.php:14
1622
  msgid "This page was expecting a file, but the path is actually a directory"
1623
  msgstr ""
1668
  msgid "Translate themes and plugins directly in WordPress"
1669
  msgstr ""
1670
 
1671
+ #: tpl/admin/file/info-po.php:26 tpl/admin/bundle/inc-po-table.php:16
1672
  #: tpl/admin/bundle/locale.php:36
1673
  msgid "Translation progress"
1674
  msgstr ""
1717
  msgid "Upgrade to %s"
1718
  msgstr ""
1719
 
1720
+ #: tpl/admin/init/init-po.php:163
1721
  #, php-format
1722
  msgid "Use \"%s\" as template when running Sync"
1723
  msgstr ""
1753
  msgid "Version %s"
1754
  msgstr ""
1755
 
1756
+ #: tpl/admin/bundle/inc-po-table.php:51 tpl/admin/bundle/locale.php:66
1757
  msgid "View"
1758
  msgstr ""
1759
 
1787
  msgid "Welcome to Loco Translate"
1788
  msgstr ""
1789
 
1790
+ #: src/admin/init/InitPoController.php:316 tpl/admin/file/info.php:113
1791
  msgid "What's this?"
1792
  msgstr ""
1793
 
1795
  msgid "WordPress"
1796
  msgstr ""
1797
 
1798
+ #: src/package/Core.php:79 src/admin/bundle/LocaleController.php:136
1799
  msgid "WordPress Core"
1800
  msgstr ""
1801
 
1803
  msgid "WordPress core"
1804
  msgstr ""
1805
 
1806
+ #: tpl/admin/init/init-po.php:55
1807
  msgid "WordPress language"
1808
  msgstr ""
1809
 
1813
 
1814
  #. When a file or folder cannot be modified due to filesystem permissions
1815
  #: tpl/admin/file/info.php:36 tpl/admin/file/info.php:89
1816
+ #: tpl/admin/common/inc-fsconn.php:50
1817
  msgid "Write protected"
1818
  msgstr ""
1819
 
lib/data/locales.php CHANGED
@@ -2,4 +2,4 @@
2
  /**
3
  * Compiled data. Do not edit.
4
  */
5
- return array('af'=>array(0=>'Afrikaans',1=>'Afrikaans'),'ar'=>array(0=>'Arabic',1=>'العربية'),'ary'=>array(0=>'Moroccan Arabic',1=>'العربية المغربية'),'as'=>array(0=>'Assamese',1=>'অসমীয়া'),'azb'=>array(0=>'South Azerbaijani',1=>'گؤنئی آذربایجان'),'az'=>array(0=>'Azerbaijani',1=>'Azərbaycan dili'),'bel'=>array(0=>'Belarusian',1=>'Беларуская мова'),'bg_BG'=>array(0=>'Bulgarian',1=>'Български'),'bn_BD'=>array(0=>'Bengali',1=>'বাংলা'),'bo'=>array(0=>'Tibetan',1=>'བོད་ཡིག'),'bs_BA'=>array(0=>'Bosnian',1=>'Bosanski'),'ca'=>array(0=>'Catalan',1=>'Català'),'ceb'=>array(0=>'Cebuano',1=>'Cebuano'),'cs_CZ'=>array(0=>'Czech',1=>'Čeština'),'cy'=>array(0=>'Welsh',1=>'Cymraeg'),'da_DK'=>array(0=>'Danish',1=>'Dansk'),'de_DE'=>array(0=>'German',1=>'Deutsch'),'de_CH_informal'=>array(0=>'German (Switzerland, Informal)',1=>'Deutsch (Schweiz, Du)'),'de_CH'=>array(0=>'German (Switzerland)',1=>'Deutsch (Schweiz)'),'de_DE_formal'=>array(0=>'German (Formal)',1=>'Deutsch (Sie)'),'dzo'=>array(0=>'Dzongkha',1=>'རྫོང་ཁ'),'el'=>array(0=>'Greek',1=>'Ελληνικά'),'en_NZ'=>array(0=>'English (New Zealand)',1=>'English (New Zealand)'),'en_GB'=>array(0=>'English (UK)',1=>'English (UK)'),'en_CA'=>array(0=>'English (Canada)',1=>'English (Canada)'),'en_ZA'=>array(0=>'English (South Africa)',1=>'English (South Africa)'),'en_AU'=>array(0=>'English (Australia)',1=>'English (Australia)'),'eo'=>array(0=>'Esperanto',1=>'Esperanto'),'es_AR'=>array(0=>'Spanish (Argentina)',1=>'Español de Argentina'),'es_CL'=>array(0=>'Spanish (Chile)',1=>'Español de Chile'),'es_MX'=>array(0=>'Spanish (Mexico)',1=>'Español de México'),'es_GT'=>array(0=>'Spanish (Guatemala)',1=>'Español de Guatemala'),'es_VE'=>array(0=>'Spanish (Venezuela)',1=>'Español de Venezuela'),'es_CR'=>array(0=>'Spanish (Costa Rica)',1=>'Español de Costa Rica'),'es_PE'=>array(0=>'Spanish (Peru)',1=>'Español de Perú'),'es_ES'=>array(0=>'Spanish (Spain)',1=>'Español'),'es_CO'=>array(0=>'Spanish (Colombia)',1=>'Español de Colombia'),'et'=>array(0=>'Estonian',1=>'Eesti'),'eu'=>array(0=>'Basque',1=>'Euskara'),'fa_IR'=>array(0=>'Persian',1=>'فارسی'),'fi'=>array(0=>'Finnish',1=>'Suomi'),'fr_BE'=>array(0=>'French (Belgium)',1=>'Français de Belgique'),'fr_CA'=>array(0=>'French (Canada)',1=>'Français du Canada'),'fr_FR'=>array(0=>'French (France)',1=>'Français'),'fur'=>array(0=>'Friulian',1=>'Friulian'),'gd'=>array(0=>'Scottish Gaelic',1=>'Gàidhlig'),'gl_ES'=>array(0=>'Galician',1=>'Galego'),'gu'=>array(0=>'Gujarati',1=>'ગુજરાતી'),'haz'=>array(0=>'Hazaragi',1=>'هزاره گی'),'he_IL'=>array(0=>'Hebrew',1=>'עִבְרִית'),'hi_IN'=>array(0=>'Hindi',1=>'हिन्दी'),'hr'=>array(0=>'Croatian',1=>'Hrvatski'),'hu_HU'=>array(0=>'Hungarian',1=>'Magyar'),'hy'=>array(0=>'Armenian',1=>'Հայերեն'),'id_ID'=>array(0=>'Indonesian',1=>'Bahasa Indonesia'),'is_IS'=>array(0=>'Icelandic',1=>'Íslenska'),'it_IT'=>array(0=>'Italian',1=>'Italiano'),'ja'=>array(0=>'Japanese',1=>'日本語'),'jv_ID'=>array(0=>'Javanese',1=>'Basa Jawa'),'ka_GE'=>array(0=>'Georgian',1=>'ქართული'),'kab'=>array(0=>'Kabyle',1=>'Taqbaylit'),'kk'=>array(0=>'Kazakh',1=>'Қазақ тілі'),'km'=>array(0=>'Khmer',1=>'ភាសាខ្មែរ'),'ko_KR'=>array(0=>'Korean',1=>'한국어'),'ckb'=>array(0=>'Kurdish (Sorani)',1=>'كوردی‎'),'lo'=>array(0=>'Lao',1=>'ພາສາລາວ'),'lt_LT'=>array(0=>'Lithuanian',1=>'Lietuvių kalba'),'lv'=>array(0=>'Latvian',1=>'Latviešu valoda'),'mk_MK'=>array(0=>'Macedonian',1=>'Македонски јазик'),'ml_IN'=>array(0=>'Malayalam',1=>'മലയാളം'),'mn'=>array(0=>'Mongolian',1=>'Монгол'),'mr'=>array(0=>'Marathi',1=>'मराठी'),'ms_MY'=>array(0=>'Malay',1=>'Bahasa Melayu'),'my_MM'=>array(0=>'Myanmar (Burmese)',1=>'ဗမာစာ'),'nb_NO'=>array(0=>'Norwegian (Bokmål)',1=>'Norsk bokmål'),'ne_NP'=>array(0=>'Nepali',1=>'नेपाली'),'nl_NL'=>array(0=>'Dutch',1=>'Nederlands'),'nl_NL_formal'=>array(0=>'Dutch (Formal)',1=>'Nederlands (Formeel)'),'nl_BE'=>array(0=>'Dutch (Belgium)',1=>'Nederlands (België)'),'nn_NO'=>array(0=>'Norwegian (Nynorsk)',1=>'Norsk nynorsk'),'oci'=>array(0=>'Occitan',1=>'Occitan'),'pa_IN'=>array(0=>'Punjabi',1=>'ਪੰਜਾਬੀ'),'pl_PL'=>array(0=>'Polish',1=>'Polski'),'ps'=>array(0=>'Pashto',1=>'پښتو'),'pt_BR'=>array(0=>'Portuguese (Brazil)',1=>'Português do Brasil'),'pt_PT'=>array(0=>'Portuguese (Portugal)',1=>'Português'),'pt_PT_ao90'=>array(0=>'Portuguese (Portugal, AO90)',1=>'Português (AO90)'),'rhg'=>array(0=>'Rohingya',1=>'Ruáinga'),'ro_RO'=>array(0=>'Romanian',1=>'Română'),'ru_RU'=>array(0=>'Russian',1=>'Русский'),'sah'=>array(0=>'Sakha',1=>'Сахалыы'),'si_LK'=>array(0=>'Sinhala',1=>'සිංහල'),'sk_SK'=>array(0=>'Slovak',1=>'Slovenčina'),'sl_SI'=>array(0=>'Slovenian',1=>'Slovenščina'),'sq'=>array(0=>'Albanian',1=>'Shqip'),'sr_RS'=>array(0=>'Serbian',1=>'Српски језик'),'sv_SE'=>array(0=>'Swedish',1=>'Svenska'),'szl'=>array(0=>'Silesian',1=>'Ślōnskŏ gŏdka'),'ta_IN'=>array(0=>'Tamil',1=>'தமிழ்'),'te'=>array(0=>'Telugu',1=>'తెలుగు'),'th'=>array(0=>'Thai',1=>'ไทย'),'tl'=>array(0=>'Tagalog',1=>'Tagalog'),'tr_TR'=>array(0=>'Turkish',1=>'Türkçe'),'tt_RU'=>array(0=>'Tatar',1=>'Татар теле'),'tah'=>array(0=>'Tahitian',1=>'Reo Tahiti'),'ug_CN'=>array(0=>'Uighur',1=>'ئۇيغۇرچە'),'uk'=>array(0=>'Ukrainian',1=>'Українська'),'ur'=>array(0=>'Urdu',1=>'اردو'),'uz_UZ'=>array(0=>'Uzbek',1=>'O‘zbekcha'),'vi'=>array(0=>'Vietnamese',1=>'Tiếng Việt'),'zh_HK'=>array(0=>'Chinese (Hong Kong)',1=>'香港中文版 '),'zh_CN'=>array(0=>'Chinese (China)',1=>'简体中文'),'zh_TW'=>array(0=>'Chinese (Taiwan)',1=>'繁體中文'));
2
  /**
3
  * Compiled data. Do not edit.
4
  */
5
+ return array('af'=>array(0=>'Afrikaans',1=>'Afrikaans'),'ar'=>array(0=>'Arabic',1=>'العربية'),'ary'=>array(0=>'Moroccan Arabic',1=>'العربية المغربية'),'as'=>array(0=>'Assamese',1=>'অসমীয়া'),'az'=>array(0=>'Azerbaijani',1=>'Azərbaycan dili'),'azb'=>array(0=>'South Azerbaijani',1=>'گؤنئی آذربایجان'),'bel'=>array(0=>'Belarusian',1=>'Беларуская мова'),'bg_BG'=>array(0=>'Bulgarian',1=>'Български'),'bn_BD'=>array(0=>'Bengali (Bangladesh)',1=>'বাংলা'),'bo'=>array(0=>'Tibetan',1=>'བོད་ཡིག'),'bs_BA'=>array(0=>'Bosnian',1=>'Bosanski'),'ca'=>array(0=>'Catalan',1=>'Català'),'ceb'=>array(0=>'Cebuano',1=>'Cebuano'),'cs_CZ'=>array(0=>'Czech',1=>'Čeština'),'cy'=>array(0=>'Welsh',1=>'Cymraeg'),'da_DK'=>array(0=>'Danish',1=>'Dansk'),'de_DE_formal'=>array(0=>'German (Formal)',1=>'Deutsch (Sie)'),'de_DE'=>array(0=>'German',1=>'Deutsch'),'de_CH_informal'=>array(0=>'German (Switzerland, Informal)',1=>'Deutsch (Schweiz, Du)'),'de_CH'=>array(0=>'German (Switzerland)',1=>'Deutsch (Schweiz)'),'dzo'=>array(0=>'Dzongkha',1=>'རྫོང་ཁ'),'el'=>array(0=>'Greek',1=>'Ελληνικά'),'en_AU'=>array(0=>'English (Australia)',1=>'English (Australia)'),'en_NZ'=>array(0=>'English (New Zealand)',1=>'English (New Zealand)'),'en_CA'=>array(0=>'English (Canada)',1=>'English (Canada)'),'en_ZA'=>array(0=>'English (South Africa)',1=>'English (South Africa)'),'en_GB'=>array(0=>'English (UK)',1=>'English (UK)'),'eo'=>array(0=>'Esperanto',1=>'Esperanto'),'es_ES'=>array(0=>'Spanish (Spain)',1=>'Español'),'es_CL'=>array(0=>'Spanish (Chile)',1=>'Español de Chile'),'es_MX'=>array(0=>'Spanish (Mexico)',1=>'Español de México'),'es_AR'=>array(0=>'Spanish (Argentina)',1=>'Español de Argentina'),'es_VE'=>array(0=>'Spanish (Venezuela)',1=>'Español de Venezuela'),'es_CR'=>array(0=>'Spanish (Costa Rica)',1=>'Español de Costa Rica'),'es_PE'=>array(0=>'Spanish (Peru)',1=>'Español de Perú'),'es_GT'=>array(0=>'Spanish (Guatemala)',1=>'Español de Guatemala'),'es_CO'=>array(0=>'Spanish (Colombia)',1=>'Español de Colombia'),'et'=>array(0=>'Estonian',1=>'Eesti'),'eu'=>array(0=>'Basque',1=>'Euskara'),'fa_IR'=>array(0=>'Persian',1=>'فارسی'),'fi'=>array(0=>'Finnish',1=>'Suomi'),'fr_FR'=>array(0=>'French (France)',1=>'Français'),'fr_CA'=>array(0=>'French (Canada)',1=>'Français du Canada'),'fr_BE'=>array(0=>'French (Belgium)',1=>'Français de Belgique'),'fur'=>array(0=>'Friulian',1=>'Friulian'),'gd'=>array(0=>'Scottish Gaelic',1=>'Gàidhlig'),'gl_ES'=>array(0=>'Galician',1=>'Galego'),'gu'=>array(0=>'Gujarati',1=>'ગુજરાતી'),'haz'=>array(0=>'Hazaragi',1=>'هزاره گی'),'he_IL'=>array(0=>'Hebrew',1=>'עִבְרִית'),'hi_IN'=>array(0=>'Hindi',1=>'हिन्दी'),'hr'=>array(0=>'Croatian',1=>'Hrvatski'),'hu_HU'=>array(0=>'Hungarian',1=>'Magyar'),'hy'=>array(0=>'Armenian',1=>'Հայերեն'),'id_ID'=>array(0=>'Indonesian',1=>'Bahasa Indonesia'),'is_IS'=>array(0=>'Icelandic',1=>'Íslenska'),'it_IT'=>array(0=>'Italian',1=>'Italiano'),'ja'=>array(0=>'Japanese',1=>'日本語'),'jv_ID'=>array(0=>'Javanese',1=>'Basa Jawa'),'ka_GE'=>array(0=>'Georgian',1=>'ქართული'),'kab'=>array(0=>'Kabyle',1=>'Taqbaylit'),'kk'=>array(0=>'Kazakh',1=>'Қазақ тілі'),'km'=>array(0=>'Khmer',1=>'ភាសាខ្មែរ'),'ko_KR'=>array(0=>'Korean',1=>'한국어'),'ckb'=>array(0=>'Kurdish (Sorani)',1=>'كوردی‎'),'lo'=>array(0=>'Lao',1=>'ພາສາລາວ'),'lt_LT'=>array(0=>'Lithuanian',1=>'Lietuvių kalba'),'lv'=>array(0=>'Latvian',1=>'Latviešu valoda'),'mk_MK'=>array(0=>'Macedonian',1=>'Македонски јазик'),'ml_IN'=>array(0=>'Malayalam',1=>'മലയാളം'),'mn'=>array(0=>'Mongolian',1=>'Монгол'),'mr'=>array(0=>'Marathi',1=>'मराठी'),'ms_MY'=>array(0=>'Malay',1=>'Bahasa Melayu'),'my_MM'=>array(0=>'Myanmar (Burmese)',1=>'ဗမာစာ'),'nb_NO'=>array(0=>'Norwegian (Bokmål)',1=>'Norsk bokmål'),'ne_NP'=>array(0=>'Nepali',1=>'नेपाली'),'nl_BE'=>array(0=>'Dutch (Belgium)',1=>'Nederlands (België)'),'nl_NL_formal'=>array(0=>'Dutch (Formal)',1=>'Nederlands (Formeel)'),'nl_NL'=>array(0=>'Dutch',1=>'Nederlands'),'nn_NO'=>array(0=>'Norwegian (Nynorsk)',1=>'Norsk nynorsk'),'oci'=>array(0=>'Occitan',1=>'Occitan'),'pa_IN'=>array(0=>'Punjabi',1=>'ਪੰਜਾਬੀ'),'pl_PL'=>array(0=>'Polish',1=>'Polski'),'ps'=>array(0=>'Pashto',1=>'پښتو'),'pt_BR'=>array(0=>'Portuguese (Brazil)',1=>'Português do Brasil'),'pt_PT'=>array(0=>'Portuguese (Portugal)',1=>'Português'),'pt_PT_ao90'=>array(0=>'Portuguese (Portugal, AO90)',1=>'Português (AO90)'),'rhg'=>array(0=>'Rohingya',1=>'Ruáinga'),'ro_RO'=>array(0=>'Romanian',1=>'Română'),'ru_RU'=>array(0=>'Russian',1=>'Русский'),'sah'=>array(0=>'Sakha',1=>'Сахалыы'),'si_LK'=>array(0=>'Sinhala',1=>'සිංහල'),'sk_SK'=>array(0=>'Slovak',1=>'Slovenčina'),'sl_SI'=>array(0=>'Slovenian',1=>'Slovenščina'),'sq'=>array(0=>'Albanian',1=>'Shqip'),'sr_RS'=>array(0=>'Serbian',1=>'Српски језик'),'sv_SE'=>array(0=>'Swedish',1=>'Svenska'),'szl'=>array(0=>'Silesian',1=>'Ślōnskŏ gŏdka'),'ta_IN'=>array(0=>'Tamil',1=>'தமிழ்'),'te'=>array(0=>'Telugu',1=>'తెలుగు'),'th'=>array(0=>'Thai',1=>'ไทย'),'tl'=>array(0=>'Tagalog',1=>'Tagalog'),'tr_TR'=>array(0=>'Turkish',1=>'Türkçe'),'tt_RU'=>array(0=>'Tatar',1=>'Татар теле'),'tah'=>array(0=>'Tahitian',1=>'Reo Tahiti'),'ug_CN'=>array(0=>'Uighur',1=>'ئۇيغۇرچە'),'uk'=>array(0=>'Ukrainian',1=>'Українська'),'ur'=>array(0=>'Urdu',1=>'اردو'),'uz_UZ'=>array(0=>'Uzbek',1=>'O‘zbekcha'),'vi'=>array(0=>'Vietnamese',1=>'Tiếng Việt'),'zh_HK'=>array(0=>'Chinese (Hong Kong)',1=>'香港中文版 '),'zh_TW'=>array(0=>'Chinese (Taiwan)',1=>'繁體中文'),'zh_CN'=>array(0=>'Chinese (China)',1=>'简体中文'));
loco.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Loco Translate
4
  Plugin URI: https://wordpress.org/plugins/loco-translate/
5
  Description: Translate themes and plugins directly in WordPress
6
  Author: Tim Whitlock
7
- Version: 2.2.2
8
  Author URI: https://localise.biz/wordpress/plugin
9
  Text Domain: loco-translate
10
  Domain Path: /languages/
@@ -36,7 +36,7 @@ function loco_plugin_file(){
36
  * @return string
37
  */
38
  function loco_plugin_version(){
39
- return '2.2.2';
40
  }
41
 
42
 
4
  Plugin URI: https://wordpress.org/plugins/loco-translate/
5
  Description: Translate themes and plugins directly in WordPress
6
  Author: Tim Whitlock
7
+ Version: 2.3.0
8
  Author URI: https://localise.biz/wordpress/plugin
9
  Text Domain: loco-translate
10
  Domain Path: /languages/
36
  * @return string
37
  */
38
  function loco_plugin_version(){
39
+ return '2.3.0';
40
  }
41
 
42
 
pub/css/admin.css CHANGED
@@ -1 +1 @@
1
- ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}.loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.tipsy{font-size:11px;position:absolute;padding:5px;z-index:500001;opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.tipsy.in{opacity:1}.tipsy-inner{background-color:#000;color:#FFF;white-space:nowrap;padding:6px 8px;line-height:1.3em;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#loco.wrap .selector li,#loco.wrap .selector .handle,#loco.wrap .selectoradd a,#loco.wrap .selectorsep:before,#loco.wrap .selectorsep span{padding:0.3em 0.75em}#loco.wrap .selector{text-align:left;display:inline-block;white-space:nowrap}#loco.wrap .selectoradd a,#loco.wrap .selector .handle{cursor:default;display:block;position:relative;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666;height:1.3em;overflow:hidden;white-space:normal}#loco.wrap .selectorsep{display:inline-block;border:solid 1px transparent}#loco.wrap .selectorsep:before{display:block;position:relative;color:#999;height:1.3em;overflow:hidden}#loco.wrap .selectorsep>*{display:block;line-height:1em;color:#666;height:1.3em;overflow:hidden}#loco.wrap .selector .handle{outline:none;white-space:nowrap;padding-right:2.3em;max-width:250px;text-overflow:ellipsis}#loco.wrap .selector .handle .prefix{padding-right:0.6ex}#loco.wrap .selector .handle:after{font-family:loco;font-size:1.3em;color:#ccc;display:block;position:absolute;top:0.25em;right:0.6em}#loco.wrap .selector .handle:focus:after,#loco.wrap .selector .handle:hover:after{color:#666}#loco.wrap .selector.no-caret .handle{padding-right:0.75em}#loco.wrap .selector.no-caret .handle:after{display:none}#loco.wrap .selector.no-title .handle{padding-left:0.5em;padding-right:0.5em}#loco.wrap .selector.no-title .handle .label{display:none}#loco.wrap .selector.no-title .handle .icon{margin-right:0px}#loco.wrap .selector.dummy .handle{border-color:transparent}#loco.wrap .selector.dummy .handle:after{display:none}#loco.wrap .selectoradd{position:relative}#loco.wrap .selectoradd>*{display:block;float:left;clear:none}#loco.wrap .selectoradd>a.has-icon{width:1.3em}#loco.wrap .selectoradd>a.has-icon:before{color:#999;display:inline;padding-left:0;padding-right:0;line-height:1.4em}#loco.wrap .selectoradd>a.has-icon:hover:after{color:#2e892e}#loco.wrap .selectorsep{display:inline-block}#loco.wrap .selectorsep span{color:#666;height:1.3em}#loco.wrap .selector ul{padding:0}#loco.wrap .selector ul,#loco.wrap .selector li{display:block;position:relative;cursor:default;margin:0}#loco.wrap .selector ul{z-index:5;position:absolute;left:0;top:0;background:#f5f5f5;box-shadow:0 10px 5px rgba(0,0,0,0.2);border:solid 1px #ccc;overflow:auto}#loco.wrap .selector.up ul{margin-top:0}#loco.wrap .selector.multi li input{display:none}#loco.wrap .selector.multi li.checked{background:#e5e5e5}#loco.wrap .selector li.active{background:#e5e5e5 !important}#loco.wrap .selector li.over{background:#ccc !important;color:#fff;text-shadow:1px 1px #aaa}#loco.wrap .selector li.over .label{color:#fff}#loco.wrap .selector .label{font:inherit;color:inherit}#loco.wrap .selector .icon{display:inline-block;min-width:1.2em;text-align:center;font-size:14px}#loco.wrap .selector .icon.no-icon{display:none}#loco.wrap .selector .icon:before{color:#666}#loco.wrap .selector .avtr{width:18px;height:18px;background-size:18px;background-repeat:no-repeat}#loco.wrap .selector .label{line-height:1}#loco.wrap .selector .icon,#loco.wrap .selector .icon-16{vertical-align:bottom}#loco.wrap .selector .icon,#loco.wrap .selector .lang,#loco.wrap .selector .icon-16{margin-right:5px}#loco.wrap .selector .region,#loco.wrap .selector .lang-ca,#loco.wrap .selector .lang-eo,#loco.wrap .selector .lang-eu,#loco.wrap .selector .variant-wales,#loco.wrap .selector .region-gb.lang-cy,#loco.wrap .selector .variant-scotland,#loco.wrap .selector .region-gb.lang-gd{margin-left:2px;margin-right:7px}#loco.wrap .selector.ticked .icon.no-icon{font-size:12px;display:inline-block}#loco.wrap .selector.ticked .active .icon.no-icon:before{content:"\2713"}#loco.wrap .selectoradd a:hover,#loco.wrap .selector a.handle:focus,#loco.wrap .selector a.handle:hover{color:#000;border-color:#999}#loco.wrap .selector.active .handle{border-color:#999;background-color:#eee;color:#999}#loco.wrap .selector.active .handle:after{color:#999}#loco.wrap .selector.disabled{cursor:default;cursor:no-drop;cursor:not-allowed}#loco.wrap .selector.disabled .handle{pointer-events:none;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#999;padding-right:1em}#loco.wrap .selector.disabled .handle:after{display:none}#loco.wrap .selector.disabled .handle span.icon{color:#999 !important}#loco.wrap .selector li.disabled,#loco.wrap .selector li.disabled.over{color:#aaa;text-shadow:1px 1px #fff;pointer-events:none}#loco.wrap .selector li.disabled *{cursor:text}#loco.wrap .selector li.disabled .icon:before{color:#aaa}#loco.wrap .selector li.disabled .flag,#loco.wrap .selector li.disabled .icon-16{opacity:0.4}#loco.wrap .selector.lefty ul{left:auto;right:0}#loco.wrap .selector.lefty ul .icon,#loco.wrap .selector.lefty ul .icon-32{display:block;float:right;clear:none}#loco.wrap .selector.lefty ul .label{padding-right:32px;padding-left:0}#loco.wrap .selector ul>form{margin:0;display:block}#loco.wrap .selector ul>form input{margin:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco.wrap .selector ul>form input:focus{-webkit-box-shadow:inset 0 0 5px 0 #3db63d;-moz-box-shadow:inset 0 0 5px 0 #3db63d;box-shadow:inset 0 0 5px 0 #3db63d}#loco.wrap .selector ul>form input.error{border-color:#cc0000;-webkit-box-shadow:inset 0 0 5px 0 rgba(153,0,0,0.5);-moz-box-shadow:inset 0 0 5px 0 rgba(153,0,0,0.5);box-shadow:inset 0 0 5px 0 rgba(153,0,0,0.5)}#loco.wrap .selector ul>form a.clear{margin:0;border:none}#loco.wrap .selector ul>form ::placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap .selector ul>form ::-webkit-input-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap .selector ul>form :-moz-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block;opacity:1}#loco.wrap .selector ul>form ::-moz-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block;opacity:1}#loco.wrap .selector ul>form :-ms-input-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap .selector ul>form .ielt10 .placeheld{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap div.auto-comp-wrap{width:100%}#loco.wrap div.auto-comp-wrap input{display:inline-block}#loco.wrap div.auto-comp-wrap.loading input{background:transparent url(../img/ajax-loader.gif) right 2px no-repeat}#loco.wrap div.auto-comp-drop{color:#333333;background:#FFFFFF;border-top:none;position:absolute;width:auto;top:0;left:0;z-index:99;-webkit-box-shadow:0 5px 5px rgba(0,0,0,0.4);-moz-box-shadow:0 5px 5px rgba(0,0,0,0.4);box-shadow:0 5px 5px rgba(0,0,0,0.4)}#loco.wrap div.auto-comp-result{padding:5px 10px;cursor:pointer;background:#F0F0F0;border-top:solid 1px #FFF;border-bottom:solid 1px #DDD;white-space:nowrap}#loco.wrap div.auto-comp-result:first-child{border-top:solid 1px #DDD}#loco.wrap div.auto-comp-result>*{display:inline-block;vertical-align:middle;line-height:normal}#loco.wrap div.auto-comp-result .icon:before{padding-right:5px}#loco.wrap div.auto-comp-result:hover{background:#A8A8A8;color:#FFFFFF;border-top-color:#A8A8A8;border-bottom-color:#999999}#loco.wrap div.auto-comp-result.selected{background:#666666 !important;color:#FFFFFF;border-top-color:#666666;border-bottom-color:#666666}#loco.wrap div.auto-comp-result .lang,#loco.wrap div.auto-comp-result .region,#loco.wrap div.auto-comp-result .lang-ca,#loco.wrap div.auto-comp-result .lang-eo,#loco.wrap div.auto-comp-result .lang-eu,#loco.wrap div.auto-comp-result .variant-wales,#loco.wrap div.auto-comp-result .region-gb.lang-cy,#loco.wrap div.auto-comp-result .variant-scotland,#loco.wrap div.auto-comp-result .region-gb.lang-gd,#loco.wrap div.auto-comp-result .avtr{margin-right:5px}#loco.wrap div.auto-comp-wrap.error a.icon.clear:before{color:#cc0000;opacity:1}#loco.wrap div.auto-comp-wrap.error input[type="text"]{border-color:#cc0000;color:#cc0000}#loco.wrap div.auto-comp-wrap.error input[type="text"]:focus{-webkit-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);-moz-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5)}#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}#loco.wrap ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}#loco.wrap ._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco.wrap ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco.wrap .loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .has-icon:before{display:inline-block;padding-right:0.3em}#loco.wrap a.icon-help{cursor:help}#loco.wrap a.icon-help span{display:none}#loco.wrap .icon-magnify:before{content:"\1f50d"}#loco.wrap .icon-unicode:before{content:"\75"}#loco.wrap .icon-json:before{content:"\7b"}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-ok-empty:before{content:"\1f5cc"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before,#loco.wrap .icon-history:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon-status.is-translated:before,#loco.wrap .is-translated>header>.icon-status:before{color:#2e892e;content:"✓";text-align:center}#loco.wrap .icon-status.is-untranslated:before,#loco.wrap .is-untranslated>header>.icon-status:before{color:#aaa;content:"×";text-align:center;font-size:1.1em}#loco.wrap .icon-status.is-flagged:before,#loco.wrap .is-flagged>header>.icon-status:before{color:#bd2c00;content:"";text-align:center}#loco.wrap .icon-status.is-translated.is-blank:before,#loco.wrap .icon-status.is-translated.is-inherit:before,#loco.wrap .is-translated.is-blank>header>.icon-status:before,#loco.wrap .is-translated.is-inherit>header>.icon-status:before{content:"🗌"}#loco.wrap .icon-status.is-fuzzy:before,#loco.wrap .is-fuzzy>header>.icon-status:before{color:#666;content:""}#loco.wrap .lang,#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{color:#fff;background:#2e892e;display:inline-block;text-transform:uppercase;overflow:hidden;font-family:Verdana,Arial,sans-serif;font-size:9px;font-weight:normal;font-style:normal;line-height:12px;text-align:center;white-space:normal;text-shadow:none}#loco.wrap .lang{width:20px;height:12px;line-height:12px;vertical-align:middle}#loco.wrap .lang:before{content:attr(lang);vertical-align:baseline}#loco.wrap .no-lang{width:18px;height:10px;border:solid 1px #2e892e;background:transparent}#loco.wrap .lang-el{background-color:#1D48A3}#loco.wrap .lang-el:before{content:"\0395\03BB"}#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{width:16px;height:12px;margin:0 2px;background-image:url(../img/flags.png);background-repeat:no-repeat;background-color:transparent}#loco.wrap .region:before,#loco.wrap .lang-ca:before,#loco.wrap .lang-eo:before,#loco.wrap .lang-eu:before,#loco.wrap .variant-wales:before,#loco.wrap .region-gb.lang-cy:before,#loco.wrap .variant-scotland:before,#loco.wrap .region-gb.lang-gd:before{visibility:hidden}#loco.wrap .lang-zh{background-color:#B90000}#loco.wrap .lang-zh.script-hans:before{content:"\4E2D\56FD"}#loco.wrap .lang-zh.script-hant:before{content:"\4E2D\570B"}#loco.wrap .__{background-position:0 0}#loco.wrap .lang-eo{background-position:0 -12px}#loco.wrap .lang-eu{background-position:0 -24px}#loco.wrap .lang-ca{background-position:0 -36px}#loco.wrap .region-tg{background-position:0 -48px}#loco.wrap .region-me{background-position:0 -60px}#loco.wrap .region-la{background-position:0 -73px}#loco.wrap .region-mr{background-position:0 -85px}#loco.wrap .region-ni{background-position:0 -97px}#loco.wrap .region-lv{background-position:0 -109px}#loco.wrap .region-om{background-position:0 -121px}#loco.wrap .region-af{background-position:0 -133px}#loco.wrap .region-cy{background-position:0 -145px}#loco.wrap .region-bj{background-position:0 -157px}#loco.wrap .region-aq{background-position:0 -169px}#loco.wrap .region-cn{background-position:0 -186px}#loco.wrap .region-co{background-position:0 -198px}#loco.wrap .region-cx{background-position:0 -210px}#loco.wrap .region-ag{background-position:0 -222px}#loco.wrap .region-ms{background-position:0 -234px}#loco.wrap .region-md{background-position:0 -246px}#loco.wrap .region-zm{background-position:0 -258px}#loco.wrap .region-vn{background-position:0 -270px}#loco.wrap .region-tf{background-position:0 -282px}#loco.wrap .region-td{background-position:0 -294px}#loco.wrap .region-yt{background-position:0 -306px}#loco.wrap .region-lb{background-position:0 -318px}#loco.wrap .region-mf{background-position:0 -330px}#loco.wrap .region-lu{background-position:0 -347px}#loco.wrap .region-mq{background-position:0 -359px}#loco.wrap .region-cz{background-position:0 -371px}#loco.wrap .region-ae{background-position:0 -383px}#loco.wrap .region-cm{background-position:0 -395px}#loco.wrap .region-bi{background-position:0 -407px}#loco.wrap .region-ar{background-position:0 -419px}#loco.wrap .region-as{background-position:0 -431px}#loco.wrap .region-bh{background-position:0 -443px}#loco.wrap .region-cl{background-position:0 -455px}#loco.wrap .region-ad{background-position:0 -467px}#loco.wrap .region-mp{background-position:0 -479px}#loco.wrap .region-lt{background-position:0 -491px}#loco.wrap .region-mg{background-position:0 -503px}#loco.wrap .region-lc{background-position:0 -515px}#loco.wrap .region-tr{background-position:0 -527px}#loco.wrap .region-ua{background-position:0 -539px}#loco.wrap .region-tv{background-position:0 -551px}#loco.wrap .region-vi{background-position:0 -563px}#loco.wrap .region-mt{background-position:0 -575px}#loco.wrap .region-no{background-position:0 -587px}#loco.wrap .region-mc{background-position:0 -599px}#loco.wrap .region-ch{background-position:0 -611px}#loco.wrap .region-bl{background-position:0 -623px}#loco.wrap .region-aw{background-position:0 -640px}#loco.wrap .region-bz{background-position:0 -652px}#loco.wrap .region-bm{background-position:0 -664px}#loco.wrap .region-ci{background-position:0 -676px}#loco.wrap .region-mu{background-position:0 -688px}#loco.wrap .region-us{background-position:0 -700px}#loco.wrap .region-tw{background-position:0 -712px}#loco.wrap .region-ye{background-position:0 -724px}#loco.wrap .region-mw{background-position:0 -736px}#loco.wrap .region-nl{background-position:0 -748px}#loco.wrap .region-ls{background-position:0 -760px}#loco.wrap .region-bo{background-position:0 -772px}#loco.wrap .region-at{background-position:0 -784px}#loco.wrap .region-ck{background-position:0 -796px}#loco.wrap .region-by{background-position:0 -808px}#loco.wrap .region-au{background-position:0 -820px}#loco.wrap .region-bn{background-position:0 -832px}#loco.wrap .region-ma{background-position:0 -844px}#loco.wrap .region-nz{background-position:0 -856px}#loco.wrap .region-lr{background-position:0 -868px}#loco.wrap .region-mv{background-position:0 -880px}#loco.wrap .region-tc{background-position:0 -892px}#loco.wrap .region-ug{background-position:0 -904px}#loco.wrap .region-tt{background-position:0 -916px}#loco.wrap .region-pl{background-position:0 -928px}#loco.wrap .region-rs{background-position:0 -940px}#loco.wrap .region-in{background-position:0 -952px}#loco.wrap .region-ge{background-position:0 -964px}#loco.wrap .region-gr{background-position:0 -976px}#loco.wrap .region-gs{background-position:0 -988px}#loco.wrap .region-gd{background-position:0 -1000px}#loco.wrap .region-io{background-position:0 -1012px}#loco.wrap .region-hk{background-position:0 -1024px}#loco.wrap .region-kp{background-position:0 -1036px}#loco.wrap .region-kg{background-position:0 -1048px}#loco.wrap .region-pm{background-position:0 -1060px}#loco.wrap .region-sv{background-position:0 -1072px}#loco.wrap .region-re{background-position:0 -1084px}#loco.wrap .region-sa{background-position:0 -1096px}#loco.wrap .region-sc{background-position:0 -1108px}#loco.wrap .region-st{background-position:0 -1120px}#loco.wrap .region-ke{background-position:0 -1132px}#loco.wrap .region-im{background-position:0 -1144px}#loco.wrap .region-kr{background-position:0 -1161px}#loco.wrap .region-gf{background-position:0 -1173px}#loco.wrap .region-dj{background-position:0 -1185px}#loco.wrap .region-gq{background-position:0 -1197px}#loco.wrap .region-gp{background-position:0 -1209px}#loco.wrap .region-dk{background-position:0 -1221px}#loco.wrap .region-gg{background-position:0 -1233px}#loco.wrap .region-il{background-position:0 -1250px}#loco.wrap .region-pn{background-position:0 -1262px}#loco.wrap .region-sb{background-position:0 -1274px}#loco.wrap .region-py{background-position:0 -1286px}#loco.wrap .region-ru{background-position:0 -1298px}#loco.wrap .region-kw{background-position:0 -1310px}#loco.wrap .region-do{background-position:0 -1322px}#loco.wrap .region-gt{background-position:0 -1334px}#loco.wrap .region-gb{background-position:0 -1346px}#loco.wrap .region-gu{background-position:0 -1358px}#loco.wrap .region-je{background-position:0 -1370px}#loco.wrap .region-hm{background-position:0 -1387px}#loco.wrap .region-sg{background-position:0 -1399px}#loco.wrap .region-pk{background-position:0 -1411px}#loco.wrap .region-sr{background-position:0 -1423px}#loco.wrap .region-se{background-position:0 -1435px}#loco.wrap .region-jp{background-position:0 -1447px}#loco.wrap .region-gw{background-position:0 -1459px}#loco.wrap .region-eh{background-position:0 -1471px}#loco.wrap .region-dz{background-position:0 -1483px}#loco.wrap .region-ga{background-position:0 -1495px}#loco.wrap .region-fr{background-position:0 -1507px}#loco.wrap .region-dm{background-position:0 -1519px}#loco.wrap .region-hn{background-position:0 -1531px}#loco.wrap .region-sd{background-position:0 -1543px}#loco.wrap .region-rw{background-position:0 -1555px}#loco.wrap .region-ph{background-position:0 -1567px}#loco.wrap .region-ss{background-position:0 -1579px}#loco.wrap .region-qa{background-position:0 -1596px}#loco.wrap .region-pe{background-position:0 -1608px}#loco.wrap .region-pr{background-position:0 -1620px}#loco.wrap .region-si{background-position:0 -1632px}#loco.wrap .region-ht{background-position:0 -1644px}#loco.wrap .region-es{background-position:0 -1656px}#loco.wrap .region-gl{background-position:0 -1668px}#loco.wrap .region-gm{background-position:0 -1680px}#loco.wrap .region-er{background-position:0 -1692px}#loco.wrap .region-fi{background-position:0 -1704px}#loco.wrap .region-ee{background-position:0 -1716px}#loco.wrap .region-kn{background-position:0 -1728px}#loco.wrap .region-hu{background-position:0 -1740px}#loco.wrap .region-iq{background-position:0 -1752px}#loco.wrap .region-ky{background-position:0 -1764px}#loco.wrap .region-sh{background-position:0 -1776px}#loco.wrap .region-ps{background-position:0 -1788px}#loco.wrap .region-pf{background-position:0 -1800px}#loco.wrap .region-sj{background-position:0 -1812px}#loco.wrap .region-id{background-position:0 -1824px}#loco.wrap .region-is{background-position:0 -1836px}#loco.wrap .region-eg{background-position:0 -1848px}#loco.wrap .region-fk{background-position:0 -1860px}#loco.wrap .region-fj{background-position:0 -1872px}#loco.wrap .region-gn{background-position:0 -1884px}#loco.wrap .region-gy{background-position:0 -1896px}#loco.wrap .region-ir{background-position:0 -1908px}#loco.wrap .region-km{background-position:0 -1920px}#loco.wrap .region-ie{background-position:0 -1932px}#loco.wrap .region-kz{background-position:0 -1944px}#loco.wrap .region-ro{background-position:0 -1956px}#loco.wrap .region-sk{background-position:0 -1968px}#loco.wrap .region-pg{background-position:0 -1980px}#loco.wrap .region-pt{background-position:0 -1992px}#loco.wrap .region-so{background-position:0 -2004px}#loco.wrap .region-sx{background-position:0 -2016px}#loco.wrap .region-hr{background-position:0 -2033px}#loco.wrap .region-ki{background-position:0 -2045px}#loco.wrap .region-jm{background-position:0 -2057px}#loco.wrap .region-ec{background-position:0 -2069px}#loco.wrap .region-et{background-position:0 -2081px}#loco.wrap .region-fo{background-position:0 -2093px}#loco.wrap .region-kh{background-position:0 -2105px}#loco.wrap .region-sy{background-position:0 -2117px}#loco.wrap .region-sn{background-position:0 -2129px}#loco.wrap .region-pw{background-position:0 -2141px}#loco.wrap .region-sl{background-position:0 -2153px}#loco.wrap .region-fm{background-position:0 -2165px}#loco.wrap .region-gi{background-position:0 -2177px}#loco.wrap .region-de{background-position:0 -2189px}#loco.wrap .region-gh{background-position:0 -2201px}#loco.wrap .region-jo{background-position:0 -2213px}#loco.wrap .region-it{background-position:0 -2225px}#loco.wrap .region-pa{background-position:0 -2237px}#loco.wrap .region-sz{background-position:0 -2249px}#loco.wrap .region-sm{background-position:0 -2261px}#loco.wrap .region-tn{background-position:0 -2273px}#loco.wrap .region-ml{background-position:0 -2285px}#loco.wrap .region-cg{background-position:0 -2297px}#loco.wrap .region-ax{background-position:0 -2309px}#loco.wrap .region-ao{background-position:0 -2321px}#loco.wrap .region-bt{background-position:0 -2333px}#loco.wrap .region-an{background-position:0 -2345px}#loco.wrap .region-bb{background-position:0 -2357px}#loco.wrap .region-cf{background-position:0 -2369px}#loco.wrap .region-mm{background-position:0 -2381px}#loco.wrap .region-li{background-position:0 -2393px}#loco.wrap .region-na{background-position:0 -2405px}#loco.wrap .region-mz{background-position:0 -2417px}#loco.wrap .region-to{background-position:0 -2429px}#loco.wrap .region-vg{background-position:0 -2441px}#loco.wrap .region-ve{background-position:0 -2453px}#loco.wrap .region-tz{background-position:0 -2465px}#loco.wrap .region-tm{background-position:0 -2477px}#loco.wrap .region-mx{background-position:0 -2489px}#loco.wrap .region-nc{background-position:0 -2501px}#loco.wrap .region-mo{background-position:0 -2513px}#loco.wrap .region-lk{background-position:0 -2525px}#loco.wrap .region-cd{background-position:0 -2537px}#loco.wrap .region-al{background-position:0 -2549px}#loco.wrap .region-bw{background-position:0 -2561px}#loco.wrap .region-cs{background-position:0 -2573px}#loco.wrap .region-cr{background-position:0 -2585px}#loco.wrap .region-bv{background-position:0 -2597px}#loco.wrap .region-am{background-position:0 -2609px}#loco.wrap .region-az{background-position:0 -2621px}#loco.wrap .region-ba{background-position:0 -2633px}#loco.wrap .region-mn{background-position:0 -2645px}#loco.wrap .region-nu{background-position:0 -2657px}#loco.wrap .region-my{background-position:0 -2669px}#loco.wrap .region-tl{background-position:0 -2681px}#loco.wrap .region-ws{background-position:0 -2693px}#loco.wrap .region-th{background-position:0 -2705px}#loco.wrap .region-nf{background-position:0 -2717px}#loco.wrap .region-ly{background-position:0 -2729px}#loco.wrap .region-ai{background-position:0 -2741px}#loco.wrap .region-br{background-position:0 -2753px}#loco.wrap .region-cv{background-position:0 -2765px}#loco.wrap .region-be{background-position:0 -2777px}#loco.wrap .region-ca{background-position:0 -2789px}#loco.wrap .region-bd{background-position:0 -2801px}#loco.wrap .region-cw{background-position:0 -2813px}#loco.wrap .region-bs{background-position:0 -2830px}#loco.wrap .region-ng{background-position:0 -2842px}#loco.wrap .region-mk{background-position:0 -2854px}#loco.wrap .region-np{background-position:0 -2866px}#loco.wrap .region-va{background-position:0 -2878px}#loco.wrap .region-uz{background-position:0 -2890px}#loco.wrap .region-um{background-position:0 -2902px}#loco.wrap .region-tk{background-position:0 -2914px}#loco.wrap .region-vc{background-position:0 -2926px}#loco.wrap .region-zw{background-position:0 -2938px}#loco.wrap .region-nr{background-position:0 -2950px}#loco.wrap .region-ne{background-position:0 -2962px}#loco.wrap .region-cu{background-position:0 -2974px}#loco.wrap .region-bq{background-position:0 -2986px}#loco.wrap .region-bf{background-position:0 -2998px}#loco.wrap .region-bg{background-position:0 -3010px}#loco.wrap .region-cc{background-position:0 -3022px}#loco.wrap .region-mh{background-position:0 -3034px}#loco.wrap .region-za{background-position:0 -3046px}#loco.wrap .region-uy{background-position:0 -3058px}#loco.wrap .region-wf{background-position:0 -3070px}#loco.wrap .region-vu{background-position:0 -3082px}#loco.wrap .region-tj{background-position:0 -3094px}#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{background-position:0 -3106px}#loco.wrap .variant-valencia{background-position:0 -3118px}#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy{background-position:0 -3130px}#loco.wrap .x-eu{background-position:0 -3142px}#loco.wrap span.lang code{display:none}#loco.wrap .icon-magnify:before{content:"\1f50d"}#loco.wrap .icon-unicode:before{content:"\75"}#loco.wrap .icon-json:before{content:"\7b"}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-ok-empty:before{content:"\1f5cc"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before,#loco.wrap .icon-history:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before{speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .icon,#loco.wrap .has-icon:before{font-family:'loco'}#loco.wrap .has-dashicon:before{font-family:'dashicons';font-size:1.4em}#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before,#loco.wrap .has-icon>span{display:inline-block;vertical-align:middle}#loco.wrap .only-icon{text-align:center}#loco.wrap .only-icon:before{text-align:center}#loco.wrap .only-icon span{display:none}#loco.wrap a,#loco.wrap .wp-core-ui .button-link{text-decoration:none}#loco.wrap h3:hover>a.loco-anchor{color:#ccc}#loco.wrap h3:hover>a.loco-anchor:before{content:"\B6"}#loco.wrap .has-lang>span{display:inline-block;vertical-align:middle}#loco.wrap a.has-lang:hover>span:last-child{text-decoration:underline}#loco.wrap h1 ul,#loco.wrap h1 li{margin:0;padding:0}#loco.wrap h1 li{display:inline-block}#loco.wrap h1 li:after{content:"/";color:#999;text-shadow:none;display:inline-block}#loco.wrap h1 li:last-child:after{content:""}#loco.wrap h1 li:last-child a{color:inherit;pointer-events:none;cursor:auto}#loco.wrap h2 span{color:#999;font-weight:normal}#loco.wrap h2 .loco-meta,#loco.wrap h3 .loco-meta{color:inherit;font-size:14px;font-weight:normal;vertical-align:middle}#loco.wrap .wp-list-table td:first-child .icon{width:16px;display:inline-block;text-align:center}#loco.wrap .wp-list-table td{white-space:nowrap}#loco.wrap .wp-list-table td>a,#loco.wrap .wp-list-table td>time{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}#loco.wrap .wp-list-table th.loco-sort{cursor:pointer}#loco.wrap .wp-list-table th.loco-sort:hover{color:#000}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{padding:0 0 0 4px;color:#999}#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{content:"\25bc"}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after{content:"\25b2"}#loco.wrap .wp-list-table td.has-row-actions{overflow:visible}#loco.wrap form.loco-filter{display:block;margin-bottom:5px}#loco.wrap form.loco-filter .icon-filter{color:#999}#loco.wrap nav.above-list-table{margin-bottom:1em}#loco.wrap nav.above-list-table a{display:inline-block;margin-right:1em}#loco.wrap .wp-core-ui button.inverted,#loco.wrap .wp-core-ui button.inverted:hover{background:-moz-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:-webkit-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:linear-gradient(to bottom, #ccc 0%, #e0e0e0 5%, #fefefe 100%);-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-color:#bbb}#loco.wrap .wp-core-ui button:active,#loco.wrap .wp-core-ui button.inverted:active{border-color:#5b9dd9}#loco.wrap .loco-clearable{display:inline-block;vertical-align:middle;position:relative}#loco.wrap .loco-clearable a.clear,#loco.wrap .auto-comp-wrap a.clear{top:0;right:0;outline:none;margin:0;border:solid 1px transparent;padding:5px 5px;position:absolute;font-size:1em;line-height:normal}#loco.wrap .loco-clearable a.clear:before,#loco.wrap .auto-comp-wrap a.clear:before{vertical-align:middle;padding:0;color:#999}#loco.wrap .loco-clearable a.clear:hover:before,#loco.wrap .auto-comp-wrap a.clear:hover:before{color:#333}#loco.wrap .loco-clearable a.clear span,#loco.wrap .auto-comp-wrap a.clear span{display:none}#loco.wrap .loco-clearable ::-ms-clear,#loco.wrap .auto-comp-wrap ::-ms-clear{display:none}#loco.wrap div.progress{color:#000;background:transparent !important}#loco.wrap div.progress *{height:100%;overflow:hidden;white-space:nowrap}#loco.wrap div.progress .t{background-color:#ddd;border:1px solid #ccc}#loco.wrap div.progress .t .bar{float:left;clear:none;background-color:#3db63d}#loco.wrap div.progress .t .bar.f{background-color:#bd2c00}#loco.wrap div.progress .l{display:block}#loco.wrap td div.progress .t{border:none}#loco.wrap td div.progress .l{display:none}#loco.wrap code.path{color:#333;margin:0;padding:0;display:inline;background:transparent}#loco.wrap .loco-danger{color:#d54e21}#loco.wrap .notice,#loco.wrap .panel{background:#fff;position:relative;margin:1em 0;padding:1px 12px}#loco.wrap .notice-generic{border-color:#ddd}#loco.wrap .notice-success>.has-icon,#loco.wrap .notice-success p>strong.has-icon{color:#000}#loco.wrap .notice-warning{border-color:#FFA500}#loco.wrap .notice-error{border-color:#dc3232}#loco.wrap .notice-debug{border-color:#00a0d2}#loco.wrap .notice-danger{border-color:#dc3232}#loco.wrap .notice-locked{border-color:#FFA500}#loco.wrap .notice>.has-icon:before,#loco.wrap .notice p>strong.has-icon:before{padding-right:6px}#loco.wrap .notice>p>a.button.has-icon:before{width:1.5em}#loco.wrap .notice>p>em{color:#d54e21;font-style:normal}#loco.wrap .notice>p>em a{color:inherit}#loco.wrap .notice>p a:hover,#loco.wrap .notice>nav a:hover{text-decoration:underline}#loco.wrap .notice>p a.button,#loco.wrap .notice>nav a.button{text-decoration:inherit}#loco.wrap .notice.has-nav{display:flex;flex-direction:row}#loco.wrap .notice.has-nav p,#loco.wrap .notice.has-nav nav{line-height:22px;flex-grow:1}#loco.wrap .notice.has-nav nav{text-align:right;padding:2px;margin:.5em 0}#loco.wrap .notice.has-nav.is-dismissible{padding-right:38px}#loco.wrap .notice.has-nav a{font-size:12px;white-space:nowrap}#loco.wrap .notice.has-nav nav>span{color:#666}#loco.wrap .notice>h3>span{display:inline-block;vertical-align:middle}#loco.wrap ul.problems li{font-style:italic}#loco.wrap label{position:relative}#loco.wrap label.for-disabled,#loco.wrap label.for-disabled>input{cursor:default !important}#loco.wrap input.regular-text,#loco.wrap textarea.regular-text{width:25em}#loco.wrap .button-link{padding:0 10px 1px}#loco.wrap .button-danger{background:#ba0000;border-color:#990000 #660000 #660000;-webkit-box-shadow:0 1px 0 #600;-moz-box-shadow:0 1px 0 #600;box-shadow:0 1px 0 #600;color:#fff;text-shadow:0 -1px 1px #660000, 1px 0 1px #660000, 0 1px 1px #660000, -1px 0 1px #660000}#loco.wrap .button-success{background:#00B500;border-color:#090 #2e892e #2e892e;-webkit-box-shadow:0 1px 0 #2e892e;-moz-box-shadow:0 1px 0 #2e892e;box-shadow:0 1px 0 #2e892e;color:#fff;text-shadow:0 -1px 1px #2e892e,1px 0 1px #2e892e,0 1px 1px #2e892e,-1px 0 1px #2e892e}#loco.wrap .button-success:hover{background:#3db63d}#loco.wrap form button.loco-loading.button-large{padding-left:0}#loco.wrap form button.loco-loading.button-large:before{width:16px;height:16px;margin:0 4px;content:" ";font-size:16px;line-height:1;display:inline-block;vertical-align:sub}#loco.wrap ::placeholder{color:#ccc}#loco.wrap ::-webkit-input-placeholder{color:#ccc}#loco.wrap :-moz-placeholder{color:#ccc;opacity:1}#loco.wrap ::-moz-placeholder{color:#ccc;opacity:1}#loco.wrap :-ms-input-placeholder{color:#ccc}#loco.wrap .ielt10 .placeheld{color:#ccc}#loco.wrap a.has-raquo:after{content:"\A0\BB"}#loco.wrap a.has-laquo:before{content:"\AB\A0"}#loco.wrap span.inline-spinner{display:inline-block;min-width:16px;min-height:16px;background:transparent url(../img/spin-modal.gif) 0 0 no-repeat}.js #wpbody-content>.notice{display:none}.js #wpbody-content>.notice.inline{display:block}.js #loco.wrap .jshide,.no-js #loco.wrap .jsonly{display:none !important}#loco.wrap .invis{visibility:hidden}.form-table tr{vertical-align:top}.form-table tr.compact td{padding-top:0}.loco-modal.request-filesystem-credentials-dialog{top:15% !important;max-height:85% !important}.loco-modal.request-filesystem-credentials-dialog>.ui-dialog-content{background:inherit}.loco-modal.request-filesystem-credentials-dialog .ftp-password>label>em:last-child{display:none}.ui-dialog-content>div.loco-loading{height:100%;background:transparent url(../img/spin-modal.gif) center 20px no-repeat}#loco-credit>*{vertical-align:middle}#loco-credit>a{display:inline-block;position:relative;overflow:hidden;background:transparent url(../img/logo-foot.gif) 0 0 no-repeat;height:30px;width:100px;text-indent:200px;-webkit-transition-duration:0s;transition-duration:0s}#loco-credit>a:hover{background-position:0 -35px}#loco-content{position:relative}#footer-upgrade span:before{color:#CCC;content:" | ";display:inline;padding-left:0.5em;padding-right:0.5em}#footer-upgrade span:first-child:before{content:"";display:none}.loco-clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}dl.debug dt{font-weight:bold}dl.debug dt,dl.debug dd{white-space:pre}.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(0,115,170,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#0073aa}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../img/skins/fresh/spin-primary-button.gif) 0 0 no-repeat !important}
1
+ ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.3.0);background-repeat:no-repeat;min-height:16px}._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.3.0) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.3.0);background-size:16px}}._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}.loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.tipsy{font-size:11px;position:absolute;padding:5px;z-index:500001;opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.tipsy.in{opacity:1}.tipsy-inner{background-color:#000;color:#FFF;white-space:nowrap;padding:6px 8px;line-height:1.3em;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#loco.wrap .selector li,#loco.wrap .selector .handle,#loco.wrap .selectoradd a,#loco.wrap .selectorsep:before,#loco.wrap .selectorsep span{padding:0.3em 0.75em}#loco.wrap .selector{text-align:left;display:inline-block;white-space:nowrap}#loco.wrap .selectoradd a,#loco.wrap .selector .handle{cursor:default;display:block;position:relative;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666;height:1.3em;overflow:hidden;white-space:normal}#loco.wrap .selectorsep{display:inline-block;border:solid 1px transparent}#loco.wrap .selectorsep:before{display:block;position:relative;color:#999;height:1.3em;overflow:hidden}#loco.wrap .selectorsep>*{display:block;line-height:1em;color:#666;height:1.3em;overflow:hidden}#loco.wrap .selector .handle{outline:none;white-space:nowrap;padding-right:2.3em;max-width:250px;text-overflow:ellipsis}#loco.wrap .selector .handle .prefix{padding-right:0.6ex}#loco.wrap .selector .handle:after{font-family:loco;font-size:1.3em;color:#ccc;display:block;position:absolute;top:0.25em;right:0.6em}#loco.wrap .selector .handle:focus:after,#loco.wrap .selector .handle:hover:after{color:#666}#loco.wrap .selector.no-caret .handle{padding-right:0.75em}#loco.wrap .selector.no-caret .handle:after{display:none}#loco.wrap .selector.no-title .handle{padding-left:0.5em;padding-right:0.5em}#loco.wrap .selector.no-title .handle .label{display:none}#loco.wrap .selector.no-title .handle .icon{margin-right:0px}#loco.wrap .selector.dummy .handle{border-color:transparent}#loco.wrap .selector.dummy .handle:after{display:none}#loco.wrap .selectoradd{position:relative}#loco.wrap .selectoradd>*{display:block;float:left;clear:none}#loco.wrap .selectoradd>a.has-icon{width:1.3em}#loco.wrap .selectoradd>a.has-icon:before{color:#999;display:inline;padding-left:0;padding-right:0;line-height:1.4em}#loco.wrap .selectoradd>a.has-icon:hover:after{color:#2e892e}#loco.wrap .selectorsep{display:inline-block}#loco.wrap .selectorsep span{color:#666;height:1.3em}#loco.wrap .selector ul{padding:0}#loco.wrap .selector ul,#loco.wrap .selector li{display:block;position:relative;cursor:default;margin:0}#loco.wrap .selector ul{z-index:5;position:absolute;left:0;top:0;background:#f5f5f5;box-shadow:0 10px 5px rgba(0,0,0,0.2);border:solid 1px #ccc;overflow:auto}#loco.wrap .selector.up ul{margin-top:0}#loco.wrap .selector.multi li input{display:none}#loco.wrap .selector.multi li.checked{background:#e5e5e5}#loco.wrap .selector li.active{background:#e5e5e5 !important}#loco.wrap .selector li.over{background:#ccc !important;color:#fff;text-shadow:1px 1px #aaa}#loco.wrap .selector li.over .label{color:#fff}#loco.wrap .selector .label{font:inherit;color:inherit}#loco.wrap .selector .icon{display:inline-block;min-width:1.2em;text-align:center;font-size:14px}#loco.wrap .selector .icon.no-icon{display:none}#loco.wrap .selector .icon:before{color:#666}#loco.wrap .selector .avtr{width:18px;height:18px;background-size:18px;background-repeat:no-repeat}#loco.wrap .selector .label{line-height:1}#loco.wrap .selector .icon,#loco.wrap .selector .icon-16{vertical-align:bottom}#loco.wrap .selector .icon,#loco.wrap .selector .lang,#loco.wrap .selector .icon-16{margin-right:5px}#loco.wrap .selector .region,#loco.wrap .selector .lang-ca,#loco.wrap .selector .lang-eo,#loco.wrap .selector .lang-eu,#loco.wrap .selector .variant-wales,#loco.wrap .selector .region-gb.lang-cy,#loco.wrap .selector .variant-scotland,#loco.wrap .selector .region-gb.lang-gd{margin-left:2px;margin-right:7px}#loco.wrap .selector.ticked .icon.no-icon{font-size:12px;display:inline-block}#loco.wrap .selector.ticked .active .icon.no-icon:before{content:"\2713"}#loco.wrap .selectoradd a:hover,#loco.wrap .selector a.handle:focus,#loco.wrap .selector a.handle:hover{color:#000;border-color:#999}#loco.wrap .selector.active .handle{border-color:#999;background-color:#eee;color:#999}#loco.wrap .selector.active .handle:after{color:#999}#loco.wrap .selector.disabled{cursor:default;cursor:no-drop;cursor:not-allowed}#loco.wrap .selector.disabled .handle{pointer-events:none;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#999;padding-right:1em}#loco.wrap .selector.disabled .handle:after{display:none}#loco.wrap .selector.disabled .handle span.icon{color:#999 !important}#loco.wrap .selector li.disabled,#loco.wrap .selector li.disabled.over{color:#aaa;text-shadow:1px 1px #fff;pointer-events:none}#loco.wrap .selector li.disabled *{cursor:text}#loco.wrap .selector li.disabled .icon:before{color:#aaa}#loco.wrap .selector li.disabled .flag,#loco.wrap .selector li.disabled .icon-16{opacity:0.4}#loco.wrap .selector.lefty ul{left:auto;right:0}#loco.wrap .selector.lefty ul .icon,#loco.wrap .selector.lefty ul .icon-32{display:block;float:right;clear:none}#loco.wrap .selector.lefty ul .label{padding-right:32px;padding-left:0}#loco.wrap .selector ul>form{margin:0;display:block}#loco.wrap .selector ul>form input{margin:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco.wrap .selector ul>form input:focus{-webkit-box-shadow:inset 0 0 5px 0 #3db63d;-moz-box-shadow:inset 0 0 5px 0 #3db63d;box-shadow:inset 0 0 5px 0 #3db63d}#loco.wrap .selector ul>form input.error{border-color:#cc0000;-webkit-box-shadow:inset 0 0 5px 0 rgba(153,0,0,0.5);-moz-box-shadow:inset 0 0 5px 0 rgba(153,0,0,0.5);box-shadow:inset 0 0 5px 0 rgba(153,0,0,0.5)}#loco.wrap .selector ul>form a.clear{margin:0;border:none}#loco.wrap .selector ul>form ::placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap .selector ul>form ::-webkit-input-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap .selector ul>form :-moz-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block;opacity:1}#loco.wrap .selector ul>form ::-moz-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block;opacity:1}#loco.wrap .selector ul>form :-ms-input-placeholder{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap .selector ul>form .ielt10 .placeheld{color:#808080;font-size:16px;font-family:'loco';text-align:right;display:block}#loco.wrap div.auto-comp-wrap{width:100%}#loco.wrap div.auto-comp-wrap input{display:inline-block}#loco.wrap div.auto-comp-wrap.loading input{background:transparent url(../img/ajax-loader.gif?v=2.3.0) right 2px no-repeat}#loco.wrap div.auto-comp-drop{color:#333333;background:#FFFFFF;border-top:none;position:absolute;width:auto;top:0;left:0;z-index:99;-webkit-box-shadow:0 5px 5px rgba(0,0,0,0.4);-moz-box-shadow:0 5px 5px rgba(0,0,0,0.4);box-shadow:0 5px 5px rgba(0,0,0,0.4)}#loco.wrap div.auto-comp-result{padding:5px 10px;cursor:pointer;background:#F0F0F0;border-top:solid 1px #FFF;border-bottom:solid 1px #DDD;white-space:nowrap}#loco.wrap div.auto-comp-result:first-child{border-top:solid 1px #DDD}#loco.wrap div.auto-comp-result>*{display:inline-block;vertical-align:middle;line-height:normal}#loco.wrap div.auto-comp-result .icon:before{padding-right:5px}#loco.wrap div.auto-comp-result:hover{background:#A8A8A8;color:#FFFFFF;border-top-color:#A8A8A8;border-bottom-color:#999999}#loco.wrap div.auto-comp-result.selected{background:#666666 !important;color:#FFFFFF;border-top-color:#666666;border-bottom-color:#666666}#loco.wrap div.auto-comp-result .lang,#loco.wrap div.auto-comp-result .region,#loco.wrap div.auto-comp-result .lang-ca,#loco.wrap div.auto-comp-result .lang-eo,#loco.wrap div.auto-comp-result .lang-eu,#loco.wrap div.auto-comp-result .variant-wales,#loco.wrap div.auto-comp-result .region-gb.lang-cy,#loco.wrap div.auto-comp-result .variant-scotland,#loco.wrap div.auto-comp-result .region-gb.lang-gd,#loco.wrap div.auto-comp-result .avtr{margin-right:5px}#loco.wrap div.auto-comp-wrap.error a.icon.clear:before{color:#cc0000;opacity:1}#loco.wrap div.auto-comp-wrap.error input[type="text"]{border-color:#cc0000;color:#cc0000}#loco.wrap div.auto-comp-wrap.error input[type="text"]:focus{-webkit-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);-moz-box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5);box-shadow:0 0 0.5em 0 rgba(153,0,0,0.5)}#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.3.0);background-repeat:no-repeat;min-height:16px}#loco.wrap ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.3.0) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.3.0);background-size:16px}}#loco.wrap ._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco.wrap ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco.wrap .loco-font,#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .has-icon:before{display:inline-block;padding-right:0.3em}#loco.wrap a.icon-help{cursor:help}#loco.wrap a.icon-help span{display:none}#loco.wrap .icon-magnify:before{content:"\1f50d"}#loco.wrap .icon-unicode:before{content:"\75"}#loco.wrap .icon-json:before{content:"\7b"}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-ok-empty:before{content:"\1f5cc"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before,#loco.wrap .icon-history:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon-status.is-translated:before,#loco.wrap .is-translated>header>.icon-status:before{color:#2e892e;content:"✓";text-align:center}#loco.wrap .icon-status.is-untranslated:before,#loco.wrap .is-untranslated>header>.icon-status:before{color:#aaa;content:"×";text-align:center;font-size:1.1em}#loco.wrap .icon-status.is-flagged:before,#loco.wrap .is-flagged>header>.icon-status:before{color:#bd2c00;content:"";text-align:center}#loco.wrap .icon-status.is-translated.is-blank:before,#loco.wrap .icon-status.is-translated.is-inherit:before,#loco.wrap .is-translated.is-blank>header>.icon-status:before,#loco.wrap .is-translated.is-inherit>header>.icon-status:before{content:"🗌"}#loco.wrap .icon-status.is-fuzzy:before,#loco.wrap .is-fuzzy>header>.icon-status:before{color:#666;content:""}#loco.wrap .lang,#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{color:#fff;background:#2e892e;display:inline-block;text-transform:uppercase;overflow:hidden;font-family:Verdana,Arial,sans-serif;font-size:9px;font-weight:normal;font-style:normal;line-height:12px;text-align:center;white-space:normal;text-shadow:none}#loco.wrap .lang{width:20px;height:12px;line-height:12px;vertical-align:middle}#loco.wrap .lang:before{content:attr(lang);vertical-align:baseline}#loco.wrap .no-lang{width:18px;height:10px;border:solid 1px #2e892e;background:transparent}#loco.wrap .lang-el{background-color:#1D48A3}#loco.wrap .lang-el:before{content:"\0395\03BB"}#loco.wrap .region,#loco.wrap .lang-ca,#loco.wrap .lang-eo,#loco.wrap .lang-eu,#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy,#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{width:16px;height:12px;margin:0 2px;background-image:url(../img/flags.png?v=2.3.0);background-repeat:no-repeat;background-color:transparent}#loco.wrap .region:before,#loco.wrap .lang-ca:before,#loco.wrap .lang-eo:before,#loco.wrap .lang-eu:before,#loco.wrap .variant-wales:before,#loco.wrap .region-gb.lang-cy:before,#loco.wrap .variant-scotland:before,#loco.wrap .region-gb.lang-gd:before{visibility:hidden}#loco.wrap .lang-zh{background-color:#B90000}#loco.wrap .lang-zh.script-hans:before{content:"\4E2D\56FD"}#loco.wrap .lang-zh.script-hant:before{content:"\4E2D\570B"}#loco.wrap .__{background-position:0 0}#loco.wrap .lang-eo{background-position:0 -12px}#loco.wrap .lang-eu{background-position:0 -24px}#loco.wrap .lang-ca{background-position:0 -36px}#loco.wrap .region-tg{background-position:0 -48px}#loco.wrap .region-me{background-position:0 -60px}#loco.wrap .region-la{background-position:0 -73px}#loco.wrap .region-mr{background-position:0 -85px}#loco.wrap .region-ni{background-position:0 -97px}#loco.wrap .region-lv{background-position:0 -109px}#loco.wrap .region-om{background-position:0 -121px}#loco.wrap .region-af{background-position:0 -133px}#loco.wrap .region-cy{background-position:0 -145px}#loco.wrap .region-bj{background-position:0 -157px}#loco.wrap .region-aq{background-position:0 -169px}#loco.wrap .region-cn{background-position:0 -186px}#loco.wrap .region-co{background-position:0 -198px}#loco.wrap .region-cx{background-position:0 -210px}#loco.wrap .region-ag{background-position:0 -222px}#loco.wrap .region-ms{background-position:0 -234px}#loco.wrap .region-md{background-position:0 -246px}#loco.wrap .region-zm{background-position:0 -258px}#loco.wrap .region-vn{background-position:0 -270px}#loco.wrap .region-tf{background-position:0 -282px}#loco.wrap .region-td{background-position:0 -294px}#loco.wrap .region-yt{background-position:0 -306px}#loco.wrap .region-lb{background-position:0 -318px}#loco.wrap .region-mf{background-position:0 -330px}#loco.wrap .region-lu{background-position:0 -347px}#loco.wrap .region-mq{background-position:0 -359px}#loco.wrap .region-cz{background-position:0 -371px}#loco.wrap .region-ae{background-position:0 -383px}#loco.wrap .region-cm{background-position:0 -395px}#loco.wrap .region-bi{background-position:0 -407px}#loco.wrap .region-ar{background-position:0 -419px}#loco.wrap .region-as{background-position:0 -431px}#loco.wrap .region-bh{background-position:0 -443px}#loco.wrap .region-cl{background-position:0 -455px}#loco.wrap .region-ad{background-position:0 -467px}#loco.wrap .region-mp{background-position:0 -479px}#loco.wrap .region-lt{background-position:0 -491px}#loco.wrap .region-mg{background-position:0 -503px}#loco.wrap .region-lc{background-position:0 -515px}#loco.wrap .region-tr{background-position:0 -527px}#loco.wrap .region-ua{background-position:0 -539px}#loco.wrap .region-tv{background-position:0 -551px}#loco.wrap .region-vi{background-position:0 -563px}#loco.wrap .region-mt{background-position:0 -575px}#loco.wrap .region-no{background-position:0 -587px}#loco.wrap .region-mc{background-position:0 -599px}#loco.wrap .region-ch{background-position:0 -611px}#loco.wrap .region-bl{background-position:0 -623px}#loco.wrap .region-aw{background-position:0 -640px}#loco.wrap .region-bz{background-position:0 -652px}#loco.wrap .region-bm{background-position:0 -664px}#loco.wrap .region-ci{background-position:0 -676px}#loco.wrap .region-mu{background-position:0 -688px}#loco.wrap .region-us{background-position:0 -700px}#loco.wrap .region-tw{background-position:0 -712px}#loco.wrap .region-ye{background-position:0 -724px}#loco.wrap .region-mw{background-position:0 -736px}#loco.wrap .region-nl{background-position:0 -748px}#loco.wrap .region-ls{background-position:0 -760px}#loco.wrap .region-bo{background-position:0 -772px}#loco.wrap .region-at{background-position:0 -784px}#loco.wrap .region-ck{background-position:0 -796px}#loco.wrap .region-by{background-position:0 -808px}#loco.wrap .region-au{background-position:0 -820px}#loco.wrap .region-bn{background-position:0 -832px}#loco.wrap .region-ma{background-position:0 -844px}#loco.wrap .region-nz{background-position:0 -856px}#loco.wrap .region-lr{background-position:0 -868px}#loco.wrap .region-mv{background-position:0 -880px}#loco.wrap .region-tc{background-position:0 -892px}#loco.wrap .region-ug{background-position:0 -904px}#loco.wrap .region-tt{background-position:0 -916px}#loco.wrap .region-pl{background-position:0 -928px}#loco.wrap .region-rs{background-position:0 -940px}#loco.wrap .region-in{background-position:0 -952px}#loco.wrap .region-ge{background-position:0 -964px}#loco.wrap .region-gr{background-position:0 -976px}#loco.wrap .region-gs{background-position:0 -988px}#loco.wrap .region-gd{background-position:0 -1000px}#loco.wrap .region-io{background-position:0 -1012px}#loco.wrap .region-hk{background-position:0 -1024px}#loco.wrap .region-kp{background-position:0 -1036px}#loco.wrap .region-kg{background-position:0 -1048px}#loco.wrap .region-pm{background-position:0 -1060px}#loco.wrap .region-sv{background-position:0 -1072px}#loco.wrap .region-re{background-position:0 -1084px}#loco.wrap .region-sa{background-position:0 -1096px}#loco.wrap .region-sc{background-position:0 -1108px}#loco.wrap .region-st{background-position:0 -1120px}#loco.wrap .region-ke{background-position:0 -1132px}#loco.wrap .region-im{background-position:0 -1144px}#loco.wrap .region-kr{background-position:0 -1161px}#loco.wrap .region-gf{background-position:0 -1173px}#loco.wrap .region-dj{background-position:0 -1185px}#loco.wrap .region-gq{background-position:0 -1197px}#loco.wrap .region-gp{background-position:0 -1209px}#loco.wrap .region-dk{background-position:0 -1221px}#loco.wrap .region-gg{background-position:0 -1233px}#loco.wrap .region-il{background-position:0 -1250px}#loco.wrap .region-pn{background-position:0 -1262px}#loco.wrap .region-sb{background-position:0 -1274px}#loco.wrap .region-py{background-position:0 -1286px}#loco.wrap .region-ru{background-position:0 -1298px}#loco.wrap .region-kw{background-position:0 -1310px}#loco.wrap .region-do{background-position:0 -1322px}#loco.wrap .region-gt{background-position:0 -1334px}#loco.wrap .region-gb{background-position:0 -1346px}#loco.wrap .region-gu{background-position:0 -1358px}#loco.wrap .region-je{background-position:0 -1370px}#loco.wrap .region-hm{background-position:0 -1387px}#loco.wrap .region-sg{background-position:0 -1399px}#loco.wrap .region-pk{background-position:0 -1411px}#loco.wrap .region-sr{background-position:0 -1423px}#loco.wrap .region-se{background-position:0 -1435px}#loco.wrap .region-jp{background-position:0 -1447px}#loco.wrap .region-gw{background-position:0 -1459px}#loco.wrap .region-eh{background-position:0 -1471px}#loco.wrap .region-dz{background-position:0 -1483px}#loco.wrap .region-ga{background-position:0 -1495px}#loco.wrap .region-fr{background-position:0 -1507px}#loco.wrap .region-dm{background-position:0 -1519px}#loco.wrap .region-hn{background-position:0 -1531px}#loco.wrap .region-sd{background-position:0 -1543px}#loco.wrap .region-rw{background-position:0 -1555px}#loco.wrap .region-ph{background-position:0 -1567px}#loco.wrap .region-ss{background-position:0 -1579px}#loco.wrap .region-qa{background-position:0 -1596px}#loco.wrap .region-pe{background-position:0 -1608px}#loco.wrap .region-pr{background-position:0 -1620px}#loco.wrap .region-si{background-position:0 -1632px}#loco.wrap .region-ht{background-position:0 -1644px}#loco.wrap .region-es{background-position:0 -1656px}#loco.wrap .region-gl{background-position:0 -1668px}#loco.wrap .region-gm{background-position:0 -1680px}#loco.wrap .region-er{background-position:0 -1692px}#loco.wrap .region-fi{background-position:0 -1704px}#loco.wrap .region-ee{background-position:0 -1716px}#loco.wrap .region-kn{background-position:0 -1728px}#loco.wrap .region-hu{background-position:0 -1740px}#loco.wrap .region-iq{background-position:0 -1752px}#loco.wrap .region-ky{background-position:0 -1764px}#loco.wrap .region-sh{background-position:0 -1776px}#loco.wrap .region-ps{background-position:0 -1788px}#loco.wrap .region-pf{background-position:0 -1800px}#loco.wrap .region-sj{background-position:0 -1812px}#loco.wrap .region-id{background-position:0 -1824px}#loco.wrap .region-is{background-position:0 -1836px}#loco.wrap .region-eg{background-position:0 -1848px}#loco.wrap .region-fk{background-position:0 -1860px}#loco.wrap .region-fj{background-position:0 -1872px}#loco.wrap .region-gn{background-position:0 -1884px}#loco.wrap .region-gy{background-position:0 -1896px}#loco.wrap .region-ir{background-position:0 -1908px}#loco.wrap .region-km{background-position:0 -1920px}#loco.wrap .region-ie{background-position:0 -1932px}#loco.wrap .region-kz{background-position:0 -1944px}#loco.wrap .region-ro{background-position:0 -1956px}#loco.wrap .region-sk{background-position:0 -1968px}#loco.wrap .region-pg{background-position:0 -1980px}#loco.wrap .region-pt{background-position:0 -1992px}#loco.wrap .region-so{background-position:0 -2004px}#loco.wrap .region-sx{background-position:0 -2016px}#loco.wrap .region-hr{background-position:0 -2033px}#loco.wrap .region-ki{background-position:0 -2045px}#loco.wrap .region-jm{background-position:0 -2057px}#loco.wrap .region-ec{background-position:0 -2069px}#loco.wrap .region-et{background-position:0 -2081px}#loco.wrap .region-fo{background-position:0 -2093px}#loco.wrap .region-kh{background-position:0 -2105px}#loco.wrap .region-sy{background-position:0 -2117px}#loco.wrap .region-sn{background-position:0 -2129px}#loco.wrap .region-pw{background-position:0 -2141px}#loco.wrap .region-sl{background-position:0 -2153px}#loco.wrap .region-fm{background-position:0 -2165px}#loco.wrap .region-gi{background-position:0 -2177px}#loco.wrap .region-de{background-position:0 -2189px}#loco.wrap .region-gh{background-position:0 -2201px}#loco.wrap .region-jo{background-position:0 -2213px}#loco.wrap .region-it{background-position:0 -2225px}#loco.wrap .region-pa{background-position:0 -2237px}#loco.wrap .region-sz{background-position:0 -2249px}#loco.wrap .region-sm{background-position:0 -2261px}#loco.wrap .region-tn{background-position:0 -2273px}#loco.wrap .region-ml{background-position:0 -2285px}#loco.wrap .region-cg{background-position:0 -2297px}#loco.wrap .region-ax{background-position:0 -2309px}#loco.wrap .region-ao{background-position:0 -2321px}#loco.wrap .region-bt{background-position:0 -2333px}#loco.wrap .region-an{background-position:0 -2345px}#loco.wrap .region-bb{background-position:0 -2357px}#loco.wrap .region-cf{background-position:0 -2369px}#loco.wrap .region-mm{background-position:0 -2381px}#loco.wrap .region-li{background-position:0 -2393px}#loco.wrap .region-na{background-position:0 -2405px}#loco.wrap .region-mz{background-position:0 -2417px}#loco.wrap .region-to{background-position:0 -2429px}#loco.wrap .region-vg{background-position:0 -2441px}#loco.wrap .region-ve{background-position:0 -2453px}#loco.wrap .region-tz{background-position:0 -2465px}#loco.wrap .region-tm{background-position:0 -2477px}#loco.wrap .region-mx{background-position:0 -2489px}#loco.wrap .region-nc{background-position:0 -2501px}#loco.wrap .region-mo{background-position:0 -2513px}#loco.wrap .region-lk{background-position:0 -2525px}#loco.wrap .region-cd{background-position:0 -2537px}#loco.wrap .region-al{background-position:0 -2549px}#loco.wrap .region-bw{background-position:0 -2561px}#loco.wrap .region-cs{background-position:0 -2573px}#loco.wrap .region-cr{background-position:0 -2585px}#loco.wrap .region-bv{background-position:0 -2597px}#loco.wrap .region-am{background-position:0 -2609px}#loco.wrap .region-az{background-position:0 -2621px}#loco.wrap .region-ba{background-position:0 -2633px}#loco.wrap .region-mn{background-position:0 -2645px}#loco.wrap .region-nu{background-position:0 -2657px}#loco.wrap .region-my{background-position:0 -2669px}#loco.wrap .region-tl{background-position:0 -2681px}#loco.wrap .region-ws{background-position:0 -2693px}#loco.wrap .region-th{background-position:0 -2705px}#loco.wrap .region-nf{background-position:0 -2717px}#loco.wrap .region-ly{background-position:0 -2729px}#loco.wrap .region-ai{background-position:0 -2741px}#loco.wrap .region-br{background-position:0 -2753px}#loco.wrap .region-cv{background-position:0 -2765px}#loco.wrap .region-be{background-position:0 -2777px}#loco.wrap .region-ca{background-position:0 -2789px}#loco.wrap .region-bd{background-position:0 -2801px}#loco.wrap .region-cw{background-position:0 -2813px}#loco.wrap .region-bs{background-position:0 -2830px}#loco.wrap .region-ng{background-position:0 -2842px}#loco.wrap .region-mk{background-position:0 -2854px}#loco.wrap .region-np{background-position:0 -2866px}#loco.wrap .region-va{background-position:0 -2878px}#loco.wrap .region-uz{background-position:0 -2890px}#loco.wrap .region-um{background-position:0 -2902px}#loco.wrap .region-tk{background-position:0 -2914px}#loco.wrap .region-vc{background-position:0 -2926px}#loco.wrap .region-zw{background-position:0 -2938px}#loco.wrap .region-nr{background-position:0 -2950px}#loco.wrap .region-ne{background-position:0 -2962px}#loco.wrap .region-cu{background-position:0 -2974px}#loco.wrap .region-bq{background-position:0 -2986px}#loco.wrap .region-bf{background-position:0 -2998px}#loco.wrap .region-bg{background-position:0 -3010px}#loco.wrap .region-cc{background-position:0 -3022px}#loco.wrap .region-mh{background-position:0 -3034px}#loco.wrap .region-za{background-position:0 -3046px}#loco.wrap .region-uy{background-position:0 -3058px}#loco.wrap .region-wf{background-position:0 -3070px}#loco.wrap .region-vu{background-position:0 -3082px}#loco.wrap .region-tj{background-position:0 -3094px}#loco.wrap .variant-scotland,#loco.wrap .region-gb.lang-gd{background-position:0 -3106px}#loco.wrap .variant-valencia{background-position:0 -3118px}#loco.wrap .variant-wales,#loco.wrap .region-gb.lang-cy{background-position:0 -3130px}#loco.wrap .x-eu{background-position:0 -3142px}#loco.wrap span.lang code{display:none}#loco.wrap .icon-magnify:before{content:"\1f50d"}#loco.wrap .icon-unicode:before{content:"\75"}#loco.wrap .icon-json:before{content:"\7b"}#loco.wrap .icon-bullist:before{content:"\e00a"}#loco.wrap .icon-numlist:before{content:"\e00b"}#loco.wrap .icon-indent:before{content:"\e00c"}#loco.wrap .icon-outdent:before{content:"\e00d"}#loco.wrap .icon-link:before{content:"\e011"}#loco.wrap .icon-unlink:before{content:"\e012"}#loco.wrap .icon-bold:before{content:"\42"}#loco.wrap .icon-italic:before{content:"\49"}#loco.wrap .icon-translate:before{content:"\f326"}#loco.wrap .icon-proj:before{content:"\e900"}#loco.wrap .icon-plural:before{content:"\16ec"}#loco.wrap .icon-max:before,#loco.wrap .icon-full-screen:before{content:"\e901"}#loco.wrap .icon-min:before{content:"\e902"}#loco.wrap .icon-sort:before{content:"\e903"}#loco.wrap .icon-ok:before,#loco.wrap .notice-success>.has-icon:before,#loco.wrap .notice-success p>strong.has-icon:before{content:"\2713"}#loco.wrap .icon-ok-empty:before{content:"\1f5cc"}#loco.wrap .icon-checkbox-checked:before,#loco.wrap .selector.multi li.checked .icon-checkbox:before{content:"\2611"}#loco.wrap .icon-checkbox-unchecked:before{content:"\2610"}#loco.wrap .icon-checkbox-partial:before{content:"\2609"}#loco.wrap .icon-radio-checked:before{content:"\26ab"}#loco.wrap .icon-radio-unchecked:before{content:"\26aa"}#loco.wrap .icon-ext:before{content:"\2b08"}#loco.wrap .icon-share:before{content:"\e904"}#loco.wrap .icon-star:before{content:"\e612"}#loco.wrap .icon-user:before{content:"\e620"}#loco.wrap .icon-remove:before{content:"\d7"}#loco.wrap .icon-cog:before{content:"\e61b"}#loco.wrap .icon-trash:before{content:"\e60f"}#loco.wrap .icon-time:before,#loco.wrap .icon-history:before{content:"\e62d"}#loco.wrap .icon-download:before{content:"\e608"}#loco.wrap .icon-revert:before{content:"\e635"}#loco.wrap .icon-sync:before{content:"\e634"}#loco.wrap .icon-lock:before,#loco.wrap .notice-locked>.has-icon:before,#loco.wrap .notice-locked p>strong.has-icon:before{content:"\e604"}#loco.wrap .icon-flag:before{content:"\e60e"}#loco.wrap .icon-tag:before{content:"\e622"}#loco.wrap .icon-tags:before{content:"\e623"}#loco.wrap .icon-print:before{content:"\e62a"}#loco.wrap .icon-camera:before{content:"\e629"}#loco.wrap .icon-pencil:before{content:"\e61e"}#loco.wrap .icon-add:before{content:"\e60c"}#loco.wrap .icon-del:before{content:"\e60d"}#loco.wrap .icon-clear:before,#loco.wrap a.icon.clear:before{content:"\e615"}#loco.wrap .icon-ok-sign:before{content:"\2714"}#loco.wrap .icon-help:before{content:"\3f"}#loco.wrap .icon-info:before,#loco.wrap .notice-info>.has-icon:before,#loco.wrap .notice-info p>strong.has-icon:before{content:"\2139"}#loco.wrap .icon-cancel:before{content:"\e605"}#loco.wrap .icon-warn:before,#loco.wrap .notice-warning>.has-icon:before,#loco.wrap .notice-warning p>strong.has-icon:before,#loco.wrap .notice-error>.has-icon:before,#loco.wrap .notice-error p>strong.has-icon:before{content:"\e62e"}#loco.wrap .icon-comment:before{content:"\e613"}#loco.wrap .icon-bar-chart:before{content:"\e624"}#loco.wrap .icon-key:before{content:"\e606"}#loco.wrap .icon-cogs:before{content:"\e61c"}#loco.wrap .icon-comments:before{content:"\e614"}#loco.wrap .icon-signout:before{content:"\e61a"}#loco.wrap .icon-signin:before{content:"\e619"}#loco.wrap .icon-upload:before{content:"\e609"}#loco.wrap .icon-twitter:before{content:"\1f426"}#loco.wrap .icon-facebook:before{content:"\e630"}#loco.wrap .icon-github:before{content:"\e633"}#loco.wrap .icon-feed:before{content:"\e628"}#loco.wrap .icon-globe:before{content:"\e61d"}#loco.wrap .icon-wrench:before,#loco.wrap .notice-debug>.has-icon:before,#loco.wrap .notice-debug p>strong.has-icon:before{content:"\e626"}#loco.wrap .icon-group:before{content:"\e61f"}#loco.wrap .icon-cloud:before{content:"\e607"}#loco.wrap .icon-copy:before{content:"\e62b"}#loco.wrap .icon-save:before{content:"\e610"}#loco.wrap .icon-menu:before{content:"\e600"}#loco.wrap .icon-table:before{content:"\e627"}#loco.wrap .icon-caret-down:before,#loco.wrap .selector .handle:after{content:"\25bc"}#loco.wrap .icon-caret-up:before,#loco.wrap .selector.active .handle:after{content:"\25b2"}#loco.wrap .icon-caret-right:before{content:"\25b6"}#loco.wrap .icon-mail:before{content:"\e603"}#loco.wrap .icon-cloud-upload:before{content:"\e617"}#loco.wrap .icon-file:before{content:"\e611"}#loco.wrap .icon-circle-white:before{content:"\26ac"}#loco.wrap .icon-circle-black:before{content:"\25cf"}#loco.wrap .icon-eraser:before{content:"\e636"}#loco.wrap .icon-unlock:before{content:"\e616"}#loco.wrap .icon-apple:before{content:"\e60b"}#loco.wrap .icon-android:before{content:"\e60a"}#loco.wrap .icon-back:before{content:"\2b05"}#loco.wrap .icon-next:before{content:"\2794"}#loco.wrap .icon-arrow-up:before{content:"\f062"}#loco.wrap .icon-ccard:before{content:"\f09d"}#loco.wrap .icon-caret-left:before{content:"\25c0"}#loco.wrap .icon-pro:before{content:"\26a1"}#loco.wrap .icon-bell:before{content:"\f0f3"}#loco.wrap .icon-code:before{content:"\f121"}#loco.wrap .icon-privacy:before{content:"\1f6e1"}#loco.wrap .icon-hellip:before{content:"\2026"}#loco.wrap .icon-vellip:before{content:"\205e"}#loco.wrap .icon-collapse:before{content:"\f147"}#loco.wrap .icon-expand:before{content:"\f196"}#loco.wrap .icon-wordpress:before{content:"\f19a"}#loco.wrap .icon-database:before{content:"\f1c0"}#loco.wrap .icon-restore:before{content:"\f1da"}#loco.wrap .icon-pilcrow:before{content:"\b6"}#loco.wrap .icon,#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before{speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco.wrap .icon,#loco.wrap .has-icon:before{font-family:'loco'}#loco.wrap .has-dashicon:before{font-family:'dashicons';font-size:1.4em}#loco.wrap .has-icon:before,#loco.wrap .has-dashicon:before,#loco.wrap .has-icon>span{display:inline-block;vertical-align:middle}#loco.wrap .only-icon{text-align:center}#loco.wrap .only-icon:before{text-align:center}#loco.wrap .only-icon span{display:none}#loco.wrap a,#loco.wrap .wp-core-ui .button-link{text-decoration:none}#loco.wrap h3:hover>a.loco-anchor{color:#ccc}#loco.wrap h3:hover>a.loco-anchor:before{content:"\B6"}#loco.wrap .has-lang>span{display:inline-block;vertical-align:middle}#loco.wrap a.has-lang:hover>span:last-child{text-decoration:underline}#loco.wrap h1 ul,#loco.wrap h1 li{margin:0;padding:0}#loco.wrap h1 li{display:inline-block}#loco.wrap h1 li:after{content:"/";color:#999;text-shadow:none;display:inline-block}#loco.wrap h1 li:last-child:after{content:""}#loco.wrap h1 li:last-child a{color:inherit;pointer-events:none;cursor:auto}#loco.wrap h2 span{color:#999;font-weight:normal}#loco.wrap h2 .loco-meta,#loco.wrap h3 .loco-meta{color:inherit;font-size:14px;font-weight:normal;vertical-align:middle}#loco.wrap .wp-list-table td:first-child .icon{width:16px;display:inline-block;text-align:center}#loco.wrap .wp-list-table td{white-space:nowrap}#loco.wrap .wp-list-table td>a,#loco.wrap .wp-list-table td>time{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}#loco.wrap .wp-list-table th.loco-sort{cursor:pointer}#loco.wrap .wp-list-table th.loco-sort:hover{color:#000}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{padding:0 0 0 4px;color:#999}#loco.wrap .wp-list-table th.loco-sort.loco-desc:after{content:"\25bc"}#loco.wrap .wp-list-table th.loco-sort.loco-asc:after{content:"\25b2"}#loco.wrap .wp-list-table td.has-row-actions{overflow:visible}#loco.wrap form.loco-filter{display:block;margin-bottom:5px}#loco.wrap form.loco-filter .icon-filter{color:#999}#loco.wrap nav.above-list-table{margin-bottom:1em}#loco.wrap nav.above-list-table a{display:inline-block;margin-right:1em}#loco.wrap .wp-core-ui button.inverted,#loco.wrap .wp-core-ui button.inverted:hover{background:-moz-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:-webkit-linear-gradient(top, #ccc 0%, #e0e0e0 5%, #fefefe 100%);background:linear-gradient(to bottom, #ccc 0%, #e0e0e0 5%, #fefefe 100%);-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-color:#bbb}#loco.wrap .wp-core-ui button:active,#loco.wrap .wp-core-ui button.inverted:active{border-color:#5b9dd9}#loco.wrap .loco-clearable{display:inline-block;vertical-align:middle;position:relative}#loco.wrap .loco-clearable a.clear,#loco.wrap .auto-comp-wrap a.clear{top:0;right:0;outline:none;margin:0;border:solid 1px transparent;padding:5px 5px;position:absolute;font-size:1em;line-height:normal}#loco.wrap .loco-clearable a.clear:before,#loco.wrap .auto-comp-wrap a.clear:before{vertical-align:middle;padding:0;color:#999}#loco.wrap .loco-clearable a.clear:hover:before,#loco.wrap .auto-comp-wrap a.clear:hover:before{color:#333}#loco.wrap .loco-clearable a.clear span,#loco.wrap .auto-comp-wrap a.clear span{display:none}#loco.wrap .loco-clearable ::-ms-clear,#loco.wrap .auto-comp-wrap ::-ms-clear{display:none}#loco.wrap div.progress{color:#000;background:transparent !important}#loco.wrap div.progress *{height:100%;overflow:hidden;white-space:nowrap}#loco.wrap div.progress .t{background-color:#ddd;border:1px solid #ccc}#loco.wrap div.progress .t .bar{float:left;clear:none;background-color:#3db63d}#loco.wrap div.progress .t .bar.f{background-color:#bd2c00}#loco.wrap div.progress .l{display:block}#loco.wrap td div.progress .t{border:none}#loco.wrap td div.progress .l{display:none}#loco.wrap code.path{color:#333;margin:0;padding:0;display:inline;background:transparent}#loco.wrap .loco-danger{color:#d54e21}#loco.wrap .notice,#loco.wrap .panel{background:#fff;position:relative;margin:1em 0;padding:1px 12px}#loco.wrap .notice-generic{border-color:#ddd}#loco.wrap .notice-success>.has-icon,#loco.wrap .notice-success p>strong.has-icon{color:#000}#loco.wrap .notice-warning{border-color:#FFA500}#loco.wrap .notice-error{border-color:#dc3232}#loco.wrap .notice-debug{border-color:#00a0d2}#loco.wrap .notice-danger{border-color:#dc3232}#loco.wrap .notice-locked{border-color:#FFA500}#loco.wrap .notice>.has-icon:before,#loco.wrap .notice p>strong.has-icon:before{padding-right:6px}#loco.wrap .notice>p>a.button.has-icon:before{width:1.5em}#loco.wrap .notice>p>em{color:#d54e21;font-style:normal}#loco.wrap .notice>p>em a{color:inherit}#loco.wrap .notice>p a:hover,#loco.wrap .notice>nav a:hover{text-decoration:underline}#loco.wrap .notice>p a.button,#loco.wrap .notice>nav a.button{text-decoration:inherit}#loco.wrap .notice.has-nav{display:flex;flex-direction:row}#loco.wrap .notice.has-nav p,#loco.wrap .notice.has-nav nav{line-height:22px;flex-grow:1}#loco.wrap .notice.has-nav nav{text-align:right;padding:2px;margin:.5em 0}#loco.wrap .notice.has-nav.is-dismissible{padding-right:38px}#loco.wrap .notice.has-nav a{font-size:12px;white-space:nowrap}#loco.wrap .notice.has-nav nav>span{color:#666}#loco.wrap .notice>h3>span{display:inline-block;vertical-align:middle}#loco.wrap ul.problems li{font-style:italic}#loco.wrap label{position:relative}#loco.wrap label.for-disabled,#loco.wrap label.for-disabled>input{cursor:default !important}#loco.wrap input.regular-text,#loco.wrap textarea.regular-text{width:25em}#loco.wrap .button-link{padding:0 10px 1px}#loco.wrap .button-danger{background:#ba0000;border-color:#990000 #660000 #660000;-webkit-box-shadow:0 1px 0 #600;-moz-box-shadow:0 1px 0 #600;box-shadow:0 1px 0 #600;color:#fff;text-shadow:0 -1px 1px #660000, 1px 0 1px #660000, 0 1px 1px #660000, -1px 0 1px #660000}#loco.wrap .button-success{background:#00B500;border-color:#090 #2e892e #2e892e;-webkit-box-shadow:0 1px 0 #2e892e;-moz-box-shadow:0 1px 0 #2e892e;box-shadow:0 1px 0 #2e892e;color:#fff;text-shadow:0 -1px 1px #2e892e,1px 0 1px #2e892e,0 1px 1px #2e892e,-1px 0 1px #2e892e}#loco.wrap .button-success:hover{background:#3db63d}#loco.wrap form button.loco-loading.button-large{padding-left:0}#loco.wrap form button.loco-loading.button-large:before{width:16px;height:16px;margin:0 4px;content:" ";font-size:16px;line-height:1;display:inline-block;vertical-align:sub}#loco.wrap ::placeholder{color:#ccc}#loco.wrap ::-webkit-input-placeholder{color:#ccc}#loco.wrap :-moz-placeholder{color:#ccc;opacity:1}#loco.wrap ::-moz-placeholder{color:#ccc;opacity:1}#loco.wrap :-ms-input-placeholder{color:#ccc}#loco.wrap .ielt10 .placeheld{color:#ccc}#loco.wrap a.has-raquo:after{content:"\A0\BB"}#loco.wrap a.has-laquo:before{content:"\AB\A0"}#loco.wrap span.inline-spinner{display:inline-block;min-width:16px;min-height:16px;background:transparent url(../img/spin-modal.gif?v=2.3.0) 0 0 no-repeat}.js #wpbody-content>.notice{display:none}.js #wpbody-content>.notice.inline{display:block}.js #loco.wrap .jshide,.no-js #loco.wrap .jsonly{display:none !important}#loco.wrap .invis{visibility:hidden}.form-table tr{vertical-align:top}.form-table tr.compact td{padding-top:0}.loco-modal.request-filesystem-credentials-dialog{top:15% !important;max-height:85% !important}.loco-modal.request-filesystem-credentials-dialog>.ui-dialog-content{background:inherit}.loco-modal.request-filesystem-credentials-dialog .ftp-password>label>em:last-child{display:none}.ui-dialog-content>div.loco-loading{height:100%;background:transparent url(../img/spin-modal.gif?v=2.3.0) center 20px no-repeat}#loco-credit>*{vertical-align:middle}#loco-credit>a{display:inline-block;position:relative;overflow:hidden;background:transparent url(../img/logo-foot.gif?v=2.3.0) 0 0 no-repeat;height:30px;width:100px;text-indent:200px;-webkit-transition-duration:0s;transition-duration:0s}#loco-credit>a:hover{background-position:0 -35px}#loco-content{position:relative}#footer-upgrade span:before{color:#CCC;content:" | ";display:inline;padding-left:0.5em;padding-right:0.5em}#footer-upgrade span:first-child:before{content:"";display:none}.loco-clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}dl.debug dt{font-weight:bold}dl.debug dt,dl.debug dd{white-space:pre}.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(0,115,170,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#0073aa}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../img/skins/fresh/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/editor.css CHANGED
@@ -1 +1 @@
1
- #loco-editor{border:solid 1px #ccc}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor div.ta-mirror{position:absolute;top:0;border:solid 1px transparent;color:transparent;padding:0.4em 0.6em;pointer-events:none}#loco-editor div.ta-mirror span{position:relative}#loco-editor div.ta-mirror span:after{color:#ccc;white-space:pre;display:inline-block;position:absolute;top:0;line-height:normal}#loco-editor div.ta-mirror .crlf:after{content:"\00AC"}#loco-editor div.ta-mirror .eof:after{content:"\00B6"}#loco-editor div.ta-mirror .x20:after{content:"\00B7";color:#aaa}#loco-editor div.ta-mirror .x9:after{content:"\27F6"}#loco-editor div.ta-mirror,#loco-editor .has-mirror textarea{white-space:pre-wrap;word-wrap:break-word;word-spacing:0px}#loco-editor .has-mirror ::placeholder{color:transparent}#loco-editor .has-mirror ::-webkit-input-placeholder{color:transparent}#loco-editor .has-mirror :-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror ::-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror :-ms-input-placeholder{color:transparent}#loco-editor .has-mirror .ielt10 .placeheld{color:transparent}#loco-editor div.ta-mirror{left:0;text-align:left}#loco-editor div.ta-mirror span:after{left:0}#loco-editor div.ta-mirror .eol:after{padding-left:0.2em}#loco-editor [dir="RTL"] div.ta-mirror{left:auto;right:0;text-align:right}#loco-editor [dir="RTL"] div.ta-mirror span:after{right:0}#loco-editor [dir="RTL"] div.ta-mirror .eol:after{padding-left:0;padding-right:0.2em}#loco-editor .has-proxy>textarea{display:none !important}#loco-editor .has-proxy .ace_editor{height:100%;font-size:13px !important;line-height:1.4 !important}#loco-editor .has-proxy .ace_editor .ace_marker-layer .ace_bracket{display:none}#loco-editor .has-proxy .ace_print-margin{display:none}#loco-editor .ace_printf{color:#b90690;background-color:#edf1be}#loco-editor .ace_locked{color:#808080}#loco-editor .ace_icu-quoted{color:#808080}#loco-editor .ace_icu{color:#697eb9}#loco-editor .ace_icu.ace_name{color:#b90600}#loco-editor .resizer{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0 6px 0;background:#f0f0f0 url(../img/wg/splity.png) center bottom no-repeat;border:1px solid #ddd;overflow:hidden;cursor:move;cursor:row-resize;cursor:s-resize}#loco-editor .resizer>*{height:100%;border:none}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor .wg-cell,#loco-editor .wg-cell>div{clear:both;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none}#loco-editor .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}#loco-editor .wg-split{background:#eee}#loco-editor .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}#loco-editor .wg-split-x>div>.not-first>*{margin-left:6px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:6px}#loco-editor .wg-split>div>.has-title .wg-content{margin-top:0}#loco-editor .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}#loco-editor .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}#loco-editor .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}#loco-editor .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png) center center no-repeat}#loco-editor .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}#loco-editor .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png) center center no-repeat}#loco-editor .wg-split>div.locked{cursor:default}#loco-editor .wg-split-x>div.locked>.not-first>*{margin-left:0px}#loco-editor .wg-split-y>div.locked>.not-first>*{margin-top:0px}#loco-editor .wg-split>div.locked>.not-first:before{display:none}#loco-editor .has-title>header{background:#e2e2e2;cursor:default !important;margin:0;white-space:nowrap}#loco-editor .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-editor .wg-toolbar{top:0;right:0;margin-top:6px;position:absolute}#loco-editor .wg-toolbar>span{color:#fff;background:#000;display:block;padding:0 6px;cursor:default !important}#loco-editor .wg-toolbar>span:active{color:#000;background-color:#fff}#loco-editor .wg-content,#loco-editor .wg-tbody>div{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-table{background-color:#fff}#loco-editor .is-table .wg-thead .has-title>header{font-weight:normal;background:transparent;padding:4px 0;margin:0 0 0 10px}#loco-editor .is-table .wg-thead>div>.not-first:before{background-position:center center}#loco-editor .is-table .wg-thead{background:#e2e2e2;border-bottom:solid 1px #ccc}#loco-editor .is-table .wg-tbody{background-image:url(data:image/gif;base64,R0lGODlhAQAsAIABAPz8/P///yH5BAEAAAEALAAAAAABACwAAAIIjI+pAe0PIygAOw==);position:relative}#loco-editor .is-table .wg-cols>div{float:left;clear:none}#loco-editor .is-table .wg-cols>div>div{white-space:nowrap;line-height:1.7em;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;background-color:#fff}#loco-editor .is-table .wg-cols>div>div:nth-child(even){background-color:#f7f7f7}#loco-editor .is-table .wg-cols>div>div.selected{background-color:#3db63d;color:#fff}#loco-editor .is-table .wg-cols>div>div.selected::selection{background-color:#fff;color:#000}#loco-editor .is-table .wg-cols>div:first-child>div{padding-left:4px}#loco-editor .is-table .wg-dead{clear:both}#loco-editor .is-table .wg-thead .wg-sortable>header{cursor:pointer !important}#loco-editor .is-table .wg-thead .wg-sortable>header:after{padding:0 0 0 5px;color:#999}#loco-editor .is-table .wg-thead .wg-sortable.wg-asc>header:after{content:"\25b2"}#loco-editor .is-table .wg-thead .wg-sortable.wg-desc>header:after{content:"\25bc"}#loco-editor .is-table .wg-thead .wg-sortable:hover>header:after{color:#000}#loco-editor .is-field>.wg-content{cursor:text;padding:0;line-height:normal;overflow:hidden;overflow-y:hidden}#loco-editor .is-field>.wg-content>div,#loco-editor .is-field>.wg-content>textarea{font-size:14px;line-height:1.4;border:1px solid #ddd;width:100%;height:100%;padding:8px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-editor .is-field>.wg-content textarea{resize:none;overflow:auto;display:block}#loco-editor .is-field>.wg-content>.ace_editor{padding:0;border-width:0}#loco-editor .is-field>.wg-content>div[contenteditable]{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-readonly>.wg-content{cursor:default}#loco-editor .is-readonly>.wg-content>div,#loco-editor .is-readonly>.wg-content>textarea,#loco-editor .is-readonly>.wg-content>textarea[readonly]{background:#f8f8f8;text-shadow:0 1px #fff;color:inherit}#loco-editor .is-readonly>.wg-content .ace_scroller{cursor:default;background:#f8f8f8}#loco-editor .is-readonly>.wg-content .ace_cursor-layer{display:none}#loco-editor .is-readonly>.wg-content>textarea[readonly]{cursor:default}#loco-editor .is-editable>.wg-content[dir="RTL"] .ace_editor .ace_line{direction:ltr;unicode-bidi:bidi-override}#loco-editor .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center;cursor:default}#loco-editor .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;margin-top:0.2em;color:#000;text-decoration:none;-webkit-border-radius:0.2em 0.2em 0 0;-moz-border-radius:0.2em 0.2em 0 0;-ms-border-radius:0.2em 0.2em 0 0;-o-border-radius:0.2em 0.2em 0 0;border-radius:0.2em 0.2em 0 0;background-color:#f3f7fd}#loco-editor .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}#loco-editor .wg-split-x>nav.wg-tabs>a.active{background-color:#3db63d;color:#fff}#loco-editor .wg-split>div>.has-nav>.wg-body{margin-top:0px}#loco-editor .wg-dead{visibility:hidden}@media all and (max-width: 768px){#loco-editor .wg-split-x>div>.not-first>*{margin-left:20px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:20px}#loco-editor .wg-split-x>div>.not-first:before{width:20px}#loco-editor .wg-split-y>div>.not-first:before{height:20px}#loco-editor .is-table .wg-thead header{padding-left:20px}}#loco-editor .is-table .po-fuzzy{color:#b59829;font-weight:bold}#loco-editor .is-table .po-empty{color:#1f507a;font-weight:bold}#loco-editor .is-table .po-flagged{color:#bd2c00}#loco-editor .is-table .wg-cols>div:first-child>div:before{font-family:loco;vertical-align:inherit;display:inline-block;content:" ";width:1.3em;line-height:1}#loco-editor .is-table .wg-cols>div:first-child>div.po-fuzzy:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flagged:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-comment:before{content:"\e613";color:#999}#loco-editor .is-table .wg-cols>div:first-child>div.po-unsaved:before{content:"\e612";color:#f1d040}#loco-editor .is-table .wg-cols>div:first-child>div.selected:before{color:#fff !important}#loco-editor .wg-cell p.notes>mark,#loco-editor .is-table .wg-cols>div>div>mark{display:inline-block;vertical-align:text-bottom;font:inherit;color:#fff;border-radius:2px;font-weight:normal}#loco-editor .wg-cell p.notes>mark{padding:0 0.3em;line-height:normal;background-color:#c0c0c0}#loco-editor .is-table .wg-cols>div>div>mark{font-size:90%;line-height:1;padding:0.2em 0.3em;background-color:rgba(0,0,0,0.25)}#loco-editor .is-table .wg-cols>div>div.selected.po-flagged{background-color:#bd2c00}#loco-editor .is-table .wg-cols>div>div.selected.po-fuzzy{background-color:#b59829}#loco-editor .is-table .wg-cols>div>div.selected.po-empty{background-color:#999}#loco-editor #po-list .wg-content{padding:0}#loco-editor #po-source>.wg-body>.has-title>header{background:transparent;font-weight:normal;float:left;clear:none;min-width:3.4em}#loco-editor #po-source>.wg-body>.has-title>.wg-content{clear:none}#loco-editor .wg-cell>p.notes,#loco-editor .wg-cell>p.errors{font-size:13px;line-height:1.4em;margin:0;padding:5px 10px;cursor:default !important}#loco-editor .wg-cell>p.errors{color:#cc0000}#loco-editor .wg-cell>p.notes{color:#333;white-space:pre-line}#loco-editor .has-title>header{line-height:normal;padding:6px}#loco-editor .has-title>header .lang{margin-right:6px;margin-bottom:1px}#loco-editor .trg-rtl #po-list-tbody .wg-cols>div[for="po-list-col-target"]>div,#loco-editor .src-rtl #po-list-tbody .wg-cols>div[for="po-list-col-source"]>div{direction:rtl;padding-left:0;padding-right:10px;text-align:right}#loco-editor #po-source>.wg-body>.has-title>h2{min-width:4.5em}#loco-editor .is-table .wg-td{font-size:13px}#loco-editor-inner{min-height:600px;font-size:14px;clear:both}#loco-editor-inner>div.loco-loading{height:100px;background:transparent url(../img/spin-editor-button.gif) center 20px no-repeat}#loco-editor-inner h2{color:#000;line-height:1}#loco.wrap #loco-toolbar{font-size:14px;height:50px}#loco.wrap #loco-toolbar form{display:block;float:left;clear:none;padding:0;margin:0}#loco.wrap #loco-toolbar form.aux{float:right;margin-right:5px}#loco.wrap #loco-toolbar fieldset{display:block;position:relative;float:left;clear:none}#loco.wrap #loco-toolbar button,#loco.wrap #loco-toolbar input[type="text"]{display:block;position:relative;float:left;clear:none;margin:5px 0 0 5px;height:36px;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco.wrap #loco-toolbar input[type="text"]{padding:0 10px;font-size:14px;line-height:normal}#loco.wrap #loco-toolbar .invalid input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap #loco-toolbar .loco-clearable{padding:0 20px}#loco.wrap #loco-toolbar .loco-clearable.invalid a.clear:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear{right:25px;line-height:2}#loco.wrap #loco-toolbar .loco-clearable a.clear:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar .loco-clearable a.clear:hover:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear:active:before{color:#000}#loco.wrap #loco-toolbar button{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar button.has-icon:before{width:16px;padding:0}#loco.wrap #loco-toolbar button.has-icon.loco-loading:before{content:" ";height:16px;background:transparent url(../img/spin-editor-button.gif) 0 0 no-repeat}#loco.wrap #loco-toolbar button.only-icon{width:40px}
1
+ #loco-editor{border:solid 1px #ccc}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.3.0);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.3.0) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.3.0);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor div.ta-mirror{position:absolute;top:0;border:solid 1px transparent;color:transparent;padding:0.4em 0.6em;pointer-events:none}#loco-editor div.ta-mirror span{position:relative}#loco-editor div.ta-mirror span:after{color:#ccc;white-space:pre;display:inline-block;position:absolute;top:0;line-height:normal}#loco-editor div.ta-mirror .crlf:after{content:"\00AC"}#loco-editor div.ta-mirror .eof:after{content:"\00B6"}#loco-editor div.ta-mirror .x20:after{content:"\00B7";color:#aaa}#loco-editor div.ta-mirror .x9:after{content:"\27F6"}#loco-editor div.ta-mirror,#loco-editor .has-mirror textarea{white-space:pre-wrap;word-wrap:break-word;word-spacing:0px}#loco-editor .has-mirror ::placeholder{color:transparent}#loco-editor .has-mirror ::-webkit-input-placeholder{color:transparent}#loco-editor .has-mirror :-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror ::-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror :-ms-input-placeholder{color:transparent}#loco-editor .has-mirror .ielt10 .placeheld{color:transparent}#loco-editor div.ta-mirror{left:0;text-align:left}#loco-editor div.ta-mirror span:after{left:0}#loco-editor div.ta-mirror .eol:after{padding-left:0.2em}#loco-editor [dir="RTL"] div.ta-mirror{left:auto;right:0;text-align:right}#loco-editor [dir="RTL"] div.ta-mirror span:after{right:0}#loco-editor [dir="RTL"] div.ta-mirror .eol:after{padding-left:0;padding-right:0.2em}#loco-editor .has-proxy>textarea{display:none !important}#loco-editor .has-proxy .ace_editor{height:100%;font-size:13px !important;line-height:1.4 !important}#loco-editor .has-proxy .ace_editor .ace_marker-layer .ace_bracket{display:none}#loco-editor .has-proxy .ace_print-margin{display:none}#loco-editor .ace_printf{color:#b90690;background-color:#edf1be}#loco-editor .ace_locked{color:#808080}#loco-editor .ace_icu-quoted{color:#808080}#loco-editor .ace_icu{color:#697eb9}#loco-editor .ace_icu.ace_name{color:#b90600}#loco-editor .resizer{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0 6px 0;background:#f0f0f0 url(../img/wg/splity.png?v=2.3.0) center bottom no-repeat;border:1px solid #ddd;overflow:hidden;cursor:move;cursor:row-resize;cursor:s-resize}#loco-editor .resizer>*{height:100%;border:none}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.3.0);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.3.0) 0 0 no-repeat;min-height:75px}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2 / 1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.3.0);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 0.5em 0 #3db63d;-moz-box-shadow:0 0 0.5em 0 #3db63d;box-shadow:0 0 0.5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:'loco';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor .wg-cell,#loco-editor .wg-cell>div{clear:both;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none}#loco-editor .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}#loco-editor .wg-split{background:#eee}#loco-editor .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}#loco-editor .wg-split-x>div>.not-first>*{margin-left:6px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:6px}#loco-editor .wg-split>div>.has-title .wg-content{margin-top:0}#loco-editor .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}#loco-editor .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}#loco-editor .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}#loco-editor .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png?v=2.3.0) center center no-repeat}#loco-editor .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}#loco-editor .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png?v=2.3.0) center center no-repeat}#loco-editor .wg-split>div.locked{cursor:default}#loco-editor .wg-split-x>div.locked>.not-first>*{margin-left:0px}#loco-editor .wg-split-y>div.locked>.not-first>*{margin-top:0px}#loco-editor .wg-split>div.locked>.not-first:before{display:none}#loco-editor .has-title>header{background:#e2e2e2;cursor:default !important;margin:0;white-space:nowrap}#loco-editor .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-editor .wg-toolbar{top:0;right:0;margin-top:6px;position:absolute}#loco-editor .wg-toolbar>span{color:#fff;background:#000;display:block;padding:0 6px;cursor:default !important}#loco-editor .wg-toolbar>span:active{color:#000;background-color:#fff}#loco-editor .wg-content,#loco-editor .wg-tbody>div{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-table{background-color:#fff}#loco-editor .is-table .wg-thead .has-title>header{font-weight:normal;background:transparent;padding:4px 0;margin:0 0 0 10px}#loco-editor .is-table .wg-thead>div>.not-first:before{background-position:center center}#loco-editor .is-table .wg-thead{background:#e2e2e2;border-bottom:solid 1px #ccc}#loco-editor .is-table .wg-tbody{background-image:url(data:image/gif;base64,R0lGODlhAQAsAIABAPz8/P///yH5BAEAAAEALAAAAAABACwAAAIIjI+pAe0PIygAOw==);position:relative}#loco-editor .is-table .wg-cols>div{float:left;clear:none}#loco-editor .is-table .wg-cols>div>div{white-space:nowrap;line-height:1.7em;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;background-color:#fff}#loco-editor .is-table .wg-cols>div>div:nth-child(even){background-color:#f7f7f7}#loco-editor .is-table .wg-cols>div>div.selected{background-color:#3db63d;color:#fff}#loco-editor .is-table .wg-cols>div>div.selected::selection{background-color:#fff;color:#000}#loco-editor .is-table .wg-cols>div:first-child>div{padding-left:4px}#loco-editor .is-table .wg-dead{clear:both}#loco-editor .is-table .wg-thead .wg-sortable>header{cursor:pointer !important}#loco-editor .is-table .wg-thead .wg-sortable>header:after{padding:0 0 0 5px;color:#999}#loco-editor .is-table .wg-thead .wg-sortable.wg-asc>header:after{content:"\25b2"}#loco-editor .is-table .wg-thead .wg-sortable.wg-desc>header:after{content:"\25bc"}#loco-editor .is-table .wg-thead .wg-sortable:hover>header:after{color:#000}#loco-editor .is-field>.wg-content{cursor:text;padding:0;line-height:normal;overflow:hidden;overflow-y:hidden}#loco-editor .is-field>.wg-content>div,#loco-editor .is-field>.wg-content>textarea{font-size:14px;line-height:1.4;border:1px solid #ddd;width:100%;height:100%;padding:8px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-editor .is-field>.wg-content textarea{resize:none;overflow:auto;display:block}#loco-editor .is-field>.wg-content>.ace_editor{padding:0;border-width:0}#loco-editor .is-field>.wg-content>div[contenteditable]{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-readonly>.wg-content{cursor:default}#loco-editor .is-readonly>.wg-content>div,#loco-editor .is-readonly>.wg-content>textarea,#loco-editor .is-readonly>.wg-content>textarea[readonly]{background:#f8f8f8;text-shadow:0 1px #fff;color:inherit}#loco-editor .is-readonly>.wg-content .ace_scroller{cursor:default;background:#f8f8f8}#loco-editor .is-readonly>.wg-content .ace_cursor-layer{display:none}#loco-editor .is-readonly>.wg-content>textarea[readonly]{cursor:default}#loco-editor .is-editable>.wg-content[dir="RTL"] .ace_editor .ace_line{direction:ltr;unicode-bidi:bidi-override}#loco-editor .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center;cursor:default}#loco-editor .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;margin-top:0.2em;color:#000;text-decoration:none;-webkit-border-radius:0.2em 0.2em 0 0;-moz-border-radius:0.2em 0.2em 0 0;-ms-border-radius:0.2em 0.2em 0 0;-o-border-radius:0.2em 0.2em 0 0;border-radius:0.2em 0.2em 0 0;background-color:#f3f7fd}#loco-editor .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}#loco-editor .wg-split-x>nav.wg-tabs>a.active{background-color:#3db63d;color:#fff}#loco-editor .wg-split>div>.has-nav>.wg-body{margin-top:0px}#loco-editor .wg-dead{visibility:hidden}@media all and (max-width: 768px){#loco-editor .wg-split-x>div>.not-first>*{margin-left:20px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:20px}#loco-editor .wg-split-x>div>.not-first:before{width:20px}#loco-editor .wg-split-y>div>.not-first:before{height:20px}#loco-editor .is-table .wg-thead header{padding-left:20px}}#loco-editor .is-table .po-fuzzy{color:#b59829;font-weight:bold}#loco-editor .is-table .po-empty{color:#1f507a;font-weight:bold}#loco-editor .is-table .po-flagged{color:#bd2c00}#loco-editor .is-table .wg-cols>div:first-child>div:before{font-family:loco;vertical-align:inherit;display:inline-block;content:" ";width:1.3em;line-height:1}#loco-editor .is-table .wg-cols>div:first-child>div.po-fuzzy:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flagged:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-comment:before{content:"\e613";color:#999}#loco-editor .is-table .wg-cols>div:first-child>div.po-unsaved:before{content:"\e612";color:#f1d040}#loco-editor .is-table .wg-cols>div:first-child>div.selected:before{color:#fff !important}#loco-editor .wg-cell p.notes>mark,#loco-editor .is-table .wg-cols>div>div>mark{display:inline-block;vertical-align:text-bottom;font:inherit;color:#fff;border-radius:2px;font-weight:normal}#loco-editor .wg-cell p.notes>mark{padding:0 0.3em;line-height:normal;background-color:#c0c0c0}#loco-editor .is-table .wg-cols>div>div>mark{font-size:90%;line-height:1;padding:0.2em 0.3em;background-color:rgba(0,0,0,0.25)}#loco-editor .is-table .wg-cols>div>div.selected.po-flagged{background-color:#bd2c00}#loco-editor .is-table .wg-cols>div>div.selected.po-fuzzy{background-color:#b59829}#loco-editor .is-table .wg-cols>div>div.selected.po-empty{background-color:#999}#loco-editor #po-list .wg-content{padding:0}#loco-editor #po-source>.wg-body>.has-title>header{background:transparent;font-weight:normal;float:left;clear:none;min-width:3.4em}#loco-editor #po-source>.wg-body>.has-title>.wg-content{clear:none}#loco-editor .wg-cell>p.notes,#loco-editor .wg-cell>p.errors{font-size:13px;line-height:1.4em;margin:0;padding:5px 10px;cursor:default !important}#loco-editor .wg-cell>p.errors{color:#cc0000}#loco-editor .wg-cell>p.notes{color:#333;white-space:pre-line}#loco-editor .has-title>header{line-height:normal;padding:6px}#loco-editor .has-title>header .lang{margin-right:6px;margin-bottom:1px}#loco-editor .trg-rtl #po-list-tbody .wg-cols>div[for="po-list-col-target"]>div,#loco-editor .src-rtl #po-list-tbody .wg-cols>div[for="po-list-col-source"]>div{direction:rtl;padding-left:0;padding-right:10px;text-align:right}#loco-editor #po-source>.wg-body>.has-title>h2{min-width:4.5em}#loco-editor .is-table .wg-td{font-size:13px}#loco-editor-inner{min-height:600px;font-size:14px;clear:both}#loco-editor-inner>div.loco-loading{height:100px;background:transparent url(../img/spin-editor-button.gif?v=2.3.0) center 20px no-repeat}#loco-editor-inner h2{color:#000;line-height:1}#loco.wrap #loco-toolbar{font-size:14px;height:50px}#loco.wrap #loco-toolbar form{display:block;float:left;clear:none;padding:0;margin:0}#loco.wrap #loco-toolbar form.aux{float:right;margin-right:5px}#loco.wrap #loco-toolbar fieldset{display:block;position:relative;float:left;clear:none}#loco.wrap #loco-toolbar button,#loco.wrap #loco-toolbar input[type="text"]{display:block;position:relative;float:left;clear:none;margin:5px 0 0 5px;height:36px;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco.wrap #loco-toolbar input[type="text"]{padding:0 10px;font-size:14px;line-height:normal}#loco.wrap #loco-toolbar .invalid input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap #loco-toolbar .loco-clearable{padding:0 20px}#loco.wrap #loco-toolbar .loco-clearable.invalid a.clear:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear{right:25px;line-height:2}#loco.wrap #loco-toolbar .loco-clearable a.clear:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar .loco-clearable a.clear:hover:before{color:#cc0000}#loco.wrap #loco-toolbar .loco-clearable a.clear:active:before{color:#000}#loco.wrap #loco-toolbar button{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco.wrap #loco-toolbar button.has-icon:before{width:16px;padding:0}#loco.wrap #loco-toolbar button.has-icon.loco-loading:before{content:" ";height:16px;background:transparent url(../img/spin-editor-button.gif?v=2.3.0) 0 0 no-repeat}#loco.wrap #loco-toolbar button.only-icon{width:40px}
pub/css/podiff.css CHANGED
@@ -1 +1 @@
1
- #loco.wrap .revisions-diff{padding:10px;min-height:20px}#loco.wrap table.diff{border-collapse:collapse}#loco.wrap table.diff td{white-space:nowrap;overflow:hidden;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;padding:2px}#loco.wrap table.diff td>span{color:#aaa}#loco.wrap table.diff td>span:after{content:". "}#loco.wrap table.diff tbody{border-top:1px dashed #ccc}#loco.wrap table.diff tbody:first-child{border-top:none}#loco.wrap .revisions.loading .diff-meta{color:#eee}#loco.wrap .revisions.loading .loading-indicator span.spinner{visibility:visible;background:#fff url(../img/spin-modal.gif) center center no-repeat}#loco.wrap .revisions-meta{clear:both;padding:10px 12px;margin:0;position:relative;top:10px}#loco.wrap .revisions-meta .diff-meta{clear:none;float:left;width:50%;padding:0;min-height:auto}#loco.wrap .revisions-meta .diff-meta button{margin-top:5px}#loco.wrap .revisions-meta .diff-meta-current{float:right;text-align:right}#loco.wrap .revisions-meta time{color:#72777c}#loco.wrap .revisions-control-frame{margin:10px 0}#loco.wrap .revisions-diff-frame{margin-top:20px}
1
+ #loco.wrap .revisions-diff{padding:10px;min-height:20px}#loco.wrap table.diff{border-collapse:collapse}#loco.wrap table.diff td{white-space:nowrap;overflow:hidden;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;padding:2px}#loco.wrap table.diff td>span{color:#aaa}#loco.wrap table.diff td>span:after{content:". "}#loco.wrap table.diff tbody{border-top:1px dashed #ccc}#loco.wrap table.diff tbody:first-child{border-top:none}#loco.wrap .revisions.loading .diff-meta{color:#eee}#loco.wrap .revisions.loading .loading-indicator span.spinner{visibility:visible;background:#fff url(../img/spin-modal.gif?v=2.3.0) center center no-repeat}#loco.wrap .revisions-meta{clear:both;padding:10px 12px;margin:0;position:relative;top:10px}#loco.wrap .revisions-meta .diff-meta{clear:none;float:left;width:50%;padding:0;min-height:auto}#loco.wrap .revisions-meta .diff-meta button{margin-top:5px}#loco.wrap .revisions-meta .diff-meta-current{float:right;text-align:right}#loco.wrap .revisions-meta time{color:#72777c}#loco.wrap .revisions-control-frame{margin:10px 0}#loco.wrap .revisions-diff-frame{margin-top:20px}
pub/css/poview.css CHANGED
@@ -1 +1 @@
1
- .js #loco.wrap .loco-loading{min-height:100px;background:#fff url(../img/spin-modal.gif) center center no-repeat}.js #loco.wrap .loco-loading ol.msgcat{display:none}#loco.wrap #loco-po{padding-right:0;overflow:auto}#loco.wrap ol.msgcat{margin-left:3em;padding-top:1em;border-top:1px dashed #ccc}#loco.wrap ol.msgcat:first-child{padding-top:0;border-top:none}#loco.wrap ol.msgcat li{color:#aaa;margin:0;padding:0 0 0 1em;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;border-left:1px solid #EEE}#loco.wrap ol.msgcat li>*{color:#333;white-space:pre}#loco.wrap ol.msgcat li>.po-comment{color:#3CC200}#loco.wrap ol.msgcat li>.po-refs{color:#0073aa}#loco.wrap ol.msgcat li>.po-refs a{color:inherit;text-decoration:none}#loco.wrap ol.msgcat li>.po-refs a:hover{text-decoration:underline}#loco.wrap ol.msgcat li>.po-flags{color:#77904a}#loco.wrap ol.msgcat li>.po-flags em{font-style:normal}#loco.wrap ol.msgcat li>.po-word{color:#000}#loco.wrap ol.msgcat li>.po-junk{font-style:italic;color:#CCC}#loco.wrap ol.msgcat li>.po-string>span{color:#C931C7}#loco.wrap form.loco-filter{top:0;right:0;position:absolute}#loco.wrap .loco-invalid form.loco-filter input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap .loco-invalid ol.msgcat{list-style-type:none}#loco.wrap .loco-invalid ol.msgcat li{color:#000}.loco-modal{min-width:90% !important;min-height:100px}#loco-po-ref ol li{color:#aaa;margin:0;white-space:pre;padding:0 0 0 1em;font:normal 12px/17px Consolas,Monaco,monospace;background:transparent;border-left:1px solid #EEE}#loco-po-ref ol li code{margin:0;padding:0;display:inline;background:inherit}#loco-po-ref ol li.highlighted{color:#666;background-color:#f8eec7}#loco-po-ref ol li.highlighted code.T_CONSTANT_ENCAPSED_STRING{color:#C931C7}
1
+ .js #loco.wrap .loco-loading{min-height:100px;background:#fff url(../img/spin-modal.gif?v=2.3.0) center center no-repeat}.js #loco.wrap .loco-loading ol.msgcat{display:none}#loco.wrap #loco-po{padding-right:0;overflow:auto}#loco.wrap ol.msgcat{margin-left:3em;padding-top:1em;border-top:1px dashed #ccc}#loco.wrap ol.msgcat:first-child{padding-top:0;border-top:none}#loco.wrap ol.msgcat li{color:#aaa;margin:0;padding:0 0 0 1em;font:normal 12px/17px 'Monaco','Menlo','Ubuntu Mono','Consolas','source-code-pro',monospace;border-left:1px solid #EEE}#loco.wrap ol.msgcat li>*{color:#333;white-space:pre}#loco.wrap ol.msgcat li>.po-comment{color:#3CC200}#loco.wrap ol.msgcat li>.po-refs{color:#0073aa}#loco.wrap ol.msgcat li>.po-refs a{color:inherit;text-decoration:none}#loco.wrap ol.msgcat li>.po-refs a:hover{text-decoration:underline}#loco.wrap ol.msgcat li>.po-flags{color:#77904a}#loco.wrap ol.msgcat li>.po-flags em{font-style:normal}#loco.wrap ol.msgcat li>.po-word{color:#000}#loco.wrap ol.msgcat li>.po-junk{font-style:italic;color:#CCC}#loco.wrap ol.msgcat li>.po-string>span{color:#C931C7}#loco.wrap form.loco-filter{top:0;right:0;position:absolute}#loco.wrap .loco-invalid form.loco-filter input[type="text"]:focus{border-color:#cc0000;-webkit-box-shadow:0 0 2px rgba(153,0,0,0.5);-moz-box-shadow:0 0 2px rgba(153,0,0,0.5);box-shadow:0 0 2px rgba(153,0,0,0.5)}#loco.wrap .loco-invalid ol.msgcat{list-style-type:none}#loco.wrap .loco-invalid ol.msgcat li{color:#000}.loco-modal{min-width:90% !important;min-height:100px}#loco-po-ref ol li{color:#aaa;margin:0;white-space:pre;padding:0 0 0 1em;font:normal 12px/17px Consolas,Monaco,monospace;background:transparent;border-left:1px solid #EEE}#loco-po-ref ol li code{margin:0;padding:0;display:inline;background:inherit}#loco-po-ref ol li.highlighted{color:#666;background-color:#f8eec7}#loco-po-ref ol li.highlighted code.T_CONSTANT_ENCAPSED_STRING{color:#C931C7}
pub/css/skins/blue.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(9,100,132,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#096484}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/blue/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(9,100,132,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#096484}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/blue/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/skins/coffee.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(199,165,137,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#c7a589}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/coffee/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(199,165,137,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#c7a589}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/coffee/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/skins/ectoplasm.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(163,183,69,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#a3b745}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ectoplasm/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(163,183,69,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#a3b745}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ectoplasm/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/skins/light.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(136,136,136,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#888}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/light/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(136,136,136,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#888}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/light/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/skins/midnight.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(225,77,67,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#e14d43}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/midnight/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(225,77,67,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#e14d43}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/midnight/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/skins/ocean.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(158,186,160,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#9ebaa0}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ocean/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(158,186,160,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#9ebaa0}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/ocean/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/css/skins/sunrise.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(221,130,59,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#dd823b}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/sunrise/spin-primary-button.gif?v=2.2.0) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(221,130,59,0.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#dd823b}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);-moz-box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8);box-shadow:inset 0 0 0.6em rgba(30,140,190,0.8)}form button.loco-loading.button-primary[disabled]:before{background:transparent url(../../img/skins/sunrise/spin-primary-button.gif?v=2.3.0) 0 0 no-repeat !important}
pub/font/loco.eot CHANGED
Binary file
pub/font/loco.svg CHANGED
@@ -103,6 +103,7 @@
103
  <glyph unicode="&#xf1da;" glyph-name="restore" d="M0 548.571v256q0 24 22.857 33.714 22.286 9.714 39.429-8l74.286-73.714q61.143 57.714 139.714 89.429t162.571 31.714q89.143 0 170.286-34.857t140-93.714 93.714-140 34.857-170.286-34.857-170.286-93.714-140-140-93.714-170.286-34.857q-98.286 0-186.857 41.429t-150.857 116.857q-4 5.714-3.714 12.857t4.857 11.714l78.286 78.857q5.714 5.143 14.286 5.143 9.143-1.143 13.143-6.857 41.714-54.286 102.286-84t128.571-29.714q59.429 0 113.429 23.143t93.429 62.571 62.571 93.429 23.143 113.429-23.143 113.429-62.571 93.429-93.429 62.571-113.429 23.143q-56 0-107.429-20.286t-91.429-58l78.286-78.857q17.714-17.143 8-39.429-9.714-22.857-33.714-22.857h-256q-14.857 0-25.714 10.857t-10.857 25.714zM292.571 347.428v36.571q0 8 5.143 13.143t13.143 5.143h128v201.143q0 8 5.143 13.143t13.143 5.143h36.571q8 0 13.143-5.143t5.143-13.143v-256q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143z" />
104
  <glyph unicode="&#xf326;" glyph-name="translate" d="M628.217 728.84h-81.381q-24.792 0-48.236-10.509t-37.457-27.217l-48.505 145.516h-154.678l-128.808-377.263h91.082l39.882 107.789h152.522v-215.579h-269.474q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798h377.263q44.194 0 75.992-31.798t31.798-75.992v-107.789zM386.23 621.051h-108.867l53.895 157.912zM574.322 674.945h377.263q44.194 0 75.992-31.798t31.798-75.992v-377.263q0-44.194-31.798-75.992t-75.992-31.798h-377.263q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798zM965.059 405.472v58.206h-170.846v116.952h-62.518v-116.952h-170.846v-58.206h68.985q4.851-35.571 22.636-73.297t46.349-67.907q-34.493-14.013-70.872-23.714t-53.625-9.701l2.695-14.013q2.695-14.013 5.659-33.415t2.425-31.259q33.415 0 82.998 17.516t93.777 44.463q44.733-26.947 95.394-44.463t84.615-17.516q-0.539 7.545 0.539 18.055t2.695 20.749 3.234 19.133 3.234 14.821l1.078 5.928q-17.785 0-55.512 9.971t-72.758 23.983q27.486 30.181 45.002 67.907t22.366 72.758h73.297zM759.72 301.455q-40.96 37.726-54.434 104.017h112.64q-14.013-66.829-53.895-104.017l-2.156-1.617q-1.617 1.078-2.156 1.617z" />
105
  <glyph unicode="&#x1f426;" glyph-name="twitter" horiz-adv-x="951" d="M925.714 717.714q-38.286-56-92.571-95.429 0.571-8 0.571-24 0-74.286-21.714-148.286t-66-142-105.429-120.286-147.429-83.429-184.571-31.143q-154.857 0-283.429 82.857 20-2.286 44.571-2.286 128.571 0 229.143 78.857-60 1.143-107.429 36.857t-65.143 91.143q18.857-2.857 34.857-2.857 24.571 0 48.571 6.286-64 13.143-106 63.714t-42 117.429v2.286q38.857-21.714 83.429-23.429-37.714 25.143-60 65.714t-22.286 88q0 50.286 25.143 93.143 69.143-85.143 168.286-136.286t212.286-56.857q-4.571 21.714-4.571 42.286 0 76.571 54 130.571t130.571 54q80 0 134.857-58.286 62.286 12 117.143 44.571-21.143-65.714-81.143-101.714 53.143 5.714 106.286 28.571z" />
 
106
  <glyph unicode="&#x1f5cc;" glyph-name="ok-empty" d="M397.434 42.304l-397.868 391.6 197.378 194.27 200.49-197.332 429.62 422.852 197.378-194.27-626.998-617.12zM107.912 433.904l289.524-284.962 518.656 510.482-89.036 87.632-429.62-422.852-200.49 197.334-89.034-87.634z" />
107
  <glyph unicode="&#x1f6e1;" glyph-name="privacy" horiz-adv-x="731" d="M0 402.286v438.857q0 14.857 10.857 25.714t25.714 10.857h658.286q14.857 0 25.714-10.857t10.857-25.714v-438.857q0-49.143-19.143-97.429t-47.429-85.714-67.429-72.857-72.286-58.857-69.143-44.286-51.143-28.286-24.286-11.429q-6.857-3.429-14.857-3.429t-14.857 3.429q-9.143 4-24.286 11.429t-51.143 28.286-69.143 44.286-72.286 58.857-67.429 72.857-47.429 85.714-19.143 97.429zM365.714 118.286q68 36 121.714 78.286 134.286 105.143 134.286 205.714v365.714h-256v-649.714z" />
108
  </font></defs></svg>
103
  <glyph unicode="&#xf1da;" glyph-name="restore" d="M0 548.571v256q0 24 22.857 33.714 22.286 9.714 39.429-8l74.286-73.714q61.143 57.714 139.714 89.429t162.571 31.714q89.143 0 170.286-34.857t140-93.714 93.714-140 34.857-170.286-34.857-170.286-93.714-140-140-93.714-170.286-34.857q-98.286 0-186.857 41.429t-150.857 116.857q-4 5.714-3.714 12.857t4.857 11.714l78.286 78.857q5.714 5.143 14.286 5.143 9.143-1.143 13.143-6.857 41.714-54.286 102.286-84t128.571-29.714q59.429 0 113.429 23.143t93.429 62.571 62.571 93.429 23.143 113.429-23.143 113.429-62.571 93.429-93.429 62.571-113.429 23.143q-56 0-107.429-20.286t-91.429-58l78.286-78.857q17.714-17.143 8-39.429-9.714-22.857-33.714-22.857h-256q-14.857 0-25.714 10.857t-10.857 25.714zM292.571 347.428v36.571q0 8 5.143 13.143t13.143 5.143h128v201.143q0 8 5.143 13.143t13.143 5.143h36.571q8 0 13.143-5.143t5.143-13.143v-256q0-8-5.143-13.143t-13.143-5.143h-182.857q-8 0-13.143 5.143t-5.143 13.143z" />
104
  <glyph unicode="&#xf326;" glyph-name="translate" d="M628.217 728.84h-81.381q-24.792 0-48.236-10.509t-37.457-27.217l-48.505 145.516h-154.678l-128.808-377.263h91.082l39.882 107.789h152.522v-215.579h-269.474q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798h377.263q44.194 0 75.992-31.798t31.798-75.992v-107.789zM386.23 621.051h-108.867l53.895 157.912zM574.322 674.945h377.263q44.194 0 75.992-31.798t31.798-75.992v-377.263q0-44.194-31.798-75.992t-75.992-31.798h-377.263q-44.194 0-75.992 31.798t-31.798 75.992v377.263q0 44.194 31.798 75.992t75.992 31.798zM965.059 405.472v58.206h-170.846v116.952h-62.518v-116.952h-170.846v-58.206h68.985q4.851-35.571 22.636-73.297t46.349-67.907q-34.493-14.013-70.872-23.714t-53.625-9.701l2.695-14.013q2.695-14.013 5.659-33.415t2.425-31.259q33.415 0 82.998 17.516t93.777 44.463q44.733-26.947 95.394-44.463t84.615-17.516q-0.539 7.545 0.539 18.055t2.695 20.749 3.234 19.133 3.234 14.821l1.078 5.928q-17.785 0-55.512 9.971t-72.758 23.983q27.486 30.181 45.002 67.907t22.366 72.758h73.297zM759.72 301.455q-40.96 37.726-54.434 104.017h112.64q-14.013-66.829-53.895-104.017l-2.156-1.617q-1.617 1.078-2.156 1.617z" />
105
  <glyph unicode="&#x1f426;" glyph-name="twitter" horiz-adv-x="951" d="M925.714 717.714q-38.286-56-92.571-95.429 0.571-8 0.571-24 0-74.286-21.714-148.286t-66-142-105.429-120.286-147.429-83.429-184.571-31.143q-154.857 0-283.429 82.857 20-2.286 44.571-2.286 128.571 0 229.143 78.857-60 1.143-107.429 36.857t-65.143 91.143q18.857-2.857 34.857-2.857 24.571 0 48.571 6.286-64 13.143-106 63.714t-42 117.429v2.286q38.857-21.714 83.429-23.429-37.714 25.143-60 65.714t-22.286 88q0 50.286 25.143 93.143 69.143-85.143 168.286-136.286t212.286-56.857q-4.571 21.714-4.571 42.286 0 76.571 54 130.571t130.571 54q80 0 134.857-58.286 62.286 12 117.143 44.571-21.143-65.714-81.143-101.714 53.143 5.714 106.286 28.571z" />
106
+ <glyph unicode="&#x1f50d;" glyph-name="magnify" d="M898.304 180.89l-193.485 193.485c29.184 47.872 45.978 104.192 45.978 164.352 0 174.95-151.603 326.502-326.554 326.502-174.95 0.051-316.723-141.773-316.723-316.723 0-174.899 151.603-326.502 326.502-326.502 58.214 0 112.64 15.821 159.488 43.213l194.509-194.611c19.046-18.995 49.92-18.995 68.915 0l48.282 48.282c18.995 18.995 12.083 43.008-6.912 62.003zM205.005 548.506c0 121.139 98.15 219.29 219.238 219.29 121.139 0 229.069-107.878 229.069-229.069 0-121.088-98.202-219.29-219.29-219.29-121.139 0.051-229.018 107.981-229.018 229.069z" />
107
  <glyph unicode="&#x1f5cc;" glyph-name="ok-empty" d="M397.434 42.304l-397.868 391.6 197.378 194.27 200.49-197.332 429.62 422.852 197.378-194.27-626.998-617.12zM107.912 433.904l289.524-284.962 518.656 510.482-89.036 87.632-429.62-422.852-200.49 197.334-89.034-87.634z" />
108
  <glyph unicode="&#x1f6e1;" glyph-name="privacy" horiz-adv-x="731" d="M0 402.286v438.857q0 14.857 10.857 25.714t25.714 10.857h658.286q14.857 0 25.714-10.857t10.857-25.714v-438.857q0-49.143-19.143-97.429t-47.429-85.714-67.429-72.857-72.286-58.857-69.143-44.286-51.143-28.286-24.286-11.429q-6.857-3.429-14.857-3.429t-14.857 3.429q-9.143 4-24.286 11.429t-51.143 28.286-69.143 44.286-72.286 58.857-67.429 72.857-47.429 85.714-19.143 97.429zM365.714 118.286q68 36 121.714 78.286 134.286 105.143 134.286 205.714v365.714h-256v-649.714z" />
109
  </font></defs></svg>
pub/font/loco.ttf CHANGED
Binary file
pub/font/loco.woff CHANGED
Binary file
pub/js/debug.js CHANGED
@@ -9,7 +9,7 @@
9
  tick = span[0].textContent
10
  ;
11
  if( 1 !== tick.length || 0x2713 !== tick.charCodeAt(0) ){
12
- loco.notices.warning("This page has a problem rendering UTF-8").stick();
13
  }
14
 
15
  // show custom endpoint if set in global
9
  tick = span[0].textContent
10
  ;
11
  if( 1 !== tick.length || 0x2713 !== tick.charCodeAt(0) ){
12
+ loco.notices.warn("This page has a problem rendering UTF-8").stick();
13
  }
14
 
15
  // show custom endpoint if set in global
pub/js/delete.js CHANGED
@@ -4,12 +4,10 @@
4
  !function( window, document, $ ){
5
 
6
  var fsHook = document.getElementById('loco-fs'),
7
- elForm = document.getElementById('loco-del');
8
-
9
  if( fsHook && elForm ){
10
- window.locoScope.fs
11
- .init( fsHook )
12
- .setForm( elForm );
13
  }
14
 
15
  }( window, document, jQuery );
4
  !function( window, document, $ ){
5
 
6
  var fsHook = document.getElementById('loco-fs'),
7
+ elForm = document.getElementById('loco-del')
8
+ ;
9
  if( fsHook && elForm ){
10
+ window.locoScope.fs.init(fsHook).setForm(elForm);
 
 
11
  }
12
 
13
  }( window, document, jQuery );
pub/js/editor.js CHANGED
@@ -8,6 +8,7 @@
8
 
9
  syncParams = null,
10
  saveParams = null,
 
11
 
12
  // UI translation
13
  translator = loco.l10n,
@@ -36,6 +37,13 @@
36
  saveButton,
37
  innerDiv = document.getElementById('loco-editor-inner')
38
  ;
 
 
 
 
 
 
 
39
 
40
 
41
  /**
@@ -104,6 +112,21 @@
104
  }
105
 
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  /**
108
  * Post full editor contents to "posave" endpoint
109
  */
@@ -114,13 +137,20 @@
114
  // Update saved time update
115
  $('#loco-po-modified').text( result.datetime||'[datetime error]' );
116
  }
117
- saveParams.locale = String( messages.locale() || '' );
118
  if( fsConnect ){
119
- fsConnect.applyCreds( saveParams );
 
 
 
 
 
 
 
 
 
120
  }
121
- // adding PO source last for easier debugging in network inspector
122
- saveParams.data = String( messages );
123
- loco.ajax.post( 'save', saveParams, onSuccess, callback );
124
  }
125
 
126
 
8
 
9
  syncParams = null,
10
  saveParams = null,
11
+ ajaxUpload = conf.multipart,
12
 
13
  // UI translation
14
  translator = loco.l10n,
37
  saveButton,
38
  innerDiv = document.getElementById('loco-editor-inner')
39
  ;
40
+
41
+
42
+ // warn if ajax uploads are enabled but not supported
43
+ if( ajaxUpload && ! ( window.FormData && window.Blob ) ){
44
+ ajaxUpload = false;
45
+ loco.notices.warn("Your browser doesn't support ajax file uploads. Falling back to standard postdata");
46
+ }
47
 
48
 
49
  /**
112
  }
113
 
114
 
115
+ /**
116
+ * @param params {Object}
117
+ * @return FormData
118
+ */
119
+ function initMultiPart( params ){
120
+ var p, data = new FormData;
121
+ for( p in params ){
122
+ if( params.hasOwnProperty(p) ) {
123
+ data.append(p, params[p]);
124
+ }
125
+ }
126
+ return data;
127
+ }
128
+
129
+
130
  /**
131
  * Post full editor contents to "posave" endpoint
132
  */
137
  // Update saved time update
138
  $('#loco-po-modified').text( result.datetime||'[datetime error]' );
139
  }
140
+ var postData = $.extend( {locale:String(messages.locale()||'')}, saveParams||{} );
141
  if( fsConnect ){
142
+ fsConnect.applyCreds(postData);
143
+ }
144
+ // submit PO as concrete file if configured
145
+ if( ajaxUpload ){
146
+ var fname = String(postData.path).split('/').pop() || 'untitled.po';
147
+ postData = initMultiPart(postData);
148
+ postData.append('po', new Blob([String(messages)],{type:'application/x-gettext'}), fname );
149
+ }
150
+ else {
151
+ postData.data = String(messages);
152
  }
153
+ loco.ajax.post( 'save', postData, onSuccess, callback );
 
 
154
  }
155
 
156
 
pub/js/min/admin.js CHANGED
@@ -1,47 +1,47 @@
1
- (function(w,A,h,R){var l=function(){var d={};return{register:function(f,h){d[f]=h},require:function(f,h){var p=d[f];if(!p)throw Error('CommonJS error: failed to require("'+h+'")');return p}}}();l.register("$1",function(d,f,h){function p(b){var c=typeof b;if("string"===c)if(/[^ <>!=()%^&|?:n0-9]/.test(b))console.error("Invalid plural: "+b);else return new Function("n","return "+b);"function"!==c&&(b=function(a){return 1!=a});return b}d.init=function(b){function c(e,b,c){return(e=a[e])&&e[c]?e[c]:b||
2
- ""}b=p(b);var a={};return{_:function(a){return c(a,a,0)},_x:function(a,b){return c(b+"\u0004"+a,a,0)},_n:function(a,n,k){k=Number(b(k));isNaN(k)&&(k=0);return c(a,k?n:a,k)},load:function(e){a=e||{};return this},pluraleq:function(a){b=p(a);return this}}};return d}({},w,A));l.register("$2",function(d,f,h){Array.prototype.indexOf||(Array.prototype.indexOf=function(d){if(null==this)throw new TypeError;var b,c=Object(this),a=c.length>>>0;if(0===a)return-1;b=0;1<arguments.length&&(b=Number(arguments[1]),
3
- b!=b?b=0:0!=b&&Infinity!=b&&-Infinity!=b&&(b=(0<b||-1)*Math.floor(Math.abs(b))));if(b>=a)return-1;for(b=0<=b?b:Math.max(a-Math.abs(b),0);b<a;b++)if(b in c&&c[b]===d)return b;return-1});return d}({},w,A));l.register("$3",function(d,f,h){d.trim=function(d,b){for(b||(b=" \n");d&&-1!==b.indexOf(d.substr(0,1));)d=d.substr(1);for(;d&&-1!==b.indexOf(d.substr(-1));)d=d.substr(0,d.length-1);return d};d.sprintf=function(d){var b=0,c,a=[].slice.call(arguments,1);return d.replace(/%(s|u|%)/g,function(e,n){if("%"===
4
- n)return"%";c=a[b++];return String(c)||""})};return d}({},w,A));l.register("$48",function(d,f,h){function p(){var b=a;e&&(b="("+e+") "+b);h.title=b}function b(e){e||(e=c);e!==a&&(a=e,p())}var c=h.title,a=c,e=0;d.set=function(a){b(a);return d};d.get=function(){return a};d.replace=function(e,c){b(a.replace(e,c));return d};d.badge=function(a){isNaN(a=Number(a))&&(a=0);a!==e&&(e=a,p());return d};return d}({},w,A));l.register("$42",function(d,f,h){function p(e){a||f._gat&&(a=_gat._createTracker(b,"loco"));
5
- if(a){var n=e.shift();a[n].apply(a,e)}else c&&c.push(e);return d}var b,c,a;d._init=function(a){if(b=a.code){c=f._gaq||(f._gaq=[]);c.push(["_setAccount",b]);c.push(["_gat._anonymizeIp"]);c.push(["_setDomainName",a.host]);c.push(["_trackPageview"]);a=h.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==h.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var n=h.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n)}return d};d.event=function(a,
6
- b,c,g){return p(["_trackEvent",a||"",b||"",c||"",g||0])};d.page=function(a,b){var c={page:a||location.pathname+location.hash,title:b||l.require("$48","title.js").get()};return p(["_trackPageview",c])};return d}({},w,A));l.register("$43",function(d,f,h){function p(a,e){if(b)b[a](e);else f.ga&&ga(a,e);return d}var b,c;d._init=function(a){a.code&&(function(a,b,c,g,m,z,d){a.GoogleAnalyticsObject=m;a[m]=a[m]||function(){(a[m].q=a[m].q||[]).push(arguments)};a[m].l=1*new Date;z=b.createElement(c);d=b.getElementsByTagName(c)[0];
7
- z.async=1;z.src=g;d.parentNode.insertBefore(z,d)}(f,h,"script","//www.google-analytics.com/analytics.js","ga"),ga("create",a.code,{alwaysSendReferrer:!0,userId:a.uid}),ga("set","anonymizeIp",!0),a.custom&&p("set",a.custom),d.page(),ga(function(a){b=a}));return d};d.event=function(a,e,b,c){return p("send",{hitType:"event",eventCategory:a||"",eventAction:e||"",eventLabel:b||"",eventValue:Number(c||0)})};d.page=function(a,e){var b={hitType:"pageview",page:a||location.pathname+location.hash,title:e||
8
- l.require("$48","title.js").get()};b.location=location.protocol+"//"+location.hostname+b.page;c&&p("set",{referrer:c});c=b.location;return p("send",b)};d.reset=function(){c=location.href;var a={page:location.pathname+location.hash,title:l.require("$48","title.js").get(),location:c};p("set",a);return d};return d}({},w,A));l.register("$31",function(d,f,B){function p(a,c){h(a).click(function(a){b&&b.event(c,"click",this.getAttribute("href")||"");return!0});a=null;return d}var b,c=location.hostname,a=
9
- "/help"===location.pathname.substr(0,5);d.init=function(a){!b&&a&&(c=a.host||(a.host=c),b=a.legacy?l.require("$42","legacy.js"):l.require("$43","universal.js"),b._init(a));return d};d.link=function(e){for(var b=e.getAttribute("href");b&&"#"!==b;){if(0===b.indexOf("#"))return p(e,"anchor");if("/help"===b.substr(0,5)&&!a)e.setAttribute("target","_blank");else if(0===b.indexOf("http")||0===b.indexOf("//")){if(-1!==b.indexOf(c)&&/^(https?:)*\/\/([^\/]+)/.exec(b)&&c===RegExp.$2)break;e.setAttribute("target",
10
- "_blank");p(e,"external")}break}return d};d.page=function(){b&&b.page.apply(b,arguments);return d};d.event=function(){b&&b.event.apply(b,arguments);return d};d.reset=function(){b&&b.reset&&b.reset();return d};return d}({},w,A));l.register("$36",function(d,f,l){function p(a){return 27===a.keyCode&&q&&v?(H(),a.preventDefault(),!1):!0}function b(){if(q){var a=f.innerWidth,e=f.innerHeight;a!==G&&(G=a,K(u));e!==y&&(y=e,s&&c())}return!0}function c(){var a=n.outerHeight(!0)-s.clientHeight;s.style.maxHeight=
11
- String(y-a)+"px"}function a(a){a?(m.show(),k.addClass("has-title")):(m.hide(),k.removeClass("has-title"))}var e,n,k,g,m,z,D,s,q=!1,v=!1,r=!1,E,C,G,u,y,F=d.init=function(){if(!e){e=h('<div id="overlay"></div>');n=h('<div class="overlay-frame"></div>');k=h('<div class="overlay-container"></div>');m=h('<div class="overlay-title"><span class="icon"></span><span class="title">Untitled</span></div>');z=h("<nav></nav>");D=h('<a class="overlay-close" href="#"><span>x</span></a>');g=h('<div class="overlay-bg"></div>');
12
- e.append(n.append(k)).append(g).prependTo(l.body);h(l).on("keydown",p);h(f).resize(b);G=f.innerWidth;y=f.innerHeight;C=k.outerWidth(!0)-k.width()+(n.innerWidth()-n.width());E=parseInt(k.css("width"));if(!E||isNaN(E))E=k.width();z.hide().prependTo(n);m.append(D.hide()).hide().prependTo(n);e.hide()}return e},K=d.width=function(a){var e=F();if(null===a)n.css("width",""),k.css("width","");else{a=a||E||640;x=a+C;u=a;var b=G;x>b?(x=b,a=x-C,e.addClass("spill")):e.removeClass("spill");n.css("width",x+"px");
13
- k.css("width",a+"px")}return d};d.autoSize=function(){var a=F(),e=E||0;k.children().each(function(a,b){e=Math.max(e,h(b).outerWidth(!0))});K(e);if(s=a.find("div.overlay-scroll")[0])y=f.innerHeight,c();return d};d.css=function(a){F().attr("class",a);return d};d.think=function(){F().addClass("loading");return d};d.unthink=function(){F().removeClass("loading");return d};d.html=function(a){F();f.innerShiv&&(a=innerShiv(a,!1));return k.html(a)};d.append=function(a){F();a instanceof jQuery||(a=h(a));k.append(a);
14
- return d};var H=d.close=function(a){if(q){var b=function(){F().hide();h(l.body).removeClass("has-overlay");q=!1;k.html("");q=null;e.trigger("overlayClosed",[d])};null==a&&(a=300);e.trigger("overlayClosing",[d]);a?e.fadeOut(a,b):b()}return d};d.title=function(e,b){F();var g="",q=m.find("span");b&&/^lang lang-(\w+)/.exec(b)&&(g=RegExp.$1);q.eq(0).attr("class",b||"no-icon").attr("lang",g);r=e||"";q.eq(1).text(r);null!=e?a(!0):v||a(!1);return d};d.enableClose=function(){F();v=!0;D.off("click").on("click",
15
- function(){H();return!1});a(!0);D.show();return d};d.disableClose=function(){F();v=!1;D.hide();q&&r||a(!1);return d};d.enableNav=function(a){z.append(a);z.show();return d};d.disableNav=function(){z.html("").hide();return d};d.open=function(){F();k.html("");K(E);e.attr("class","");h(l.body).addClass("has-overlay");F().show();q||(q=!0,b());d.title(null);v&&a(!0);e.trigger("overlayOpened",[d]);return d};d.active=function(){return q};d.listen=function(a){F().on("overlayClosed",a);return d};d.unlisten=
16
- function(a){F().off("overlayClosed",a);return d};return d}({},w,A));l.register("$11",function(d,f,l){function p(a,e){this.$element=h(a);this.options=e;this.enabled=!0;this.fixTitle()}d.init=function(a,e){var n={fade:!0,offset:5,delayIn:b,delayOut:c,anchor:a.attr("data-anchor"),gravity:a.attr("data-gravity")||"s"};e&&(n=h.extend({},n,e));a.tipsy(n)};d.delays=function(a,e){b=a||150;c=e||100};d.kill=function(){h("div.tipsy").remove()};d.text=function(a,e){e.data("tipsy").setTitle(a)};var b,c;d.delays();
17
- h(l.body).on("overlayOpened overlayClosing",function(a){d.kill();return!0});p.prototype={show:function(){var a=this.getTitle();if(a&&this.enabled){var e=this.tip();e.find(".tipsy-inner")[this.options.html?"html":"text"](a);e[0].className="tipsy";e.remove().css({top:0,left:0}).prependTo(l.body);var a=(a=this.options.anchor)?this.$element.find(a):this.$element,a=h.extend({},a.offset(),{width:a[0].offsetWidth,height:a[0].offsetHeight}),b=e[0].offsetWidth,c=e[0].offsetHeight,g="function"==typeof this.options.gravity?
18
- this.options.gravity.call(this.$element[0]):this.options.gravity,m;switch(g.charAt(0)){case "n":m={top:a.top+a.height+this.options.offset,left:a.left+a.width/2-b/2};break;case "s":m={top:a.top-c-this.options.offset,left:a.left+a.width/2-b/2};break;case "e":m={top:a.top+a.height/2-c/2,left:a.left-b-this.options.offset};break;case "w":m={top:a.top+a.height/2-c/2,left:a.left+a.width+this.options.offset}}2==g.length&&("w"==g.charAt(1)?m.left=a.left+a.width/2-15:m.left=a.left+a.width/2-b+15);e.css(m).addClass("tipsy-"+
19
  g);e.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+g.charAt(0);this.options.className&&e.addClass("function"==typeof this.options.className?this.options.className.call(this.$element[0]):this.options.className);e.addClass("in")}},hide:function(){this.tip().remove()},fixTitle:function(){var a=this.$element,e=a.attr("title")||"";(e||"string"!==typeof a.attr("original-title"))&&a.attr("original-title",e).removeAttr("title")},getTitle:function(){var a,e=this.$element,b=this.options;this.fixTitle();
20
  "string"==typeof b.title?a=e.attr("title"==b.title?"original-title":b.title):"function"==typeof b.title&&(a=b.title.call(e[0]));return(a=(""+a).replace(/(^\s*|\s*$)/,""))||b.fallback},setTitle:function(a){var e=this.$element;e.attr("default-title")||e.attr("default-title",this.getTitle());null==a&&(a=e.attr("default-title")||this.getTitle());e.attr("original-title",a);if(this.$tip)this.$tip.find(".tipsy-inner")[this.options.html?"html":"text"](a)},tip:function(){this.$tip||(this.$tip=h('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),
21
- this.$tip.data("tipsy-pointee",this.$element[0]));return this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.hide();this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}};h.fn.tipsy=function(a){function e(e){var b=h.data(e,"tipsy");b||(b=new p(e,h.fn.tipsy.elementOptions(e,a)),h.data(e,"tipsy",b));return b}function b(){var g=e(this),c=a.delayIn;g.hoverState="in";0==c?g.show():
22
- (g.fixTitle(),setTimeout(function(){"in"==g.hoverState&&g.show()},c))}function c(){var b=e(this),g=a.delayOut;b.hoverState="out";0==g?b.hide():(b.tip().removeClass("in"),setTimeout(function(){"out"==b.hoverState&&b.hide()},g))}a=h.extend({},h.fn.tipsy.defaults,a);a.live||this.each(function(){e(this)});if("manual"!=a.trigger){var g=a.live?"live":"bind",m="hover"==a.trigger?"mouseleave":"blur";this[g]("hover"==a.trigger?"mouseenter":"focus",b)[g](m,c)}return this};h.fn.tipsy.defaults={className:null,
23
- delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:0.8,title:"title",trigger:"hover",anchor:null};h.fn.tipsy.elementOptions=function(a,b){return h.metadata?h.extend({},b,h(a).metadata()):b};h.fn.tipsy.autoNS=function(){return h(this).offset().top>h(l).scrollTop()+h(f).height()/2?"s":"n"};h.fn.tipsy.autoWE=function(){return h(this).offset().left>h(l).scrollLeft()+h(f).width()/2?"e":"w"};h.fn.tipsy.autoBounds=function(a,b){return function(){var c=b[0],d=1<b.length?
24
- b[1]:!1,g=h(l).scrollTop()+a,m=h(l).scrollLeft()+a,z=h(this);z.offset().top<g&&(c="n");z.offset().left<m&&(d="w");h(f).width()+h(l).scrollLeft()-z.offset().left<a&&(d="e");h(f).height()+h(l).scrollTop()-z.offset().top<a&&(c="s");return c+(d?d:"")}};return d}({},w,A));l.register("$8",function(d,f,l){d.listen=function(d,b){function c(){s[k?"show":"hide"]()}function a(a){D&&d.setAttribute("size",2+a.length);k=a;c();return a}function e(){g=null;b(k)}function n(){var b=d.value;z&&b===z&&(b="");b!==k&&
25
- (g&&clearTimeout(g),a(b),m?g=setTimeout(e,m):e())}var k,g;d=d instanceof jQuery?d[0]:d;var m=150,z=f.attachEvent&&d.getAttribute("placeholder"),D=1===Number(d.size),s=h('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').click(function(){d.value="";n();return!1});a(d.value);h(d).on("input blur focus",function(){n();return!0}).after(s);c();return{delay:function(a){m=a},ping:function(b){b?(g&&clearTimeout(g),b=d.value,z&&b===z&&(b=""),a(b),e(),b=void 0):b=n();return b},val:function(b){if(null==
26
- b)return k;g&&clearTimeout(g);d.value=a(b);c()},el:function(){return d},blur:function(a){return h(d).on("blur",a)}}};return d}({},w,A));l.register("$35",function(d,f,l){function p(a,b,n,d,g){function m(){s&&clearTimeout(s);q&&q.fadeOut(400,function(){h(this).remove();q=null});return!1}function z(){D();-1!==d&&(s=setTimeout(m,d||2E3));q.off("mouseleave").on("mouseenter",D)}function D(){s&&clearTimeout(s);s=null;q.off("mouseenter").on("mouseleave",z)}var s;c||(c=l.createElement("div"),c.id="growls",
27
- l.body.appendChild(c));var q=h('<div class="growl growl-'+n+'"><div><a class="close" href="#"><span>X</span></a><span class="badge"></span><p class="message"></p><small class="caption"></small></div></div>');q.find("p").text(a||"Empty message");b?q.find("small").text(b):q.find("small").remove();if(g.length){g.push({label:"Cancel",callback:m,css:"cancel"});var v,r=h('<form action="#" class="dialog"></form>');b=function(a,b){v=h('<input type="button" value="'+b.label+'" class="butt '+(b.css||"")+'" />');
28
- v.click(function(a){"function"===typeof b.callback&&b.callback(a,{close:m})});r.append(v);return v};for(a=0;a<g.length;a++)b(a,g[a]);q.append(r)}h(c).prepend(q.hide().fadeIn(400));q.find("a").click(m);z()}var b,c;d.init=function(){if(!b)return b=f.alert,f.alert=function(a){a=String(a).split("\n");var b=a[1]&&a.slice(1).join("\n");d.alert(a[0],b)},d};d.debug=function(a){b(a);return d};d.alert=function(a,e,c,d,g){try{return p(a,e||"",c||"alert",d||4E3,g||[]),!0}catch(m){return a+="\n\n--\n"+(m.message||
29
- m),b.call(f,a),!1}};d.success=function(a,b,c){return d.alert(a,b,"success",c||2E3)};d.dialog=function(a,b,c,k){return d.alert(a,b,k||"alert",-1,c)};return d}({},w,A));l.register("$22",function(d,f,B){function p(a){var e;(e=a.alert)&&alert(e);(e=a.success)&&l.require("$35","growl.js").success.apply(null,e.push?e:[e]);if(e=a.download)f.location.assign(e);else if(e=a.redirect)if(0===e.indexOf("/modal/"))a.modal={url:e};else return f.location.assign(e),!1;else if(a.reload)return f.location.reload(),!1;
30
- (e=a.modal)&&l.require("$32","modal.js").replace(e);(e=a.async)&&b(e.job_id,e.title)}function b(a,b){var c=l.require("$36","overlay.js");c.open().disableClose().css("modal-processing").html('<div class="wrap"><h2>'+(b||"Please wait")+"</h2></div>");l.require("$37","async.js").init(a).delay(500).timeout(2E4).listen("error",function(a){c.css("modal-error").enableClose().title("Error");c.html("<h2>"+(a||"Unknown error")+"</h2>")}).listen("complete",function(a){c.close();c=null;a&&p(a)}).start()}var c=
31
- {401:"Authorization Required",422:"Invalid data sent to server",404:"Not Found",500:"Server Error",502:"Bad Gateway",503:"Service unavailable",504:"Gateway timeout"};d.jsonLink=function(a){if(!a)return"";a=a.split("?");a[0]=a[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return a.join("?")};d.errorData=function(a,b,d){var k,g;d=a.responseText;b=a.status;if(!d&&0===b)return null;try{k=h.parseJSON(d)||{}}catch(m){k={},g=c[a.status]||m.message||m}k.error=g||k.error||k.statusText||a.statusText||c[b]||"Unknown Error";
32
- return k};d.ajax=function(a,b,n,k){function g(a){function b(a){var e=a&&a[0];if(!e||B.contains&&!B.contains(e))a=h(B.body);return a}var e=b(k);e.trigger("locoAjaxSuccess",[a]);var g=a.events;if(g&&g.length)for(var c,r=l.require("$31","ga.js");c=g.shift();)e=b(e),e.trigger(c,[a]),r.event("ajax",c);if(!1===p(a))return!1;n&&n();return!0}function m(a,m,k){if("abort"!==m){var q=a.status,v;if(401===q)l.require("$32","modal.js").load("/modal/user/ping.json?r="+encodeURIComponent(location.pathname),c[q]);
33
- else{if("parsererror"===m)f.console&&console.error&&console.error(q,a.responseText),v=404===q?"Ajax service not found":/^\s+Fatal error/.test(a.responseText)?"Fatal server error from Ajax request":"Bad Ajax response";else{var r=d.errorData(a,m,k);r&&r.error&&(v=r.error)}"function"===typeof b&&!1===b(null,v,q,a)?n&&n():r&&r.data&&!g(r.data)||(alert(v||"Unknown Ajax error"),n&&n())}}}(a.headers||(a.headers={}))["X-Loco-Csrf"]=f.loco&&I.csrf||"";a.error=m;a.success=function(a,d,k){if(!a||"object"!==
34
- typeof a)return m(k,"unknown");(a.status||a.error)&&alert(a.error||a.statusText||k.statusText||c[a.status]||"Unknown Error");"function"===typeof b&&!1===b(a&&a.data?a.data:a,null,d,k)?n&&n():a&&a.data?g(a.data):n&&n()};-1!==a.url.indexOf(".json")&&(a.dataType="json");return h.ajax(a)};return d}({},w,A));l.register("$37",function(d,f,h){d.init=function(d){function b(a,b){for(var e=-1,g,c=r[a]||[];++e<c.length;)(g=c[e])&&g.apply&&g.apply(null,b||[])}function c(){var a=D+"ms",g=Math.round(D/1E3);1<g&&
35
- (a=g+" seconds");a="Job timeout after "+a;n();e();b("error",[a])}function a(a,c){if(!a||c)a={state:"error",message:c};try{switch(a.state){case "error":throw Error(a.message||"Unknown error tracking job progress");case "queued":case "starting":case "progress":var r=a.progress||0,q=a.message,y=a.state;r!==m&&(n(),m=r);b("progress",[m,q,y]);g();break;case "done":var d=a.data,z=a.message;m=100;n();e();b("complete",[d,z]);break;default:throw Error("Unexpected job status: "+a.state);}}catch(v){r=v.message||
36
- v,n(),e(),b("error",[r])}}function e(){q&&(clearTimeout(q),q=null)}function n(){s&&(clearTimeout(s),s=null)}function k(){var b={dataType:"json",url:z};l.require("$22","http.js").ajax(b,a)}function g(){e();q=setTimeout(k,v);s||(s=setTimeout(c,D))}var m=0,z="/ajax/async/poll/"+d+".json",D=1E4,s,q,v=100,r={error:[],complete:[],progress:[]};return{start:function(){n();g();return this},stop:function(){n();e();return this},delay:function(a){v=a;return this},timeout:function(a){D=a;return this},listen:function(a,
37
- b){var e=r[a];if(e)e.push(b);else throw Error(a+" is not a valid async event");return this}}};return d}({},w,A));l.register("$32",function(d,f,B){function p(a){a.stopPropagation();a.preventDefault();return!1}function b(){m||(m=l.require("$36","overlay.js"),m.listen(n));return m}function c(){var a=s.length-1,b=s[a],e=h('<a class="has-icon icon-back" data-gravity="w">Back</a>').attr("href",b[0]).attr("title",b[1]).click(function(e){if(s[a]===b&&E())return l.require("$11","tooltip.js").kill(),p(e)});
38
- m.enableNav(e);l.require("$11","tooltip.js").init(e)}function a(a,b,e){a=a.split("#");var g=a[0],g=g+(-1===g.indexOf("?")?"?":"&"),g=g+(encodeURIComponent(b)+"="+encodeURIComponent(e));a[0]=g;return a.join("#")}function e(a,e){var g=b().autoSize(),r=g.init();l.require("$18","html.js").init(r);e&&e.lock&&g.disableClose();s.length&&c();r.find("[data-script]").each(function(a,b){b=h(b);for(var g=-1,c,r=b.attr("data-script").split(" ");++g<r.length;)c=r[g],D[c]?D[c](b,e||{}):alert("Unknown script "+c)});
39
- r.trigger("locoModalLoaded",[g,a||"",e||{}]);var q=r.find("form")[0],m;if(q)a:for(g=0;g<q.elements.length;g++)switch(r=q.elements[g],r.type){case "text":case "email":case "textarea":m=Number(r.getAttribute("tabindex"));if(isNaN(m)||100>m)continue a;h(r).focus();break a}}function n(){q=null;s=[];return!0}function k(a){var b=h(a.currentTarget),e=b.attr("data-modal");if("back"===e){if(E())return p(a);e="close"}if("close"===e){r();var c=b.attr("href");if(c&&-1!==c.indexOf("#!"))return!0}else{var q="submit"===
40
- a.type,m=b.attr("title")||b.attr("data-title"),c=b.attr("href")||b.attr("action"),d=q?b.serialize():"",b=q?b.attr("method"):"get";v(c,m,b,d,"modal "+(e||g(c)))}return p(a)}function g(a){return"http"===a.substr(0,4)?a.split("/").slice(3,6).join("-"):a.split("/").slice(1,4).join("-")}var m,z=l.require("$31","ga.js"),D={},s=[],q,v=d.load=function(g,c,r,y,n){var k=q;q=[].slice.call(arguments);k&&g!==k[0]&&(s.push(k),g=a(g,"r",k[0]));k=b();k.active()||k.open().css("modal").html('<div class="loading"></div>');
41
- k.title("Loading ..").disableClose().disableNav();k.think();var k=g.split("#"),E=k[1];E&&(g=k[0]);var k=l.require("$22","http.js"),D={type:r||"get",data:y||"",url:k.jsonLink(g)};k.ajax(D,function(a,b,d){var k=a&&a.html;if(!k)return a&&a.redirect?(q=s.pop()||null,v(a.redirect,c,r,y,n)):(a=h('<h3 class="error"></h3>').text(b||"Unknown error"),b=h('<footer class="buttonset"><a href="/" data-modal="close" class="has-icon icon-ok">Close</a></footer>'),a=h('<div class="basic"></div>').append(a).append(b),
42
- b="Error",d&&200!==d&&(b+=" "+d),m.unthink().enableClose().title(b).html("").append(a),l.require("$18","html.js").init(m.init())),!1;c=a.title||c||"Untitled";q&&(q[1]=c);m.unthink().enableClose().title(c,a.icon).width(null).css(n||"modal").autoSize().html(k);d=a.js||{};E&&(d["#"]=E);e(g,d);z.page(g,c);m.init().one("overlayClosed",function(){z.reset()});return!0});return d},r=d.close=function(){b().close();return d},E=d.back=function(){if(previous=s.pop())return q=s[s.length-2],v.apply(null,previous),
43
- !0};d.reload=function(){q&&v.apply(null,q)};d.postback=function(a){q&&(q[2]="post",q[3]=a,v.apply(null,q))};d.initLink=function(a){a.click(k)};d.initForm=function(a){h(a).submit(k)};d.replace=function(a){var c=b(),r=a&&a.html,q=a&&a.url,m=a&&a.title,z=a&&a.action;if(q)r=s.length-1,r=0<=r?s[r][0]:void 0,q===r?E():v(q,m,"","",a&&a.css||"modal "+g(q));else if(r)c.open().html(r),m&&c.enableClose().title(m),e("",a&&a.js);else if("function"===typeof d[z])d[z]();return c};d.find=function(a){return b().init().find(a)};
44
- d.script=function(a,b){if(b){if("function"!==typeof b.run)throw Error(a+" macro has no run function");D[a]=b.run;return d}return D[a]};d.hash=function(a){var b=a.hash;"#/modal/"===b.substr(0,8)&&(b=b.substr(1),a.hash="",d.replace({url:b}))};return d}({},w,A));l.register("$21",{"\u00e1":"a","\u00e0":"a","\u0103":"a","\u1eaf":"a","\u1eb1":"a","\u1eb5":"a","\u1eb3":"a","\u00e2":"a","\u1ea5":"a","\u1ea7":"a","\u1eab":"a","\u1ea9":"a","\u01ce":"a","\u00e5":"a","\u01fb":"a","\u00e4":"a","\u01df":"a","\u00e3":"a",
45
  "\u0227":"a","\u01e1":"a","\u0105":"a","\u0101":"a","\u1ea3":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1eb7":"a","\u1ead":"a","\u1e01":"a","\u01fd":"\u00e6","\u01e3":"\u00e6","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0107":"c","\u0109":"c","\u010d":"c","\u010b":"c","\u00e7":"c","\u1e09":"c","\u010f":"d","\u1e0b":"d","\u1e11":"d","\u0111":"d","\u1e0d":"d","\u1e13":"d","\u1e0f":"d","\u00f0":"d","\ua77a":"d","\u01c6":"\u01f3","\u00e9":"e","\u00e8":"e","\u0115":"e","\u00ea":"e","\u1ebf":"e","\u1ec1":"e",
46
  "\u1ec5":"e","\u1ec3":"e","\u011b":"e","\u00eb":"e","\u1ebd":"e","\u0117":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u1ebb":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u1e19":"e","\u1e1b":"e","\u1e1f":"f","\ua77c":"f","\u01f5":"g","\u011f":"g","\u011d":"g","\u01e7":"g","\u0121":"g","\u0123":"g","\u1e21":"g","\ua7a1":"g","\u1d79":"g","\u0125":"h","\u021f":"h","\u1e27":"h","\u1e23":"h","\u1e29":"h","\u0127":"h","\u210f":"h","\u1e25":"h","\u1e2b":"h",
47
  "\u1e96":"h","\u00ed":"i","\u00ec":"i","\u012d":"i","\u00ee":"i","\u01d0":"i","\u00ef":"i","\u1e2f":"i","\u0129":"i","\u012f":"i","\u012b":"i","\u1ec9":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u1e2d":"i","\u0135":"j","\u01f0":"j","\u1e31":"k","\u01e9":"k","\u0137":"k","\ua7a3":"k","\u1e33":"k","\u1e35":"k","\u013a":"l","\u013e":"l","\u013c":"l","\u0142":"l","\u1e37":"l","\u1e39":"l","\u1e3d":"l","\u1e3b":"l","\u0140":"l","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0144":"n","\u01f9":"n","\u0148":"n",
@@ -53,185 +53,189 @@ d.script=function(a,b){if(b){if("function"!==typeof b.run)throw Error(a+" macro
53
  "\u1f90":"\u03b7","\u1f21":"\u03b7","\u1f25":"\u03b7","\u1f95":"\u03b7","\u1f23":"\u03b7","\u1f93":"\u03b7","\u1f27":"\u03b7","\u1f97":"\u03b7","\u1f91":"\u03b7","\u03ae":"\u03b7","\u1f75":"\u03b7","\u1fc4":"\u03b7","\u1f74":"\u03b7","\u1fc2":"\u03b7","\u1fc6":"\u03b7","\u1fc7":"\u03b7","\u1fc3":"\u03b7","\u1f30":"\u03b9","\u1f34":"\u03b9","\u1f32":"\u03b9","\u1f36":"\u03b9","\u1f31":"\u03b9","\u1f35":"\u03b9","\u1f33":"\u03b9","\u1f37":"\u03b9","\u03af":"\u03b9","\u1f77":"\u03b9","\u1f76":"\u03b9",
54
  "\u1fd0":"\u03b9","\u1fd6":"\u03b9","\u03ca":"\u03b9","\u0390":"\u03b9","\u1fd3":"\u03b9","\u1fd2":"\u03b9","\u1fd7":"\u03b9","\u1fd1":"\u03b9","\u1f40":"\u03bf","\u1f44":"\u03bf","\u1f42":"\u03bf","\u1f41":"\u03bf","\u1f45":"\u03bf","\u1f43":"\u03bf","\u03cc":"\u03bf","\u1f79":"\u03bf","\u1f78":"\u03bf","\u1fe4":"\u03c1","\u1fe5":"\u03c1","\u1f50":"\u03c5","\u1f54":"\u03c5","\u1f52":"\u03c5","\u1f56":"\u03c5","\u1f51":"\u03c5","\u1f55":"\u03c5","\u1f53":"\u03c5","\u1f57":"\u03c5","\u03cd":"\u03c5",
55
  "\u1f7b":"\u03c5","\u1f7a":"\u03c5","\u1fe0":"\u03c5","\u1fe6":"\u03c5","\u03cb":"\u03c5","\u03b0":"\u03c5","\u1fe3":"\u03c5","\u1fe2":"\u03c5","\u1fe7":"\u03c5","\u1fe1":"\u03c5","\u1f60":"\u03c9","\u1f64":"\u03c9","\u1fa4":"\u03c9","\u1f62":"\u03c9","\u1fa2":"\u03c9","\u1f66":"\u03c9","\u1fa6":"\u03c9","\u1fa0":"\u03c9","\u1f61":"\u03c9","\u1f65":"\u03c9","\u1fa5":"\u03c9","\u1f63":"\u03c9","\u1fa3":"\u03c9","\u1f67":"\u03c9","\u1fa7":"\u03c9","\u1fa1":"\u03c9","\u03ce":"\u03c9","\u1f7d":"\u03c9",
56
- "\u1ff4":"\u03c9","\u1f7c":"\u03c9","\u1ff2":"\u03c9","\u1ff6":"\u03c9","\u1ff7":"\u03c9","\u1ff3":"\u03c9","\u0491":"\u0433","\u0450":"\u0435","\u0451":"\u0435","\u04c2":"\u0436","\u045d":"\u0438","\u04e3":"\u0438","\u04ef":"\u0443"});l.register("$7",function(d,f,h){d.init=function(){function d(a){return z[a]||a}function b(a){return String(a||"").toLowerCase().replace(g,d)}function c(a,b,g,e){b=a.split(b);for(var c=b.length;0!==c--;)(a=b[c])&&null==e[a]&&(g.push(a),e[a]=!0);return g}function a(a){return c(b(a),
57
- m,[],{})}function e(a,g){for(var e=[],d={},r,z=g.length,n=m;0!==z--;)(r=g[z])&&c(b(r),n,e,d);k[a]=e}function n(a,b){var g=[],e=-1,c=k,m=c.length,d,z,n,y,f,h,p=a.length,l=b?!0:!1;a:for(;++e<m;)if(n=c[e],null!=n&&(y=n.length)){f=0;b:for(;f<p;f++){h=a[f];for(d=0;d<y;d++)if(z=n[d],0===z.indexOf(h))continue b;continue a}g.push(l?b[e]:e)}return g}var k=[],g=/[^a-z0-9]/g,m=/[\-_\s.?!;:,*^+=~`"(){}<>\[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/,z=l.require("$21","flatten.json");return{split:a,
58
- norm:b,pull:function(a,b){return n(a,b)},find:function(b,e){return n(a(b),e)},add:function(b,e){k[b]=a(e)},push:function(a){e(k.length,a)},index:function(a,b){e(a,b)},size:function(){return k.length},clear:function(){k=[]},remove:function(a){k[a]=null}}};return d}({},w,A));l.register("$23",function(d,f,h){d.create=function(){var d=[],b=l.require("$7","fulltext.js").init();return{add:function(c,a){b.add(d.length,a);d.push(c);return this},find:function(c){return b.find(c,d)},clear:function(){d=[];b.clear();
59
- return this}}};return d}({},w,A));l.register("$10",function(d,f,B){function p(b){-1===b.indexOf("?")&&(b="/auto/"+b+".json?q=");this.url=b;this.dead={}}function b(){this.dict=l.require("$23","dict.js").create()}d.init=function(c){function a(){if("hint"!==K){var a=y.val()&&!(J&&J.val())&&null==G&&!r;L[a?"addClass":"removeClass"]("error")}}function e(a){J&&J.val(a)}function d(){B.show();var a=y.outerWidth(!1),b=y.outerHeight(!1),e=y.css("margin-top");e&&(e=parseInt(e),isNaN(e)||(b+=e));a-=2;B.css("top",
60
- b+"px").css("minWidth",a+"px");r=!0}function k(){B.hide();r=!1}function g(){B.html("");k();v=0;u=G=null}function m(b){g();var e;for(e=0;e<b.length;e++){var c=e,r=b[e],m=r.value,q=r.lang||m.lang,y=h('<span class="label"></span>').text(r.label),k=h('<div class="auto-comp-result"></div>'),C=void 0,s=void 0;if(s=r.icon)C=h("<span></span>").attr("class",s).appendTo(k),q?(C.attr("lang",q),r.lang=q):-1!==s.indexOf("lang-"+m)&&(C.attr("lang",m),r.lang=m);for(s in r)k.data(s,r[s]);k.append(y);z(c,k)}(v=b.length)?
61
- (E&&d(),f(0)):(f(null),a(),L.trigger("locoAutonone",[]))}function z(a,b){B.append(b);b.click(function(e){e.stopPropagation();f(a,b);q();return!1});return b}function f(a,b){u&&(u.removeClass("selected"),u=null);G=null;null==a?e(""):(b||(b=B.find("div.auto-comp-result").eq(a)),b.length&&(b.addClass("selected"),G=a,u=b))}function s(a){if(v){var b=v-1;null==G?a=0<a?0:b:(a=G+a,0>a?a=b:a>b&&(a=0));return f(a)}}function q(){if(null==G)w.val(""),e("");else{var b=B.find("div.auto-comp-result").eq(G),c=b.data()||
62
- {label:"Error"},r=c.value,m=c.label;e(r);w.val(m);k();b=b.clone();b.data(c);g();z(0,b);v=1;f(0,b);a();b.trigger("locoAutocomp",[r,m,b])}}var v=0,r=!1,E=!1,C=c.form,G=null,u=null,y=h(c),F=y.attr("name"),K=y.attr("data-mode"),H=y.attr("data-provider"),J="hint"!==K&&h('<input type="hidden" value="" name="'+F+'" />').appendTo(C),L=h('<div class="auto-comp-wrap"></div>').replaceAll(y),B=h('<div class="auto-comp-drop"></div>');H&&(H=new p(H));J&&y.attr("name","_"+F);y.attr("autocomplete")||y.attr("autocomplete",
63
- "off");L.append(y).append(B);k();y.focus(function(a){E=!0;1<v&&d()}).blur(function(b){E=!1;a()}).keydown(function(a){function b(){a.preventDefault();a.stopPropagation();return!1}switch(a.keyCode){case 27:r&&(a.stopPropagation(),k(),y.blur());break;case 40:v&&(r?s(1):d());break;case 38:r&&s(-1);break;case 13:if(r)return q(),b();if(!G&&"hint"!==K)return b()}return!0});var w=l.require("$8","LocoTextListener.js").listen(y,function(a){H&&H.fetch(a,m)});(C=y.attr("data-pre"))&&(C=h.parseJSON(C))&&C.value&&
64
- C.label?(m([C]),q()):!c.value||J&&J.val()||!H||H.fetch(c.value,function(a){m(a);q()});return{$:y,val:function(){return J&&J.val()},clear:g,reset:function(){g();y.val("");e("");w.ping()},force:function(a,b){g();e(b||"");w.val(a)},preload:function(a){v&&g();H=new b;var e,c;for(e in a)c=a[e],H.add(c)},mode:function(a){K=a},provide:function(a){H=new p(a)}}};p.prototype.fetch=function(b,a){if(!b)return a&&a([]),this.dead={},this;var e,d=this.dead;for(e in d)if(0===b.indexOf(e))return a&&a([]),this;e={dataType:"json",
65
- url:this.url+encodeURIComponent(b)};l.require("$22","http.js").ajax(e,function(e){var g=e&&e.results;g&&(a&&e.query&&e.query===b&&a(e.results),g.length||(d[b]=0));return!0});return this};b.prototype.add=function(b){var a=b.fulltext||b.label||b.value;a&&this.dict.add(b,a)};b.prototype.fetch=function(b,a){var e=b?this.dict.find(b):[];a&&a(e);return this};return d}({},w,A));l.register("$9",function(d,f,B){function p(a){a.stopPropagation();a.preventDefault();return!1}function b(a,b,e){e.off().mouseup(function(e){e.stopPropagation();
66
- a.selectIndex(b,!0);return!1}).mouseover(function(){h(this).addClass("over");a.hover=b;return!0}).mouseout(function(){h(this).removeClass("over");a.hover=-1;return!0});return e}function c(b){n===b&&(h(f).off("resize scroll",a),n=null);return b}function a(){n&&n.resize()}function e(a){if(a){var b,e=a[0],c=e.id,d=e.title,q=e.disabled,n=[],r=[],k,C=-1,f=e.options.length,p=this.selectedIcon||"";this.id=c||"";this.name=e.name||"";this.prefix=e.getAttribute("data-prefix");for(this.defaultIcon=e.getAttribute("data-icon")||
67
- "icon no-icon";++C<f;)b=e.options[C],k=h(b),b.selected&&n.push(C),r.push([k.val(),k.text(),k.attr("data-icon")||p,b.disabled,k.attr("lang")]);this.hidden||(this.hidden=h('<input type="hidden" name="'+this.name+'" value="" />').appendTo(e.form));this.list=h("<ul></ul>");this.icon=h('<span class="icon"> </span>');this.selection=h('<span class="label"></span>');this.handle=h('<a class="handle" href="#"></a>').attr("tabindex",a.attr("tabindex")||"").append(this.icon).append(this.selection);b=h('<div class="selector"></div>').addClass(e.className).append(this.handle).append(this.list).replaceAll(e);
68
- c&&b.attr("id",c);d&&a.hasClass("hastip")&&(b.attr("title",d),l.require("$11","tooltip.js").init(b,{gravity:a.attr("data-gravity")||"s",anchor:a.attr("data-anchor")}));this.wrapper=b;this.up=b.hasClass("up");for(this.clearOptions();b=r.shift();)this.addOption.apply(this,b);q?this.disable():this.enable();this.close();if(f=n.length)for(C=0;C<f;C++)this.selectIndex(n[C]);else C=e.selectedIndex,null!=C&&0<=C&&this.selectIndex(C)}}d.create=function(a){return new e(a)};d.extend=function(a){a.parent=e;a.prototype=
69
- new e};var n,k=e.prototype;k.enable=function(){var a=this;a.bound?a.wrapper.removeClass("disabled"):(a.handle.click(function(a){a.preventDefault();return!1}).mouseover(function(b){return a.onRollover(b)}).mouseout(function(b){return a.onRollout(b)}).mousedown(function(b){return a.onPress(b)}).keydown(function(b){return a.onKeydown(b)}),h(B).mouseup(function(b){return a.onRelease(b)}).keydown(function(b){return a.onGlobalKeydown(b)}),a.bound=!0)};k.disable=function(){this.wrapper.addClass("disabled")};
70
- k.isDisabled=function(){return this.wrapper.hasClass("disabled")};k.onRollover=function(){return this.over=!0};k.onRollout=function(){this.over=!1;return!0};k.onPress=function(a){return this.active?this.over?(this.close(),a.stopPropagation(),a.preventDefault(),!1):!0:(this.open(),a.stopPropagation(),a.preventDefault(),this.handle.focus(),!1)};k.onRelease=function(){this.active&&!this.over&&this.close();return!0};k.onGlobalKeydown=function(a){if(this.active)switch(a.keyCode){case 27:return this.close(),
71
- p(a);case 40:return this.hoverNext(1),p(a);case 38:return this.hoverNext(-1),p(a);case 13:if(-1!=this.hover)return this.selectIndex(this.hover,!0),this.hoverItem(-1),this.close(),p(a)}return!0};k.onKeydown=function(a){return this.active||40!==a.keyCode?!0:(this.open(),p(a))};k.resize=function(){var a=this.list,b=this.handle,e=b.outerWidth()||0,c=a.outerWidth()||0,d;this.up?(d=a.outerHeight(),a.css("top","-"+(d+2)+"px")):(d=b.outerHeight()||0,d+=2,a.css("top",d+"px"),b=d+l.require("$18","html.js").top(b[0]),
72
- d=f.innerHeight-Math.max(0,b-f.pageYOffset),d-=4,a.css("max-height",d+"px"));e>c&&(e-=c-a.width(),a.css("min-width",String(e)+"px"))};k.open=function(){var b=this.list,e=this.wrapper,d=e.data("tipsy");this.active=!0;this.hover=-1;e.addClass("active");b.show().scrollTop(0);d&&d.disable();this!==n&&(n&&c(n),h(f).on("resize scroll",a),n=this);this.resize()};k.close=function(){var a=this.wrapper,b=a.data("tipsy");this.list.hide();this.active=!1;-1!==this.hover&&(this.getElement(this.hover).removeClass("over"),
73
- this.hover=-1);a.removeClass("active");b&&b.enable();c(this)};k.hoverItem=function(a,b){-1!==this.hover&&this.getElement(this.hover).removeClass("over");this.hover=a;-1!==a&&(b=b||this.getElement(a),b.addClass("over"))};k.hoverNext=function(a){var b=this.options.length;if(b){b-=1;if(-1===this.hover)a=0<a?0:b;else{a=this.hover+a;if(0>a){this.close();return}a>b&&(a=0)}this.hoverItem(a)}};k.enableChange=function(a){this.eventName=a;this.eventData=[].slice.call(arguments,1);return this};k.enableConfirm=
74
- function(a){this.confirm=a;return this};k.clearOptions=function(){this.index={};this.length=0;this.options=[];this.list.html("");this.hidden.val("");this.idx=this.hover=-1;return this};k.destroy=function(){this.clearOptions();this.hidden.remove()};k.addOption=function(a,e,c,d,n){var q=this.options.length,k=h("<span></span>").addClass(c||"icon no-icon"),r=h('<span class="label"></span>').text(e||a),r=h("<li></li>").append(k).append(r).appendTo(this.list);n?n=n.split("-").shift():c&&-1!==c.indexOf("lang-"+
75
- a)&&(n=a);n&&k.attr("lang",n);r.attr("data-option",q);this.options[q]={value:a,text:e,lang:n||"",icon:c};this.index[a]=q;this.length=q+1;d?this.disableIndex(q):b(this,q,r);return q};k.disableOption=function(a){return this.disableIndex(this.index[a])};k.disableIndex=function(a){(a=this.getElement(a))&&a.addClass("disabled").off();return this};k.enableOption=function(a){return this.enableIndex(this.index[a])};k.enableIndex=function(a){var e=this.getElement(a);e&&b(this,a,e).removeClass("disabled");
76
- return this};k.each=function(a){for(var b=-1,e=this.options,c=e.length;++b<c;)a(b,e[b]);return this};k.reIndex=function(){for(var a=-1,b={},e=this.options,c=e.length;++a<c;)b[e[a].value]=a;this.index=b;this.length=c};k.selectValue=function(a,b){return this.selectIndex(this.index[a],b)};k.hasValue=function(a){return null!=this.index[a]};k.hasIndex=function(a){return this.length>a};k.getIndex=function(){return this.idx};k.selectIndex=function(a,b){var e=this.options[a];if(e){var c=this,d=c.idx,q=e.value,
77
- n=e.icon||c.defaultIcon,r=function(){null!=d&&c.getElement(d).removeClass("active");c.getElement(a).addClass("active");c.setLabel(e.text).setIcon(n,e.lang);c.hidden.val(q);c.idx=a;b&&c.change()};d===a?c.hidden.val(q):b?"function"===typeof c.confirm?c.confirm.call(null,e,function(a){a&&r()}):c.beforeChange(q)&&r():r();c.active&&c.close()}return this};k.setLabel=function(a){this.selection.text(a);(a=this.prefix)&&this.selection.prepend(h('<span class="prefix"></span>').text(a));return this};k.setIcon=
78
- function(a,b){this.icon.attr("class",a).attr("lang",b||"");return this};k.val=function(){var a=this.options[this.idx];return a&&a.value};k.change=function(){var a=this.val(),b=this.save,e=this.eventName||"change",c=[a].concat(this.eventData||[]);this.wrapper.trigger(e,c);b&&b(a);this.hidden.triggerHandler("change");return this};k.beforeChange=function(a){var b=h.Event("locoBeforeSelect");this.wrapper.trigger(b,[a]);return!b.isDefaultPrevented()};k.renameOption=function(a,b){var e=this.index[a],c=
79
- this.options[e];c&&(c.text=b,this.getElement(e).find("span.label").text(b),e===this.idx&&this.setLabel(b));return this};k.removeOption=function(a){var b=this.index[a],e=this.options[b];e&&(a=this.val(),this.getElement(b).remove(),this.options.splice(b,1),this.reIndex(),a===e.value?this.selectIndex(0,!0):this.selectValue(a,!1))};k.getElement=function(a){return this.list.find("li").eq(a)};k.getWrapper=function(){return this.wrapper};k.tip=function(){return this.getWrapper().data("tipsy")};k.$=function(a,
80
- b){h.fn[a].apply(this.wrapper,b||[]);return this};k.persist=function(a){var b=this.id||this.name,e=a.fetch(b);null!=e&&this.selectValue(e,!0);this.save=function(e){a.store(b,e)};return this};k.listen=function(a){return this.on(this.eventName||"change",a)};k.on=function(a,b){this.wrapper.on(a,b);return this};k=null;return d}({},w,A));l.register("$33",function(d,f,B){function p(b){var c=[],a=h([]);this.hidden=a;this.selected=c;this.selectedIcon="icon icon-checkbox";this.constructor.call(this,b);this.wrapper.addClass("multi");
81
- for(var e,d,k,g=h('<input type="checkbox" name="'+this.name+'[]" />')[0],m=this.options,z=m.length,f=-1;++f<z;)e=this.getElement(f)[0],k=g.cloneNode(!0),c[f]&&(k.checked=!0),k.setAttribute("value",m[f].value),a.push(e.appendChild(k));(d=this.defaultIcon)&&this.setIcon(d);(d=b.attr("title"))?this.setLabel(d):this.wrapper.addClass("no-title")}d.create=function(b){return new p(b)};l.require("$9","LocoSelector.js").extend(p);f=p.prototype;f.selectIndex=function(b,c){return this.setIndexState(b,!this.selected[b],
82
- c)};f.setIndexState=function(b,c,a){var e=this.options[b],d=this.getElement(b),k=this.hidden[b],g=this.selected;e&&c!==g[b]&&(g[b]=c,d[c?"addClass":"removeClass"]("checked"),k&&(k.checked=c),a&&this.change());return this};f.selectValue=function(b,c){if(null==b.pop)return p.parent.prototype.selectValue.call(this,b,c);for(var a=this.selected.slice(),e=this.options.length,d=this.index||{},k=!1,g=-1,m=-1;++g<e;)a[g]&&(k=!0),a[g]=!1;if(e=b.length)for(;++m<e;)g=d[b[m]],null==g?k=!0:!1===a[g]&&(k=a[g]=!0);
83
- if(k){for(g in a)this.setIndexState(g,a[g]);c&&this.change()}return this};f.val=function(){for(var b=[],c=this.options,a=this.selected,e=a.length,d=-1;++d<e;)a[d]&&b.push(c[d].value);return b};f=null;return d}({},w,A));l.register("$44",function(d,f,h){function p(b,a){for(var e=String(b);a>e.length;)e="0"+e;return e}function b(b){var a=b%10;if(1===a){if(11!==b)return"st"}else if(2===a){if(12!==b)return"nd"}else if(3===a&&13!==b)return"rd";return"th"}d.formatter=function(){return{format:function(b,
84
- a){var e=this;return a.replace(/%[YmdHisMjSghAa]/g,function(a){return e[a.charAt(1)](b)})},Y:function(b){return String(b.getFullYear())},m:function(b){return p(1+b.getFullMonth(),2)},M:function(b){return"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ")[b.getMonth()]},d:function(b){return p(b.getDate(),2)},H:function(b){return p(b.getHours(),2)},i:function(b){return p(b.getMinutes(),2)},s:function(b){return p(b.getSeconds(),2)},j:function(b){return String(b.getDate())},S:function(c){return b(c.getDate())},
85
- g:function(b){b=b.getHours();return String(0===b?12:12<b?b-12:b)},h:function(b){return p(this.g(b),2)},a:function(b){return 12>b.getHours()?"am":"pm"},A:function(b){return 12>b.getHours()?"AM":"PM"}}};return d}({},w,A));l.register("$34",function(d,f,B){function p(a){var c=a.id,d=n||(n=[]),q=k||(k={}),v=a.getAttribute("datetime"),v=m(v);if(!isNaN(v))return c||(c="tick"+ ++g,a.setAttribute("id",c)),a={id:c,el:a,dt:new Date(v),st:a.textContent},q[c]||d.push(a),q[c]=a,e||(e=setTimeout(b,200)),a}function b(){for(var a=
86
- n,d=a.length,g={},q=[];0<d--;)ticker=a[d],c(ticker)&&(q.push(ticker),g[ticker.id]=ticker);q.length?(n=q,k=g,e=setTimeout(b,3E4)):e=k=n=null}function c(b){var e=b.el;if(B.contains&&!B.contains(e))return!1;strDate=a(b.dt,new Date,!0);if(""===strDate)return!1;strDate!==b.st&&(h(e).text(strDate),b.st=strDate);return!0}function a(a,b,e){var c=b.getTime(),d=a.getTime(),r=c-d;if(6E4>r)return"Just now";if(36E5>r)return a=Math.floor(r/6E4),String(a)+" minute"+(1===a?"":"s")+" ago";if(864E5>r&&b.getDate()===
87
- a.getDate()&&b.getMonth()===a.getMonth()&&b.getFullYear()===a.getFullYear())return a=Math.round(r/36E5),"About "+String(a)+" hour"+(1===a?"":"s")+" ago";if(e)return"";e=Math.floor(c/864E5)-Math.floor(d/864E5);c=l.require("$44","date.js").formatter();r=c.format(a," %g:%i %A");return 1>=e&&(b.setHours(0),b.setMinutes(0),b.setSeconds(0),b=b.getTime()-864E5,d>=b)?"Yesterday at"+r:11>e?e+" days ago at"+r:c.format(a,"%M %j%S %Y,")+r}var e,n,k,g=0,m=Date.parse||function(){return Number.NaN};d.onEach=function(a,
88
- b){p(b)};d.update=function(a){c(p(a))};d.rel=a;return d}({},w,A));l.register("$18",function(d,f,B){var p=f.ieVersion;d.ie=function(b){return b?p<=b:p};var b=d.init=function(b){b?b instanceof jQuery||(b=h(b)):b=h(B.body);var a=l.require("$31","ga.js"),e=l.require("$19","forms.js"),n=l.require("$32","modal.js"),k=l.require("$10","LocoAutoComplete.js"),g=l.require("$9","LocoSelector.js"),m=l.require("$33","LocoMultiSelector.js"),f=l.require("$11","tooltip.js");b.find("form").each(function(a,b){var c=
89
- h(b);p&&10>p&&e.placeholders(c);b.getAttribute("data-modal")?n.initForm(b):b.hasAttribute("action")&&"#"!==c.attr("action").charAt(0)&&!b.target&&e.jsonify(b);c.find("input.auto-comp").each(function(a,b){k.init(b)});c.find("select.selector").each(function(a,b){b.hasAttribute("multiple")?m.create(h(b)):g.create(h(b))});c.hasClass("hasreveal")&&e.revealify(c);c.find("button.hastip").each(function(a,b){f.init(h(b))})});b.find("a").each(function(b,e){-1!==e.className.indexOf("hastip")&&f.init(h(e));"/modal/"===
90
- String(e.getAttribute("href")).substr(0,7)||e.getAttribute("data-modal")?n.initLink(h(e)):a.link(e)});b.find("time.tick").each(l.require("$34","tick.js").onEach);e=n=k=b=null;return d};d.$=function(b){return h(f.innerShiv?innerShiv(b,!1):b)};h.fn._html=function(c){return null!=c?(c=this.html(f.innerShiv?innerShiv(c,!1):c),b(this),c):j.html()};h.fn.macro=function(b,a){if("function"!==typeof b.run)throw Error("macro has no run function");b.run(this,a||{});return this};d.el=function(b,a){var e=B.createElement(b||
91
- "div");a&&(e.className=a);return e};d.txt=function(b){return B.createTextNode(b||"")};d.h=function(){function b(){d=/[<>&]/g;k=/(\r\n|\n|\r)/g;g=/(?:https?):\/\/([a-zA-Z0-9\-_\.\?%~&;=\/]+(?:#.*)?)/g;b=null}function a(a){return"&#"+a.charCodeAt(0)+";"}function e(a,b){return'<a href="'+a+'">'+b+"</a>"}var d,k,g;return function(m,f){b&&b();var h=m.replace(d,a);f&&(h=h.replace(k,"<br />").replace(g,e));return h}}();d.noop=function(b){b&&(b.preventDefault(),b.stopPropagation(),h(b.target).blur());return!1};
92
- d.top=function(b,a){a||(a=B.body);for(var e=b.offsetTop||0;(b=b.offsetParent)&&b!==a;)e+=b.offsetTop||0;return e};d.left=function(b,a){a||(a=B.body);for(var e=b.offsetLeft||0;(b=b.offsetParent)&&b!==a;)e+=b.offsetLeft||0;return e};return d}({},w,A));l.register("$19",function(d,f,B){function p(a){function b(){a.value===g&&(a.value="",c.removeClass("placeheld"));return!0}function d(){""===a.value&&(a.value=g,c.addClass("placeheld"));return!0}var c=h(a);if(!c.hasClass("auto-comp")){var g=c.attr("placeholder");
93
- if(g)return c.focus(b).blur(d),d(),{kill:function(){b();c.off("focus",b).off("blur",d)}}}}var b=d.enable=function(a){function b(a,e){e.getAttribute("data-was-disabled")||(e.disabled=!1)}a.find(".button").removeClass("loading");a.find("button").each(b);a.find("input").each(b);a.find("select").each(b);a.find("textarea").each(b);f.attachEvent&&a.hasClass("has-placeholders")&&d.placeholders(a);a.removeClass("disabled").trigger("locoEnable");delete a._disabled},c=d.disable=function(a){function b(a,e){e.disabled?
94
- e.setAttribute("data-was-disabled","true"):e.disabled=!0}a._disabled||(a.find(".button").addClass("loading"),a.find("button").each(b),a.find("input").each(b),a.find("select").each(b),a.find("textarea").each(b),a.addClass("disabled").trigger("locoDisable"),a._disabled=!0)};d.jsonify=function(a,e,d){a instanceof jQuery||(a=h(a));a.disable||(h.fn.disable=function(){c(this);return this},h.fn.enable=function(){b(this);this.placehold&&this.placehold();return this});var k="";a.find('[type="submit"]').click(function(a){a&&
95
- a.target&&a.target.name&&(k=encodeURIComponent(a.target.name)+"="+encodeURIComponent(a.target.value));return!0});a.submit(function(b){if(b&&b.isDefaultPrevented&&b.isDefaultPrevented()||d&&!1===d(b))return!1;var c=a.serialize(),c=c.replace(/%0D%0A/g,"%0A");k&&(c&&(c+="&"),c+=k,k="");a.disable();var f=l.require("$22","http.js"),c={url:f.jsonLink(a.attr("action")),type:a.attr("method"),data:c};f.ajax(c,e,function(){a.enable()},a);b.preventDefault();b.stopPropagation();return!1})};d.revealify=function(a){a=
96
- a.closest("form");a.find("div[data-reveal-if]").each(function(b,c){function d(a){var b;b=p;r=r||a.target;if("."===q)b=Boolean(r&&r[v]),p&&(b=!b);else{var e,c,y=h(r.form).serializeArray();for(c in y)y[c].name===s&&(e=y[c].value);"!="===q&&(b=!b);b=b?v!==e:v===e}if(b!==f)if(f=b,a)g[f?"slideDown":"slideUp"](200);else g[f?"show":"hide"]();return!0}var g=h(c),m=/^(\!?)([_\w\-\[\]]+)(\.|!?=)(.*)$/.exec(g.attr("data-reveal-if"));if(m){var f,p=m[1]?!0:!1,s=m[2],q=m[3],v=m[4],m=a[0][s];if(m.type||null==m.length)m=
97
- [m];b=m.length;for(var r;0!==b--;)r=m[b],d(),h(r).change(d).removeClass("jshide");m=m=r=null}});a=null};d.linkify=function(a){var b=a.getAttribute("data-icon");if(b){var c=h(a),d=h("<a> </a>");d.attr("href",a.form.action);d.attr("class",c.attr("class"));d.attr("tabindex",c.attr("tabindex"));c.attr("tabindex","-1");d.text(c.val());b&&h("<span></span>").prependTo(d).addClass(b);c.hide().after(d);d.click(function(a){c.click();return!1})}};d.placeholders=function(a){var b,c=[];a.find("input[placeholder]").each(function(a,
98
- d){"password"!==d.type&&(b=p(d))&&c.push(b)});c.length&&(a.submit(function(){for(var a in c)c[a].kill()}),a.addClass("has-placeholders"),b=i=null)};return d}({},w,A));l.register("$4",function(d,f,B){function p(a,b,e){function c(){d();g=setTimeout(b,e)}function d(){g&&clearTimeout(g);g=null}var g;c();h(a).mouseenter(d).mouseleave(c);return{die:function(){d();h(a).off("mouseenter mouseleave")}}}function b(a,b){a.fadeTo(b,0,function(){a.slideUp(b,function(){a.remove();h(f).triggerHandler("resize")})})}
99
- function c(a,e){function c(e){k[m]=null;b(h(a),250);d&&d.die();var r;if(r=e)e.stopPropagation(),e.preventDefault(),r=!1;return r}var d,m;h(a).addClass("is-dismissible");h('<button type="button" class="notice-dismiss" href="#"> </a>').prependTo(a).click(c);h(f).triggerHandler("resize");g();m=k.length;k.push(c);e&&(d=p(a,c,e));return{stick:function(){d&&d.die();d=null;k[m]=null}}}function a(a,b,e){var c=l.require("$18","html.js");a=h('<div class="notice notice-'+a+'" loco-notice inline></div>').prependTo(h("#loco-notices"));
100
- var d=h(c.el("p"));e=h(c.el("span")).text(e);b=h(c.el("strong","has-icon")).text(b+": ");d.append(b).append(e).appendTo(a);return a}function e(b,e,d,g){b=a(d,e,b).hide().fadeIn(500);h(f).triggerHandler("resize");return c(b,g)}function n(){h("#loco-notices").find("div.notice").each(function(a,b){if(-1===b.className.indexOf("jshide")){var e=-1===b.className.indexOf("notice-success")?null:5E3;c(b,e)}})}var k=[],g=Date.now||function(){return(new Date).getTime()},m,z,D,s;d.error=function(a){return e(a,
101
- m,"error")};d.warning=function(a){return e(a,z,"warning")};d.info=function(a){return e(a,D,"info")};d.success=function(a){return e(a,s,"success",5E3)};d.log=function(){f.console&&console.log&&console.log.apply(console,arguments)};d.debug=function(a,b){f.console&&console.error&&(console.error("Loco Error: "+a),b&&console.debug&&console.debug(b))};d.clear=function(){for(var a=-1,b,e=k,c=e.length;++a<c;)(b=e[a])&&b();k=[];return d};d.create=a;d.raise=function(a){(d[a.type]||d.error).call(d,a.message)};
102
- d.convert=c;d.init=function(a){m=a._("Error");z=a._("Warning");D=a._("Notice");s=a._("OK");setTimeout(n,1E3);return d};return d}({},w,A));l.register("$5",function(d,f,B){function p(a){var b=h("<pre>"+a+"</pre>").text();b&&(b=b.replace(/[\r\n]+/g,"\n").replace(/(^|\n)\s+/g,"$1").replace(/\s+$/,""));b||(b=a)||(b="Blank response from server");return b}function b(a){return(a=a.split(/[\r\n]/)[0])?(a=a.replace(/ +in +\S+ on line \d+/,""),a=a.replace(/^[()! ]+Fatal error:\s*/,"")):t._("Server returned invalid data")}
103
- function c(a,c,d,g){function q(c,g,q){if("abort"!==g){var k=e||{_:function(a){return a}},z=c.status,y=c.responseText,h=p(y),s=c.getResponseHeader("Content-Type")||"text/html",H=c.getResponseHeader("Content-Length")||y.length;"success"===g&&q?f.error(q):(f.error(b(h)+".\n"+k._("Check console output for debugging information")),f.debug("Ajax failure for "+a,{status:z,error:g,message:q,output:y}),"parsererror"===g&&(q="Response not JSON"),f.log([k._("Provide the following text when reporting a problem")+
104
- ":","----","Status "+z+' "'+(q||k._("Unknown error"))+'" ('+s+" "+H+" bytes)",h,"===="].join("\n")));d&&d.call&&d(c,g,q);n=c}}g.url=k;g.dataType="json";g.error=q;g.success=function(a,b,e){var d=a&&a.data,g=a&&a.notices,y=g&&g.length;for(!d||a.error?q(e,b,a&&a.error&&a.error.message):c&&c(d,b,e);y--;)f.raise(g[y])};var f=l.require("$4","notices.js").clear();return h.ajax(g)}var a={},e,n,k=f.ajaxurl||"/wp-admin/admin-ajax.php",g=f.encodeURIComponent;d.init=function(b){a=b.nonces||a;return d};d.localise=
105
- function(a){e=a;return d};d.xhr=function(){return n};d.strip=p;d.parse=b;d.submit=function(a,b,e){function d(){g.removeClass("loading");l.require("$19","forms.js").enable(g)}var g=h(a),n=g.serialize();g.addClass("loading");l.require("$19","forms.js").disable(g);return c(a.route.value,function(a,e,c){d();b&&b(a,e,c)},function(a,b,c){d();e&&e(a,b,c)},{type:a.method,data:n})};d.post=function(b,e,d,n){var q;(q=a[b])||(f.console&&console.debug&&console.debug('No nonce for "'+b+'"'),q="");q="action=loco_json&route="+
106
- g(b)+"&loco-nonce="+g(q);(e=e?h.param(e):"")&&(q+="&"+e);return c(b,d,n,{type:"post",data:q})};d.setNonce=function(b,e){a[b]=e;return d};d.hasNonce=function(b){return!!a[b]};return d}({},w,A));l.register("$20",{arab:1,aran:1,hebr:1,nkoo:1,syrc:1,syrn:1,syrj:1,syre:1,samr:1,mand:1,mend:1,thaa:1,adlm:1,cprt:1,phnx:1,armi:1,prti:1,phli:1,phlp:1,phlv:1,avst:1,mani:1,khar:1,orkh:1,ital:1,lydi:1,ar:1,ary:1,ckb:1,dv:1,fa:1,he:1,nqo:1,ps:1,ur:1,yi:1});l.register("$6",function(d,f,h){function p(){}var b,c=
107
- l.require("$20","rtl.json");d.init=function(){return new p};d.cast=function(a){return a instanceof p?a:"string"===typeof a?d.parse(a):d.clone(a)};d.clone=function(a){var b,c=new p;for(b in a)c[b]=a[b];return c};d.parse=function(a){if(!(b||(b=/^([a-z]{2,3})(?:[-_]([a-z]{2}))?(?:[-_]([a-z0-9]{3,8}))?$/i)).exec(a))return null;var e=new p;e.lang=RegExp.$1.toLowerCase();if(a=RegExp.$2)e.region=a.toUpperCase();if(a=RegExp.$3)e.variant=a.toLowerCase();return e};f=p.prototype;f.isValid=function(){return!!this.lang};
108
- f.isKnown=function(){var a=this.lang;return!(!a||"zxx"===a)};f.toString=function(a){a=a||"-";var b,c=this.lang||"zxx";if(b=this.region)c+=a+b;if(b=this.variant)c+=a+b;return c};f.getIcon=function(){for(var a=3,b,c,d=["variant","region","lang"],g=[];0!==a--;)if(b=d[a],c=this[b])g.push(b),g.push(b+"-"+c.toLowerCase());return g.join(" ")};f.isRTL=function(){return!!c[String(this.lang).toLowerCase()]};f=null;return d}({},w,A));l.register("$38",function(d,f,h){function p(){}var b,c,a=l.require("$20","rtl.json");
109
- d.init=function(){return new p};d.cast=function(a){return a instanceof p?a:"string"===typeof a?d.parse(a):d.clone(a)};d.clone=function(a){var b,c=new p;for(b in a)c[b]=a[b];return c};d.parse=function(a){b||(c=/[-_+]/,b=/^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}|[0-9]{3}))?(?:-([0-9][a-z0-9]{3,8}|[a-z0-9]{5,8}))?(?:-([a-z]-[-a-z]+))?$/i);a=String(a).split(c).join("-");if(!b.exec(a))return null;var d=new p;d.lang=RegExp.$1.toLowerCase();if(a=RegExp.$2)d.script=a.charAt(0).toUpperCase()+a.substr(1).toLowerCase();
110
- if(a=RegExp.$3)d.region=a.toUpperCase();if(a=RegExp.$4)d.variant=a.toLowerCase();if(a=RegExp.$5)d.extension=a;return d};f=p.prototype;f.isValid=function(){return!!this.lang};f.isKnown=function(){var a=this.lang;return!(!a||"zxx"===a)};f.toString=function(a){a=a||"-";var b,c=this.lang||"zxx";if(b=this.script)c+=a+b;if(b=this.region)c+=a+b;if(b=this.variant)c+=a+b;if(b=this.extension)c+=a+b;return c};f.getIcon=function(){for(var a=4,b,c,d=["variant","region","script","lang"],m=[];0!==a--;)if(b=d[a],
111
- c=this[b])1===a&&3===c.length?m.push("region-m49"):m=m.concat([b,b+"-"+c.toLowerCase()]);return m.join(" ")};f.isRTL=function(){return!!a[String(this.script||this.lang).toLowerCase()]};f=null;return d}({},w,A));l.register("$39",function(d,f,h){function p(a){f.console&&console.error&&console.error(a)}function b(){p("Method not implemented")}function c(){}function a(a){}c.prototype.toString=function(){return"[Undefined]"};a.prototype._validate=function(a){var d,k,g=!0;for(d in this)k=this[d],k===b?
112
- (p(a+"."+d+"() must be implemented"),g=!1):k instanceof c&&(p(a+"."+d+" must be defined"),g=!1);return g};d.init=function(e,d){var k,g=new a;if(e)for(k=e.length;0!==k--;)g[e[k]]=b;if(d)for(k=d.length;0!==k--;)g[d[k]]=new c;return g};d.validate=function(a){var b=/function (\w+)\(/.exec(a.toString())?RegExp.$1:"";a.prototype._validate(b||"Object")};return d}({},w,A));l.register("$49",function(d,f,h){var p=f.requestAnimationFrame,b=f.cancelAnimationFrame,c=0;if(!p||!b)for(var a in{ms:1,moz:1,webkit:1,
113
- o:1})if(p=f[a+"RequestAnimationFrame"])if(b=f[a+"CancelAnimationFrame"]||f[a+"CancelRequestAnimationFrame"])break;p&&b||(p=function(a){var b=e();timeToCall=Math.max(0,16-(b-c));nextTime=b+timeToCall;timerId=f.setTimeout(function(){a(nextTime)},timeToCall);c=nextTime;return timerId},b=function(a){clearTimeout(a)});var e=Date.now||function(){return(new Date).getTime()};d.loop=function(a,e){function c(){f=p(c,e);a(d++)}var d=0,f;c();return{stop:function(){f&&b(f);f=null}}};return d}({},w,A));l.register("$45",
114
- function(d,f,h){function p(b,e,c,d){if(a){var g=c;c=function(a){if((a.MSPOINTER_TYPE_TOUCH||"touch")===a.pointerType)return g(a)}}b.addEventListener(e,c,d);return{unbind:function(){b.removeEventListener(e,c,d)}}}function b(a){a.preventDefault();a.stopPropagation();return!1}var c,a=!!f.navigator.msPointerEnabled,e=a?"MSPointerDown":"touchstart",n=a?"MSPointerMove":"touchmove",k=a?"MSPointerUp":"touchend";d.ok=function(a){null==c&&(c="function"===typeof h.body.addEventListener);c&&a&&a(d);return c};
115
- d.ms=function(){return a};d.dragger=function(a,c){function d(b){a.addEventListener(b,f[b],!1)}function q(b){a.removeEventListener(b,f[b],!1)}var f={};f[e]=function(a){g(a,function(b,d){d.type=e;c(a,d,r)});d(n);d(k);return!0};f[k]=function(a){q(n);q(k);g(a,function(b,e){e.type=k;c(a,e,r)});return!0};f[n]=function(a){g(a,function(b,e){e.type=n;c(a,e,r)});return b(a)};d(e);var r={kill:function(){q(e);q(n);q(k);a=r=c=null}};return r};d.swiper=function(c,d,f){function q(a){c.addEventListener(a,u[a],!1)}
116
- function v(a){c.removeEventListener(a,u[a],!1)}function r(){h&&h.stop();h=null}var h,C,p,u={},y=[],F=[],K=[];u[e]=function(a){C=!1;r();var b=m();g(a,function(a,e){y[a]=b;F[a]=e.clientX;K[a]=e.clientY});p=c.scrollLeft;return!0};u[k]=function(a){g(a,function(a,b){var e=m()-y[a],c=F[a]-b.clientX,e=Math.abs(c)/e;d(e,c?0>c?-1:1:0)});p=null;return!0};u[n]=function(a){var e,d;null==p||g(a,function(a,b){e=F[a]-b.clientX;d=K[a]-b.clientY});if(d&&Math.abs(d)>Math.abs(e))return C=!0;e&&(C=!0,c.scrollLeft=Math.max(0,
117
- p+e));return b(a)};if(!a||f)q(e),q(n),q(k),a&&(c.className+=" mstouch");return{kill:function(){v(e);v(n);v(k);r()},swiped:function(){return C},ms:function(){return a},snap:function(b){a&&!f&&(c.style["-ms-scroll-snap-points-x"]="snapInterval(0px,"+b+"px)",c.style["-ms-scroll-snap-type"]="mandatory",c.style["-ms-scroll-chaining"]="none")},scroll:function(a,b,e){r();var d=c.scrollLeft,g=a>d?1:-1,q=Math[1===g?"min":"max"],y=Math.round(16*b*g);return h=l.require("$49","fps.js").loop(function(b){b&&(d=
118
- Math.max(0,q(a,d+y)),c.scrollLeft=d,a===d&&(r(),e&&e(d)))},c)}}};d.start=function(a,b){return p(a,e,b,!1)};d.move=function(a,b){return p(a,n,b,!1)};d.end=function(a,b){return p(a,k,b,!1)};var g=d.each=function(b,e){if(a)(b.MSPOINTER_TYPE_TOUCH||"touch")===b.pointerType&&e(0,b);else for(var c=-1,d=(b.originalEvent||b).changedTouches||[];++c<d.length;)e(c,d[c])},m=Date.now||function(){return(new Date).getTime()};return d}({},w,A));l.register("$50",function(d,f,l){d.init=function(d){function b(){f.style.top=
119
- String(-d.scrollTop)+"px";return!0}function c(){var b=f;b.textContent=d.value;b.innerHTML=b.innerHTML.replace(/[ \t]/g,a).split(/(?:\n|\r\n?)/).join('<span class="eol crlf"></span>\r\n')+'<span class="eol eof"></span>';return!0}function a(a){return'<span class="x'+a.charCodeAt(0).toString(16)+'">'+a+"</span>"}var e=d.parentNode,f=e.insertBefore(l.createElement("div"),d);h(d).on("input",c).on("scroll",b);h(e).addClass("has-mirror");f.className="ta-mirror";var k=d.offsetWidth-d.clientWidth;2<k&&(f.style.marginRight=
120
- String(k-2)+"px");c();b();return{kill:function(){h(d).off("input",c).off("scroll",b);e.removeChild(f);f=null;h(e).removeClass("has-mirror")}}};return d}({},w,A));l.register("$30",function(d,f,h){function p(a,e){for(var c=0,d=-1,g=e&&f[e],m=b[a]||[],h=m.length;++d<h;)callback=m[d],"function"===typeof callback&&(callback(g),c++);return c}var b={},c;d.load=function(a,e,c){function d(){z&&(clearTimeout(z),z=null);l&&(l.onreadystatechange=null,l=l=l.onload=null);a&&(delete b[a],a=null)}function g(b,e){var g=
121
- l&&l.readyState;if(e||!g||"loaded"===g||"complete"===g)e||p(a,c),d()}function m(){if(0===p(a))throw Error('Failed to load "'+(c||a)+'"');d()}if(c&&f[c])"function"===typeof e&&e(f[c]);else if(null!=b[a])b[a].push(e);else{b[a]=[e];var z=setTimeout(m,4E3),l=h.createElement("script");l.setAttribute("src",a);l.setAttribute("async","true");l.onreadystatechange=g;l.onload=g;l.onerror=m;l.onabort=d;h.getElementsByTagName("head")[0].appendChild(l)}};d.stat=function(a){var b;if(!(b=c)){for(var d,f,g=h.getElementsByTagName("script"),
122
- m=-1,p=g.length;++m<p;)if(b=g[m].getAttribute("src"))if(d=b.indexOf("/lib/vendor"),-1!==d){f=b.substr(0,d);break}b=c=f||"/static"}return b+a};return d}({},w,A));l.register("$15",function(d,f,B){function p(a,b){a.setReadOnly(!1);a.on("change",function(a,e){return b.val(e.getValue())});a.on("focus",function(){return b.focus()});a.on("blur",function(){return b.blur()})}function b(a){a.off("change");a.off("focus");a.off("blur")}function c(a){b(a);a.setReadOnly(!0);a.setHighlightGutterLine(!1);a.setHighlightActiveLine(!1)}
123
- function a(a,b){function c(){this.HighlightRules=d}var d=e(b),g=a.require,f=g("ace/lib/oop");f.inherits(d,g("ace/mode/text_highlight_rules").TextHighlightRules);f.inherits(c,g("ace/mode/text").Mode);return new c}function e(a){return function(){var b={start:[{token:"empty_line",regex:/^$/},{token:"constant.language",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{token:"constant.language",regex:/<!\[CDATA\[/},{token:"constant.language",regex:/\]\]>/},{token:"locked",regex:/<(?:xliff:)?(?:g|ph)[^>]*>[^<]*<\/(?:xliff:)?(?:g|ph)>/},
 
 
 
124
  {token:"locked",regex:/<(?:xliff:)?(bx|ex|x)[^\/>]*\/>/},{token:"constant.language",regex:/<\/?[:a-z]+[^>]*>/}]},e=n(a);"icu"===a?b={start:b.start.concat([{token:"icu-quoted",regex:/'([{}][^']*)?'/},{token:"printf",regex:"{[^!-/:-@\\[-^{-~\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a9\u00ab\u00ac\u00ae\u00b0\u00b1\u00b6\u00bb\u00bf\u00d7\u00f7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]+(,[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]*(?:number|date|time|spellout|ordinal|duration)[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]*(,[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]*[^{}]+)?)?}"},
125
  {token:"icu",regex:/{/,next:"icuName"},{token:"icu",regex:/}/,next:"icuType"}]),icuName:[{token:"icu",regex:"[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]+"},{token:"icu.name",regex:"[^\\s\\u0085\\u200E\\u200F\\u2028\\u2029!-/:-@\\[-^{-~\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a9\u00ab\u00ac\u00ae\u00b0\u00b1\u00b6\u00bb\u00bf\u00d7\u00f7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]+",
126
  next:"icuType"},{defaultToken:"icu",next:"icuType"}],icuType:[{token:"icu",regex:/[{}]/,next:"start"},{defaultToken:"icu"}]}:e&&b.start.push({token:"printf",regex:e});this.$rules=b}}function n(a){switch(a){case "objc":return/%(?:\d+\$)?[-+'0# ]*\d*(?:\.\d+|\.\*(?:\d+\$)?)?(?:hh?|ll?|[qjzTL])?[sScCdDioOuUxXfFeEgGaAp%@]/;case "java":return/%(?:\d+\$)?[-+,(0# ]*\d*(?:\.\d+)?(?:[bBhHsScCdoxXeEfgGaA%n]|[tT][HIklMSLNpzZsQBbhAaCYyjmdeRTrDFc])/;case "php":return/%(?:\d+\$)?(?:'.|[-+0 ])*\d*(?:\.\d+)?[suxXbcdeEfFgGo%]/;
127
- case "javascript":return/%(?:[1-9]\d*\$)?\+?(?:0|'[^$])?-?\d*(?:\.\d+)?[b-gijostTuvxX%]/;case "auto":return/%(?:\d+\$)?(?:[-+0]?\d*(\.\d+)?[duxoefgaDUXOEFGA]|[@scSC%])/;case g:return k||"%%"}}var k,g="auto";d.init=function(e,d,k){var n,q=!1,v=k||g,r=e.parentNode,E=r.appendChild(B.createElement("div"));h(r).addClass("has-proxy has-ace");l.require("$30","remote.js").load("https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js",function(b){if(E){if(!b)throw Error("Failed to load code editor");n=b.edit(E);
128
- var r=n.session,g=n.renderer;n.$blockScrolling=Infinity;n.setShowInvisibles(q);n.setWrapBehavioursEnabled(!1);n.setBehavioursEnabled(!1);n.setHighlightActiveLine(!1);r.setUseSoftTabs(!1);g.setShowGutter(!0);g.setPadding(10);g.setScrollMargin(8);r.setMode(a(b,v));n.setValue(e.value,-1);r.setUseWrapMode(!0);d?p(n,d):c(n)}},"ace");return{kill:function(){n&&(b(n),n.destroy(),n=null);E&&(r.removeChild(E),h(r).removeClass("has-proxy has-ace"),E=null);return this},disable:function(){n&&c(n);d=null;return this},
129
- enable:function(a){d=a;n&&p(n,a);return this},resize:function(){n&&n.resize();return this},val:function(a){n&&a!==n.getValue()&&n.setValue(a,-1);return this},invs:function(a){a=a||!1;q!==a&&(q=a,n&&n.setShowInvisibles(a));return this},strf:function(b){b=b||g;b!==v&&(v=b,n&&n.session.setMode(a(f.ace,b)));return this},focus:function(){return this}}};d.strf=function(a,b){g=a;k=b;return d};return d}({},w,A));l.register("$51",function(d,f,B){function p(a,b){function c(){return b.val(a.getContent())}a.on("input",
130
- c);a.on("change",c);a.on("focus",function(){return b.focus()});a.on("blur",function(){return b.blur()});a.setMode("design")}function b(a){a.off("input");a.off("change");a.off("focus");a.off("blur")}function c(a){b(a);a.setMode("readonly")}var a=0;d.load=function(a){var b=l.require("$30","remote.js");b.load(b.stat("/lib/tinymce.min.js"),a,"tinymce");return d};d.init=function(e,f){function k(a){l=a;s="<p>"===a.substr(0,3)&&"</p>"===a.substr(-4);return a.replace(/(<\/?)script/ig,"$1loco:script")}function g(a){m=
131
- a;a._getContent=a.getContent;a.getContent=function(a){a=this._getContent(a);a=a.replace(/(<\/?)loco:script/ig,"$1script");if(!s&&"<p>"===a.substr(0,3)&&"</p>"===a.substr(-4)){var b=a.substr(3,a.length-7);if(b===l||-1===b.indexOf("</p>"))a=b}return a};a._setContent=a.setContent;a.setContent=function(a,b){return this._setContent(k(a),b)};f?(p(a,f),f.reset()):c(a);h(r).removeClass("loading")}var m,z=!1,l="",s=!1,q=e.parentNode,v=q.parentNode,r=q.appendChild(B.createElement("div")),E=v.insertBefore(B.createElement("nav"),
132
- q);E.id="_tb"+String(++a);h(q).addClass("has-proxy has-mce");h(r).addClass("mce-content-body loading").html(k(e.value));d.load(function(a){if(!a)throw Error("Failed to load HTML editor");r&&a.init({inline:!0,target:r,hidden_input:!1,theme:"modern",skin:!1,plugins:"link lists",browser_spellcheck:!0,menubar:!1,fixed_toolbar_container:"#"+E.id,toolbar:"formatselect | bold italic link unlink | bullist numlist outdent indent",block_formats:"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h4;Heading 4=h4;Heading 5=h5;Heading 6=h6;",
133
  forced_root_block:"p",relative_urls:!1,convert_urls:!1,remove_script_host:!1,document_base_url:"",allow_script_urls:!1,formats:{alignleft:{classes:"alignleft"},alignright:{selector:"p,h1,h2,h3,h4,span,strong,em,a",classes:"alignright"},aligncenter:{selector:"p,h1,h2,h3,h4,span,strong,em,a",classes:"aligncenter"},strikethrough:{inline:"del"}},fix_list_elements:!0,extended_valid_elements:"span,b,i,u,loco:script",entities:"38,amp,60,lt,62,gt,160,nbsp",entity_encoding:"named",keep_styles:!1,init_instance_callback:g})});
134
- return{val:function(a){a=k(a);null==m?(e.value=a,h(r).html(a)):m.getContent()!==a&&m.setContent(a);f&&f.val(a);return this},kill:function(){m&&(f&&f.val(m.getContent()),b(m),m.destroy(),m=null);r&&(q.removeChild(r),h(q).removeClass("has-proxy has-mce"),r=null);E&&(v.removeChild(E),E=null);return this},enable:function(a){f=a;m&&p(m,a);return this},disable:function(){m&&c(m);f=null;return this},focus:function(){m&&f&&m.focus();return this},invs:function(a){a=a||!1;z!==a&&(z=a,h(q)[a?"addClass":"removeClass"]("show-invs"));
135
- return this}}};return d}({},w,A));l.register("$46",function(d,f,B){function p(a){function b(){p&&(l.off("input",d),p=!1)}function d(){var b=a.value;b!==q&&(l.trigger("changing",[b,q]),q=b)}function f(){d();p&&v!==q&&l.trigger("changed",[q])}function g(){c=a;v=q;p||(l.on("input",d),p=!0);l.trigger("editFocus");s.addClass("has-focus");return!0}function m(){c===a&&(c=null);l.trigger("editBlur");s.removeClass("has-focus");p&&(f(),b());return!0}var p=!1,l=h(a),s=h(a.parentNode),q=a.value,v;l.blur(m).focus(g);
136
- return{val:function(b){q!==b&&(a.value=b,l.triggerHandler("input"),q=b);return!0},kill:function(){b();l.off("blur",m).off("focus",g)},fire:function(){q=null;d()},ping:f,blur:m,focus:g,reset:function(){v=q=a.value}}}function b(a){this.e=a}var c;d._new=function(a){return new b(a)};d.init=function(a){var e=new b(a);a.disabled?(a.removeAttribute("disabled"),e.disable()):a.readOnly?e.disable():e.enable();return e};TextAreaPrototype=b.prototype;TextAreaPrototype.destroy=function(){this.unlisten();var a=
137
- this.p;a&&(a.kill(),this.p=null);this.e=null};TextAreaPrototype.reload=function(a,b){var c=this.l;c&&!b&&(this.disable(),c=null);this.val(a||"");b&&!c&&this.enable();return this};TextAreaPrototype.val=function(a){var b=this.e;if(null==a)return b.value;var c=this.l,d=this.p;d&&d.val(a);c&&c.val(a);c||b.value===a||(b.value=a,h(b).triggerHandler("input"));return this};TextAreaPrototype.fire=function(){this.l&&this.l.fire();return this};TextAreaPrototype.ping=function(){this.l&&this.l.ping();return this};
138
- TextAreaPrototype.focus=function(){var a=this.p;a?a.focus():h(this.e).focus()};TextAreaPrototype.focused=function(){return c&&c===this.el};TextAreaPrototype.parent=function(){return this.e.parentNode};TextAreaPrototype.attr=function(a,b){var c=this.e;if(1===arguments.length)return c.getAttribute(a);null==b?c.removeAttribute(a):c.setAttribute(a,b);return this};TextAreaPrototype.editable=function(){return!!this.l};TextAreaPrototype.enable=function(){var a=this.p;this.e.removeAttribute("readonly");this.listen();
139
- a&&a.enable&&a.enable(this.l);return this};TextAreaPrototype.disable=function(){var a=this.p;this.e.setAttribute("readonly",!0);this.unlisten();a&&a.disable&&a.disable();return this};TextAreaPrototype.listen=function(){var a=this.l;a&&a.kill();this.l=p(this.e);return this};TextAreaPrototype.unlisten=function(){var a=this.l;a&&(a.kill(),this.l=null);return this};TextAreaPrototype.setInvs=function(a,b){var c=this.i||!1;if(b||c!==a)this._i&&(this._i.kill(),delete this._i),(c=this.p)?c.invs&&c.invs(a):
140
- a&&(this._i=l.require("$50","mirror.js").init(this.e)),this.i=a;return this};TextAreaPrototype.getInvs=function(){return this.i||!1};TextAreaPrototype.setMode=function(a){var b=this.p,d=this.i||!1;a!==(this.m||"")&&(this.m=a,b&&b.kill(),this.p=b="code"===a?l.require("$15","ace.js").init(this.e,this.l,this["%"]):"html"===a?l.require("$51","mce.js").init(this.e,this.l):null,this.setInvs(d,!0),c&&this.focus());return this};TextAreaPrototype.setStrf=function(a){this["%"]=a;"code"===this.m&&this.p.strf(a);
141
- return this};TextAreaPrototype.name=function(a){this.e.setAttribute("name",a);return this};TextAreaPrototype.placeholder=function(a){this.e.setAttribute("placeholder",a);return this};TextAreaPrototype.redraw=function(){var a=this.p;a&&a.resize&&a.resize()};TextAreaPrototype=null;return d}({},w,A));l.register("$47",function(d,f,l){function p(a){var b=f.console;b&&b.error&&b.error(a)}function b(a){var b=l.createElement("div");a&&b.setAttribute("class",a);return b}function c(a){return function(){a.resize();
142
- return this}}function a(a){return function(b){for(var c=b.target,d=c.$index;null==d&&"DIV"!==c.nodeName&&(c=c.parentElement);)d=c.$index;null!=d&&(b.stopImmediatePropagation(),a.select(d));return!0}}function e(a){return function(){a.redrawDirty()&&a.redraw();return!0}}function n(a){return function(b){var c;c=b.keyCode;if(40===c)c=1;else if(38===c)c=-1;else return!0;if(b.shiftKey||b.ctrlKey||b.metaKey||b.altKey)return!0;a.selectNext(c);b.stopPropagation();b.preventDefault();return!1}}function k(a,
143
- b,c){function d(a){p("row["+a+"] disappeared");return{cellVal:function(){return""}}}return function(e){var g=b||0,f=c?-1:1,y=a.rows||[];e.sort(function(a,b){return f*(y[a]||d(a)).cellVal(g).localeCompare((y[b]||d(b)).cellVal(g))})}}function g(a){this.w=a}function m(a){this.t=a;this.length=0}function z(a,b,c){var d=l.createElement("div");d.className=c||"";this._=d;this.d=b||[];this.i=a||0;this.length=b.length}function D(a){this.live=a;this.rows=[]}d.create=function(a){return new g(a)};var s=g.prototype;
144
- s.init=function(d){var g=this.w,r=g.id,f=g.splity(r+"-thead",r+"-tbody"),k=f[0],f=f[1],m=[],p=[],y=[],F=[];if(d)this.ds=d,this.idxs=p,this._idxs=null;else if(!(d=this.ds))throw Error("No datasource");k.css.push("wg-thead");f.css.push("wg-tbody");d.eachCol(function(a,b,c){y[a]=r+"-col-"+b;F[a]=c||b});for(var l=b(),s=-1,D=y.length,L=b("wg-cols"),B=k.splitx.apply(k,y);++s<D;)B[s].header(F[s]),L.appendChild(l.cloneNode(!1)).setAttribute("for",y[s]);d.eachRow(function(a,b,c){m[a]=new z(a,b,c);p[a]=a});
145
- this.rows=m;this.cols=L;this.ww=null;this.root=l=f.body;this.head=k;k.redraw=c(this);k=f.fixed=B[0].bodyY()||20;g.lock().resize(k,f);g.css.push("is-table");g.restyle();this.sc?this._re_sort(D):d.sort&&d.sort(p);this.redrawDirty();this.render();h(l).attr("tabindex","-1").on("keydown",n(this)).on("mousedown",a(this)).on("scroll",e(this));return this};s.clear=function(){for(var a=this.pages||[],b=a.length;0!==b--;)a[b].destroy();this.pages=[];this.sy=this.mx=this.mn=this.vh=null;void 0;return this};
146
- s.render=function(){for(var a,b,c=[],d=this.rows||[],e=-1,g,f=this.idxs,y=f.length,k=this.idxr={},m=this.r,h=this._r,n=this.root,p=this.cols;++e<y;){0===e%100&&(a=p.cloneNode(!0),b=new D(a),b.h=2200,b.insert(n),c.push(b));g=f[e];k[g]=e;a=d[g];if(null==a)throw Error("Render error, no data at ["+g+"]");a.page=b;b.rows.push(a)}b&&100!==b.size()&&b.sleepH(22);this.pages=c;this.mx=this.mn=null;this.redrawDirty();this.redraw();null==m?null!=h&&(a=d[h])&&a.page&&(delete this._r,this.select(h,!0)):(a=d[m])&&
147
- a.page?this.select(m,!0):(this.deselect(),this._r=m);return this};s.resize=function(){var a=-1,b=this.ww||(this.ww=[]),c=this.w,d=c.cells[0],e=d.body.childNodes,g=e.length,f=this.pages||[],y=f.length;for(c.redraw.call(d);++a<g;)b[a]=e[a].style.width;if(y){c=this.mx;for(a=this.mn;a<=c;a++)f[a].widths(b);this.redrawDirty()&&this.redraw()}};s.redrawDirty=function(){var a=!1,b=this.root,c=b.scrollTop,b=b.clientHeight;this.sy!==c&&(a=!0,this.sy=c);this.vh!==b&&(a=!0,this.vh=b);return a};s.redraw=function(){for(var a=
148
- 0,b=-1,c=null,d=null,e=this.ww,g=this.sy,f=this.vh,y=this.mn,k=this.mx,m=Math.max(0,g-100),g=f+g+100,h=this.pages||[],n=h.length;++b<n&&!(a>g);)f=h[b],a+=f.height(),a<m||(null===c&&(c=b),d=b,f.rendered||f.render(e));if(y!==c){if(null!==y&&c>y)for(b=y;b<c;b++){f=h[b];if(!f)throw Error("Shit!");f.rendered&&f.sleep()}this.mn=c}if(k!==d){if(null!==k&&d<k)for(b=k;b>d;b--)f=h[b],f.rendered&&f.sleep();this.mx=d}};s.selected=function(){return this.r};s.thead=function(){return this.w.cells[0]};s.tbody=function(){return this.w.cells[1]};
149
- s.tr=function(a){return(a=this.row(a))?a.cells():[]};s.row=function(a){return this.rows[a]};s.td=function(a,b){return this.tr(a)[b]};s.next=function(a,b,c){null==c&&(c=this.r||0);var d=this.idxs,e=d.length,g=(this.idxr||{})[c];for(c=g;c!==(g+=a)&&!(0<=g&&e>g);)if(b&&e)g=1===a?-1:e,b=!1;else return null;c=d[g];return null==c||null==this.rows[c]?(p("Bad next: ["+g+"] does not map to data row"),null):c};s.selectNext=function(a,b,c){a=this.next(a,b);null!=a&&this.r!==a&&this.select(a,c);return this};
150
- s.deselect=function(a){var b=this.r;null!=b&&(this.r=null,h(this.tr(b)).removeClass("selected"),this.w.fire("wgRowDeselect",[b,a]));return this};s.selectRow=function(a,b){return this.select(this.idxs[a])};s.select=function(a,b){var c=this.rows[a],d=c&&c.page;if(!d)return this.deselect(!1),p("Row is filtered out"),this;this.deselect(!0);var e,g=this.w.cells[1];d.rendered||(e=d.top(),g.scrollY(e),this.redrawDirty()&&this.redraw());if(!c.rendered)return d.rendered||p("Failed to render page"),p("Row ["+
151
- c.i+"] not rendered"),this;d=c.cells();h(d).addClass("selected");this.r=a;b||(e=g.scrollY(),h(this.root).focus(),e!==g.scrollY()&&g.scrollY(e));g.scrollTo(d[0],!0);this.w.fire("wgRowSelect",[a,c.data()]);return this};s.unfilter=function(){this._idxs&&(this.idxs=this._sort(this._idxs),this._idxs=null,this.clear().render());return this};s.filter=function(a){this._idxs||(this._idxs=this.idxs);this.idxs=this._sort(a);return this.clear().render()};s.each=function(a){for(var b,c=-1,d=this.rows||[],e=this.idxs||
152
- [],g=e.length;++c<g;)b=e[c],a(d[b],c,b);return this};s.sortable=function(a){var b=this.sc||(this.sc=new m(this));b.has(a)||b.add(a);return this};s._re_sort=function(a){var b=-1,c=this.sc,d=c.active;for(this.sc=c=new m(this);++b<a;)c.add(b);d&&(b=this.head.indexOf(d.id),-1===b&&(b=Math.min(d.idx,a-1)),this.sort(b,d.desc));return this};s._sort=function(a,b){b?(this.s=b,b(a)):(b=this.s)&&b(a);return a};s.sort=function(a,b){this._sort(this.idxs,k(this,a,b));this.sc.activate(a,b);return this};s=null;s=
153
- m.prototype;s.has=function(a){return null!=this[a]};s.add=function(a){var b=this,c=b.t.head.cells[a];b[a]={desc:null,idx:a,id:c.id};b.length++;c.addClass("wg-sortable").on("click",function(c){if("header"===c.target.nodeName.toLowerCase())return c.stopImmediatePropagation(),b.toggle(a),!1});return b};s.toggle=function(a){this.t.sort(a,!this[a].desc).clear().render();return this};s.activate=function(a,b){var c,d;c=this.active;var e=this[a],g=this.t.head.cells;c&&(d=g[c.idx])&&(d.removeClass(c.css),
154
- c!==e&&d.restyle());(d=g[a])?(e.desc=b,this.active=e,c="wg-"+(b?"desc":"asc"),d.addClass(c).restyle(),e.css=c):this.active=null;return this};s=null;s=z.prototype;s.render=function(a){var b,c=[],d=this._,e=this.length;if(d){for(this.c=c;0!==e--;)b=d.cloneNode(!1),c[e]=this.update(e,b),b.$index=this.i,a[e].appendChild(b);this._=null}else for(c=this.c;0!==e--;)a[e].appendChild(c[e]);this.rendered=!0;return this};s.update=function(a,b){var c=b||this.c[a]||{},d=(this.d[a]||function(){})()||"\u00a0";null==
155
- d.innerHTML?c.textContent=d:c.innerHTML=d.innerHTML;return c};s.cells=function(){return this.c||[]};s.data=function(){for(var a=-1,b=[],c=this.length;++a<c;)b[a]=this.cellVal(a);return b};s.destroy=function(){this.page=null;this.rendered=!1};s.cellVal=function(a){a=this.d[a]()||"";return String(a.textContent||a)};s=null;s=D.prototype;s.size=function(){return this.rows.length};s.insert=function(a){var c=this.h,d=b("wg-dead");d.style.height=String(c)+"px";a.appendChild(d);return this.dead=d};s.top=
156
- function(){return(this.rendered?this.live:this.dead).offsetTop};s.height=function(){var a=this.h;null==a&&(this.h=a=this.rendered?this.live.firstChild.offsetHeight:this.dead.offsetHight);a||p("row has zero height");return a};s.render=function(a){for(var b,c=-1,d=this.rows,e=d.length,g=this.dead,f=this.live,y=f.childNodes;++c<e;)b=d[c],b.rendered||b.render(y);e=a.length;for(c=0;c<e;c++)y[c].style.width=a[c];g.parentNode.replaceChild(f,g);this.rendered=!0;this.h=null;return this};s.sleep=function(){var a=
157
- this.height(),b=this.live,c=this.dead;c.style.height=String(a)+"px";b.parentNode.replaceChild(c,b);this.rendered=!1;this.h=a;return this};s.sleepH=function(a){a*=this.rows.length;var b=this.dead;b&&(b.style.height=String(a)+"px");this.rendered||(this.h=a);return this};s.widths=function(a){for(var b=this.live.childNodes,c=a.length;0!==c--;)b[c].style.width=a[c];return this};s.destroy=function(){var a=this.rendered?this.live:this.dead,b=this.rows,c=b.length;for(a.parentNode.removeChild(a);0!==c--;)b[c].destroy()};
158
- s=null;return d}({},w,A));l.register("$40",function(d,f,B){function p(a,b){var c=a.id,d=c&&s[c],e=d&&d.parent();if(!d||!e)return null;var g=e.dir===D,c=g?"X":"Y",f="page"+c,g=g?z:m,k=g(e.el),c=b["offset"+c],h=e.el,n=h.className;null==c&&(c=b[f]-g(a));c&&(k+=c);h.className=n+" is-resizing";return{done:function(){h.className=n},move:function(a){e.resize(a[f]-k,d);return!0}}}function b(b,c){function d(){h(B).off("mousemove",e);v&&(v.done(),v=null);return!0}function e(a){v?v.move(a):d();return!0}if(v)return!0;
159
- v=p(b.target,b);if(!v)return!0;h(B).one("mouseup",d).on("mousemove",e);return a(b)}function c(a,b){var c=b.type;"touchmove"===c?v&&v.move(b):"touchstart"===c?v=p(a.target,b):"touchend"===c&&v&&(v.done(),v=null)}function a(a){a.stopPropagation();a.preventDefault();return!1}function e(a){var b=q;b&&b.redraw();a&&a.redraw();return q=a}function n(a,b){var c=h(b).on("editFocus",function(){c.trigger("wgFocus",[e(a)])}).on("editBlur",function(){c.trigger("wgBlur",[e(null)])})}function k(a){var b=a.id,c=
160
- a.className;this.id=b;this.el=a;this.pos=this.index=0;this.css=[c||"wg-root","wg-cell"];this._cn=c;s[b]=this;this.clear()}var g=l.require("$18","html.js"),m=g.top,z=g.left,D=1,s={},q,v=!1;d.init=function(a){var d=new k(a);d.redraw();l.require("$45","touch.js").ok(function(b){b.dragger(a,c)});h(a).mousedown(b);return d};f=k.prototype;f.fire=function(a,b){var c=h.Event(a);c.cell=this;h(this.el).trigger(c,b);return this};f.each=function(a){for(var b=-1,c=this.cells,d=c.length;++b<d;)a(c[b],b);return this};
161
- f.indexOf=function(a){return(a=s[a.id||String(a)])&&a.pid===this.id?a.index:-1};f.on=function(){return this.$("on",arguments)};f.off=function(){return this.$("off",arguments)};f.find=function(a){return h(this.el).find(a)};f.$=function(a,b){h.fn[a].apply(h(this.el),b);return this};f.addClass=function(a){this.css.push(a);return this};f.removeClass=function(a){a=this.css.indexOf(a);-1!==a&&this.css.splice(a,1);return this};f.parent=function(){return this.pid&&s[this.pid]};f.splitx=function(){return this._split(D,
162
- arguments)};f.splity=function(){return this._split(2,arguments)};f._split=function(a,b){(this.length||this.field)&&this.clear();for(var c=-1,d,e=b.length,f=1/e,m=0;++c<e;){d=g.el();this.body.appendChild(d);for(var h=d,n=b[c],p=n,l=1;s[n];)n=p+"-"+ ++l;h.id=n;d=new k(d);d.index=c;d.pid=this.id;d._locale(this.lang,this.rtl);d.pos=m;m+=f;this.cells.push(d);this.length++}this.dir=a;this.redraw();return this.cells};f.destroy=function(){this.clear();delete s[this.id];var a=this.el;a.innerHTML="";this.body=
163
- null;a.className=this._cn||"";h(a).off();return this};f.exists=function(){return this===s[this.id]};f.clear=function(){for(var a=this.el,b=this.cells,c=this.field,d=this.body,e=this.nav,f=this.length||0;0!==f--;)delete s[b[f].destroy().id];this.cells=[];this.length=0;e&&(a.removeChild(e),this.nav=null);d&&(c&&(g.ie()&&h(d).triggerHandler("blur"),c.destroy(),this.field=null),this.table&&(this.table=null),a.removeChild(d));this.body=a.appendChild(g.el("","wg-body"));this._h=null;return this};f.resize=
164
- function(a,b){if(!b&&(b=this.cells[1],!b))return;var c=b.index,d=this.cells,e=h(this.el)[this.dir===D?"width":"height"](),g=d[c+1],c=d[c-1];pad=(b.body||b.el.firstChild).offsetTop||0;max=(g?g.pos*e:e)-pad;min=c?c.pos*e:0;b.pos=Math.min(max,Math.max(min,a))/e;this.redraw();return this};f.distribute=function(a){for(var b=-1,c=0,d,e=this.cells,g=a.length;++b<g&&(d=e[++c]);)d.pos=Math.max(0,Math.min(1,a[b]));this.redraw();return this};f.distribution=function(){for(var a=[],b=0,c=this.cells,d=c.length-
165
- 1;b<d;)a[b]=c[++b].pos;return a};f.restyle=function(){var a=this.css.concat();0===this.index?a.push("first"):a.push("not-first");this.dir&&(a.push("wg-split"),2===this.dir?a.push("wg-split-y"):a.push("wg-split-x"));this.t&&a.push("has-title");this.nav&&a.push("has-nav");this.field&&(a.push("is-field"),this.field.editable()?a.push("is-editable"):a.push("is-readonly"));a=a.join(" ");a!==this._css&&(this._css=a,this.el.className=a);return this};f.redraw=function(a){this.restyle();var b=this.el,c=this.body,
166
- d=this.field;if(c){var e,g=b.clientWidth||0,f=b.clientHeight||0,k=c.offsetTop||0,f=k>f?0:f-k;this._h!==f&&(this._h=f,c.style.height=String(f)+"px",e=d);this._w!==g&&(this._w=g,e=d);e&&e.redraw()}c=this.length;g=1;f=this.nav;for(k=2===this.dir?"height":"width";0!==c--;)d=this.cells[c],f?e=1:(d.fixed&&(d.pos=d.fixed/h(b)[k]()),e=g-d.pos,g=d.pos),d.el.style[k]=String(100*e)+"%",d.redraw(a);return this};f.contents=function(a,b){var c=this.el,d=this.body;if(null==a)return d.innerHTML;this.length?this.clear():
167
- d&&(c.removeChild(d),d=null);d||(this.body=d=c.appendChild(g.el("",b||"wg-content")),this._h=null,(c=this.lang)&&this._locale(c,this.rtl,!0));"string"===typeof a?h(d)._html(a):a&&this.append(a);this.redraw();return this};f.textarea=function(a,b){var c=this.field;if(c){var d=c.editable();c.reload(a,b);d!==b&&this.restyle()}else this.length&&this.clear(),d=g.el("textarea"),d.setAttribute("wrap","virtual"),d.value=a,this.contents(d),c=l.require("$46","field.js")._new(d)[b?"enable":"disable"](),n(this,
168
- d),this.field=c,this.restyle();this.lang||this.locale("en");return c};f.locale=function(a){a=l.require("$38","locale.js").cast(a);return this._locale(String(a),a.isRTL())};f._locale=function(a,b,c){var d=this.body;if(c||a!==this.lang)this.lang=a,d&&d.setAttribute("lang",a);if(c||b!==this.rtl)this.rtl=b,d&&d.setAttribute("dir",b?"RTL":"LTR");return this};f.editable=function(){var a=this.field;if(a)return a.editable()?a:null;var b=this.cells,c=b.length,d=this.navigated();if(null!=d)return b[d].editable();
169
- for(;++d<c;){for(d=0;d<c;c++);if(a=b[d].editable())return a}};f.eachTextarea=function(a){var b=this.field;b?a(b):this.each(function(b){b.eachTextarea(a)});return this};f.append=function(a){a&&(a.nodeType?g.init(this.body.appendChild(a)):g.init(h(a).appendTo(this.body)));return this};f.prepend=function(a){var b=this.body;if(a.nodeType){var c=b.firstChild;g.init(c?b.insertBefore(a,c):b.appendChild(a))}else g.init(h(a).prependTo(b));return this};f.before=function(a){var b=this.body;a.nodeType?g.init(this.el.insertBefore(a,
170
- b)):g.init(h(a).insertBefore(b));return this};f.header=function(a,b){if(null==a&&null==b)return this.el.getElementsByTagName("header")[0];this.t=g.txt(a||"");this.el.insertBefore(g.el("header",b),this.body).appendChild(this.t);this.redraw();return this};f.title=function(a){var b=this.t;if(b)return b.nodeValue=a||"",b;this.header(a);return this.t};f.titled=function(){var a=this.t;return a&&a.nodeValue};f.bodyY=function(){return m(this.body,this.el)};f.scrollY=function(a){if(R===a)return this.body.scrollTop;
171
- this.body.scrollTop=a};f.tabulate=function(a){var b=this.table;b?b.clear():b=l.require("$47","wgtable.js").create(this);b.init(a);return this.table=b};f.lock=function(){this.body.className+=" locked";return this};f.scrollTo=function(a,b){var c,d=this.body;c=d.scrollTop;var e=m(a,d);if(c>e)c=e;else{var g=d.clientHeight,e=e+h(a).outerHeight();if(g+c<e)c=e-g;else return}b?d.scrollTop=c:h(d).stop(!0).animate({scrollTop:c},250)};f.navigize=function(b,c){function d(a){var b=f[a],c=m[a],e=h(b.el).show();
172
- c.addClass("active");k=a;n.data("idx",a);b.fire("wgTabSelect",[a]);return e}var e=this,f=e.cells,y=e.nav,k,m=[];y&&e.el.removeChild(y);var y=e.nav=e.el.insertBefore(g.el("nav","wg-tabs"),e.body),n=h(y).on("click",function(b){var c=h(b.target).data("idx");if(null==c)return!0;if(null!=k){var g=m[k];h(f[k].el).hide();g.removeClass("active")}d(c);e.redraw();return a(b)});null==c&&(c=n.data("idx")||0);e.each(function(a,c){m[c]=h('<a href="#'+a.id+'"></a>').data("idx",c).text(b[c]).appendTo(n);a.pos=0;
173
- h(a.el).hide()});d(f[c]?c:0);e.lock();e.redraw();return e};f.navigated=function(){var a=this.nav;if(a)return h(a).data("idx")};f=null;return d}({},w,A));l.register("$24",function(d,f,B){function p(a){var b=[];a&&(a.saved()||b.push("po-unsaved"),a.fuzzy()?b.push("po-fuzzy"):a.flagged()&&b.push("po-flagged"),a.translation()||b.push("po-empty"),a.comment()&&b.push("po-comment"));return b.join(" ")}function b(a,b,c){b=h(a.title(b).parentNode);var d=b.find("span.lang");c?(c=l.require("$38","locale.js").cast(c),
174
- d.length||(d=h("<span></span>").prependTo(b)),d.attr("lang",c.lang).attr("class",c.getIcon()||"lang region region-"+(c.region||"zz").toLowerCase())):(d.remove(),c="en");a.locale(c);return b}function c(){this.dirty=0}var a="poUpdate",e="changing",n="changed",k=0,g=1,m=2,z=3,D=4,s=5,q=/^\s+/,v,r,w=l.require("$3","string.js").sprintf,C=l.require("$18","html.js");d.extend=function(a){return a.prototype=new c};d.localise=function(a){r=a;return d};var A=function(){var a=B.createElement("p");return function(b){a.innerHTML=
175
- b.replace("src=","x=");return a.textContent}}(),u=c.prototype=l.require("$39","abstract.js").init(["getListColumns","getListHeadings","getListEntry"],["editable","t"]);u.init=function(){this.localise();this.editable={source:!0,target:!0};this.mode="";this.html=!1;return this};u.localise=function(a){a||(a=r||l.require("$1","t.js").init());var b=[];b[k]=a._x("Source text","Editor")+":";b[z]=a._x("%s translation","Editor")+":";b[D]=a._x("Context","Editor")+":";b[s]=a._x("Comments","Editor")+":";b[g]=
176
- a._x("Single","Editor")+":";b[m]=a._x("Plural","Editor")+":";b[6]=a._x("Untranslated","Editor");b[7]=a._x("Translated","Editor");b[8]=a._x("Fuzzy","Editor");this.labels=b;this.t=a;return this};u.setRootCell=function(a){function b(a){c.redraw(!0,a);return!0}var c=l.require("$40","wingrid.js").init(a);h(f).on("resize",b);this.redraw=b;h(a).on("wgFocus wgBlur",function(a,b){a.stopPropagation();v=b});this.destroy=function(){c.destroy();h(f).off("resize",b)};this.rootDiv=a;return c};u.$=function(){return h(this.rootDiv)};
177
- u.setListCell=function(a){var b=this;b.listCell=a;a.on("wgRowSelect",function(a,c){b.loadMessage(b.po.row(c));return!0}).on("wgRowDeselect",function(a,c,d){d||b.loadNothing();return!0})};u.setSourceCell=function(a){this.sourceCell=a};u.setTargetCell=function(a){this.targetCell=a};u.next=function(a,b,c){for(var d=this.listTable,e=d.selected(),g=e,f,k=this.po;null!=(e=d.next(a,c,e));){if(g===e){e=null;break}if(b&&(f=k.row(e),f.translated(0)))continue;break}null!=e&&d.select(e,!0);return e};u.current=
178
  function(a){var b=this.active;if("undefined"===typeof a)return b;a?a.is(b)?this.reloadMessage(a):this.loadMessage(a):this.unloadActive();return this};u.getTargetOffset=function(){if(this.active)return this.targetCell&&this.targetCell.navigated()||0};u.getTargetEditable=function(){return this.editable.target&&this.targetCell&&this.targetCell.editable()};u.getSourceEditable=function(){return this.editable.source&&this.sourceCell&&this.sourceCell.editable()};u.getContextEditable=function(){return this.editable.context&&
179
- this.contextCell&&this.contextCell.editable()};u.getFirstEditable=function(){return this.getTargetEditable()||this.getSourceEditable()||this.getContextEditable()};u.searchable=function(a){a&&(this.dict=a,this.po&&this.rebuildSearch());return this.dict&&!0};u.rebuildSearch=function(){var a=-1,b=this.po.rows,c=b.length,d=this.dict;for(d.clear();++a<c;)d.add(a,b[a].toText())};u.filtered=function(){return this.lastSearch||""};u.filter=function(a,b){var c,d=this.listTable,e=this.lastFound,g=this.lastSearch;
180
- if(a){if(g===a)return e||0;if(g&&!e&&0===a.indexOf(g))return 0;c=this.dict.find(a)}this.lastSearch=g=a;this.lastFound=e=c?c.length:this.po.length;c?d.filter(c):d.unfilter();b||this.fire("poFilter",[g,e]);return e};u.countFiltered=function(){return this.lastSearch?this.lastFound:this.po.length};u.unsave=function(a,b){var c=!1;if(a=a||self.active){if(c=a.saved(b))this.dirty++,a.unsave(b),this.fire("poUnsaved",[a,b]);this.markUnsaved(a)}return c};u.markUnsaved=function(a){var b=this.po.indexOf(a);if(b=
181
- this.listTable.tr(b)){var c=b[0].className;a=c.replace(/(?:^| +)po-[a-z]+/g,"")+" "+p(a);a!==c&&h(b).attr("class",a)}};u.save=function(a){var b=this.po;if(this.dirty||a)b.each(function(a,b){b.save()}),this.listCell.find("div.po-unsaved").removeClass("po-unsaved"),this.dirty=0,this.fire("poSave");return b};u.fire=function(a,b){var c=this.handle;if(c&&c[a]&&(c=c[a].apply(this,b||[]),!1===c))return!1;c=h.Event(a);this.$().trigger(c,b);return!c.isDefaultPrevented()};u.on=function(a,b){this.$().on(a,b);
182
- return this};u.getSorter=function(){return null};u.reload=function(){var a=this,b,c=a.listCell,d=a.listTable,e=a.po,g=e&&e.locale(),f=g&&g.isRTL(),k=e&&e.length||0;if(!e||!e.row)return c&&c.clear().header("Error").contents("Invalid messages list"),!1;a.lastSearch&&(a.lastSearch="",a.lastFound=k,a.fire("poFilter",["",k]));d&&(b=d.thead().distribution());a.listTable=d=c.tabulate({eachCol:function(b){var c,d,e=a.getListColumns(),g=a.getListHeadings();for(d in e)c=e[d],b(c,d,g[c])},eachRow:function(b){e.each(function(c,
183
- d){b(d.idx,a.getListEntry(d),p(d))})},sort:a.getSorter()});var m,c=a.getListColumns();for(m in c)d.sortable(c[m]);b&&d.thead().distribute(b);d.tbody().$(f?"addClass":"removeClass",["is-rtl"]);a.targetLocale=g;a.fire("poLoad");return!!k};u.load=function(a,b){this.po=a;this.dict&&this.rebuildSearch();this.reload()&&(-1!==b?this.listTable.selectRow(b||0):this.active&&this.unloadActive())};u.pasteMessage=function(a){var b,c=0;(b=this.sourceCell)&&b.eachTextarea(function(b){b.val(a.source(null,c++))});
184
- (b=this.contextCell)&&b.eachTextarea(function(b){b.val(a.context())});if(b=this.targetCell)c=0,b.eachTextarea(function(b){b.val(a.translation(c++))});this.updateListCell(a,"source");this.updateListCell(a,"target");return this};u.reloadMessage=function(a){var b=this.sourceCell,c=this.targetCell,d;this.pasteMessage(a);b&&this.setNotes(a,b)&&b.redraw();c&&(d=c.navigated()||0,d=this.setErrors(a.errors(d),c),!b&&this.setNotes(a,c)&&(d=!0),d&&c.redraw());return this};u.setStatus=function(){return null};
185
- u.setNotes=function(a,b){var c;c=!1;var d=this.$notes,e=this.labels,g=a.notes(),f=a.context();g||f?(d||(d=b.find("p.notes"),d.length||(d=h('<p class="notes"></p>').insertAfter(b.header())),this.$notes=d),c=[],f&&c.push(e[D]+" <mark>"+C.h(f)+"</mark>"),g&&c.push(C.h(g,!0)),d.html(c.join("\n")).show(),C.init(d),c=!0):d&&d.text()&&(d.text("").hide(),c=!0);return c};u.setErrors=function(a,b){var c=!1,d=this.$errs;a&&a.length?(d||(d=b.find("p.errors"),d.length||(d=h('<p class="errors"></p>').insertAfter(this.targetCell.header())),
186
- this.$errs=d),d.html(C.h(a.join(".\n")+".",!0)).show(),C.init(d),c=!0):d&&d.text()&&(d.text("").hide(),c=!0);return c};u.loadMessage=function(c){function d(a,b){var c=b?a.split(" "):a.split(" ",1);a=c[0];"="===a.charAt(0)&&(a=a.substr(1),a=["zero","one","two"][Number(a)]||a);c[0]=a.charAt(0).toUpperCase()+a.substr(1).toLowerCase();return c.join(" ")}function f(a,e){var n=R,p=M[k];a.off();a.titled()!==p&&b(a,p,e||"en");p=!1;u.setNotes(c,a)&&(p=!0);if(c.plural()){var p=-1,l=[],q=[],s=a.id+"-",z=c.sourceForms()||
187
- e&&e.plurals||["One","Other"],r=z.length;if(2!==r||"="===z[0].charAt(0)&&"=1"!==z[0])for(;++p<r;)l[p]=s+String(p),q[p]=d(z[p])+":";else l=[s+"-0",s+"-1"],q=[M[g],M[m]];a.splity.apply(a,l);a.each(function(a,b){a.header(q[b]).textarea(c.source(null,b),n).setStrf(I).setMode(B).setInvs(C)});a.lock();n&&a.each(function(a,b){h(a,b)})}else p&&a.redraw(),a.textarea(c.source(),n).setStrf(I).setMode(B).setInvs(C),n&&h(a,0)}function h(b,d){b.on(e,function(a,b){c.source(b,d);0===d&&u.updateListCell(c,"source");
188
- u.unsave(c,d)}).on(n,function(){0===d&&u.po.reIndex(c);u.dict&&u.rebuildSearch();u.fire(a,[c])})}function p(a,e,g){N&&a.eachTextarea(function(a){a.ping()});a.off();var f=e.isKnown()&&e.label||"Target",f=w(M[z],f);a.titled()!==f&&b(a,f,e);f=!1;!this.sourceCell&&u.setNotes(c,a)&&(f=!0);u.setErrors(c.errors(g),a)&&(f=!0);u.setStatus(c,g);if(c.pluralized()){var k=[],m=[],h=a.id+"-",n=c.targetForms()||e.plurals||["One","Other"],f=n.length,q=function(a){var b=n[a];m.push(b?d(b,!0):"Form "+a);k.push(h+String(a))};
189
- for(c.each(q);(e=k.length)<f;)q(e);a.splitx.apply(a,k);a.each(function(a,b){var d=N&&!c.disabled(b);a.textarea(c.translation(b),d).setStrf(I).setMode(B).setInvs(C);N&&l(a,b)});a.navigize(m,g||null).on("wgTabSelect",function(b,d){var e=N&&b.cell.editable();e&&e.focus();u.setErrors(c.errors(d),a);u.setStatus(c,d);u.fire("poTab",[d])})}else f&&a.redraw(),a.textarea(c.translation(),N&&!c.disabled(0)).setStrf(I).setMode(B).setInvs(C),N&&l(a,0)}function l(b,d){b.on(e,function(a,b,e){c.translate(b,d);0===
190
- d&&u.updateListCell(c,"target");c.fuzzy(d)?u.fuzzy(!1,c,d):u.unsave(c,d);""===b?u.fire("poEmpty",[!0,c,d]):""===e&&u.fire("poEmpty",[!1,c,d])}).on(n,function(){u.dict&&u.rebuildSearch();u.fire(a,[c])})}function q(d){d.off();var g=M[D];d.titled()!==g&&(b(d,g),u.setStatus(null));d.textarea(c.context(),!0).setMode(B).setInvs(C);X&&d.on(e,function(a,b){c.context(b);u.updateListCell(c,"source");u.unsave(c,P)}).on(n,function(){u.po.reIndex(c);u.dict&&u.rebuildSearch();u.fire(a,[c])})}function r(a){var d=
191
- M[s];a.titled()!==d&&b(a,d);a.off().on(e,function(a,b){c.comment(b);u.fire("poComment",[c,b]);u.unsave(c,P)}).textarea(c.comment(),!0)}var u=this,B=u.mode,A=c.isHTML(),C=u.inv||!1,G=this.fmt||null,I=c.format()||null,Q=c.is(u.active),P=0,T=u.sourceCell,S=u.targetCell,U=u.contextCell,V=u.commentCell,N=u.editable.target,R=u.editable.source,X=u.editable.context,O=v,Y=u.sourceLocale,W=u.targetLocale,M=u.labels;u.html!==A&&(u.html=A,"code"!==u.mode&&(B=A?"html":"",u.setMode(B)));u.active=c;T&&f(T,Y);U&&
192
- q(U);S&&W&&(P=S.navigated()||0,p(S,W,P));V&&r(V);O&&(O.exists()||(O=O.parent()),(A=O.editable())&&A.focus());G!==I&&(this.fmt=I);Q||u.fire("poSelected",[c])};u.unloadActive=function(){var a;(a=this.$notes)&&a.text("").hide();(a=this.$errs)&&a.text("").hide();(a=this.sourceCell)&&a.off().clear();(a=this.contextCell)&&a.off().clear();(a=this.targetCell)&&a.off().clear();(a=this.commentCell)&&a.off();this.active&&(this.fire("poDeselected",[this.active]),this.active=null);return this};u.loadNothing=function(){var a,
193
- b=this.t,c=this.mode||"",d=this.inv||!1,e=this.fmt;this.unloadActive();this.setStatus(null);(a=this.commentCell)&&a.textarea("",!1);if(a=this.sourceCell)a.textarea("",!1).setStrf(e).setMode(c).setInvs(d),a.title(b._x("Source text not loaded","Editor")+":");if(a=this.contextCell)a.textarea("",!1).setMode(c).setInvs(d),a.title(b._x("Context not loaded","Editor")+":");if(a=this.targetCell)a.textarea("",!1).setStrf(e).setMode(c).setInvs(d),a.title(b._x("Translation not loaded","Editor")+":");this.fire("poSelected",
194
- [null])};u.updateListCell=function(a,b){var c=this.getListColumns()[b],d=this.po.indexOf(a);(d=this.listTable.row(d))&&d.update(c)};u.cellText=function(a){if(-1!==a.indexOf("<")||-1!==a.indexOf("&"))a=A(a);return a.replace(q,"")||"\u00a0"};u.fuzzy=function(a,b,c){var d=4===this.flag(null,b,c);!0!==a||d?!1===a&&d&&this.flag(0,b,c)&&this.fire("poFuzzy",[b,!1,c]):this.flag(4,b,c)&&this.fire("poFuzzy",[b,!0,c]);return d};u.flag=function(b,c,d){if(!c){c=this.active;d=this.getTargetOffset();if(null==d)return null;
195
- d&&c.targetForms()&&(d=0)}var e=c.flagged(d);if(null==b)return e;if(e===b||b&&!c.translated(d)||!this.fire("poFlag",[b,e,c,d]))return!1;c.flag(b,d);this.fire(a,[c])&&this.unsave(c,d);this.setStatus(c,d);return!0};u.add=function(b,c){var d,e=this.po.get(b,c);e?d=this.po.indexOf(e):(d=this.po.length,e=this.po.add(b,c),this.load(this.po,-1),this.fire("poAdd",[e]),this.fire(a,[e]));this.lastSearch&&this.filter("");this.listTable.select(d);return e};u.del=function(b){if(b=b||this.active){var c=this.lastSearch,
196
- d=this.po.del(b);null!=d&&(this.unsave(b),this.fire("poDel",[b]),this.fire(a,[b]),this.reload(),this.dict&&this.rebuildSearch(),this.active&&this.active.equals(b)&&this.unloadActive(),this.po.length&&(c&&this.filter(c),this.active||(d=Math.min(d,this.po.length-1),this.listTable.select(d))))}};u.setMono=function(a){return this.setMode(a?"code":this.html?"html":"")};u.setMode=function(a){this.mode!==a&&(this.mode=a,this.callTextareas(function(b){b.setMode(a)}));return this};u.getMono=function(){return"code"===
197
- this.mode};u.setInvs=function(a){(this.inv||!1)!==a&&(this.inv=a,this.callTextareas(function(b){b.setInvs(a)}),this.fire("poInvs",[a]));return this};u.getInvs=function(){return this.inv||!1};u.callTextareas=function(a){var b=this.targetCell;b&&b.eachTextarea(a);(b=this.contextCell)&&b.eachTextarea(a);(b=this.sourceCell)&&b.eachTextarea(a);return this};u.focus=function(){var a=this.getTargetEditable();a&&a.focus();return this};u=null;return d}({},w,A));l.register("$25",function(d,f,h){Number.prototype.format=
198
- function(d){d=Math.pow(10,d||0);var b=Math.round(d*this)/d;d=[];var b=String(b),c=b.split("."),b=c[0],c=c[1],a=b.length;do d.unshift(b.substring(a-3,a));while(0<(a-=3));b=d.join(",");if(d=c){d=c;for(var e,c=d.length;"0"===d.charAt(--c);)e=c;e&&(d=substring(0,e));d=c=d}d&&(b+="."+c);return b};Number.prototype.percent=function(d){var b=0,c=this&&d?100*(this/d):0;if(0===c)return"0";if(100===c)return"100";if(99<c)c=Math.min(c,99.9),d=c.format(++b);else if(0.5>c){c=Math.max(c,1E-4);do d=c.format(++b);
199
- while("0"===d&&4>b);d=d.substr(1)}else d=c.format(0);return d};return d}({},w,A));l.register("$12",function(d,f,h){function p(){this.init()._validate();this.sourceLocale={lang:"en",label:"English",plurals:["One","Other"]}}f=l.require("$24","base.js");l.require("$25","number.js");d.init=function(b){var c=new p;b=c.setRootCell(b);var a=b.splity("po-list","po-edit"),d=a[0],f=a[1],a=f.splitx("po-trans","po-comment"),k=a[0],g=a[1].header("Loading.."),a=k.splity("po-source","po-target"),k=a[0].header("Loading.."),
200
- a=a[1].header("Loading..");b.distribute([0.34]);f.distribute([0.8]);c.setListCell(d);c.setSourceCell(k);c.setTargetCell(a);c.commentCell=g;c.editable.source=!1;return c};f=p.prototype=f.extend(p);f.getListHeadings=function(){var b=this.t||{_x:function(b){return b}};return[b._x("Source text","Editor"),b._x("Translation","Editor")]};f.getListColumns=function(){return{source:0,target:1}};f.getListEntry=function(b){var c=this.cellText;return[function(){var a,d=c(b.source()||""),f=b.context();return f?
201
- (a=h.createElement("p"),a.appendChild(h.createElement("mark")).innerText=f,a.appendChild(h.createTextNode("\u00a0"+d)),a):d},function(){return c(b.translation()||"")}]};f.stats=function(){var b=this.po,c=b.length,a=0,d=0,f=0;b.each(function(b,c){c.fuzzy()?f++:c.translated()?a++:d++});return{t:c,p:a.percent(c)+"%",f:f,u:d}};f.unlock=function(){this._unlocked||(this._unlocked=this.targetLocale,delete this.targetLocale,this.po&&this.po.unlock(),this.editable={source:!0,context:!0,target:!1},this.contextCell=
202
- this.targetCell,delete this.targetCell,this.fire("poLock",[!1]),this.active&&this.loadMessage(this.active))};f.lock=function(){var b;this._unlocked&&(b=this.targetLocale=this._unlocked,delete this._unlocked,this.po&&this.po.lock(b),this.editable={source:!1,context:!1,target:!0},this.targetCell=this.contextCell,delete this.contextCell,this.fire("poLock",[!0,b]),this.active&&this.loadMessage(this.active))};f.locked=function(){return!this._unlocked};f.getSorter=function(){function b(a,b){var d=a.weight(),
203
- g=b.weight();return d===g?c(a,b):d>g?-1:1}function c(a,b){return a.hash().localeCompare(b.hash())}var a=this;return function(d){var f=a.po,k=a.locked()?b:c;d.sort(function(a,b){return k(f.row(a),f.row(b))})}};return d}({},w,A));l.register("$13",function(d,f,l){var p={copy:66,clear:75,save:83,fuzzy:85,next:40,prev:38,enter:13,invis:73},b={38:!0,40:!0,73:!0},c={66:function(a,b){var c=b.current();c&&(c.normalize(),b.focus().pasteMessage(c))},75:function(a,b){var c=b.current();c&&(c.untranslate(),b.focus().pasteMessage(c))},
204
- 85:function(a,b){b.focus().fuzzy(!b.fuzzy())},13:function(a,b){b.getFirstEditable()&&b.next(1,!0,!0)},40:function(a,b){var c=a.shiftKey;b.next(1,c,c)},38:function(a,b){var c=a.shiftKey;b.next(-1,c,c)},73:function(a,b){if(!a.shiftKey)return!1;b.setInvs(!b.getInvs())}};d.init=function(a,d){function n(d){if(d.isDefaultPrevented()||!d.metaKey&&!d.ctrlKey)return!0;var e=d.which;if(!k[e])return!0;var f=c[e];if(!f)throw Error("command undefined #"+e);if(d.altKey||d.shiftKey&&!b[e]||!1===f(d,a))return!0;
205
- d.stopPropagation();d.preventDefault();return!1}var k={};h(d||f).on("keydown",n);return{add:function(a,b){c[p[a]]=b;return this},enable:function(){var a,b;for(b in arguments)a=p[arguments[b]],k[a]=!0;return this},disable:function(){h(d||f).off("keydown",n);a=d=k=null}}};return d}({},w,A));l.register("$26",function(d,f,h){function l(){this.reIndex([])}d.init=function(){return new l};f=l.prototype;f.reIndex=function(b){for(var c={},a=-1,d=b.length;++a<d;)c[b[a]]=a;this.keys=b;this.length=a;this.ords=
206
- c};f.key=function(b,c){if(null==c)return this.keys[b];var a=this.keys[b],d=this.ords[c];if(c!==a){if(null!=d)throw Error("Clash with item at ["+d+"]");this.keys[b]=c;delete this.ords[a];this.ords[c]=b}return b};f.indexOf=function(b){b=this.ords[b];return null==b?-1:b};f.add=function(b,c){var a=this.ords[b];null==a&&(this.keys[this.length]=b,a=this.ords[b]=this.length++);this[a]=c;return a};f.get=function(b){return this[this.ords[b]]};f.has=function(b){return null!=this.ords[b]};f.del=function(b){this.cut(this.ords[b],
207
- 1)};f.cut=function(b,c){c=c||1;var a=[].splice.call(this,b,c);this.keys.splice(b,c);this.reIndex(this.keys);return a};f.each=function(b){for(var c=-1,a=this.keys,d=this.length;++c<d;)b(a[c],this[c],c);return this};f.sort=function(b){for(var c=-1,a=this.length,d,f=this.keys,k=this.ords,g=[];++c<a;)g[c]=[this[c],f[c]];g.sort(function(a,c){return b(a[0],c[0])});for(c=0;c<a;c++)d=g[c],this[c]=d[0],d=d[1],f[c]=d,k[d]=c;return this};f.join=function(b){return[].join.call(this,b)};f=null;return d}({},w,A));
208
- l.register("$27",function(d,f,h){function l(b,c){var a=RegExp("^.{0,"+(b-1)+"}["+c+"]"),d=RegExp("^[^"+c+"]+");return function(c,f){for(var g=c.length,h;g>b;){h=a.exec(c)||d.exec(c);if(null==h)break;h=h[0];f.push(h);h=h.length;g-=h;c=c.substr(h)}0!==g&&f.push(c);return f}}d.create=function(b){function c(a){return h[a]||"\\"+a}var a,d,f=/(?:\r\n|[\r\n\v\f\u2028\u2029])/g,k=/[ \r\n]+/g,g=/[\t\v\f\x07\x08\\\"]/g,h={"\t":"\\t","\v":"\\v","\f":"\\f","\u0007":"\\a","\b":"\\b"};if(null==b||isNaN(b=Number(b)))b=
209
- 79;0<b&&(a=l(b-3," "),d=l(b-2,"-\u2013 \\.,:;\\?!\\)\\]\\}\\>"));return{pair:function(a,k){if(!k)return a+' ""';k=k.replace(g,c);var h=0;k=k.replace(f,function(){h++;return"\\n\n"});if(!(h||b&&b<k.length+a.length+3))return a+' "'+k+'"';var m=[a+' "'],l=k.split("\n");if(d)for(var p=-1,B=l.length;++p<B;)d(l[p],m);else m=m.concat(l);return m.join('"\n"')+'"'},prefix:function(a,b){var c=a.split(f);return b+c.join("\n"+b)},refs:function(b){b=b.replace(k," ",b);a&&(b=a(b,[]).join("\n#: "));return"#: "+
210
- b}}};return d}({},w,A));l.register("$41",function(d,f,h){function l(){this.length=0}d.init=function(){return new l};f=l.prototype;f.push=function(b){this[this.length++]=b;return this};f.sort=function(b){[].sort.call(this,b);return this};f.each=function(b){for(var c=-1,a=this.length;++c<a;)b(c,this[c]);return this};return d}({},w,A));l.register("$28",function(d,f,h){function p(){}d.extend=function(b){return b.prototype=new p};f=p.prototype=l.require("$39","abstract.js").init(["add","load"]);f.row=
211
  function(b){return this.rows[b]};f.lock=function(b){return this.locale(b||{lang:"zxx",label:"Unknown",nplurals:1,pluraleq:"n!=1"})};f.unlock=function(){var b=this.loc;this.loc=null;return b};f.locale=function(b){null==b?b=this.loc:this.loc=b=l.require("$38","locale.js").cast(b);return b};f.each=function(b){this.rows.each(b);return this};f.indexOf=function(b){"object"!==typeof b&&(b=this.get(b));if(!b)return-1;null==b.idx&&(b.idx=this.rows.indexOf(b.hash()));return b.idx};f.get=function(b){return this.rows&&
212
- this.rows.get(b)};f.del=function(b){b=this.indexOf(b);if(-1!==b){var c=this.rows.cut(b,1);if(c&&c.length)return this.length=this.rows.length,this.rows.each(function(a,b,c){b.idx=c}),b}};f.reIndex=function(b,c){var a=this.indexOf(b),d=b.hash(),f=this.rows.indexOf(d);return f===a?a:-1!==f?(c=(c||0)+1,b.source("Error, duplicate "+String(c)+": "+b.source()),this.reIndex(b,c)):this.rows.key(a,d)};f.sort=function(b){this.rows.sort(b);return this};f["export"]=function(){for(var b=-1,c=this.rows,a=c.length,
213
- d=l.require("$41","list.js").init();++b<a;)d.push(c[b]);return d};f=null;return d}({},w,A));l.register("$29",function(d,f,h){function l(){this.xcmt=this.cmt=this.ref=this._id=this.id=""}d.extend=function(b){return b.prototype=new l};f=l.prototype;f.flag=function(b,c){var a=this.flg||(this.flg=[]);if(null!=c)a[c]=b;else for(var d=Math.max(a.length,this.src.length,this.msg.length);0!==d--;)a[d]=b;return this};f.flagged=function(b){var c=this.flg||[];if(null!=b)return c[b]||0;for(b=c.length;0!==b--;)if(c[b])return!0;
214
- return!1};f.flags=function(){for(var b,c={},a=[],d=this.flg||[],f=d.length;0!==f--;)b=d[f],c[b]||(c[b]=!0,a.push(b));return a};f.flaggedAs=function(b,c){var a=this.flg||[];if(null!=c)return b===a[c]||0;for(var d=a.length;0!==d--;)if(a[d]===b)return!0;return!1};f.fuzzy=function(b,c){var a=this.flaggedAs(4,b);null!=c&&this.flag(c?4:0,b);return a};f.source=function(b,c){if(null==b)return this.src[c||0]||"";this.src[c||0]=b;return this};f.plural=function(b,c){if(null==b)return this.src[c||1]||"";this.src[c||
215
- 1]=b||"";return this};f.sourceForms=function(){return this.srcF};f.targetForms=function(){return this.msgF};f.each=function(b){for(var c=-1,a=this.src,d=this.msg,f=Math.max(a.length,d.length);++c<f;)b(c,a[c],d[c]);return this};f.count=function(){return Math.max(this.src.length,this.msg.length)};f.pluralized=function(){return 1<this.src.length||1<this.msg.length};f.translate=function(b,c){this.msg[c||0]=b||"";return this};f.untranslate=function(b){if(null!=b)this.msg[b]="";else{var c=this.msg,a=c.length;
216
- for(b=0;b<a;b++)c[b]=""}return this};f.translation=function(b){return this.msg[b||0]||""};f.errors=function(b){return this.err&&this.err[b||0]||[]};f.translated=function(b){if(null!=b)return!!this.msg[b];var c=this.msg,a=c.length;for(b=0;b<a;b++)if(!c[b])return!1;return!0};f.untranslated=function(b){if(null!=b)return!this.msg[b];var c=this.msg,a=c.length;for(b=0;b<a;b++)if(c[b])return!1;return!0};f.comment=function(b){if(null==b)return this.cmt;this.cmt=b||"";return this};f.notes=function(b){if(null==
217
  b)return this.xcmt;this.xcmt=b||"";return this};f.refs=function(b){if(null==b)return this.ref;this.ref=b||"";return this};f.format=function(b){if(null==b)return this.fmt;this.fmt=b;return this};f.context=function(b){if(null==b)return this.ctx||"";this.ctx=b||"";return this};f.toString=f.toText=function(){return this.src.concat(this.msg,[this.id,this.ctx]).join(" ")};f.weight=function(){var b=0;this.translation()||(b+=2);this.fuzzy()&&(b+=1);return b};f.equals=function(b){return this===b||this.hash()===
218
- b.hash()};f.hash=function(){return this.id};f.normalize=function(){for(var b=this.msg.length;0!==b--;)this.msg[b]=this.src[b]||""};f.disabled=function(b){return!!(this.lck||[])[b||0]};f.disable=function(b){(this.lck||(this.lck=[]))[b||0]=!0;return this};f.saved=function(b){var c=this.drt;if(!c)return!0;if(null!=b)return!c[b];for(b=c.length;0!==b--;)if(c[b])return!1;return!0};f.unsave=function(b){(this.drt||(this.drt=[]))[b||0]=!0;return this};f.save=function(b){var c=this.drt;null==b?this.drt=null:
219
- c[b]=!1;return this};f.is=function(b){return b&&(b===this||b.idx===this.idx)};f.isHTML=function(b){if(null==b)return this.htm||!1;this.htm=b};f=null;return d}({},w,A));l.register("$14",function(d,f,h){function p(a){return{"Project-Id-Version":"PACKAGE VERSION","Report-Msgid-Bugs-To":"","POT-Creation-Date":a||"","PO-Revision-Date":a||"","Last-Translator":"","Language-Team":"",Language:"","Plural-Forms":"","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit"}}
220
- function b(a,b){var c=a||"";b&&(c+="\x00"+b);return c}function c(){return l.require("$26","collection.js").init()}function a(a){var b=f.console;b&&b.error&&b.error(a.message||String(a))}function e(a){return l.require("$27","format.js").create(a)}function n(a){this.locale(a);this.length=0;this.rows=c();this.head=p(this.now())}function k(a,b){this.src=[a||""];this.msg=[b||""]}d.create=function(a){return new n(a)};h=l.require("$28","messages.js").extend(n);h.now=function(){function a(b,c){for(var d=
221
- String(b);d.length<c;)d="0"+d;return d}var b=new Date,c=b.getUTCFullYear(),d=b.getUTCMonth()+1,e=b.getUTCDate(),f=b.getUTCHours(),b=b.getUTCMinutes();return a(c,4)+"-"+a(d,2)+"-"+a(e,2)+" "+a(f,2)+":"+a(b,2)+"+0000"};h.header=function(a,b){var c=this.head||(this.head={});if(null==b)return this.headers()[a]||"";c[a]=b||"";return this};h.headers=function(a){var b,c=this.now(),d=this.head||(this.head=p(c));if(null!=a){for(b in a)d[b]=a[b];return this}var e=this.locale();a={};for(b in d)a[b]=String(d[b]);
222
- e?(a.Language=String(e)||"zxx",a["Language-Team"]=e.label||a.Language,a["Plural-Forms"]="nplurals="+(e.nplurals||"2")+"; plural="+(e.pluraleq||"n!=1")+";",b="PO-Revision-Date"):(a.Language="",a["Plural-Forms"]="nplurals=INTEGER; plural=EXPRESSION;",a["PO-Revision-Date"]="YEAR-MO-DA HO:MI+ZONE",b="POT-Creation-Date");a[b]||(a[b]=c);a["X-Generator"]="Loco https://localise.biz/";return a};h.get=function(a,c){var d=b(a,c);return this.rows.get(d)};h.add=function(b,c){b instanceof k||(b=new k(b));c&&b.context(c);
223
- var d=b.hash();this.rows.get(d)?a("Duplicate message at index "+this.indexOf(b)):(b.idx=this.rows.add(d,b),this.length=this.rows.length);return b};h.load=function(b){for(var c=-1,d,e,f,h,l,n,p=(f=this.locale())&&f.nplurals||2,w=[];++c<b.length;)d=b[c],null==d.parent?(e=d.source||d.id,f=d.target||"",h=d.context,e||h?(l=new k(e,f),l._id=d._id,h&&l.context(h),d.flag&&l.flag(d.flag,0),d.comment&&l.comment(d.comment),d.notes&&l.notes(d.notes),d.refs&&l.refs(d.refs),l.format(d.format),d.message=l,this.add(l)):
224
- 0===c&&"object"===typeof f&&(this.head=f,this.headcmt=d.comment)):w.push(d);for(c=-1;++c<w.length;)try{d=w[c];e=d.source||d.id;l=b[d.parent]&&b[d.parent].message;if(!l)throw Error("parent missing for plural "+e);n=d.plural;1===n&&l.plural(e);n>=p||(d.flag&&l.flag(d.flag,n),l.translate(d.target||"",n),d.format&&!l.format()&&l.format(d.format))}catch(A){a(A)}return this};h.merge=function(b){var d=this,e,f=b.header("POT-Creation-Date"),h=d.rows,k=[],l=[];b=b.rows;d.rows.each(function(a,c){null==b.get(a)&&
225
- l.push(c)});d.rows=c();b.each(function(b,c){try{(e=h.get(b))?(e.ref=c.ref,e.fmt=c.fmt):(e=c,k.push(e)),d.add(e)}catch(f){a(f)}});f&&d.header("POT-Creation-Date",f);return{add:k,del:l}};h.wrap=function(a){this.fmtr=e(a);return this};h.toString=function(){var a,b=this.locale(),c=[],d=[],f=this.headers(),h=!b,l=b&&b.nplurals||2,n=this.fmtr||e();f[b?"PO-Revision-Date":"POT-Creation-Date"]=this.now();for(a in f)d.push(a+": "+f[a]);d=new k("",d.join("\n"));d.comment(this.headcmt||"");h&&d.fuzzy(0,!0);c.push(d.toString());
226
- c.push("");this.rows.each(function(a,b){a&&(c.push(b.cat(n,h,l)),c.push(""))});return c.join("\n")};h=l.require("$29","message.js").extend(k);h.hash=function(){return b(this.source(),this.context())};h.toString=function(){return this.cat(e())};h.cat=function(a,b,c){var d,e=[],f;(f=this.cmt)&&e.push(a.prefix(f,"# "));(f=this.xcmt)&&e.push(a.prefix(f,"#. "));d=this.ref;if(f=this._id)d+=(d?" ":"")+"loco:"+f;d&&/\S/.test(d)&&e.push(a.refs(d));!b&&this.fuzzy()&&e.push("#, fuzzy");(f=this.fmt)&&e.push("#, "+
227
- f+"-format");(f=this.ctx)&&e.push(a.pair("msgctxt",f));e.push(a.pair("msgid",this.src[0]));if(null==this.src[1])e.push(a.pair("msgstr",b?"":this.msg[0]));else for(d=-1,e.push(a.pair("msgid_plural",this.src[1])),f=this.msg||["",""],c=c||f.length;++d<c;)e.push(a.pair("msgstr["+d+"]",b?"":f[d]||""));return e.join("\n")};h.compare=function(a,b){var c=this.weight(),d=a.weight();if(c>d)return 1;if(c<d)return-1;if(b){c=this.hash().toLowerCase();d=a.hash().toLowerCase();if(c<d)return 1;if(c>d)return-1}return 0};
228
- h=h=null;return d}({},w,A));l.register("$16",function(d,f,l){d.init=function(d){function b(){J||(K.click(g),J=h('<div id="loco-fs-creds"></div>').dialog({dialogClass:"request-filesystem-credentials-dialog loco-modal",minWidth:580,modal:!0,autoOpen:!1,closeOnEscape:!0}).on("change",'input[name="connection_type"]',function(){this.checked&&h("#ssh-keys").toggleClass("hidden","ssh"!==h(this).val())}));return J}function c(){h(v).addClass("jshide");H&&C&&h(H).removeClass("jshide").hide().fadeIn(500)}function a(){if(C)return J&&
229
- J.dialog("close"),c(),h(d).find('button[type="submit"]').attr("disabled",!1),h(f).triggerHandler("resize"),q&&q(!0),!0;u&&J?(h(v).removeClass("jshide").hide().fadeIn(500),H&&h(H).addClass("jshide")):c();h(d).find('input[type="submit"]').attr("disabled",!0);q&&q(!1);return!1}function e(a){var b,c;for(b in s)c=s[b],a[b]?a[b].value=c:h('<input type="hidden" />').attr("name",b).appendTo(a).val(c)}function n(a){a.preventDefault();a=h(a.target).serializeArray();w(a);A=!0;return!1}function k(a){a.preventDefault();
230
- J.dialog("close");return!1}function g(a){a.preventDefault();J.dialog("open").find('input[name="connection_type"]').change();return!1}function m(c){s=c.authed&&c.creds;r=c.method;c.notice&&G.notices.info(c.notice);if(s)"direct"!==r&&(e(d),A&&c.success&&G.notices.success(c.success)),C=!0,a();else if(C=!1,c.reason)G.notices.info(c.reason);else if(c=c.prompt){var g=b();g.html(c).find("form").submit(n);g.dialog("option","title",g.find("h2").remove().text());g.find("button.cancel-button").show().click(k);
231
- g.find('input[type="submit"]').addClass("button-primary");a();h(f).triggerHandler("resize")}else G.notices.error("Server didn't return credentials, nor a prompt for credentials")}function z(){a()}function w(a){A=!1;a.path=u;a.auth=y;G.ajax.setNonce("fsConnect",F).post("fsConnect",a,m,z);return a}var s,q,v=d,r=null,A=!1,C=!1,G=f.locoScope,u=d.path.value,y=d.auth.value,F=d["loco-nonce"].value,K=h(v).find("button.button-primary"),H=l.getElementById(v.id+"-warn"),J;H&&G.notices.convert(H).stick();d.connection_type?
232
- (s={},s.connection_type=d.connection_type.value,C=!0):u&&y&&w({});a();return{applyCreds:function(a){if(a.nodeType)e(a);else{var b,c=s||{};for(b in c)a[b]=c[b]}return this},setForm:function(b){d=b;a();e(b);return this},connect:function(){u=d.path.value;y=d.auth.value;w(h(d).serializeArray());return this},listen:function(a){q=a;C&&a(!0);return this}}};return d}({},w,A));l.register("$17",function(d,f,w){function p(d,f,g,h){f="n"===g?c(f):a(f);h&&(f=e(f));return b([].sort,[f])(d)}function b(a,b){return function(c){a.apply(c,
233
- b);return c}}function c(a){return function(b,c){var d=b&&b[a]||0,e=c&&c[a]||0;return d===e?0:d>e?1:-1}}function a(a){return function(b,c){return(b&&b[a]||"").localeCompare(c&&c[a]||"")}}function e(a){return function(b,c){return-1*a(b,c)}}d.init=function(a){function b(a){var c=-1,d=a.length;for(h("tr",r).remove();++c<d;)r.appendChild(a[c].$)}function c(a){s=a?A.find(a,d):d.slice(0);v&&(a=e[v],s=p(s,v,a.type,a.desc));b(s)}var d=[],e=[],f=0,s,q,v,r=a.getElementsByTagName("tbody")[0],w=a.getElementsByTagName("thead")[0],
234
- A=l.require("$7","fulltext.js").init();w&&r&&(h("th",w).each(function(a,c){var g=c.getAttribute("data-sort-type");g&&(a=f,h(c).addClass("loco-sort").click(function(c){c.preventDefault();c=a;var f=e[c],g=f.type,l=!(f.desc=!f.desc);s=p(s||d.slice(0),c,g,l);b(s);q&&q.removeClass("loco-desc loco-asc");q=h(f.$).addClass(l?"loco-desc":"loco-asc").removeClass(l?"loco-asc":"loco-desc");v=c;return!1}),e[f]={$:c,type:g});c.hasAttribute("colspan")?f+=Number(c.getAttribute("colspan")):f++}),h("tr",r).each(function(a,
235
- b){var c,f,g,h=[],k={_:a,$:b},l=b.getElementsByTagName("td");for(f in e){c=l[f];(g=c.textContent.replace(/(^\s+|\s+$)/g,""))&&h.push(g);c.hasAttribute("data-sort-value")&&(g=c.getAttribute("data-sort-value"));switch(e[f].type){case "n":g=Number(g)}k[f]=g}d[a]=k;A.index(a,h)}),a=h('form.loco-filter input[type="text"]',a.parentNode),a.length&&(a=a[0],w=h(a.form),1<d.length?l.require("$8","LocoTextListener.js").listen(a,c):w.hide(),w.on("submit",function(a){a.preventDefault();return!1})))};return d}({},
236
- w,A));var I=w.locoScope||(w.locoScope={});w=w.locoConf||(w.locoConf={});A=l.require("$1","t.js").init();var Q=w.wplang;l.require("$2","array.js");I.l10n=A;A.load(w.wpl10n);Q&&A.pluraleq(Q.pluraleq);I.string=l.require("$3","string.js");I.notices=l.require("$4","notices.js").init(A);I.ajax=l.require("$5","ajax.js").init(w).localise(A);I.locale=l.require("$6","wplocale.js");I.fulltext=l.require("$7","fulltext.js");I.watchtext=l.require("$8","LocoTextListener.js").listen;I.selector=l.require("$9","LocoSelector.js").create;
237
- I.autocomp=l.require("$10","LocoAutoComplete.js").init;I.tooltip=l.require("$11","tooltip.js");I.po={ed:l.require("$12","poedit.js"),kbd:l.require("$13","hotkeys.js"),init:l.require("$14","po.js").create,ace:l.require("$15","ace.js").strf("php")};I.fs=l.require("$16","fsconn.js");h("#loco.wrap table.wp-list-table").each(function(d,f){l.require("$17","tables.js").init(f)})})(window,document,window.jQuery);
 
1
+ (function(v,z,h,S){var l=function(){var c={};return{register:function(f,h){c[f]=h},require:function(f,h){var p=c[f];if(!p)throw Error('CommonJS error: failed to require("'+h+'")');return p}}}();l.register("$1",function(c,f,h){function p(b){var d=typeof b;if("string"===d)if(/[^ <>!=()%^&|?:n0-9]/.test(b))console.error("Invalid plural: "+b);else return new Function("n","return "+b);"function"!==d&&(b=function(a){return 1!=a});return b}c.init=function(b){function d(e,b,d){return(e=a[e])&&e[d]?e[d]:b||
2
+ ""}b=p(b);var a={};return{_:function(a){return d(a,a,0)},_x:function(a,b){return d(b+"\u0004"+a,a,0)},_n:function(a,n,k){k=Number(b(k));isNaN(k)&&(k=0);return d(a,k?n:a,k)},load:function(e){a=e||{};return this},pluraleq:function(a){b=p(a);return this}}};return c}({},v,z));l.register("$2",function(c,f,h){Array.prototype.indexOf||(Array.prototype.indexOf=function(c){if(null==this)throw new TypeError;var b,d=Object(this),a=d.length>>>0;if(0===a)return-1;b=0;1<arguments.length&&(b=Number(arguments[1]),
3
+ b!=b?b=0:0!=b&&Infinity!=b&&-Infinity!=b&&(b=(0<b||-1)*Math.floor(Math.abs(b))));if(b>=a)return-1;for(b=0<=b?b:Math.max(a-Math.abs(b),0);b<a;b++)if(b in d&&d[b]===c)return b;return-1});return c}({},v,z));l.register("$3",function(c,f,h){c.trim=function(c,b){for(b||(b=" \n");c&&-1!==b.indexOf(c.substr(0,1));)c=c.substr(1);for(;c&&-1!==b.indexOf(c.substr(-1));)c=c.substr(0,c.length-1);return c};c.sprintf=function(c){var b=0,d,a=[].slice.call(arguments,1);return c.replace(/%(s|u|%)/g,function(e,n){if("%"===
4
+ n)return"%";d=a[b++];return String(d)||""})};return c}({},v,z));l.register("$48",function(c,f,h){function p(){var b=a;e&&(b="("+e+") "+b);h.title=b}function b(e){e||(e=d);e!==a&&(a=e,p())}var d=h.title,a=d,e=0;c.set=function(a){b(a);return c};c.get=function(){return a};c.replace=function(e,d){b(a.replace(e,d));return c};c.badge=function(a){isNaN(a=Number(a))&&(a=0);a!==e&&(e=a,p());return c};return c}({},v,z));l.register("$42",function(c,f,h){function p(e){a||f._gat&&(a=_gat._createTracker(b,"loco"));
5
+ if(a){var n=e.shift();a[n].apply(a,e)}else d&&d.push(e);return c}var b,d,a;c._init=function(a){if(b=a.code){d=f._gaq||(f._gaq=[]);d.push(["_setAccount",b]);d.push(["_gat._anonymizeIp"]);d.push(["_setDomainName",a.host]);d.push(["_trackPageview"]);a=h.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==h.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var n=h.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n)}return c};c.event=function(a,
6
+ b,d,g){return p(["_trackEvent",a||"",b||"",d||"",g||0])};c.page=function(a,b){var d={page:a||location.pathname+location.hash,title:b||l.require("$48","title.js").get()};return p(["_trackPageview",d])};return c}({},v,z));l.register("$43",function(c,f,h){function p(a,e){if(b)b[a](e);else f.ga&&ga(a,e);return c}var b,d;c._init=function(a){a.code&&(function(a,b,d,g,m,A,c){a.GoogleAnalyticsObject=m;a[m]=a[m]||function(){(a[m].q=a[m].q||[]).push(arguments)};a[m].l=1*new Date;A=b.createElement(d);c=b.getElementsByTagName(d)[0];
7
+ A.async=1;A.src=g;c.parentNode.insertBefore(A,c)}(f,h,"script","//www.google-analytics.com/analytics.js","ga"),ga("create",a.code,{alwaysSendReferrer:!0,userId:a.uid}),ga("set","anonymizeIp",!0),a.custom&&p("set",a.custom),c.page(),ga(function(a){b=a}));return c};c.event=function(a,e,b,d){return p("send",{hitType:"event",eventCategory:a||"",eventAction:e||"",eventLabel:b||"",eventValue:Number(d||0)})};c.page=function(a,e){var b={hitType:"pageview",page:a||location.pathname+location.hash,title:e||
8
+ l.require("$48","title.js").get()};b.location=location.protocol+"//"+location.hostname+b.page;d&&p("set",{referrer:d});d=b.location;return p("send",b)};c.reset=function(){d=location.href;var a={page:location.pathname+location.hash,title:l.require("$48","title.js").get(),location:d};p("set",a);return c};return c}({},v,z));l.register("$31",function(c,f,D){function p(a,d){h(a).click(function(a){b&&b.event(d,"click",this.getAttribute("href")||"");return!0});a=null;return c}var b,d=location.hostname,a=
9
+ "/help"===location.pathname.substr(0,5);c.init=function(a){!b&&a&&(d=a.host||(a.host=d),b=a.legacy?l.require("$42","legacy.js"):l.require("$43","universal.js"),b._init(a));return c};c.link=function(e){for(var b=e.getAttribute("href");b&&"#"!==b;){if(0===b.indexOf("#"))return p(e,"anchor");if("/help"===b.substr(0,5)&&!a)e.setAttribute("target","_blank");else if(0===b.indexOf("http")||0===b.indexOf("//")){if(-1!==b.indexOf(d)&&/^(https?:)*\/\/([^\/]+)/.exec(b)&&d===RegExp.$2)break;e.setAttribute("target",
10
+ "_blank");p(e,"external")}break}return c};c.page=function(){b&&b.page.apply(b,arguments);return c};c.event=function(){b&&b.event.apply(b,arguments);return c};c.reset=function(){b&&b.reset&&b.reset();return c};return c}({},v,z));l.register("$36",function(c,f,l){function p(a){return 27===a.keyCode&&r&&w?(I(),a.preventDefault(),!1):!0}function b(){if(r){var a=f.innerWidth,e=f.innerHeight;a!==H&&(H=a,K(u));e!==y&&(y=e,s&&d())}return!0}function d(){var a=n.outerHeight(!0)-s.clientHeight;s.style.maxHeight=
11
+ String(y-a)+"px"}function a(a){a?(m.show(),k.addClass("has-title")):(m.hide(),k.removeClass("has-title"))}var e,n,k,g,m,A,B,s,r=!1,w=!1,q=!1,C,E,H,u,y,F=c.init=function(){if(!e){e=h('<div id="overlay"></div>');n=h('<div class="overlay-frame"></div>');k=h('<div class="overlay-container"></div>');m=h('<div class="overlay-title"><span class="icon"></span><span class="title">Untitled</span></div>');A=h("<nav></nav>");B=h('<a class="overlay-close" href="#"><span>x</span></a>');g=h('<div class="overlay-bg"></div>');
12
+ e.append(n.append(k)).append(g).prependTo(l.body);h(l).on("keydown",p);h(f).resize(b);H=f.innerWidth;y=f.innerHeight;E=k.outerWidth(!0)-k.width()+(n.innerWidth()-n.width());C=parseInt(k.css("width"));if(!C||isNaN(C))C=k.width();A.hide().prependTo(n);m.append(B.hide()).hide().prependTo(n);e.hide()}return e},K=c.width=function(a){var e=F();if(null===a)n.css("width",""),k.css("width","");else{a=a||C||640;x=a+E;u=a;var g=H;x>g?(x=g,a=x-E,e.addClass("spill")):e.removeClass("spill");n.css("width",x+"px");
13
+ k.css("width",a+"px")}return c};c.autoSize=function(){var a=F(),e=C||0;k.children().each(function(a,g){e=Math.max(e,h(g).outerWidth(!0))});K(e);if(s=a.find("div.overlay-scroll")[0])y=f.innerHeight,d();return c};c.css=function(a){F().attr("class",a);return c};c.think=function(){F().addClass("loading");return c};c.unthink=function(){F().removeClass("loading");return c};c.html=function(a){F();f.innerShiv&&(a=innerShiv(a,!1));return k.html(a)};c.append=function(a){F();a instanceof jQuery||(a=h(a));k.append(a);
14
+ return c};var I=c.close=function(a){if(r){var g=function(){F().hide();h(l.body).removeClass("has-overlay");r=!1;k.html("");r=null;e.trigger("overlayClosed",[c])};null==a&&(a=300);e.trigger("overlayClosing",[c]);a?e.fadeOut(a,g):g()}return c};c.title=function(e,g){F();var b="",d=m.find("span");g&&/^lang lang-(\w+)/.exec(g)&&(b=RegExp.$1);d.eq(0).attr("class",g||"no-icon").attr("lang",b);q=e||"";d.eq(1).text(q);null!=e?a(!0):w||a(!1);return c};c.enableClose=function(){F();w=!0;B.off("click").on("click",
15
+ function(){I();return!1});a(!0);B.show();return c};c.disableClose=function(){F();w=!1;B.hide();r&&q||a(!1);return c};c.enableNav=function(a){A.append(a);A.show();return c};c.disableNav=function(){A.html("").hide();return c};c.open=function(){F();k.html("");K(C);e.attr("class","");h(l.body).addClass("has-overlay");F().show();r||(r=!0,b());c.title(null);w&&a(!0);e.trigger("overlayOpened",[c]);return c};c.active=function(){return r};c.listen=function(a){F().on("overlayClosed",a);return c};c.unlisten=
16
+ function(a){F().off("overlayClosed",a);return c};return c}({},v,z));l.register("$11",function(c,f,l){function p(a,e){this.$element=h(a);this.options=e;this.enabled=!0;this.fixTitle()}c.init=function(a,e){var n={fade:!0,offset:5,delayIn:b,delayOut:d,anchor:a.attr("data-anchor"),gravity:a.attr("data-gravity")||"s"};e&&(n=h.extend({},n,e));a.tipsy(n)};c.delays=function(a,e){b=a||150;d=e||100};c.kill=function(){h("div.tipsy").remove()};c.text=function(a,e){e.data("tipsy").setTitle(a)};var b,d;c.delays();
17
+ h(l.body).on("overlayOpened overlayClosing",function(a){c.kill();return!0});p.prototype={show:function(){var a=this.getTitle();if(a&&this.enabled){var e=this.tip();e.find(".tipsy-inner")[this.options.html?"html":"text"](a);e[0].className="tipsy";e.remove().css({top:0,left:0}).prependTo(l.body);var a=(a=this.options.anchor)?this.$element.find(a):this.$element,a=h.extend({},a.offset(),{width:a[0].offsetWidth,height:a[0].offsetHeight}),b=e[0].offsetWidth,d=e[0].offsetHeight,g="function"==typeof this.options.gravity?
18
+ this.options.gravity.call(this.$element[0]):this.options.gravity,m;switch(g.charAt(0)){case "n":m={top:a.top+a.height+this.options.offset,left:a.left+a.width/2-b/2};break;case "s":m={top:a.top-d-this.options.offset,left:a.left+a.width/2-b/2};break;case "e":m={top:a.top+a.height/2-d/2,left:a.left-b-this.options.offset};break;case "w":m={top:a.top+a.height/2-d/2,left:a.left+a.width+this.options.offset}}2==g.length&&("w"==g.charAt(1)?m.left=a.left+a.width/2-15:m.left=a.left+a.width/2-b+15);e.css(m).addClass("tipsy-"+
19
  g);e.find(".tipsy-arrow")[0].className="tipsy-arrow tipsy-arrow-"+g.charAt(0);this.options.className&&e.addClass("function"==typeof this.options.className?this.options.className.call(this.$element[0]):this.options.className);e.addClass("in")}},hide:function(){this.tip().remove()},fixTitle:function(){var a=this.$element,e=a.attr("title")||"";(e||"string"!==typeof a.attr("original-title"))&&a.attr("original-title",e).removeAttr("title")},getTitle:function(){var a,e=this.$element,b=this.options;this.fixTitle();
20
  "string"==typeof b.title?a=e.attr("title"==b.title?"original-title":b.title):"function"==typeof b.title&&(a=b.title.call(e[0]));return(a=(""+a).replace(/(^\s*|\s*$)/,""))||b.fallback},setTitle:function(a){var e=this.$element;e.attr("default-title")||e.attr("default-title",this.getTitle());null==a&&(a=e.attr("default-title")||this.getTitle());e.attr("original-title",a);if(this.$tip)this.$tip.find(".tipsy-inner")[this.options.html?"html":"text"](a)},tip:function(){this.$tip||(this.$tip=h('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),
21
+ this.$tip.data("tipsy-pointee",this.$element[0]));return this.$tip},validate:function(){this.$element[0].parentNode||(this.hide(),this.options=this.$element=null)},enable:function(){this.enabled=!0},disable:function(){this.hide();this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled}};h.fn.tipsy=function(a){function e(e){var g=h.data(e,"tipsy");g||(g=new p(e,h.fn.tipsy.elementOptions(e,a)),h.data(e,"tipsy",g));return g}function b(){var g=e(this),d=a.delayIn;g.hoverState="in";0==d?g.show():
22
+ (g.fixTitle(),setTimeout(function(){"in"==g.hoverState&&g.show()},d))}function d(){var g=e(this),b=a.delayOut;g.hoverState="out";0==b?g.hide():(g.tip().removeClass("in"),setTimeout(function(){"out"==g.hoverState&&g.hide()},b))}a=h.extend({},h.fn.tipsy.defaults,a);a.live||this.each(function(){e(this)});if("manual"!=a.trigger){var g=a.live?"live":"bind",m="hover"==a.trigger?"mouseleave":"blur";this[g]("hover"==a.trigger?"mouseenter":"focus",b)[g](m,d)}return this};h.fn.tipsy.defaults={className:null,
23
+ delayIn:0,delayOut:0,fade:!1,fallback:"",gravity:"n",html:!1,live:!1,offset:0,opacity:0.8,title:"title",trigger:"hover",anchor:null};h.fn.tipsy.elementOptions=function(a,e){return h.metadata?h.extend({},e,h(a).metadata()):e};h.fn.tipsy.autoNS=function(){return h(this).offset().top>h(l).scrollTop()+h(f).height()/2?"s":"n"};h.fn.tipsy.autoWE=function(){return h(this).offset().left>h(l).scrollLeft()+h(f).width()/2?"e":"w"};h.fn.tipsy.autoBounds=function(a,e){return function(){var b=e[0],d=1<e.length?
24
+ e[1]:!1,g=h(l).scrollTop()+a,m=h(l).scrollLeft()+a,A=h(this);A.offset().top<g&&(b="n");A.offset().left<m&&(d="w");h(f).width()+h(l).scrollLeft()-A.offset().left<a&&(d="e");h(f).height()+h(l).scrollTop()-A.offset().top<a&&(b="s");return b+(d?d:"")}};return c}({},v,z));l.register("$8",function(c,f,l){c.listen=function(c,b){function d(){s[k?"show":"hide"]()}function a(a){B&&c.setAttribute("size",2+a.length);k=a;d();return a}function e(){g=null;b(k)}function n(){var b=c.value;A&&b===A&&(b="");b!==k&&
25
+ (g&&clearTimeout(g),a(b),m?g=setTimeout(e,m):e())}var k,g;c=c instanceof jQuery?c[0]:c;var m=150,A=f.attachEvent&&c.getAttribute("placeholder"),B=1===Number(c.size),s=h('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').click(function(){c.value="";n();return!1});a(c.value);h(c).on("input blur focus",function(){n();return!0}).after(s);d();return{delay:function(a){m=a},ping:function(b){b?(g&&clearTimeout(g),b=c.value,A&&b===A&&(b=""),a(b),e(),b=void 0):b=n();return b},val:function(b){if(null==
26
+ b)return k;g&&clearTimeout(g);c.value=a(b);d()},el:function(){return c},blur:function(a){return h(c).on("blur",a)}}};return c}({},v,z));l.register("$35",function(c,f,l){function p(a,b,n,c,g){function m(){s&&clearTimeout(s);r&&r.fadeOut(400,function(){h(this).remove();r=null});return!1}function A(){B();-1!==c&&(s=setTimeout(m,c||2E3));r.off("mouseleave").on("mouseenter",B)}function B(){s&&clearTimeout(s);s=null;r.off("mouseenter").on("mouseleave",A)}var s;d||(d=l.createElement("div"),d.id="growls",
27
+ l.body.appendChild(d));var r=h('<div class="growl growl-'+n+'"><div><a class="close" href="#"><span>X</span></a><span class="badge"></span><p class="message"></p><small class="caption"></small></div></div>');r.find("p").text(a||"Empty message");b?r.find("small").text(b):r.find("small").remove();if(g.length){g.push({label:"Cancel",callback:m,css:"cancel"});var w,q=h('<form action="#" class="dialog"></form>');b=function(a,b){w=h('<input type="button" value="'+b.label+'" class="butt '+(b.css||"")+'" />');
28
+ w.click(function(a){"function"===typeof b.callback&&b.callback(a,{close:m})});q.append(w);return w};for(a=0;a<g.length;a++)b(a,g[a]);r.append(q)}h(d).prepend(r.hide().fadeIn(400));r.find("a").click(m);A()}var b,d;c.init=function(){if(!b)return b=f.alert,f.alert=function(a){a=String(a).split("\n");var b=a[1]&&a.slice(1).join("\n");c.alert(a[0],b)},c};c.debug=function(a){b(a);return c};c.alert=function(a,e,d,c,g){try{return p(a,e||"",d||"alert",c||4E3,g||[]),!0}catch(m){return a+="\n\n--\n"+(m.message||
29
+ m),b.call(f,a),!1}};c.success=function(a,b,d){return c.alert(a,b,"success",d||2E3)};c.dialog=function(a,b,d,k){return c.alert(a,b,k||"alert",-1,d)};return c}({},v,z));l.register("$22",function(c,f,D){function p(a){var e;(e=a.alert)&&alert(e);(e=a.success)&&l.require("$35","growl.js").success.apply(null,e.push?e:[e]);if(e=a.download)f.location.assign(e);else if(e=a.redirect)if(0===e.indexOf("/modal/"))a.modal={url:e};else return f.location.assign(e),!1;else if(a.reload)return f.location.reload(),!1;
30
+ (e=a.modal)&&l.require("$32","modal.js").replace(e);(e=a.async)&&b(e.job_id,e.title)}function b(a,b){var d=l.require("$36","overlay.js");d.open().disableClose().css("modal-processing").html('<div class="wrap"><h2>'+(b||"Please wait")+"</h2></div>");l.require("$37","async.js").init(a).delay(500).timeout(2E4).listen("error",function(a){d.css("modal-error").enableClose().title("Error");d.html("<h2>"+(a||"Unknown error")+"</h2>")}).listen("complete",function(a){d.close();d=null;a&&p(a)}).start()}var d=
31
+ {401:"Authorization Required",422:"Invalid data sent to server",404:"Not Found",500:"Server Error",502:"Bad Gateway",503:"Service unavailable",504:"Gateway timeout"};c.jsonLink=function(a){if(!a)return"";a=a.split("?");a[0]=a[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return a.join("?")};c.errorData=function(a,b,c){var k,g;c=a.responseText;b=a.status;if(!c&&0===b)return null;try{k=h.parseJSON(c)||{}}catch(m){k={},g=d[a.status]||m.message||m}k.error=g||k.error||k.statusText||a.statusText||d[b]||"Unknown Error";
32
+ return k};c.ajax=function(a,b,n,k){function g(a){function b(a){var g=a&&a[0];if(!g||D.contains&&!D.contains(g))a=h(D.body);return a}var g=b(k);g.trigger("locoAjaxSuccess",[a]);var e=a.events;if(e&&e.length)for(var d,q=l.require("$31","ga.js");d=e.shift();)g=b(g),g.trigger(d,[a]),q.event("ajax",d);if(!1===p(a))return!1;n&&n();return!0}function m(m,k,s){if("abort"!==k){var r=m.status,w,q=a.statusCode;if(200===r||!q||!q[r])if(401===r)l.require("$32","modal.js").load("/modal/user/ping.json?r="+encodeURIComponent(location.pathname),
33
+ d[r]);else{if("parsererror"===k)f.console&&console.error&&console.error(r,m.responseText),w=404===r?"Ajax service not found":/^\s+Fatal error/.test(m.responseText)?"Fatal server error from Ajax request":"Bad Ajax response";else{var C=c.errorData(m,k,s);C&&C.error&&(w=C.error)}"function"===typeof b&&!1===b(null,w,r,m)?n&&n():C&&C.data&&!g(C.data)||(alert(w||"Unknown Ajax error"),n&&n())}}}(a.headers||(a.headers={}))["X-Loco-Csrf"]=f.loco&&G.csrf||"";a.error=m;a.success=function(a,c,s){if(!a||"object"!==
34
+ typeof a)return m(s,"unknown");(a.status||a.error)&&alert(a.error||a.statusText||s.statusText||d[a.status]||"Unknown Error");"function"===typeof b&&!1===b(a&&a.data?a.data:a,null,c,s)?n&&n():a&&a.data?g(a.data):n&&n()};-1!==a.url.indexOf(".json")&&(a.dataType="json");return h.ajax(a)};return c}({},v,z));l.register("$37",function(c,f,h){c.init=function(c){function b(a,b){for(var g=-1,e,d=q[a]||[];++g<d.length;)(e=d[g])&&e.apply&&e.apply(null,b||[])}function d(){var a=B+"ms",g=Math.round(B/1E3);1<g&&
35
+ (a=g+" seconds");a="Job timeout after "+a;n();e();b("error",[a])}function a(a,d){if(!a||d)a={state:"error",message:d};try{switch(a.state){case "error":throw Error(a.message||"Unknown error tracking job progress");case "queued":case "starting":case "progress":var q=a.progress||0,r=a.message,y=a.state;q!==m&&(n(),m=q);b("progress",[m,r,y]);g();break;case "done":var A=a.data,c=a.message;m=100;n();e();b("complete",[A,c]);break;default:throw Error("Unexpected job status: "+a.state);}}catch(w){q=w.message||
36
+ w,n(),e(),b("error",[q])}}function e(){r&&(clearTimeout(r),r=null)}function n(){s&&(clearTimeout(s),s=null)}function k(){var b={dataType:"json",url:A};l.require("$22","http.js").ajax(b,a)}function g(){e();r=setTimeout(k,w);s||(s=setTimeout(d,B))}var m=0,A="/ajax/async/poll/"+c+".json",B=1E4,s,r,w=100,q={error:[],complete:[],progress:[]};return{start:function(){n();g();return this},stop:function(){n();e();return this},delay:function(a){w=a;return this},timeout:function(a){B=a;return this},listen:function(a,
37
+ b){var g=q[a];if(g)g.push(b);else throw Error(a+" is not a valid async event");return this}}};return c}({},v,z));l.register("$32",function(c,f,D){function p(a){a.stopPropagation();a.preventDefault();return!1}function b(){m||(m=l.require("$36","overlay.js"),m.listen(n));return m}function d(){var a=s.length-1,b=s[a],g=h('<a class="has-icon icon-back" data-gravity="w">Back</a>').attr("href",b[0]).attr("title",b[1]).click(function(g){if(s[a]===b&&C())return l.require("$11","tooltip.js").kill(),p(g)});
38
+ m.enableNav(g);l.require("$11","tooltip.js").init(g)}function a(a,b,g){a=a.split("#");var e=a[0],e=e+(-1===e.indexOf("?")?"?":"&"),e=e+(encodeURIComponent(b)+"="+encodeURIComponent(g));a[0]=e;return a.join("#")}function e(a,g){var e=b().autoSize(),q=e.init();l.require("$18","html.js").init(q);g&&g.lock&&e.disableClose();s.length&&d();q.find("[data-script]").each(function(a,b){b=h(b);for(var e=-1,d,q=b.attr("data-script").split(" ");++e<q.length;)d=q[e],B[d]?B[d](b,g||{}):alert("Unknown script "+d)});
39
+ q.trigger("locoModalLoaded",[e,a||"",g||{}]);var m=q.find("form")[0],r;if(m)a:for(e=0;e<m.elements.length;e++)switch(q=m.elements[e],q.type){case "text":case "email":case "textarea":r=Number(q.getAttribute("tabindex"));if(isNaN(r)||100>r)continue a;h(q).focus();break a}}function n(){r=null;s=[];return!0}function k(a){var b=h(a.currentTarget),e=b.attr("data-modal");if("back"===e){if(C())return p(a);e="close"}if("close"===e){q();var d=b.attr("href");if(d&&-1!==d.indexOf("#!"))return!0}else{var m="submit"===
40
+ a.type,r=b.attr("title")||b.attr("data-title"),d=b.attr("href")||b.attr("action"),A=m?b.serialize():"",b=m?b.attr("method"):"get";w(d,r,b,A,"modal "+(e||g(d)))}return p(a)}function g(a){return"http"===a.substr(0,4)?a.split("/").slice(3,6).join("-"):a.split("/").slice(1,4).join("-")}var m,A=l.require("$31","ga.js"),B={},s=[],r,w=c.load=function(g,d,q,y,n){var k=r;r=[].slice.call(arguments);k&&g!==k[0]&&(s.push(k),g=a(g,"r",k[0]));k=b();k.active()||k.open().css("modal").html('<div class="loading"></div>');
41
+ k.title("Loading ..").disableClose().disableNav();k.think();var k=g.split("#"),B=k[1];B&&(g=k[0]);var k=l.require("$22","http.js"),C={type:q||"get",data:y||"",url:k.jsonLink(g)};k.ajax(C,function(a,b,c){var k=a&&a.html;if(!k)return a&&a.redirect?(r=s.pop()||null,w(a.redirect,d,q,y,n)):(a=h('<h3 class="error"></h3>').text(b||"Unknown error"),b=h('<footer class="buttonset"><a href="/" data-modal="close" class="has-icon icon-ok">Close</a></footer>'),a=h('<div class="basic"></div>').append(a).append(b),
42
+ b="Error",c&&200!==c&&(b+=" "+c),m.unthink().enableClose().title(b).html("").append(a),l.require("$18","html.js").init(m.init())),!1;d=a.title||d||"Untitled";r&&(r[1]=d);m.unthink().enableClose().title(d,a.icon).width(null).css(n||"modal").autoSize().html(k);c=a.js||{};B&&(c["#"]=B);e(g,c);A.page(g,d);m.init().one("overlayClosed",function(){A.reset()});return!0});return c},q=c.close=function(){b().close();return c},C=c.back=function(){if(previous=s.pop())return r=s[s.length-2],w.apply(null,previous),
43
+ !0};c.reload=function(){r&&w.apply(null,r)};c.postback=function(a){r&&(r[2]="post",r[3]=a,w.apply(null,r))};c.initLink=function(a){a.click(k)};c.initForm=function(a){h(a).submit(k)};c.replace=function(a){var d=b(),q=a&&a.html,m=a&&a.url,r=a&&a.title,A=a&&a.action;if(m)q=s.length-1,q=0<=q?s[q][0]:void 0,m===q?C():w(m,r,"","",a&&a.css||"modal "+g(m));else if(q)d.open().html(q),r&&d.enableClose().title(r),e("",a&&a.js);else if("function"===typeof c[A])c[A]();return d};c.find=function(a){return b().init().find(a)};
44
+ c.script=function(a,b){if(b){if("function"!==typeof b.run)throw Error(a+" macro has no run function");B[a]=b.run;return c}return B[a]};c.hash=function(a){var b=a.hash;"#/modal/"===b.substr(0,8)&&(b=b.substr(1),a.hash="",c.replace({url:b}))};return c}({},v,z));l.register("$21",{"\u00e1":"a","\u00e0":"a","\u0103":"a","\u1eaf":"a","\u1eb1":"a","\u1eb5":"a","\u1eb3":"a","\u00e2":"a","\u1ea5":"a","\u1ea7":"a","\u1eab":"a","\u1ea9":"a","\u01ce":"a","\u00e5":"a","\u01fb":"a","\u00e4":"a","\u01df":"a","\u00e3":"a",
45
  "\u0227":"a","\u01e1":"a","\u0105":"a","\u0101":"a","\u1ea3":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1eb7":"a","\u1ead":"a","\u1e01":"a","\u01fd":"\u00e6","\u01e3":"\u00e6","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0107":"c","\u0109":"c","\u010d":"c","\u010b":"c","\u00e7":"c","\u1e09":"c","\u010f":"d","\u1e0b":"d","\u1e11":"d","\u0111":"d","\u1e0d":"d","\u1e13":"d","\u1e0f":"d","\u00f0":"d","\ua77a":"d","\u01c6":"\u01f3","\u00e9":"e","\u00e8":"e","\u0115":"e","\u00ea":"e","\u1ebf":"e","\u1ec1":"e",
46
  "\u1ec5":"e","\u1ec3":"e","\u011b":"e","\u00eb":"e","\u1ebd":"e","\u0117":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u1ebb":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u1e19":"e","\u1e1b":"e","\u1e1f":"f","\ua77c":"f","\u01f5":"g","\u011f":"g","\u011d":"g","\u01e7":"g","\u0121":"g","\u0123":"g","\u1e21":"g","\ua7a1":"g","\u1d79":"g","\u0125":"h","\u021f":"h","\u1e27":"h","\u1e23":"h","\u1e29":"h","\u0127":"h","\u210f":"h","\u1e25":"h","\u1e2b":"h",
47
  "\u1e96":"h","\u00ed":"i","\u00ec":"i","\u012d":"i","\u00ee":"i","\u01d0":"i","\u00ef":"i","\u1e2f":"i","\u0129":"i","\u012f":"i","\u012b":"i","\u1ec9":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u1e2d":"i","\u0135":"j","\u01f0":"j","\u1e31":"k","\u01e9":"k","\u0137":"k","\ua7a3":"k","\u1e33":"k","\u1e35":"k","\u013a":"l","\u013e":"l","\u013c":"l","\u0142":"l","\u1e37":"l","\u1e39":"l","\u1e3d":"l","\u1e3b":"l","\u0140":"l","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0144":"n","\u01f9":"n","\u0148":"n",
53
  "\u1f90":"\u03b7","\u1f21":"\u03b7","\u1f25":"\u03b7","\u1f95":"\u03b7","\u1f23":"\u03b7","\u1f93":"\u03b7","\u1f27":"\u03b7","\u1f97":"\u03b7","\u1f91":"\u03b7","\u03ae":"\u03b7","\u1f75":"\u03b7","\u1fc4":"\u03b7","\u1f74":"\u03b7","\u1fc2":"\u03b7","\u1fc6":"\u03b7","\u1fc7":"\u03b7","\u1fc3":"\u03b7","\u1f30":"\u03b9","\u1f34":"\u03b9","\u1f32":"\u03b9","\u1f36":"\u03b9","\u1f31":"\u03b9","\u1f35":"\u03b9","\u1f33":"\u03b9","\u1f37":"\u03b9","\u03af":"\u03b9","\u1f77":"\u03b9","\u1f76":"\u03b9",
54
  "\u1fd0":"\u03b9","\u1fd6":"\u03b9","\u03ca":"\u03b9","\u0390":"\u03b9","\u1fd3":"\u03b9","\u1fd2":"\u03b9","\u1fd7":"\u03b9","\u1fd1":"\u03b9","\u1f40":"\u03bf","\u1f44":"\u03bf","\u1f42":"\u03bf","\u1f41":"\u03bf","\u1f45":"\u03bf","\u1f43":"\u03bf","\u03cc":"\u03bf","\u1f79":"\u03bf","\u1f78":"\u03bf","\u1fe4":"\u03c1","\u1fe5":"\u03c1","\u1f50":"\u03c5","\u1f54":"\u03c5","\u1f52":"\u03c5","\u1f56":"\u03c5","\u1f51":"\u03c5","\u1f55":"\u03c5","\u1f53":"\u03c5","\u1f57":"\u03c5","\u03cd":"\u03c5",
55
  "\u1f7b":"\u03c5","\u1f7a":"\u03c5","\u1fe0":"\u03c5","\u1fe6":"\u03c5","\u03cb":"\u03c5","\u03b0":"\u03c5","\u1fe3":"\u03c5","\u1fe2":"\u03c5","\u1fe7":"\u03c5","\u1fe1":"\u03c5","\u1f60":"\u03c9","\u1f64":"\u03c9","\u1fa4":"\u03c9","\u1f62":"\u03c9","\u1fa2":"\u03c9","\u1f66":"\u03c9","\u1fa6":"\u03c9","\u1fa0":"\u03c9","\u1f61":"\u03c9","\u1f65":"\u03c9","\u1fa5":"\u03c9","\u1f63":"\u03c9","\u1fa3":"\u03c9","\u1f67":"\u03c9","\u1fa7":"\u03c9","\u1fa1":"\u03c9","\u03ce":"\u03c9","\u1f7d":"\u03c9",
56
+ "\u1ff4":"\u03c9","\u1f7c":"\u03c9","\u1ff2":"\u03c9","\u1ff6":"\u03c9","\u1ff7":"\u03c9","\u1ff3":"\u03c9","\u0491":"\u0433","\u0450":"\u0435","\u0451":"\u0435","\u04c2":"\u0436","\u045d":"\u0438","\u04e3":"\u0438","\u04ef":"\u0443"});l.register("$7",function(c,f,h){c.init=function(){function c(a){return m[a]||a}function b(a,b,g,e){b=a.split(b);for(var d=b.length;0!==d--;)(a=b[d])&&null==e[a]&&(g.push(a),e[a]=!0);return g}function d(a){return b(String(a||"").toLowerCase().replace(k,c),g,[],{})}function a(a,
57
+ e){for(var d=[],m={},w,q=e.length,C=g;0!==q--;)(w=e[q])&&b(String(w||"").toLowerCase().replace(k,c),C,d,m);n[a]=d}function e(a,b){var g=[],e=-1,d=n,q=d.length,m,c,k,f,y,h,p=a.length,I=b?!0:!1;a:for(;++e<q;)if(k=d[e],null!=k&&(f=k.length)){y=0;b:for(;y<p;y++){h=a[y];for(m=0;m<f;m++)if(c=k[m],0===c.indexOf(h))continue b;continue a}g.push(I?b[e]:e)}return g}var n=[],k=/[^a-z0-9]/g,g=/[\-_\s.?!;:,*^+=~`"(){}<>\[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/,m=l.require("$21","flatten.json");
58
+ return{split:d,pull:function(a,b){return e(a,b)},find:function(a,b){return e(d(a),b)},add:function(a,b){n[a]=d(b)},push:function(b){a(n.length,b)},index:function(b,g){a(b,g)},size:function(){return n.length},clear:function(){n=[]},remove:function(a){n[a]=null}}};return c}({},v,z));l.register("$23",function(c,f,h){c.create=function(){var c=[],b=l.require("$7","fulltext.js").init();return{add:function(d,a){b.add(c.length,a);c.push(d);return this},find:function(d){return b.find(d,c)},clear:function(){c=
59
+ [];b.clear();return this}}};return c}({},v,z));l.register("$10",function(c,f,D){function p(b){-1===b.indexOf("?")&&(b="/auto/"+b+".json?q=");this.url=b;this.dead={}}function b(){this.dict=l.require("$23","dict.js").create()}c.init=function(d){function a(){if("hint"!==K){var a=y.val()&&!(J&&J.val())&&null==f&&!q;D[a?"addClass":"removeClass"]("error")}}function e(a){J&&J.val(a)}function c(){v.show();var a=y.outerWidth(!1),b=y.outerHeight(!1),g=y.css("margin-top");g&&(g=parseInt(g),isNaN(g)||(b+=g));
60
+ a-=2;v.css("top",b+"px").css("minWidth",a+"px");q=!0}function k(){v.hide();q=!1}function g(){v.html("");k();w=0;u=f=null}function m(b){g();var e;for(e=0;e<b.length;e++){var d=e,q=b[e],m=q.value,r=q.lang||m.lang,y=h('<span class="label"></span>').text(q.label),k=h('<div class="auto-comp-result"></div>'),s=void 0,E=void 0;if(E=q.icon)s=h("<span></span>").attr("class",E).appendTo(k),r?(s.attr("lang",r),q.lang=r):-1!==E.indexOf("lang-"+m)&&(s.attr("lang",m),q.lang=m);for(E in q)k.data(E,q[E]);k.append(y);
61
+ A(d,k)}(w=b.length)?(C&&c(),B(0)):(B(null),a(),D.trigger("locoAutonone",[]))}function A(a,b){v.append(b);b.click(function(g){g.stopPropagation();B(a,b);r();return!1});return b}function B(a,b){u&&(u.removeClass("selected"),u=null);f=null;null==a?e(""):(b||(b=v.find("div.auto-comp-result").eq(a)),b.length&&(b.addClass("selected"),f=a,u=b))}function s(a){if(w){var b=w-1;null==f?a=0<a?0:b:(a=f+a,0>a?a=b:a>b&&(a=0));return B(a)}}function r(){if(null==f)z.val(""),e("");else{var b=v.find("div.auto-comp-result").eq(f),
62
+ d=b.data()||{label:"Error"},q=d.value,m=d.label;e(q);z.val(m);k();b=b.clone();b.data(d);g();A(0,b);w=1;B(0,b);a();b.trigger("locoAutocomp",[q,m,b])}}var w=0,q=!1,C=!1,E=d.form,f=null,u=null,y=h(d),F=y.attr("name"),K=y.attr("data-mode"),I=y.attr("data-provider"),J="hint"!==K&&h('<input type="hidden" value="" name="'+F+'" />').appendTo(E),D=h('<div class="auto-comp-wrap"></div>').replaceAll(y),v=h('<div class="auto-comp-drop"></div>');I&&(I=new p(I));J&&y.attr("name","_"+F);y.attr("autocomplete")||
63
+ y.attr("autocomplete","off");D.append(y).append(v);k();y.focus(function(){C=!0;1<w&&c()}).blur(function(){C=!1;a()}).keydown(function(a){function b(){a.preventDefault();a.stopPropagation();return!1}switch(a.keyCode){case 27:q&&(a.stopPropagation(),k(),y.blur());break;case 40:w&&(q?s(1):c());break;case 38:q&&s(-1);break;case 13:if(q)return r(),b();if(!f&&"hint"!==K)return b()}return!0});var z=l.require("$8","LocoTextListener.js").listen(y,function(a){I&&I.fetch(a,m)});(E=y.attr("data-pre"))&&(E=h.parseJSON(E))&&
64
+ E.value&&E.label?(m([E]),r()):!d.value||J&&J.val()||!I||I.fetch(d.value,function(a){m(a);r()});return{$:y,val:function(){return J&&J.val()},clear:g,reset:function(){g();y.val("");e("");z.ping()},force:function(a,b){g();e(b||"");z.val(a)},preload:function(a){w&&g();I=new b;var e,d;for(e in a)d=a[e],I.add(d)},mode:function(a){K=a},provide:function(a){I=new p(a)}}};p.prototype.fetch=function(b,a){if(!b)return a&&a([]),this.dead={},this;var e,c=this.dead;for(e in c)if(0===b.indexOf(e))return a&&a([]),
65
+ this;e={dataType:"json",url:this.url+encodeURIComponent(b)};l.require("$22","http.js").ajax(e,function(e){var g=e&&e.results;g&&(a&&e.query&&e.query===b&&a(e.results),g.length||(c[b]=0));return!0});return this};b.prototype.add=function(b){var a=b.fulltext||b.label||b.value;a&&this.dict.add(b,a)};b.prototype.fetch=function(b,a){var e=b?this.dict.find(b):[];a&&a(e);return this};return c}({},v,z));l.register("$9",function(c,f,D){function p(a){a.stopPropagation();a.preventDefault();return!1}function b(a,
66
+ b,e){e.off().mouseup(function(e){e.stopPropagation();a.selectIndex(b,!0);return!1}).mouseover(function(){h(this).addClass("over");a.hover=b;return!0}).mouseout(function(){h(this).removeClass("over");a.hover=-1;return!0});return e}function d(b){n===b&&(h(f).off("resize scroll",a),n=null);return b}function a(){n&&n.resize()}function e(a){if(a){var b,e=a[0],d=e.id,c=e.title,r=e.disabled,n=[],q=[],k,E=-1,f=e.options.length,u=this.selectedIcon||"";this.id=d||"";this.name=e.name||"";this.prefix=e.getAttribute("data-prefix");
67
+ for(this.defaultIcon=e.getAttribute("data-icon")||"icon no-icon";++E<f;)b=e.options[E],k=h(b),b.selected&&n.push(E),q.push([k.val(),k.text(),k.attr("data-icon")||u,b.disabled,k.attr("lang")]);this.hidden||(this.hidden=h('<input type="hidden" name="'+this.name+'" value="" />').appendTo(e.form));this.list=h("<ul></ul>").mouseup(p);this.icon=h('<span class="icon"> </span>');this.selection=h('<span class="label"></span>');this.handle=h('<a class="handle" href="#"></a>').attr("tabindex",a.attr("tabindex")||
68
+ "").append(this.icon).append(this.selection);b=h('<div class="selector"></div>').addClass(e.className).append(this.handle).append(this.list).replaceAll(e);d&&b.attr("id",d);c&&a.hasClass("hastip")&&(b.attr("title",c),l.require("$11","tooltip.js").init(b,{gravity:a.attr("data-gravity")||"s",anchor:a.attr("data-anchor")}));this.wrapper=b;this.up=b.hasClass("up");for(this.clearOptions();b=q.shift();)this.addOption.apply(this,b);r?this.disable():this.enable();this.close();if(f=n.length)for(E=0;E<f;E++)this.selectIndex(n[E]);
69
+ else E=e.selectedIndex,null!=E&&0<=E&&this.selectIndex(E)}}c.create=function(a){return new e(a)};c.extend=function(a){a.parent=e;a.prototype=new e};var n,k=e.prototype;k.enable=function(){var a=this;a.bound?a.wrapper.removeClass("disabled"):(a.handle.click(function(a){a.preventDefault();return!1}).mouseover(function(b){return a.onRollover(b)}).mouseout(function(b){return a.onRollout(b)}).mousedown(function(b){return a.onPress(b)}).keydown(function(b){return a.onKeydown(b)}),h(D).mouseup(function(b){return a.onRelease(b)}).keydown(function(b){return a.onGlobalKeydown(b)}),
70
+ a.bound=!0)};k.disable=function(){this.wrapper.addClass("disabled")};k.isDisabled=function(){return this.wrapper.hasClass("disabled")};k.onRollover=function(){return this.over=!0};k.onRollout=function(){this.over=!1;return!0};k.onPress=function(a){return this.active?this.over?(this.close(),a.stopPropagation(),a.preventDefault(),!1):!0:(this.open(),a.stopPropagation(),a.preventDefault(),this.handle.focus(),!1)};k.onRelease=function(){this.active&&!this.over&&this.close();return!0};k.onGlobalKeydown=
71
+ function(a){if(this.active)switch(a.keyCode){case 27:return this.close(),p(a);case 40:return this.hoverNext(1),p(a);case 38:return this.hoverNext(-1),p(a);case 13:if(-1!=this.hover)return this.selectIndex(this.hover,!0),this.hoverItem(-1),this.close(),p(a)}return!0};k.onKeydown=function(a){return this.active||40!==a.keyCode?!0:(this.open(),p(a))};k.resize=function(){var a=this.list,b=this.handle,e=b.outerWidth()||0,d=a.outerWidth()||0,c;this.up?(c=a.outerHeight(),a.css("top","-"+(c+2)+"px")):(c=b.outerHeight()||
72
+ 0,c+=2,a.css("top",c+"px"),b=c+l.require("$18","html.js").top(b[0]),c=f.innerHeight-Math.max(0,b-f.pageYOffset),c-=4,a.css("max-height",c+"px"));e>d&&(e-=d-a.width(),a.css("min-width",String(e)+"px"))};k.open=function(){var b=this.list,e=this.wrapper,c=e.data("tipsy");this.active=!0;this.hover=-1;e.addClass("active");b.show().scrollTop(0);c&&c.disable();this!==n&&(n&&d(n),h(f).on("resize scroll",a),n=this);this.resize()};k.close=function(){var a=this.wrapper,b=a.data("tipsy");this.list.hide();this.active=
73
+ !1;-1!==this.hover&&(this.getElement(this.hover).removeClass("over"),this.hover=-1);a.removeClass("active");b&&b.enable();d(this)};k.hoverItem=function(a,b){-1!==this.hover&&this.getElement(this.hover).removeClass("over");this.hover=a;-1!==a&&(b=b||this.getElement(a),b.addClass("over"))};k.hoverNext=function(a){var b=this.hover,e=this.options.length,d,c=null;for(-1===b&&0>a&&(b=e);e;){b+=a;if(0>b){this.close();break}else b>=e&&(b=0);if((d=this.options[b])&&!d.disabled&&!d.hidden){this.hoverItem(b);
74
+ break}if(null==c)c=b;else if(c===b)break}};k.enableChange=function(a){this.eventName=a;this.eventData=[].slice.call(arguments,1);return this};k.enableConfirm=function(a){this.confirm=a;return this};k.clearOptions=function(){this.index={};this.length=0;this.options=[];this.list.html("");this.hidden.val("");this.idx=this.hover=-1;this.dict=null;return this};k.destroy=function(){this.clearOptions();this.hidden.remove()};k.addOption=function(a,e,d,c,n){var r=this.options.length,k=h("<span></span>").addClass(d||
75
+ "icon no-icon"),q=h('<span class="label"></span>').text(e||a),q=h("<li></li>").append(k).append(q).appendTo(this.list);14<r&&this.getDict().add(r,e);n?n=n.split("-").shift():d&&-1!==d.indexOf("lang-"+a)&&(n=a);n&&k.attr("lang",n);q.attr("data-option",r);this.options[r]={value:a,text:e,lang:n||"",icon:d};this.index[a]=r;this.length=r+1;c?this.disableIndex(r):b(this,r,q);return r};k.getDict=function(){return this.dict||(this.dict=this.createDict())};k.createDict=function(){var a=this,b=l.require("$7",
76
+ "fulltext.js").init(),e=h('<input type="text" placeholder="&#x1F50D;"/>').appendTo(h('<form class="clearable"></form>').submit(p).insertBefore(a.getElement(0)));l.require("$8","LocoTextListener.js").listen(e,function(d){0===(""===d?a.unfilter():a.filter(b.find(d)))?e.addClass("error"):e.removeClass("error")});h.each(a.options,function(a,e){b.add(a,e.text)});return b};k.filter=function(a){var b=-1,e=this.length,d,c=-1,r=a.length;if(r===e)this.unfilter();else{for(;++c<r;){for(d=a[c];++b<d;)this.hideIndex(b);
77
+ this.showIndex(b)}for(;++b<e;)this.hideIndex(b)}return r};k.unfilter=function(){for(var a=-1,b=this.length;++a<b;)this.showIndex(a);return b};k.disableOption=function(a){return this.disableIndex(this.index[a])};k.enableOption=function(a){return this.enableIndex(this.index[a])};k.disableIndex=function(a){var b=this.options[a];b&&!b.disabled&&(b.disabled=!0,this.getElement(a).addClass("disabled").off());return this};k.enableIndex=function(a){var e=this.options[a];e&&e.disabled&&(e.disabled=null,b(this,
78
+ a,this.getElement(a)).removeClass("disabled"));return this};k.hideIndex=function(a){var b=this.options[a];b&&!b.hidden&&(b.hidden=!0,this.getElement(a).hide())};k.showIndex=function(a){var b=this.options[a];b&&b.hidden&&(b.hidden=null,this.getElement(a).show())};k.each=function(a){for(var b=-1,e=this.options,d=e.length;++b<d;)a(b,e[b]);return this};k.reIndex=function(){var a=-1,b={},e,d=this.dict,c=this.options,r=c.length;for(d&&d.clear();++a<r;)e=c[a],b[e.value]=a,d&&d.add(a,e.text);this.index=b;
79
+ this.length=r};k.selectValue=function(a,b){return this.selectIndex(this.index[a],b)};k.hasValue=function(a){return null!=this.index[a]};k.hasIndex=function(a){return this.length>a};k.getIndex=function(){return this.idx};k.selectIndex=function(a,b){var e=this.options[a];if(e){var d=this,c=d.idx,r=e.value,n=e.icon||d.defaultIcon,q=function(){null!=c&&d.getElement(c).removeClass("active");d.getElement(a).addClass("active");d.setLabel(e.text).setIcon(n,e.lang);d.hidden.val(r);d.idx=a;b&&d.change()};c===
80
+ a?d.hidden.val(r):b?"function"===typeof d.confirm?d.confirm.call(null,e,function(a){a&&q()}):d.beforeChange(r)&&q():q();d.active&&d.close()}return this};k.setLabel=function(a){this.selection.text(a);(a=this.prefix)&&this.selection.prepend(h('<span class="prefix"></span>').text(a));return this};k.setIcon=function(a,b){this.icon.attr("class",a).attr("lang",b||"");return this};k.val=function(){var a=this.options[this.idx];return a&&a.value};k.change=function(){var a=this.val(),b=this.save,e=this.eventName||
81
+ "change",d=[a].concat(this.eventData||[]);this.wrapper.trigger(e,d);b&&b(a);this.hidden.triggerHandler("change");return this};k.beforeChange=function(a){var b=h.Event("locoBeforeSelect");this.wrapper.trigger(b,[a]);return!b.isDefaultPrevented()};k.renameOption=function(a,b){var e=this.index[a],d=this.options[e];d&&(d.text=b,this.getElement(e).find("span.label").text(b),e===this.idx&&this.setLabel(b));return this};k.removeOption=function(a){var b=this.index[a],e=this.options[b];e&&(a=this.val(),this.getElement(b).remove(),
82
+ this.options.splice(b,1),this.reIndex(),a===e.value?this.selectIndex(0,!0):this.selectValue(a,!1))};k.getElement=function(a){return this.list.find("li").eq(a)};k.getWrapper=function(){return this.wrapper};k.tip=function(){return this.getWrapper().data("tipsy")};k.$=function(a,b){h.fn[a].apply(this.wrapper,b||[]);return this};k.persist=function(a){var b=this.id||this.name,e=a.fetch(b);null!=e&&this.selectValue(e,!0);this.save=function(e){a.store(b,e)};return this};k.listen=function(a){return this.on(this.eventName||
83
+ "change",a)};k.on=function(a,b){this.wrapper.on(a,b);return this};k=null;return c}({},v,z));l.register("$33",function(c,f,D){function p(b){var d=[],a=h([]);this.hidden=a;this.selected=d;this.selectedIcon="icon icon-checkbox";this.constructor.call(this,b);this.wrapper.addClass("multi");for(var e,c,k,g=h('<input type="checkbox" name="'+this.name+'[]" />')[0],m=this.options,A=m.length,f=-1;++f<A;)e=this.getElement(f)[0],k=g.cloneNode(!0),d[f]&&(k.checked=!0),k.setAttribute("value",m[f].value),a.push(e.appendChild(k));
84
+ (c=this.defaultIcon)&&this.setIcon(c);(c=b.attr("title"))?this.setLabel(c):this.wrapper.addClass("no-title")}c.create=function(b){return new p(b)};l.require("$9","LocoSelector.js").extend(p);f=p.prototype;f.selectIndex=function(b,d){return this.setIndexState(b,!this.selected[b],d)};f.setIndexState=function(b,d,a){var e=this.options[b],c=this.getElement(b),k=this.hidden[b],g=this.selected;e&&d!==g[b]&&(g[b]=d,c[d?"addClass":"removeClass"]("checked"),k&&(k.checked=d),a&&this.change());return this};
85
+ f.selectValue=function(b,d){if(null==b.pop)return p.parent.prototype.selectValue.call(this,b,d);for(var a=this.selected.slice(),e=this.options.length,c=this.index||{},k=!1,g=-1,m=-1;++g<e;)a[g]&&(k=!0),a[g]=!1;if(e=b.length)for(;++m<e;)g=c[b[m]],null==g?k=!0:!1===a[g]&&(k=a[g]=!0);if(k){for(g in a)this.setIndexState(g,a[g]);d&&this.change()}return this};f.val=function(){for(var b=[],d=this.options,a=this.selected,e=a.length,c=-1;++c<e;)a[c]&&b.push(d[c].value);return b};f=null;return c}({},v,z));
86
+ l.register("$44",function(c,f,h){function p(b,a){for(var e=String(b);a>e.length;)e="0"+e;return e}function b(b){var a=b%10;if(1===a){if(11!==b)return"st"}else if(2===a){if(12!==b)return"nd"}else if(3===a&&13!==b)return"rd";return"th"}c.formatter=function(){return{format:function(b,a){var e=this;return a.replace(/%[YmdHisMjSghAa]/g,function(a){return e[a.charAt(1)](b)})},Y:function(b){return String(b.getFullYear())},m:function(b){return p(1+b.getFullMonth(),2)},M:function(b){return"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ")[b.getMonth()]},
87
+ d:function(b){return p(b.getDate(),2)},H:function(b){return p(b.getHours(),2)},i:function(b){return p(b.getMinutes(),2)},s:function(b){return p(b.getSeconds(),2)},j:function(b){return String(b.getDate())},S:function(d){return b(d.getDate())},g:function(b){b=b.getHours();return String(0===b?12:12<b?b-12:b)},h:function(b){return p(this.g(b),2)},a:function(b){return 12>b.getHours()?"am":"pm"},A:function(b){return 12>b.getHours()?"AM":"PM"}}};return c}({},v,z));l.register("$34",function(c,f,D){function p(a){var d=
88
+ a.id,c=n||(n=[]),r=k||(k={}),w=a.getAttribute("datetime"),w=m(w);if(!isNaN(w))return d||(d="tick"+ ++g,a.setAttribute("id",d)),a={id:d,el:a,dt:new Date(w),st:a.textContent},r[d]||c.push(a),r[d]=a,e||(e=setTimeout(b,200)),a}function b(){for(var a=n,c=a.length,g={},r=[];0<c--;)ticker=a[c],d(ticker)&&(r.push(ticker),g[ticker.id]=ticker);r.length?(n=r,k=g,e=setTimeout(b,3E4)):e=k=n=null}function d(b){var e=b.el;if(D.contains&&!D.contains(e))return!1;strDate=a(b.dt,new Date,!0);if(""===strDate)return!1;
89
+ strDate!==b.st&&(h(e).text(strDate),b.st=strDate);return!0}function a(a,b,e){var d=b.getTime(),c=a.getTime(),q=d-c;if(6E4>q)return"Just now";if(36E5>q)return a=Math.floor(q/6E4),String(a)+" minute"+(1===a?"":"s")+" ago";if(864E5>q&&b.getDate()===a.getDate()&&b.getMonth()===a.getMonth()&&b.getFullYear()===a.getFullYear())return a=Math.round(q/36E5),"About "+String(a)+" hour"+(1===a?"":"s")+" ago";if(e)return"";e=Math.floor(d/864E5)-Math.floor(c/864E5);d=l.require("$44","date.js").formatter();q=d.format(a,
90
+ " %g:%i %A");return 1>=e&&(b.setHours(0),b.setMinutes(0),b.setSeconds(0),b=b.getTime()-864E5,c>=b)?"Yesterday at"+q:11>e?e+" days ago at"+q:d.format(a,"%M %j%S %Y,")+q}var e,n,k,g=0,m=Date.parse||function(){return Number.NaN};c.onEach=function(a,b){p(b)};c.update=function(a){d(p(a))};c.rel=a;return c}({},v,z));l.register("$18",function(c,f,D){var p=f.ieVersion;c.ie=function(b){return b?p<=b:p};var b=c.init=function(b){b?b instanceof jQuery||(b=h(b)):b=h(D.body);var a=l.require("$31","ga.js"),e=l.require("$19",
91
+ "forms.js"),n=l.require("$32","modal.js"),k=l.require("$10","LocoAutoComplete.js"),g=l.require("$9","LocoSelector.js"),m=l.require("$33","LocoMultiSelector.js"),f=l.require("$11","tooltip.js");b.find("form").each(function(a,b){var d=h(b);p&&10>p&&e.placeholders(d);b.getAttribute("data-modal")?n.initForm(b):b.hasAttribute("action")&&"#"!==d.attr("action").charAt(0)&&!b.target&&e.jsonify(b);d.find("input.auto-comp").each(function(a,b){k.init(b)});d.find("select.selector").each(function(a,b){b.hasAttribute("multiple")?
92
+ m.create(h(b)):g.create(h(b))});d.hasClass("hasreveal")&&e.revealify(d);d.find("button.hastip").each(function(a,b){f.init(h(b))})});b.find("a").each(function(b,e){-1!==e.className.indexOf("hastip")&&f.init(h(e));"/modal/"===String(e.getAttribute("href")).substr(0,7)||e.getAttribute("data-modal")?n.initLink(h(e)):a.link(e)});b.find("time.tick").each(l.require("$34","tick.js").onEach);e=n=k=b=null;return c};c.$=function(b){return h(f.innerShiv?innerShiv(b,!1):b)};h.fn._html=function(d){return null!=
93
+ d?(d=this.html(f.innerShiv?innerShiv(d,!1):d),b(this),d):j.html()};h.fn.macro=function(b,a){if("function"!==typeof b.run)throw Error("macro has no run function");b.run(this,a||{});return this};c.el=function(b,a){var e=D.createElement(b||"div");a&&(e.className=a);return e};c.txt=function(b){return D.createTextNode(b||"")};c.h=function(){function b(){c=/[<>&]/g;k=/(\r\n|\n|\r)/g;g=/(?:https?):\/\/(\S+)/ig;b=null}function a(a){return"&#"+a.charCodeAt(0)+";"}function e(a,b){return'<a href="'+a+'" target="'+
94
+ (b.indexOf(location.hostname)?"_blank":"_top")+'">'+b+"</a>"}var c,k,g;return function(m,f){b&&b();var h=m.replace(c,a);f&&(h=h.replace(g,e).replace(k,"<br />"));return h}}();c.noop=function(b){b&&(b.preventDefault(),b.stopPropagation(),h(b.target).blur());return!1};c.top=function(b,a){a||(a=D.body);for(var e=b.offsetTop||0;(b=b.offsetParent)&&b!==a;)e+=b.offsetTop||0;return e};c.left=function(b,a){a||(a=D.body);for(var e=b.offsetLeft||0;(b=b.offsetParent)&&b!==a;)e+=b.offsetLeft||0;return e};return c}({},
95
+ v,z));l.register("$19",function(c,f,D){function p(a){function b(){a.value===g&&(a.value="",c.removeClass("placeheld"));return!0}function d(){""===a.value&&(a.value=g,c.addClass("placeheld"));return!0}var c=h(a);if(!c.hasClass("auto-comp")){var g=c.attr("placeholder");if(g)return c.focus(b).blur(d),d(),{kill:function(){b();c.off("focus",b).off("blur",d)}}}}var b=c.enable=function(a){function b(a,e){e.getAttribute("data-was-disabled")||(e.disabled=!1)}a.find(".button").removeClass("loading");a.find("button").each(b);
96
+ a.find("input").each(b);a.find("select").each(b);a.find("textarea").each(b);f.attachEvent&&a.hasClass("has-placeholders")&&c.placeholders(a);a.removeClass("disabled").trigger("locoEnable");delete a._disabled},d=c.disable=function(a){function b(a,e){e.disabled?e.setAttribute("data-was-disabled","true"):e.disabled=!0}a._disabled||(a.find(".button").addClass("loading"),a.find("button").each(b),a.find("input").each(b),a.find("select").each(b),a.find("textarea").each(b),a.addClass("disabled").trigger("locoDisable"),
97
+ a._disabled=!0)};c.jsonify=function(a,e,c){a instanceof jQuery||(a=h(a));a.disable||(h.fn.disable=function(){d(this);return this},h.fn.enable=function(){b(this);this.placehold&&this.placehold();return this});var k="";a.find('[type="submit"]').click(function(a){a&&a.target&&a.target.name&&(k=encodeURIComponent(a.target.name)+"="+encodeURIComponent(a.target.value));return!0});a.submit(function(b){if(b&&b.isDefaultPrevented&&b.isDefaultPrevented()||c&&!1===c(b))return!1;var d=a.serialize(),d=d.replace(/%0D%0A/g,
98
+ "%0A");k&&(d&&(d+="&"),d+=k,k="");a.disable();var f=l.require("$22","http.js"),d={url:f.jsonLink(a.attr("action")),type:a.attr("method"),data:d};f.ajax(d,e,function(){a.enable()},a);b.preventDefault();b.stopPropagation();return!1})};c.revealify=function(a){a=a.closest("form");a.find("div[data-reveal-if]").each(function(b,d){function c(a){var b;b=p;q=q||a.target;if("."===r)b=Boolean(q&&q[w]),p&&(b=!b);else{var e,d,y=h(q.form).serializeArray();for(d in y)y[d].name===s&&(e=y[d].value);"!="===r&&(b=!b);
99
+ b=b?w!==e:w===e}if(b!==f)if(f=b,a)g[f?"slideDown":"slideUp"](200);else g[f?"show":"hide"]();return!0}var g=h(d),m=/^(\!?)([_\w\-\[\]]+)(\.|!?=)(.*)$/.exec(g.attr("data-reveal-if"));if(m){var f,p=m[1]?!0:!1,s=m[2],r=m[3],w=m[4],m=a[0][s];if(m.type||null==m.length)m=[m];b=m.length;for(var q;0!==b--;)q=m[b],c(),h(q).change(c).removeClass("jshide");m=m=q=null}});a=null};c.linkify=function(a){var b=a.getAttribute("data-icon");if(b){var d=h(a),c=h("<a> </a>");c.attr("href",a.form.action);c.attr("class",
100
+ d.attr("class"));c.attr("tabindex",d.attr("tabindex"));d.attr("tabindex","-1");c.text(d.val());b&&h("<span></span>").prependTo(c).addClass(b);d.hide().after(c);c.click(function(a){d.click();return!1})}};c.placeholders=function(a){var b,d=[];a.find("input[placeholder]").each(function(a,c){"password"!==c.type&&(b=p(c))&&d.push(b)});d.length&&(a.submit(function(){for(var a in d)d[a].kill()}),a.addClass("has-placeholders"),b=i=null)};return c}({},v,z));l.register("$4",function(c,f,D){function p(a,b,e){function d(){c();
101
+ g=setTimeout(b,e)}function c(){g&&clearTimeout(g);g=null}var g;d();h(a).mouseenter(c).mouseleave(d);return{die:function(){c();h(a).off("mouseenter mouseleave")}}}function b(a,b){a.fadeTo(b,0,function(){a.slideUp(b,function(){a.remove();h(f).triggerHandler("resize")})});return a}function d(a,e){function d(e){g[r]=null;b(h(a),250);c&&c.die();var q;if(q=e)e.stopPropagation(),e.preventDefault(),q=!1;return q}var c,r;h(a).addClass("is-dismissible");h('<button type="button" class="notice-dismiss" href="#"> </a>').prependTo(a).click(d);
102
+ h(f).triggerHandler("resize");m();r=g.length;g.push(d);e&&(c=p(a,d,e));return{stick:function(){c&&c.die();c=null;g[r]=null}}}function a(a,b,e){var d=l.require("$18","html.js");a=h('<div class="notice notice-'+a+'" loco-notice inline></div>').prependTo(h("#loco-notices"));var c=h(d.el("p"));e=h(d.el("span")).text(e);b=h(d.el("strong","has-icon")).text(b+": ");c.append(b).append(e).appendTo(a);return a}function e(b,e,c,g){b=a(c,e,b).hide().fadeIn(500);h(f).triggerHandler("resize");return d(b,g)}function n(a){return e(a,
103
+ B,"warning")}function k(){h("#loco-notices").find("div.notice").each(function(a,b){if(-1===b.className.indexOf("jshide")){var e=-1===b.className.indexOf("notice-success")?null:5E3;d(b,e)}})}var g=[],m=Date.now||function(){return(new Date).getTime()},A,B,s,r;c.error=function(a){return e(a,A,"error")};c.warn=n;c.info=function(a){return e(a,s,"info")};c.success=function(a){return e(a,r,"success",5E3)};c.warning=n;c.log=function(){f.console&&console.log&&console.log.apply(console,arguments)};c.debug=
104
+ function(a,b){f.console&&console.error&&(console.error("Loco Error: "+a),b&&console.debug&&console.debug(b))};c.clear=function(){for(var a=-1,b,e=g,d=e.length;++a<d;)(b=e[a])&&b();g=[];return c};c.create=a;c.raise=function(a){(c[a.type]||c.error).call(c,a.message)};c.convert=d;c.init=function(a){A=a._("Error");B=a._("Warning");s=a._("Notice");r=a._("OK");setTimeout(k,1E3);return c};return c}({},v,z));l.register("$5",function(c,f,D){function p(a){var b=h("<pre>"+a+"</pre>").text();b&&(b=b.replace(/[\r\n]+/g,
105
+ "\n").replace(/(^|\n)\s+/g,"$1").replace(/\s+$/,""));b||(b=a)||(b="Blank response from server");return b}function b(a){return(a=a.split(/[\r\n]/)[0])?(a=a.replace(/ +in +\S+ on line \d+/,""),a=a.replace(/^[()! ]+Fatal error:\s*/,"")):t._("Server returned invalid data")}function d(a,b,e){a[b]=e}function a(a,b,e){a.push({name:b,value:e})}function e(a,b,e){a.append(b,e)}function n(a,e,d,c){function q(e,c,q){if("abort"!==c){var y=g||{_:function(a){return a}},k=e.status,f=e.responseText,w=p(f),h=e.getResponseHeader("Content-Type")||
106
+ "text/html",s=e.getResponseHeader("Content-Length")||f.length;"success"===c&&q?n.error(q):(n.error(b(w)+".\n"+y._("Check console output for debugging information")),n.debug("Ajax failure for "+a,{status:k,error:c,message:q,output:f}),"parsererror"===c&&(q="Response not JSON"),n.log([y._("Provide the following text when reporting a problem")+":","----","Status "+k+' "'+(q||y._("Unknown error"))+'" ('+h+" "+s+" bytes)",w,"===="].join("\n")));d&&d.call&&d(e,c,q);m=e}}c.url=A;c.dataType="json";c.error=
107
+ q;c.success=function(a,b,d){var c=a&&a.data,g=a&&a.notices,r=g&&g.length;for(!c||a.error?q(d,b,a&&a.error&&a.error.message):e&&e(c,b,d);r--;)n.raise(g[r])};var n=l.require("$4","notices.js").clear();return h.ajax(c)}var k={},g,m,A=f.ajaxurl||"/wp-admin/admin-ajax.php";c.init=function(a){k=a.nonces||k;return c};c.localise=function(a){g=a;return c};c.xhr=function(){return m};c.strip=p;c.parse=b;c.submit=function(a,b,e){function d(){c.removeClass("loading");l.require("$19","forms.js").enable(c)}var c=
108
+ h(a),g=c.serialize();c.addClass("loading");l.require("$19","forms.js").disable(c);return n(a.route.value,function(a,e,c){d();b&&b(a,e,c)},function(a,b,c){d();e&&e(a,b,c)},{type:a.method,data:g})};c.post=function(b,c,g,m){var q,C=!0;c=c||{};(q=k[b])||(f.console&&console.debug&&console.debug('No nonce for "'+b+'"'),q="");var E=q;f.FormData&&c instanceof FormData?(C=!1,q=e):q=Array.isArray(c)?a:d;q(c,"action","loco_json");q(c,"route",b);q(c,"loco-nonce",E);return n(b,g,m,{type:"post",data:c,processData:C,
109
+ contentType:C?"application/x-www-form-urlencoded; charset=UTF-8":!1})};c.setNonce=function(a,b){k[a]=b;return c};c.hasNonce=function(a){return!!k[a]};return c}({},v,z));l.register("$20",{arab:1,aran:1,hebr:1,nkoo:1,syrc:1,syrn:1,syrj:1,syre:1,samr:1,mand:1,mend:1,thaa:1,adlm:1,cprt:1,phnx:1,armi:1,prti:1,phli:1,phlp:1,phlv:1,avst:1,mani:1,khar:1,orkh:1,ital:1,lydi:1,ar:1,ary:1,ckb:1,dv:1,fa:1,he:1,nqo:1,ps:1,ur:1,yi:1});l.register("$6",function(c,f,h){function p(){}var b,d=l.require("$20","rtl.json");
110
+ c.init=function(){return new p};c.cast=function(a){return a instanceof p?a:"string"===typeof a?c.parse(a):c.clone(a)};c.clone=function(a){var b,d=new p;for(b in a)d[b]=a[b];return d};c.parse=function(a){if(!(b||(b=/^([a-z]{2,3})(?:[-_]([a-z]{2}))?(?:[-_]([a-z0-9]{3,8}))?$/i)).exec(a))return null;var e=new p;e.lang=RegExp.$1.toLowerCase();if(a=RegExp.$2)e.region=a.toUpperCase();if(a=RegExp.$3)e.variant=a.toLowerCase();return e};f=p.prototype;f.isValid=function(){return!!this.lang};f.isKnown=function(){var a=
111
+ this.lang;return!(!a||"zxx"===a)};f.toString=function(a){a=a||"-";var b,d=this.lang||"zxx";if(b=this.region)d+=a+b;if(b=this.variant)d+=a+b;return d};f.getIcon=function(){for(var a=3,b,d,c=["variant","region","lang"],g=[];0!==a--;)if(b=c[a],d=this[b])g.push(b),g.push(b+"-"+d.toLowerCase());return g.join(" ")};f.isRTL=function(){return!!d[String(this.lang).toLowerCase()]};f=null;return c}({},v,z));l.register("$38",function(c,f,h){function p(){}var b,d,a=l.require("$20","rtl.json");c.init=function(){return new p};
112
+ c.cast=function(a){return a instanceof p?a:"string"===typeof a?c.parse(a):c.clone(a)};c.clone=function(a){var b,d=new p;for(b in a)d[b]=a[b];return d};c.parse=function(a){b||(d=/[-_+]/,b=/^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}|[0-9]{3}))?(?:-([0-9][a-z0-9]{3,8}|[a-z0-9]{5,8}))?(?:-([a-z]-[-a-z]+))?$/i);a=String(a).split(d).join("-");if(!b.exec(a))return null;var c=new p;c.lang=RegExp.$1.toLowerCase();if(a=RegExp.$2)c.script=a.charAt(0).toUpperCase()+a.substr(1).toLowerCase();if(a=RegExp.$3)c.region=
113
+ a.toUpperCase();if(a=RegExp.$4)c.variant=a.toLowerCase();if(a=RegExp.$5)c.extension=a;return c};f=p.prototype;f.isValid=function(){return!!this.lang};f.isKnown=function(){var a=this.lang;return!(!a||"zxx"===a)};f.toString=function(a){a=a||"-";var b,d=this.lang||"zxx";if(b=this.script)d+=a+b;if(b=this.region)d+=a+b;if(b=this.variant)d+=a+b;if(b=this.extension)d+=a+b;return d};f.getIcon=function(){for(var a=4,b,d,c=["variant","region","script","lang"],m=[];0!==a--;)if(b=c[a],d=this[b])d.join&&(d=d.join("-")),
114
+ 1===a&&3===d.length?m.push("region-m49"):m=m.concat([b,b+"-"+d.toLowerCase()]);return m.join(" ")};f.isRTL=function(){return!!a[String(this.script||this.lang).toLowerCase()]};f=null;return c}({},v,z));l.register("$39",function(c,f,h){function p(a){f.console&&console.error&&console.error(a)}function b(){p("Method not implemented")}function d(){}function a(a){}d.prototype.toString=function(){return"[Undefined]"};a.prototype._validate=function(a){var c,k,g=!0;for(c in this)k=this[c],k===b?(p(a+"."+c+
115
+ "() must be implemented"),g=!1):k instanceof d&&(p(a+"."+c+" must be defined"),g=!1);return g};c.init=function(e,c){var k,g=new a;if(e)for(k=e.length;0!==k--;)g[e[k]]=b;if(c)for(k=c.length;0!==k--;)g[c[k]]=new d;return g};c.validate=function(a){var b=/function (\w+)\(/.exec(a.toString())?RegExp.$1:"";a.prototype._validate(b||"Object")};return c}({},v,z));l.register("$49",function(c,f,h){var p=f.requestAnimationFrame,b=f.cancelAnimationFrame,d=0;if(!p||!b)for(var a in{ms:1,moz:1,webkit:1,o:1})if(p=
116
+ f[a+"RequestAnimationFrame"])if(b=f[a+"CancelAnimationFrame"]||f[a+"CancelRequestAnimationFrame"])break;p&&b||(p=function(a){var b=e();timeToCall=Math.max(0,16-(b-d));nextTime=b+timeToCall;timerId=f.setTimeout(function(){a(nextTime)},timeToCall);d=nextTime;return timerId},b=function(a){clearTimeout(a)});var e=Date.now||function(){return(new Date).getTime()};c.loop=function(a,e){function d(){f=p(d,e);a(c++)}var c=0,f;d();return{stop:function(){f&&b(f);f=null}}};return c}({},v,z));l.register("$45",
117
+ function(c,f,h){function p(b,e,d,c){if(a){var g=d;d=function(a){if((a.MSPOINTER_TYPE_TOUCH||"touch")===a.pointerType)return g(a)}}b.addEventListener(e,d,c);return{unbind:function(){b.removeEventListener(e,d,c)}}}function b(a){a.preventDefault();a.stopPropagation();return!1}var d,a=!!f.navigator.msPointerEnabled,e=a?"MSPointerDown":"touchstart",n=a?"MSPointerMove":"touchmove",k=a?"MSPointerUp":"touchend";c.ok=function(a){null==d&&(d="function"===typeof h.body.addEventListener);d&&a&&a(c);return d};
118
+ c.ms=function(){return a};c.dragger=function(a,d){function c(b){a.addEventListener(b,m[b],!1)}function r(b){a.removeEventListener(b,m[b],!1)}var m={};m[e]=function(a){g(a,function(b,c){c.type=e;d(a,c,q)});c(n);c(k);return!0};m[k]=function(a){r(n);r(k);g(a,function(b,e){e.type=k;d(a,e,q)});return!0};m[n]=function(a){g(a,function(b,e){e.type=n;d(a,e,q)});return b(a)};c(e);var q={kill:function(){r(e);r(n);r(k);a=q=d=null}};return q};c.swiper=function(d,c,f){function r(a){d.addEventListener(a,u[a],!1)}
119
+ function w(a){d.removeEventListener(a,u[a],!1)}function q(){h&&h.stop();h=null}var h,E,p,u={},y=[],F=[],K=[];u[e]=function(a){E=!1;q();var b=m();g(a,function(a,e){y[a]=b;F[a]=e.clientX;K[a]=e.clientY});p=d.scrollLeft;return!0};u[k]=function(a){g(a,function(a,b){var e=m()-y[a],d=F[a]-b.clientX,e=Math.abs(d)/e;c(e,d?0>d?-1:1:0)});p=null;return!0};u[n]=function(a){var e,c;null==p||g(a,function(a,b){e=F[a]-b.clientX;c=K[a]-b.clientY});if(c&&Math.abs(c)>Math.abs(e))return E=!0;e&&(E=!0,d.scrollLeft=Math.max(0,
120
+ p+e));return b(a)};if(!a||f)r(e),r(n),r(k),a&&(d.className+=" mstouch");return{kill:function(){w(e);w(n);w(k);q()},swiped:function(){return E},ms:function(){return a},snap:function(b){a&&!f&&(d.style["-ms-scroll-snap-points-x"]="snapInterval(0px,"+b+"px)",d.style["-ms-scroll-snap-type"]="mandatory",d.style["-ms-scroll-chaining"]="none")},scroll:function(a,b,e){q();var c=d.scrollLeft,g=a>c?1:-1,r=Math[1===g?"min":"max"],y=Math.round(16*b*g);return h=l.require("$49","fps.js").loop(function(b){b&&(c=
121
+ Math.max(0,r(a,c+y)),d.scrollLeft=c,a===c&&(q(),e&&e(c)))},d)}}};c.start=function(a,b){return p(a,e,b,!1)};c.move=function(a,b){return p(a,n,b,!1)};c.end=function(a,b){return p(a,k,b,!1)};var g=c.each=function(b,e){if(a)(b.MSPOINTER_TYPE_TOUCH||"touch")===b.pointerType&&e(0,b);else for(var d=-1,c=(b.originalEvent||b).changedTouches||[];++d<c.length;)e(d,c[d])},m=Date.now||function(){return(new Date).getTime()};return c}({},v,z));l.register("$50",function(c,f,l){c.init=function(c){function b(){f.style.top=
122
+ String(-c.scrollTop)+"px";return!0}function d(){var b=f;b.textContent=c.value;b.innerHTML=b.innerHTML.replace(/[ \t]/g,a).split(/(?:\n|\r\n?)/).join('<span class="eol crlf"></span>\r\n')+'<span class="eol eof"></span>';return!0}function a(a){return'<span class="x'+a.charCodeAt(0).toString(16)+'">'+a+"</span>"}var e=c.parentNode,f=e.insertBefore(l.createElement("div"),c);h(c).on("input",d).on("scroll",b);h(e).addClass("has-mirror");f.className="ta-mirror";var k=c.offsetWidth-c.clientWidth;2<k&&(f.style.marginRight=
123
+ String(k-2)+"px");d();b();return{kill:function(){h(c).off("input",d).off("scroll",b);e.removeChild(f);f=null;h(e).removeClass("has-mirror")}}};return c}({},v,z));l.register("$30",function(c,f,h){function p(a,e){for(var d=0,c=-1,g=e&&f[e],m=b[a]||[],h=m.length;++c<h;)callback=m[c],"function"===typeof callback&&(callback(g),d++);return d}var b={},d;c.load=function(a,e,d){function c(){A&&(clearTimeout(A),A=null);l&&(l.onreadystatechange=null,l=l=l.onload=null);a&&(delete b[a],a=null)}function g(b,e){var g=
124
+ l&&l.readyState;if(e||!g||"loaded"===g||"complete"===g)e||p(a,d),c()}function m(){if(0===p(a))throw Error('Failed to load "'+(d||a)+'"');c()}if(d&&f[d])"function"===typeof e&&e(f[d]);else if(null!=b[a])b[a].push(e);else{b[a]=[e];var A=setTimeout(m,4E3),l=h.createElement("script");l.setAttribute("src",a);l.setAttribute("async","true");l.onreadystatechange=g;l.onload=g;l.onerror=m;l.onabort=c;h.getElementsByTagName("head")[0].appendChild(l)}};c.stat=function(a){var b;if(!(b=d)){for(var c,f,g=h.getElementsByTagName("script"),
125
+ m=-1,p=g.length;++m<p;)if(b=g[m].getAttribute("src"))if(c=b.indexOf("/lib/vendor"),-1!==c){f=b.substr(0,c);break}b=d=f||"/static"}return b+a};return c}({},v,z));l.register("$15",function(c,f,D){function p(a,b){a.setReadOnly(!1);a.on("change",function(a,e){return b.val(e.getValue())});a.on("focus",function(){return b.focus()});a.on("blur",function(){return b.blur()})}function b(a){a.off("change");a.off("focus");a.off("blur")}function d(a){b(a);a.setReadOnly(!0);a.setHighlightGutterLine(!1);a.setHighlightActiveLine(!1)}
126
+ function a(a,b){function d(){this.HighlightRules=c}var c=e(b),g=a.require,f=g("ace/lib/oop");f.inherits(c,g("ace/mode/text_highlight_rules").TextHighlightRules);f.inherits(d,g("ace/mode/text").Mode);return new d}function e(a){return function(){var b={start:[{token:"empty_line",regex:/^$/},{token:"constant.language",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"},{token:"constant.language",regex:/<!\[CDATA\[/},{token:"constant.language",regex:/\]\]>/},{token:"locked",regex:/<(?:xliff:)?(?:g|ph)[^>]*>[^<]*<\/(?:xliff:)?(?:g|ph)>/},
127
  {token:"locked",regex:/<(?:xliff:)?(bx|ex|x)[^\/>]*\/>/},{token:"constant.language",regex:/<\/?[:a-z]+[^>]*>/}]},e=n(a);"icu"===a?b={start:b.start.concat([{token:"icu-quoted",regex:/'([{}][^']*)?'/},{token:"printf",regex:"{[^!-/:-@\\[-^{-~\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a9\u00ab\u00ac\u00ae\u00b0\u00b1\u00b6\u00bb\u00bf\u00d7\u00f7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]+(,[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]*(?:number|date|time|spellout|ordinal|duration)[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]*(,[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]*[^{}]+)?)?}"},
128
  {token:"icu",regex:/{/,next:"icuName"},{token:"icu",regex:/}/,next:"icuType"}]),icuName:[{token:"icu",regex:"[\\s\\u0085\\u200E\\u200F\\u2028\\u2029]+"},{token:"icu.name",regex:"[^\\s\\u0085\\u200E\\u200F\\u2028\\u2029!-/:-@\\[-^{-~\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a9\u00ab\u00ac\u00ae\u00b0\u00b1\u00b6\u00bb\u00bf\u00d7\u00f7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]+",
129
  next:"icuType"},{defaultToken:"icu",next:"icuType"}],icuType:[{token:"icu",regex:/[{}]/,next:"start"},{defaultToken:"icu"}]}:e&&b.start.push({token:"printf",regex:e});this.$rules=b}}function n(a){switch(a){case "objc":return/%(?:\d+\$)?[-+'0# ]*\d*(?:\.\d+|\.\*(?:\d+\$)?)?(?:hh?|ll?|[qjzTL])?[sScCdDioOuUxXfFeEgGaAp%@]/;case "java":return/%(?:\d+\$)?[-+,(0# ]*\d*(?:\.\d+)?(?:[bBhHsScCdoxXeEfgGaA%n]|[tT][HIklMSLNpzZsQBbhAaCYyjmdeRTrDFc])/;case "php":return/%(?:\d+\$)?(?:'.|[-+0 ])*\d*(?:\.\d+)?[suxXbcdeEfFgGo%]/;
130
+ case "javascript":return/%(?:[1-9]\d*\$)?\+?(?:0|'[^$])?-?\d*(?:\.\d+)?[b-gijostTuvxX%]/;case "auto":return/%(?:\d+\$)?(?:[-+0]?\d*(\.\d+)?[duxoefgaDUXOEFGA]|[@scSC%])/;case g:return k||"%%"}}var k,g="auto";c.init=function(e,c,k){var n,r=!1,w=k||g,q=e.parentNode,C=q.appendChild(D.createElement("div"));h(q).addClass("has-proxy has-ace");l.require("$30","remote.js").load("https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js",function(b){if(C){if(!b)throw Error("Failed to load code editor");n=b.edit(C);
131
+ var q=n.session,g=n.renderer;n.$blockScrolling=Infinity;n.setShowInvisibles(r);n.setWrapBehavioursEnabled(!1);n.setBehavioursEnabled(!1);n.setHighlightActiveLine(!1);q.setUseSoftTabs(!1);g.setShowGutter(!0);g.setPadding(10);g.setScrollMargin(8);q.setMode(a(b,w));n.setValue(e.value,-1);q.setUseWrapMode(!0);c?p(n,c):d(n)}},"ace");return{kill:function(){n&&(b(n),n.destroy(),n=null);C&&(q.removeChild(C),h(q).removeClass("has-proxy has-ace"),C=null);return this},disable:function(){n&&d(n);c=null;return this},
132
+ enable:function(a){c=a;n&&p(n,a);return this},resize:function(){n&&n.resize();return this},val:function(a){n&&a!==n.getValue()&&n.setValue(a,-1);return this},invs:function(a){a=a||!1;r!==a&&(r=a,n&&n.setShowInvisibles(a));return this},strf:function(b){b=b||g;b!==w&&(w=b,n&&n.session.setMode(a(f.ace,b)));return this},focus:function(){return this}}};c.strf=function(a,b){g=a;k=b;return c};return c}({},v,z));l.register("$51",function(c,f,D){function p(a,b){function d(){return b.val(a.getContent())}a.on("input",
133
+ d);a.on("change",d);a.on("focus",function(){return b.focus()});a.on("blur",function(){return b.blur()});a.setMode("design")}function b(a){a.off("input");a.off("change");a.off("focus");a.off("blur")}function d(a){b(a);a.setMode("readonly")}var a=0;c.load=function(a){var b=l.require("$30","remote.js");b.load(b.stat("/lib/tinymce.min.js"),a,"tinymce");return c};c.init=function(e,f){function k(a){B=a;s="<p>"===a.substr(0,3)&&"</p>"===a.substr(-4);return a.replace(/(<\/?)script/ig,"$1loco:script")}function g(a){m=
134
+ a;a._getContent=a.getContent;a.getContent=function(a){a=this._getContent(a);a=a.replace(/(<\/?)loco:script/ig,"$1script");if(!s&&"<p>"===a.substr(0,3)&&"</p>"===a.substr(-4)){var b=a.substr(3,a.length-7);if(b===B||-1===b.indexOf("</p>"))a=b}return a};a._setContent=a.setContent;a.setContent=function(a,b){return this._setContent(k(a),b)};f?(p(a,f),f.reset()):d(a);h(q).removeClass("loading")}var m,l=!1,B="",s=!1,r=e.parentNode,w=r.parentNode,q=r.appendChild(D.createElement("div")),C=w.insertBefore(D.createElement("nav"),
135
+ r);C.id="_tb"+String(++a);h(r).addClass("has-proxy has-mce");h(q).addClass("mce-content-body loading").html(k(e.value));c.load(function(a){if(!a)throw Error("Failed to load HTML editor");q&&a.init({inline:!0,target:q,hidden_input:!1,theme:"modern",skin:!1,plugins:"link lists",browser_spellcheck:!0,menubar:!1,fixed_toolbar_container:"#"+C.id,toolbar:"formatselect | bold italic link unlink | bullist numlist outdent indent",block_formats:"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h4;Heading 4=h4;Heading 5=h5;Heading 6=h6;",
136
  forced_root_block:"p",relative_urls:!1,convert_urls:!1,remove_script_host:!1,document_base_url:"",allow_script_urls:!1,formats:{alignleft:{classes:"alignleft"},alignright:{selector:"p,h1,h2,h3,h4,span,strong,em,a",classes:"alignright"},aligncenter:{selector:"p,h1,h2,h3,h4,span,strong,em,a",classes:"aligncenter"},strikethrough:{inline:"del"}},fix_list_elements:!0,extended_valid_elements:"span,b,i,u,loco:script",entities:"38,amp,60,lt,62,gt,160,nbsp",entity_encoding:"named",keep_styles:!1,init_instance_callback:g})});
137
+ return{val:function(a){a=k(a);null==m?(e.value=a,h(q).html(a)):m.getContent()!==a&&m.setContent(a);f&&f.val(a);return this},kill:function(){m&&(f&&f.val(m.getContent()),b(m),m.destroy(),m=null);q&&(r.removeChild(q),h(r).removeClass("has-proxy has-mce"),q=null);C&&(w.removeChild(C),C=null);return this},enable:function(a){f=a;m&&p(m,a);return this},disable:function(){m&&d(m);f=null;return this},focus:function(){m&&f&&m.focus();return this},invs:function(a){a=a||!1;l!==a&&(l=a,h(r)[a?"addClass":"removeClass"]("show-invs"));
138
+ return this}}};return c}({},v,z));l.register("$46",function(c,f,D){function p(a){function b(){p&&(l.off("input",c),p=!1)}function c(){var b=a.value;b!==r&&(l.trigger("changing",[b,r]),r=b)}function f(){c();p&&w!==r&&l.trigger("changed",[r])}function g(){d=a;w=r;p||(l.on("input",c),p=!0);l.trigger("editFocus");s.addClass("has-focus");return!0}function m(){d===a&&(d=null);l.trigger("editBlur");s.removeClass("has-focus");p&&(f(),b());return!0}var p=!1,l=h(a),s=h(a.parentNode),r=a.value,w;l.blur(m).focus(g);
139
+ return{val:function(b){r!==b&&(a.value=b,l.triggerHandler("input"),r=b);return!0},kill:function(){b();l.off("blur",m).off("focus",g)},fire:function(){r=null;c()},ping:f,blur:m,focus:g,reset:function(){w=r=a.value}}}function b(a){this.e=a}var d;c._new=function(a){return new b(a)};c.init=function(a){var e=new b(a);a.disabled?(a.removeAttribute("disabled"),e.disable()):a.readOnly?e.disable():e.enable();return e};TextAreaPrototype=b.prototype;TextAreaPrototype.destroy=function(){this.unlisten();var a=
140
+ this.p;a&&(a.kill(),this.p=null);this.e=null};TextAreaPrototype.reload=function(a,b){var d=this.l;d&&!b&&(this.disable(),d=null);this.val(a||"");b&&!d&&this.enable();return this};TextAreaPrototype.val=function(a){var b=this.e;if(null==a)return b.value;var d=this.l,c=this.p;c&&c.val(a);d&&d.val(a);d||b.value===a||(b.value=a,h(b).triggerHandler("input"));return this};TextAreaPrototype.fire=function(){this.l&&this.l.fire();return this};TextAreaPrototype.ping=function(){this.l&&this.l.ping();return this};
141
+ TextAreaPrototype.focus=function(){var a=this.p;a?a.focus():h(this.e).focus()};TextAreaPrototype.focused=function(){return d&&d===this.el};TextAreaPrototype.parent=function(){return this.e.parentNode};TextAreaPrototype.attr=function(a,b){var d=this.e;if(1===arguments.length)return d.getAttribute(a);null==b?d.removeAttribute(a):d.setAttribute(a,b);return this};TextAreaPrototype.editable=function(){return!!this.l};TextAreaPrototype.enable=function(){var a=this.p;this.e.removeAttribute("readonly");this.listen();
142
+ a&&a.enable&&a.enable(this.l);return this};TextAreaPrototype.disable=function(){var a=this.p;this.e.setAttribute("readonly",!0);this.unlisten();a&&a.disable&&a.disable();return this};TextAreaPrototype.listen=function(){var a=this.l;a&&a.kill();this.l=p(this.e);return this};TextAreaPrototype.unlisten=function(){var a=this.l;a&&(a.kill(),this.l=null);return this};TextAreaPrototype.setInvs=function(a,b){var d=this.i||!1;if(b||d!==a)this._i&&(this._i.kill(),delete this._i),(d=this.p)?d.invs&&d.invs(a):
143
+ a&&(this._i=l.require("$50","mirror.js").init(this.e)),this.i=a;return this};TextAreaPrototype.getInvs=function(){return this.i||!1};TextAreaPrototype.setMode=function(a){var b=this.p,c=this.i||!1;a!==(this.m||"")&&(this.m=a,b&&b.kill(),this.p=b="code"===a?l.require("$15","ace.js").init(this.e,this.l,this["%"]):"html"===a?l.require("$51","mce.js").init(this.e,this.l):null,this.setInvs(c,!0),d&&this.focus());return this};TextAreaPrototype.setStrf=function(a){this["%"]=a;"code"===this.m&&this.p.strf(a);
144
+ return this};TextAreaPrototype.name=function(a){this.e.setAttribute("name",a);return this};TextAreaPrototype.placeholder=function(a){this.e.setAttribute("placeholder",a);return this};TextAreaPrototype.redraw=function(){var a=this.p;a&&a.resize&&a.resize()};TextAreaPrototype=null;return c}({},v,z));l.register("$47",function(c,f,l){function p(a){var b=f.console;b&&b.error&&b.error(a)}function b(a){var b=l.createElement("div");a&&b.setAttribute("class",a);return b}function d(a){return function(){a.resize();
145
+ return this}}function a(a){return function(b){for(var d=b.target,c=d.$index;null==c&&"DIV"!==d.nodeName&&(d=d.parentElement);)c=d.$index;null!=c&&(b.stopImmediatePropagation(),a.select(c));return!0}}function e(a){return function(){a.redrawDirty()&&a.redraw();return!0}}function n(a){return function(b){var d;d=b.keyCode;if(40===d)d=1;else if(38===d)d=-1;else return!0;if(b.shiftKey||b.ctrlKey||b.metaKey||b.altKey)return!0;a.selectNext(d);b.stopPropagation();b.preventDefault();return!1}}function k(a,
146
+ b,d){function c(a){p("row["+a+"] disappeared");return{cellVal:function(){return""}}}return function(e){var g=b||0,f=d?-1:1,y=a.rows||[];e.sort(function(a,b){return f*(y[a]||c(a)).cellVal(g).localeCompare((y[b]||c(b)).cellVal(g))})}}function g(a){this.w=a}function m(a){this.t=a;this.length=0}function A(a,b,d){var c=l.createElement("div");c.className=d||"";this._=c;this.d=b||[];this.i=a||0;this.length=b.length}function B(a){this.live=a;this.rows=[]}c.create=function(a){return new g(a)};var s=g.prototype;
147
+ s.init=function(c){var g=this.w,q=g.id,f=g.splity(q+"-thead",q+"-tbody"),m=f[0],f=f[1],k=[],p=[],y=[],F=[];if(c)this.ds=c,this.idxs=p,this._idxs=null;else if(!(c=this.ds))throw Error("No datasource");m.css.push("wg-thead");f.css.push("wg-tbody");c.eachCol(function(a,b,d){y[a]=q+"-col-"+b;F[a]=d||b});for(var l=b(),s=-1,B=y.length,D=b("wg-cols"),v=m.splitx.apply(m,y);++s<B;)v[s].header(F[s]),D.appendChild(l.cloneNode(!1)).setAttribute("for",y[s]);c.eachRow(function(a,b,d){k[a]=new A(a,b,d);p[a]=a});
148
+ this.rows=k;this.cols=D;this.ww=null;this.root=l=f.body;this.head=m;m.redraw=d(this);m=f.fixed=v[0].bodyY()||20;g.lock().resize(m,f);g.css.push("is-table");g.restyle();this.sc?this._re_sort(B):c.sort&&c.sort(p);this.redrawDirty();this.render();h(l).attr("tabindex","-1").on("keydown",n(this)).on("mousedown",a(this)).on("scroll",e(this));return this};s.clear=function(){for(var a=this.pages||[],b=a.length;0!==b--;)a[b].destroy();this.pages=[];this.sy=this.mx=this.mn=this.vh=null;void 0;return this};
149
+ s.render=function(){for(var a,b,d=[],c=this.rows||[],e=-1,g,f=this.idxs,y=f.length,m=this.idxr={},k=this.r,h=this._r,n=this.root,p=this.cols;++e<y;){0===e%100&&(a=p.cloneNode(!0),b=new B(a),b.h=2200,b.insert(n),d.push(b));g=f[e];m[g]=e;a=c[g];if(null==a)throw Error("Render error, no data at ["+g+"]");a.page=b;b.rows.push(a)}b&&100!==b.size()&&b.sleepH(22);this.pages=d;this.mx=this.mn=null;this.redrawDirty();this.redraw();null==k?null!=h&&(a=c[h])&&a.page&&(delete this._r,this.select(h,!0)):(a=c[k])&&
150
+ a.page?this.select(k,!0):(this.deselect(),this._r=k);return this};s.resize=function(){var a=-1,b=this.ww||(this.ww=[]),d=this.w,c=d.cells[0],e=c.body.childNodes,g=e.length,f=this.pages||[],y=f.length;for(d.redraw.call(c);++a<g;)b[a]=e[a].style.width;if(y){d=this.mx;for(a=this.mn;a<=d;a++)f[a].widths(b);this.redrawDirty()&&this.redraw()}};s.redrawDirty=function(){var a=!1,b=this.root,d=b.scrollTop,b=b.clientHeight;this.sy!==d&&(a=!0,this.sy=d);this.vh!==b&&(a=!0,this.vh=b);return a};s.redraw=function(){for(var a=
151
+ 0,b=-1,d=null,c=null,e=this.ww,g=this.sy,f=this.vh,y=this.mn,m=this.mx,k=Math.max(0,g-100),g=f+g+100,h=this.pages||[],n=h.length;++b<n&&!(a>g);)f=h[b],a+=f.height(),a<k||(null===d&&(d=b),c=b,f.rendered||f.render(e));if(y!==d){if(null!==y&&d>y)for(b=y;b<d;b++){f=h[b];if(!f)throw Error("Shit!");f.rendered&&f.sleep()}this.mn=d}if(m!==c){if(null!==m&&c<m)for(b=m;b>c;b--)f=h[b],f.rendered&&f.sleep();this.mx=c}};s.selected=function(){return this.r};s.thead=function(){return this.w.cells[0]};s.tbody=function(){return this.w.cells[1]};
152
+ s.tr=function(a){return(a=this.row(a))?a.cells():[]};s.row=function(a){return this.rows[a]};s.td=function(a,b){return this.tr(a)[b]};s.next=function(a,b,d){null==d&&(d=this.r||0);var c=this.idxs,e=c.length,g=(this.idxr||{})[d];for(d=g;d!==(g+=a)&&!(0<=g&&e>g);)if(b&&e)g=1===a?-1:e,b=!1;else return null;d=c[g];return null==d||null==this.rows[d]?(p("Bad next: ["+g+"] does not map to data row"),null):d};s.selectNext=function(a,b,d){a=this.next(a,b);null!=a&&this.r!==a&&this.select(a,d);return this};
153
+ s.deselect=function(a){var b=this.r;null!=b&&(this.r=null,h(this.tr(b)).removeClass("selected"),this.w.fire("wgRowDeselect",[b,a]));return this};s.selectRow=function(a,b){return this.select(this.idxs[a])};s.select=function(a,b){var d=this.rows[a],c=d&&d.page;if(!c)return this.deselect(!1),p("Row is filtered out"),this;this.deselect(!0);var e,g=this.w.cells[1];c.rendered||(e=c.top(),g.scrollY(e),this.redrawDirty()&&this.redraw());if(!d.rendered)return c.rendered||p("Failed to render page"),p("Row ["+
154
+ d.i+"] not rendered"),this;c=d.cells();h(c).addClass("selected");this.r=a;b||(e=g.scrollY(),h(this.root).focus(),e!==g.scrollY()&&g.scrollY(e));g.scrollTo(c[0],!0);this.w.fire("wgRowSelect",[a,d.data()]);return this};s.unfilter=function(){this._idxs&&(this.idxs=this._sort(this._idxs),this._idxs=null,this.clear().render());return this};s.filter=function(a){this._idxs||(this._idxs=this.idxs);this.idxs=this._sort(a);return this.clear().render()};s.each=function(a){for(var b,d=-1,c=this.rows||[],e=this.idxs||
155
+ [],g=e.length;++d<g;)b=e[d],a(c[b],d,b);return this};s.sortable=function(a){var b=this.sc||(this.sc=new m(this));b.has(a)||b.add(a);return this};s._re_sort=function(a){var b=-1,d=this.sc,c=d.active;for(this.sc=d=new m(this);++b<a;)d.add(b);c&&(b=this.head.indexOf(c.id),-1===b&&(b=Math.min(c.idx,a-1)),this.sort(b,c.desc));return this};s._sort=function(a,b){b?(this.s=b,b(a)):(b=this.s)&&b(a);return a};s.sort=function(a,b){this._sort(this.idxs,k(this,a,b));this.sc.activate(a,b);return this};s=null;s=
156
+ m.prototype;s.has=function(a){return null!=this[a]};s.add=function(a){var b=this,d=b.t.head.cells[a];b[a]={desc:null,idx:a,id:d.id};b.length++;d.addClass("wg-sortable").on("click",function(d){if("header"===d.target.nodeName.toLowerCase())return d.stopImmediatePropagation(),b.toggle(a),!1});return b};s.toggle=function(a){this.t.sort(a,!this[a].desc).clear().render();return this};s.activate=function(a,b){var d,c;d=this.active;var e=this[a],g=this.t.head.cells;d&&(c=g[d.idx])&&(c.removeClass(d.css),
157
+ d!==e&&c.restyle());(c=g[a])?(e.desc=b,this.active=e,d="wg-"+(b?"desc":"asc"),c.addClass(d).restyle(),e.css=d):this.active=null;return this};s=null;s=A.prototype;s.render=function(a){var b,d=[],c=this._,e=this.length;if(c){for(this.c=d;0!==e--;)b=c.cloneNode(!1),d[e]=this.update(e,b),b.$index=this.i,a[e].appendChild(b);this._=null}else for(d=this.c;0!==e--;)a[e].appendChild(d[e]);this.rendered=!0;return this};s.update=function(a,b){var d=b||this.c[a]||{},c=(this.d[a]||function(){})()||"\u00a0";null==
158
+ c.innerHTML?d.textContent=c:d.innerHTML=c.innerHTML;return d};s.cells=function(){return this.c||[]};s.data=function(){for(var a=-1,b=[],d=this.length;++a<d;)b[a]=this.cellVal(a);return b};s.destroy=function(){this.page=null;this.rendered=!1};s.cellVal=function(a){a=this.d[a]()||"";return String(a.textContent||a)};s=null;s=B.prototype;s.size=function(){return this.rows.length};s.insert=function(a){var d=this.h,c=b("wg-dead");c.style.height=String(d)+"px";a.appendChild(c);return this.dead=c};s.top=
159
+ function(){return(this.rendered?this.live:this.dead).offsetTop};s.height=function(){var a=this.h;null==a&&(this.h=a=this.rendered?this.live.firstChild.offsetHeight:this.dead.offsetHight);a||p("row has zero height");return a};s.render=function(a){for(var b,d=-1,c=this.rows,e=c.length,g=this.dead,f=this.live,y=f.childNodes;++d<e;)b=c[d],b.rendered||b.render(y);e=a.length;for(d=0;d<e;d++)y[d].style.width=a[d];g.parentNode.replaceChild(f,g);this.rendered=!0;this.h=null;return this};s.sleep=function(){var a=
160
+ this.height(),b=this.live,d=this.dead;d.style.height=String(a)+"px";b.parentNode.replaceChild(d,b);this.rendered=!1;this.h=a;return this};s.sleepH=function(a){a*=this.rows.length;var b=this.dead;b&&(b.style.height=String(a)+"px");this.rendered||(this.h=a);return this};s.widths=function(a){for(var b=this.live.childNodes,d=a.length;0!==d--;)b[d].style.width=a[d];return this};s.destroy=function(){var a=this.rendered?this.live:this.dead,b=this.rows,d=b.length;for(a.parentNode.removeChild(a);0!==d--;)b[d].destroy()};
161
+ s=null;return c}({},v,z));l.register("$40",function(c,f,D){function p(a,b){var d=a.id,c=d&&s[d],e=c&&c.parent();if(!c||!e)return null;var g=e.dir===B,d=g?"X":"Y",f="page"+d,g=g?A:m,k=g(e.el),d=b["offset"+d],h=e.el,n=h.className;null==d&&(d=b[f]-g(a));d&&(k+=d);h.className=n+" is-resizing";return{done:function(){h.className=n},move:function(a){e.resize(a[f]-k,c);return!0}}}function b(b,d){function c(){h(D).off("mousemove",e);w&&(w.done(),w=null);return!0}function e(a){w?w.move(a):c();return!0}if(w)return!0;
162
+ w=p(b.target,b);if(!w)return!0;h(D).one("mouseup",c).on("mousemove",e);return a(b)}function d(a,b){var d=b.type;"touchmove"===d?w&&w.move(b):"touchstart"===d?w=p(a.target,b):"touchend"===d&&w&&(w.done(),w=null)}function a(a){a.stopPropagation();a.preventDefault();return!1}function e(a){var b=r;b&&b.redraw();a&&a.redraw();return r=a}function n(a,b){var d=h(b).on("editFocus",function(){d.trigger("wgFocus",[e(a)])}).on("editBlur",function(){d.trigger("wgBlur",[e(null)])})}function k(a){var b=a.id,d=
163
+ a.className;this.id=b;this.el=a;this.pos=this.index=0;this.css=[d||"wg-root","wg-cell"];this._cn=d;s[b]=this;this.clear()}var g=l.require("$18","html.js"),m=g.top,A=g.left,B=1,s={},r,w=!1;c.init=function(a){var c=new k(a);c.redraw();l.require("$45","touch.js").ok(function(b){b.dragger(a,d)});h(a).mousedown(b);return c};f=k.prototype;f.fire=function(a,b){var d=h.Event(a);d.cell=this;h(this.el).trigger(d,b);return this};f.each=function(a){for(var b=-1,d=this.cells,c=d.length;++b<c;)a(d[b],b);return this};
164
+ f.indexOf=function(a){return(a=s[a.id||String(a)])&&a.pid===this.id?a.index:-1};f.on=function(){return this.$("on",arguments)};f.off=function(){return this.$("off",arguments)};f.find=function(a){return h(this.el).find(a)};f.$=function(a,b){h.fn[a].apply(h(this.el),b);return this};f.addClass=function(a){this.css.push(a);return this};f.removeClass=function(a){a=this.css.indexOf(a);-1!==a&&this.css.splice(a,1);return this};f.parent=function(){return this.pid&&s[this.pid]};f.splitx=function(){return this._split(B,
165
+ arguments)};f.splity=function(){return this._split(2,arguments)};f._split=function(a,b){(this.length||this.field)&&this.clear();for(var d=-1,c,e=b.length,f=1/e,m=0;++d<e;){c=g.el();this.body.appendChild(c);for(var h=c,n=b[d],p=n,l=1;s[n];)n=p+"-"+ ++l;h.id=n;c=new k(c);c.index=d;c.pid=this.id;c._locale(this.lang,this.rtl);c.pos=m;m+=f;this.cells.push(c);this.length++}this.dir=a;this.redraw();return this.cells};f.destroy=function(){this.clear();delete s[this.id];var a=this.el;a.innerHTML="";this.body=
166
+ null;a.className=this._cn||"";h(a).off();return this};f.exists=function(){return this===s[this.id]};f.clear=function(){for(var a=this.el,b=this.cells,d=this.field,c=this.body,e=this.nav,f=this.length||0;0!==f--;)delete s[b[f].destroy().id];this.cells=[];this.length=0;e&&(a.removeChild(e),this.nav=null);c&&(d&&(g.ie()&&h(c).triggerHandler("blur"),d.destroy(),this.field=null),this.table&&(this.table=null),a.removeChild(c));this.body=a.appendChild(g.el("","wg-body"));this._h=null;return this};f.resize=
167
+ function(a,b){if(!b&&(b=this.cells[1],!b))return;var d=b.index,c=this.cells,e=h(this.el)[this.dir===B?"width":"height"](),g=c[d+1],d=c[d-1];pad=(b.body||b.el.firstChild).offsetTop||0;max=(g?g.pos*e:e)-pad;min=d?d.pos*e:0;b.pos=Math.min(max,Math.max(min,a))/e;this.redraw();return this};f.distribute=function(a){for(var b=-1,d=0,c,e=this.cells,g=a.length;++b<g&&(c=e[++d]);)c.pos=Math.max(0,Math.min(1,a[b]));this.redraw();return this};f.distribution=function(){for(var a=[],b=0,d=this.cells,c=d.length-
168
+ 1;b<c;)a[b]=d[++b].pos;return a};f.restyle=function(){var a=this.css.concat();0===this.index?a.push("first"):a.push("not-first");this.dir&&(a.push("wg-split"),2===this.dir?a.push("wg-split-y"):a.push("wg-split-x"));this.t&&a.push("has-title");this.nav&&a.push("has-nav");this.field&&(a.push("is-field"),this.field.editable()?a.push("is-editable"):a.push("is-readonly"));a=a.join(" ");a!==this._css&&(this._css=a,this.el.className=a);return this};f.redraw=function(a){this.restyle();var b=this.el,d=this.body,
169
+ c=this.field;if(d){var e,g=b.clientWidth||0,f=b.clientHeight||0,m=d.offsetTop||0,f=m>f?0:f-m;this._h!==f&&(this._h=f,d.style.height=String(f)+"px",e=c);this._w!==g&&(this._w=g,e=c);e&&e.redraw()}d=this.length;g=1;f=this.nav;for(m=2===this.dir?"height":"width";0!==d--;)c=this.cells[d],f?e=1:(c.fixed&&(c.pos=c.fixed/h(b)[m]()),e=g-c.pos,g=c.pos),c.el.style[m]=String(100*e)+"%",c.redraw(a);return this};f.contents=function(a,b){var d=this.el,c=this.body;if(null==a)return c.innerHTML;this.length?this.clear():
170
+ c&&(d.removeChild(c),c=null);c||(this.body=c=d.appendChild(g.el("",b||"wg-content")),this._h=null,(d=this.lang)&&this._locale(d,this.rtl,!0));"string"===typeof a?h(c)._html(a):a&&this.append(a);this.redraw();return this};f.textarea=function(a,b){var d=this.field;if(d){var c=d.editable();d.reload(a,b);c!==b&&this.restyle()}else this.length&&this.clear(),c=g.el("textarea"),c.setAttribute("wrap","virtual"),c.value=a,this.contents(c),d=l.require("$46","field.js")._new(c)[b?"enable":"disable"](),n(this,
171
+ c),this.field=d,this.restyle();this.lang||this.locale("en");return d};f.locale=function(a){a=l.require("$38","locale.js").cast(a);return this._locale(String(a),a.isRTL())};f._locale=function(a,b,d){var c=this.body;if(d||a!==this.lang)this.lang=a,c&&c.setAttribute("lang",a);if(d||b!==this.rtl)this.rtl=b,c&&c.setAttribute("dir",b?"RTL":"LTR");return this};f.editable=function(){var a=this.field;if(a)return a.editable()?a:null;var b=this.cells,d=b.length,c=this.navigated();if(null!=c)return b[c].editable();
172
+ for(;++c<d;){for(c=0;c<d;d++);if(a=b[c].editable())return a}};f.eachTextarea=function(a){var b=this.field;b?a(b):this.each(function(b){b.eachTextarea(a)});return this};f.append=function(a){a&&(a.nodeType?g.init(this.body.appendChild(a)):g.init(h(a).appendTo(this.body)));return this};f.prepend=function(a){var b=this.body;if(a.nodeType){var d=b.firstChild;g.init(d?b.insertBefore(a,d):b.appendChild(a))}else g.init(h(a).prependTo(b));return this};f.before=function(a){var b=this.body;a.nodeType?g.init(this.el.insertBefore(a,
173
+ b)):g.init(h(a).insertBefore(b));return this};f.header=function(a,b){if(null==a&&null==b)return this.el.getElementsByTagName("header")[0];this.t=g.txt(a||"");this.el.insertBefore(g.el("header",b),this.body).appendChild(this.t);this.redraw();return this};f.title=function(a){var b=this.t;if(b)return b.nodeValue=a||"",b;this.header(a);return this.t};f.titled=function(){var a=this.t;return a&&a.nodeValue};f.bodyY=function(){return m(this.body,this.el)};f.scrollY=function(a){if(S===a)return this.body.scrollTop;
174
+ this.body.scrollTop=a};f.tabulate=function(a){var b=this.table;b?b.clear():b=l.require("$47","wgtable.js").create(this);b.init(a);return this.table=b};f.lock=function(){this.body.className+=" locked";return this};f.scrollTo=function(a,b){var d,c=this.body;d=c.scrollTop;var e=m(a,c);if(d>e)d=e;else{var g=c.clientHeight,e=e+h(a).outerHeight();if(g+d<e)d=e-g;else return}b?c.scrollTop=d:h(c).stop(!0).animate({scrollTop:d},250)};f.navigize=function(b,d){function c(a){var b=f[a],d=k[a],e=h(b.el).show();
175
+ d.addClass("active");m=a;n.data("idx",a);b.fire("wgTabSelect",[a]);return e}var e=this,f=e.cells,y=e.nav,m,k=[];y&&e.el.removeChild(y);var y=e.nav=e.el.insertBefore(g.el("nav","wg-tabs"),e.body),n=h(y).on("click",function(b){var d=h(b.target).data("idx");if(null==d)return!0;if(null!=m){var g=k[m];h(f[m].el).hide();g.removeClass("active")}c(d);e.redraw();return a(b)});null==d&&(d=n.data("idx")||0);e.each(function(a,d){k[d]=h('<a href="#'+a.id+'"></a>').data("idx",d).text(b[d]).appendTo(n);a.pos=0;
176
+ h(a.el).hide()});c(f[d]?d:0);e.lock();e.redraw();return e};f.navigated=function(){var a=this.nav;if(a)return h(a).data("idx")};f=null;return c}({},v,z));l.register("$24",function(c,f,D){function p(a){var b=[];a&&(a.saved()||b.push("po-unsaved"),a.fuzzy()?b.push("po-fuzzy"):a.flagged()&&b.push("po-flagged"),a.translation()||b.push("po-empty"),a.comment()&&b.push("po-comment"));return b.join(" ")}function b(a,b,d){b=h(a.title(b).parentNode);var c=b.find("span.lang");d?(d=l.require("$38","locale.js").cast(d),
177
+ c.length||(c=h("<span></span>").prependTo(b)),c.attr("lang",d.lang).attr("class",d.getIcon()||"lang region region-"+(d.region||"zz").toLowerCase())):(c.remove(),d="en");a.locale(d);return b}function d(){this.dirty=0}var a="poUpdate",e="changing",n="changed",k=0,g=1,m=2,A=3,B=4,s=5,r=/^\s+/,w,q,C=l.require("$3","string.js").sprintf,v=l.require("$18","html.js");c.extend=function(a){return a.prototype=new d};c.localise=function(a){q=a;return c};var z=function(){var a=D.createElement("p");return function(b){a.innerHTML=
178
+ b.replace("src=","x=");return a.textContent}}(),u=d.prototype=l.require("$39","abstract.js").init(["getListColumns","getListHeadings","getListEntry"],["editable","t"]);u.init=function(){this.localise();this.editable={source:!0,target:!0};this.mode="";this.html=!1;return this};u.localise=function(a){a||(a=q||l.require("$1","t.js").init());var b=[];b[k]=a._x("Source text","Editor")+":";b[A]=a._x("%s translation","Editor")+":";b[B]=a._x("Context","Editor")+":";b[s]=a._x("Comments","Editor")+":";b[g]=
179
+ a._x("Single","Editor")+":";b[m]=a._x("Plural","Editor")+":";b[6]=a._x("Untranslated","Editor");b[7]=a._x("Translated","Editor");b[8]=a._x("Fuzzy","Editor");this.labels=b;this.t=a;return this};u.setRootCell=function(a){function b(a){d.redraw(!0,a);return!0}var d=l.require("$40","wingrid.js").init(a);h(f).on("resize",b);this.redraw=b;h(a).on("wgFocus wgBlur",function(a,b){a.stopPropagation();w=b});this.destroy=function(){d.destroy();h(f).off("resize",b)};this.rootDiv=a;return d};u.$=function(){return h(this.rootDiv)};
180
+ u.setListCell=function(a){var b=this;b.listCell=a;a.on("wgRowSelect",function(a,d){b.loadMessage(b.po.row(d));return!0}).on("wgRowDeselect",function(a,d,c){c||b.loadNothing();return!0})};u.setSourceCell=function(a){this.sourceCell=a};u.setTargetCell=function(a){this.targetCell=a};u.next=function(a,b,d){for(var c=this.listTable,e=c.selected(),g=e,f,m=this.po;null!=(e=c.next(a,d,e));){if(g===e){e=null;break}if(b&&(f=m.row(e),f.translated(0)))continue;break}null!=e&&c.select(e,!0);return e};u.current=
181
  function(a){var b=this.active;if("undefined"===typeof a)return b;a?a.is(b)?this.reloadMessage(a):this.loadMessage(a):this.unloadActive();return this};u.getTargetOffset=function(){if(this.active)return this.targetCell&&this.targetCell.navigated()||0};u.getTargetEditable=function(){return this.editable.target&&this.targetCell&&this.targetCell.editable()};u.getSourceEditable=function(){return this.editable.source&&this.sourceCell&&this.sourceCell.editable()};u.getContextEditable=function(){return this.editable.context&&
182
+ this.contextCell&&this.contextCell.editable()};u.getFirstEditable=function(){return this.getTargetEditable()||this.getSourceEditable()||this.getContextEditable()};u.searchable=function(a){a&&(this.dict=a,this.po&&this.rebuildSearch());return this.dict&&!0};u.rebuildSearch=function(){var a=-1,b=this.po.rows,d=b.length,c=this.dict;for(c.clear();++a<d;)c.add(a,b[a].toText())};u.filtered=function(){return this.lastSearch||""};u.filter=function(a,b){var d,c=this.listTable,e=this.lastFound,g=this.lastSearch;
183
+ if(a){if(g===a)return e||0;if(g&&!e&&0===a.indexOf(g))return 0;d=this.dict.find(a)}this.lastSearch=g=a;this.lastFound=e=d?d.length:this.po.length;d?c.filter(d):c.unfilter();b||this.fire("poFilter",[g,e]);return e};u.countFiltered=function(){return this.lastSearch?this.lastFound:this.po.length};u.unsave=function(a,b){var d=!1;if(a=a||self.active){if(d=a.saved(b))this.dirty++,a.unsave(b),this.fire("poUnsaved",[a,b]);this.markUnsaved(a)}return d};u.markUnsaved=function(a){var b=this.po.indexOf(a);if(b=
184
+ this.listTable.tr(b)){var d=b[0].className;a=d.replace(/(?:^| +)po-[a-z]+/g,"")+" "+p(a);a!==d&&h(b).attr("class",a)}};u.save=function(a){var b=this.po;if(this.dirty||a)b.each(function(a,b){b.save()}),this.listCell.find("div.po-unsaved").removeClass("po-unsaved"),this.dirty=0,this.fire("poSave");return b};u.fire=function(a,b){var d=this.handle;if(d&&d[a]&&(d=d[a].apply(this,b||[]),!1===d))return!1;d=h.Event(a);this.$().trigger(d,b);return!d.isDefaultPrevented()};u.on=function(a,b){this.$().on(a,b);
185
+ return this};u.getSorter=function(){return null};u.reload=function(){var a=this,b,d=a.listCell,c=a.listTable,e=a.po,g=e&&e.locale(),f=g&&g.isRTL(),m=e&&e.length||0;if(!e||!e.row)return d&&d.clear().header("Error").contents("Invalid messages list"),!1;a.lastSearch&&(a.lastSearch="",a.lastFound=m,a.fire("poFilter",["",m]));c&&(b=c.thead().distribution());a.listTable=c=d.tabulate({eachCol:function(b){var d,c,e=a.getListColumns(),g=a.getListHeadings();for(c in e)d=e[c],b(d,c,g[d])},eachRow:function(b){e.each(function(d,
186
+ c){b(c.idx,a.getListEntry(c),p(c))})},sort:a.getSorter()});var k,d=a.getListColumns();for(k in d)c.sortable(d[k]);b&&c.thead().distribute(b);c.tbody().$(f?"addClass":"removeClass",["is-rtl"]);a.targetLocale=g;a.fire("poLoad");return!!m};u.load=function(a,b){this.po=a;this.dict&&this.rebuildSearch();this.reload()&&(-1!==b?this.listTable.selectRow(b||0):this.active&&this.unloadActive())};u.pasteMessage=function(a){var b,d=0;(b=this.sourceCell)&&b.eachTextarea(function(b){b.val(a.source(null,d++))});
187
+ (b=this.contextCell)&&b.eachTextarea(function(b){b.val(a.context())});if(b=this.targetCell)d=0,b.eachTextarea(function(b){b.val(a.translation(d++))});this.updateListCell(a,"source");this.updateListCell(a,"target");return this};u.reloadMessage=function(a){var b=this.sourceCell,d=this.targetCell,c;this.pasteMessage(a);b&&this.setNotes(a,b)&&b.redraw();d&&(c=d.navigated()||0,c=this.setErrors(a.errors(c),d),!b&&this.setNotes(a,d)&&(c=!0),c&&d.redraw());return this};u.setStatus=function(){return null};
188
+ u.setNotes=function(a,b){var d;d=!1;var c=this.$notes,e=this.labels,g=a.notes(),f=a.context();g||f?(c||(c=b.find("p.notes"),c.length||(c=h('<p class="notes"></p>').insertAfter(b.header())),this.$notes=c),d=[],f&&d.push(e[B]+" <mark>"+v.h(f)+"</mark>"),g&&d.push(v.h(g,!0)),c.html(d.join("\n")).show(),v.init(c),d=!0):c&&c.text()&&(c.text("").hide(),d=!0);return d};u.setErrors=function(a,b){var d=!1,c=this.$errs;a&&a.length?(c||(c=b.find("p.errors"),c.length||(c=h('<p class="errors"></p>').insertAfter(this.targetCell.header())),
189
+ this.$errs=c),c.html(v.h(a.join(".\n")+".",!0)).show(),v.init(c),d=!0):c&&c.text()&&(c.text("").hide(),d=!0);return d};u.loadMessage=function(d){function c(a,b){var d=b?a.split(" "):a.split(" ",1);a=d[0];"="===a.charAt(0)&&(a=a.substr(1),a=["zero","one","two"][Number(a)]||a);d[0]=a.charAt(0).toUpperCase()+a.substr(1).toLowerCase();return d.join(" ")}function f(a,e){var n=S,p=O[k];a.off();a.titled()!==p&&b(a,p,e||"en");p=!1;u.setNotes(d,a)&&(p=!0);if(d.plural()){var p=-1,l=[],r=[],q=a.id+"-",s=d.sourceForms()||
190
+ e&&e.plurals||["One","Other"],A=s.length;if(2!==A||"="===s[0].charAt(0)&&"=1"!==s[0])for(;++p<A;)l[p]=q+String(p),r[p]=c(s[p])+":";else l=[q+"-0",q+"-1"],r=[O[g],O[m]];a.splity.apply(a,l);a.each(function(a,b){a.header(r[b]).textarea(d.source(null,b),n).setStrf(H).setMode(v).setInvs(z)});a.lock();n&&a.each(function(a,b){h(a,b)})}else p&&a.redraw(),a.textarea(d.source(),n).setStrf(H).setMode(v).setInvs(z),n&&h(a,0)}function h(b,c){b.on(e,function(a,b){d.source(b,c);0===c&&u.updateListCell(d,"source");
191
+ u.unsave(d,c)}).on(n,function(){0===c&&u.po.reIndex(d);u.dict&&u.rebuildSearch();u.fire(a,[d])})}function p(a,e,g){P&&a.eachTextarea(function(a){a.ping()});a.off();var f=e.isKnown()&&e.label||"Target",f=C(O[A],f);a.titled()!==f&&b(a,f,e);f=!1;!this.sourceCell&&u.setNotes(d,a)&&(f=!0);u.setErrors(d.errors(g),a)&&(f=!0);u.setStatus(d,g);if(d.pluralized()){var m=[],k=[],h=a.id+"-",n=d.targetForms()||e.plurals||["One","Other"],f=n.length,r=function(a){var b=n[a];k.push(b?c(b,!0):"Form "+a);m.push(h+String(a))};
192
+ for(d.each(r);(e=m.length)<f;)r(e);a.splitx.apply(a,m);a.each(function(a,b){var c=P&&!d.disabled(b);a.textarea(d.translation(b),c).setStrf(H).setMode(v).setInvs(z);P&&l(a,b)});a.navigize(k,g||null).on("wgTabSelect",function(b,c){var e=P&&b.cell.editable();e&&e.focus();u.setErrors(d.errors(c),a);u.setStatus(d,c);u.fire("poTab",[c])})}else f&&a.redraw(),a.textarea(d.translation(),P&&!d.disabled(0)).setStrf(H).setMode(v).setInvs(z),P&&l(a,0)}function l(b,c){b.on(e,function(a,b,e){d.translate(b,c);0===
193
+ c&&u.updateListCell(d,"target");d.fuzzy(c)?u.fuzzy(!1,d,c):u.unsave(d,c);""===b?u.fire("poEmpty",[!0,d,c]):""===e&&u.fire("poEmpty",[!1,d,c])}).on(n,function(){u.dict&&u.rebuildSearch();u.fire(a,[d])})}function r(c){c.off();var g=O[B];c.titled()!==g&&(b(c,g),u.setStatus(null));c.textarea(d.context(),!0).setMode(v).setInvs(z);X&&c.on(e,function(a,b){d.context(b);u.updateListCell(d,"source");u.unsave(d,R)}).on(n,function(){u.po.reIndex(d);u.dict&&u.rebuildSearch();u.fire(a,[d])})}function q(a){var c=
194
+ O[s];a.titled()!==c&&b(a,c);a.off().on(e,function(a,b){d.comment(b);u.fire("poComment",[d,b]);u.unsave(d,R)}).textarea(d.comment(),!0)}var u=this,v=u.mode,D=d.isHTML(),z=u.inv||!1,E=this.fmt||null,H=d.format()||null,G=d.is(u.active),R=0,L=u.sourceCell,T=u.targetCell,U=u.contextCell,V=u.commentCell,P=u.editable.target,S=u.editable.source,X=u.editable.context,Q=w,Y=u.sourceLocale,W=u.targetLocale,O=u.labels;u.html!==D&&(u.html=D,"code"!==u.mode&&(v=D?"html":"",u.setMode(v)));u.active=d;L&&f(L,Y);U&&
195
+ r(U);T&&W&&(R=T.navigated()||0,p(T,W,R));V&&q(V);Q&&(Q.exists()||(Q=Q.parent()),(D=Q.editable())&&D.focus());E!==H&&(this.fmt=H);G||u.fire("poSelected",[d])};u.unloadActive=function(){var a;(a=this.$notes)&&a.text("").hide();(a=this.$errs)&&a.text("").hide();(a=this.sourceCell)&&a.off().clear();(a=this.contextCell)&&a.off().clear();(a=this.targetCell)&&a.off().clear();(a=this.commentCell)&&a.off();this.active&&(this.fire("poDeselected",[this.active]),this.active=null);return this};u.loadNothing=function(){var a,
196
+ b=this.t,d=this.mode||"",c=this.inv||!1,e=this.fmt;this.unloadActive();this.setStatus(null);(a=this.commentCell)&&a.textarea("",!1);if(a=this.sourceCell)a.textarea("",!1).setStrf(e).setMode(d).setInvs(c),a.title(b._x("Source text not loaded","Editor")+":");if(a=this.contextCell)a.textarea("",!1).setMode(d).setInvs(c),a.title(b._x("Context not loaded","Editor")+":");if(a=this.targetCell)a.textarea("",!1).setStrf(e).setMode(d).setInvs(c),a.title(b._x("Translation not loaded","Editor")+":");this.fire("poSelected",
197
+ [null])};u.updateListCell=function(a,b){var d=this.getListColumns()[b],c=this.po.indexOf(a);(c=this.listTable.row(c))&&c.update(d)};u.cellText=function(a){if(-1!==a.indexOf("<")||-1!==a.indexOf("&"))a=z(a);return a.replace(r,"")||"\u00a0"};u.fuzzy=function(a,b,d){var c=4===this.flag(null,b,d);!0!==a||c?!1===a&&c&&this.flag(0,b,d)&&this.fire("poFuzzy",[b,!1,d]):this.flag(4,b,d)&&this.fire("poFuzzy",[b,!0,d]);return c};u.flag=function(b,d,c){if(!d){d=this.active;c=this.getTargetOffset();if(null==c)return null;
198
+ c&&d.targetForms()&&(c=0)}var e=d.flagged(c);if(null==b)return e;if(e===b||b&&!d.translated(c)||!this.fire("poFlag",[b,e,d,c]))return!1;d.flag(b,c);this.fire(a,[d])&&this.unsave(d,c);this.setStatus(d,c);return!0};u.add=function(b,d){var c,e=this.po.get(b,d);e?c=this.po.indexOf(e):(c=this.po.length,e=this.po.add(b,d),this.load(this.po,-1),this.fire("poAdd",[e]),this.fire(a,[e]));this.lastSearch&&this.filter("");this.listTable.select(c);return e};u.del=function(b){if(b=b||this.active){var d=this.lastSearch,
199
+ c=this.po.del(b);null!=c&&(this.unsave(b),this.fire("poDel",[b]),this.fire(a,[b]),this.reload(),this.dict&&this.rebuildSearch(),this.active&&this.active.equals(b)&&this.unloadActive(),this.po.length&&(d&&this.filter(d),this.active||(c=Math.min(c,this.po.length-1),this.listTable.select(c))))}};u.setMono=function(a){return this.setMode(a?"code":this.html?"html":"")};u.setMode=function(a){this.mode!==a&&(this.mode=a,this.callTextareas(function(b){b.setMode(a)}));return this};u.getMono=function(){return"code"===
200
+ this.mode};u.setInvs=function(a){(this.inv||!1)!==a&&(this.inv=a,this.callTextareas(function(b){b.setInvs(a)}),this.fire("poInvs",[a]));return this};u.getInvs=function(){return this.inv||!1};u.callTextareas=function(a){var b=this.targetCell;b&&b.eachTextarea(a);(b=this.contextCell)&&b.eachTextarea(a);(b=this.sourceCell)&&b.eachTextarea(a);return this};u.focus=function(){var a=this.getTargetEditable();a&&a.focus();return this};u=null;return c}({},v,z));l.register("$25",function(c,f,h){Number.prototype.format=
201
+ function(c){c=Math.pow(10,c||0);var b=Math.round(c*this)/c;c=[];var b=String(b),d=b.split("."),b=d[0],d=d[1],a=b.length;do c.unshift(b.substring(a-3,a));while(0<(a-=3));b=c.join(",");if(c=d){c=d;for(var e,d=c.length;"0"===c.charAt(--d);)e=d;e&&(c=substring(0,e));c=d=c}c&&(b+="."+d);return b};Number.prototype.percent=function(c){var b=0,d=this&&c?100*(this/c):0;if(0===d)return"0";if(100===d)return"100";if(99<d)d=Math.min(d,99.9),c=d.format(++b);else if(0.5>d){d=Math.max(d,1E-4);do c=d.format(++b);
202
+ while("0"===c&&4>b);c=c.substr(1)}else c=d.format(0);return c};return c}({},v,z));l.register("$12",function(c,f,h){function p(){this.init()._validate();this.sourceLocale={lang:"en",label:"English",plurals:["One","Other"]}}f=l.require("$24","base.js");l.require("$25","number.js");c.init=function(b){var d=new p;b=d.setRootCell(b);var a=b.splity("po-list","po-edit"),c=a[0],f=a[1],a=f.splitx("po-trans","po-comment"),k=a[0],g=a[1].header("Loading.."),a=k.splity("po-source","po-target"),k=a[0].header("Loading.."),
203
+ a=a[1].header("Loading..");b.distribute([0.34]);f.distribute([0.8]);d.setListCell(c);d.setSourceCell(k);d.setTargetCell(a);d.commentCell=g;d.editable.source=!1;return d};f=p.prototype=f.extend(p);f.getListHeadings=function(){var b=this.t||{_x:function(b){return b}};return[b._x("Source text","Editor"),b._x("Translation","Editor")]};f.getListColumns=function(){return{source:0,target:1}};f.getListEntry=function(b){var d=this.cellText;return[function(){var a,c=d(b.source()||""),f=b.context();return f?
204
+ (a=h.createElement("p"),a.appendChild(h.createElement("mark")).innerText=f,a.appendChild(h.createTextNode("\u00a0"+c)),a):c},function(){return d(b.translation()||"")}]};f.stats=function(){var b=this.po,d=b.length,a=0,c=0,f=0;b.each(function(b,d){d.fuzzy()?f++:d.translated()?a++:c++});return{t:d,p:a.percent(d)+"%",f:f,u:c}};f.unlock=function(){this._unlocked||(this._unlocked=this.targetLocale,delete this.targetLocale,this.po&&this.po.unlock(),this.editable={source:!0,context:!0,target:!1},this.contextCell=
205
+ this.targetCell,delete this.targetCell,this.fire("poLock",[!1]),this.active&&this.loadMessage(this.active))};f.lock=function(){var b;this._unlocked&&(b=this.targetLocale=this._unlocked,delete this._unlocked,this.po&&this.po.lock(b),this.editable={source:!1,context:!1,target:!0},this.targetCell=this.contextCell,delete this.contextCell,this.fire("poLock",[!0,b]),this.active&&this.loadMessage(this.active))};f.locked=function(){return!this._unlocked};f.getSorter=function(){function b(a,b){var c=a.weight(),
206
+ g=b.weight();return c===g?d(a,b):c>g?-1:1}function d(a,b){return a.hash().localeCompare(b.hash())}var a=this;return function(c){var f=a.po,k=a.locked()?b:d;c.sort(function(a,b){return k(f.row(a),f.row(b))})}};return c}({},v,z));l.register("$13",function(c,f,l){var p={copy:66,clear:75,save:83,fuzzy:85,next:40,prev:38,enter:13,invis:73},b={38:!0,40:!0,73:!0},d={66:function(a,b){var d=b.current();d&&(d.normalize(),b.focus().pasteMessage(d))},75:function(a,b){var d=b.current();d&&(d.untranslate(),b.focus().pasteMessage(d))},
207
+ 85:function(a,b){b.focus().fuzzy(!b.fuzzy())},13:function(a,b){b.getFirstEditable()&&b.next(1,!0,!0)},40:function(a,b){var d=a.shiftKey;b.next(1,d,d)},38:function(a,b){var d=a.shiftKey;b.next(-1,d,d)},73:function(a,b){if(!a.shiftKey)return!1;b.setInvs(!b.getInvs())}};c.init=function(a,c){function n(c){if(c.isDefaultPrevented()||!c.metaKey&&!c.ctrlKey)return!0;var e=c.which;if(!k[e])return!0;var f=d[e];if(!f)throw Error("command undefined #"+e);if(c.altKey||c.shiftKey&&!b[e]||!1===f(c,a))return!0;
208
+ c.stopPropagation();c.preventDefault();return!1}var k={};h(c||f).on("keydown",n);return{add:function(a,b){d[p[a]]=b;return this},enable:function(){var a,b;for(b in arguments)a=p[arguments[b]],k[a]=!0;return this},disable:function(){h(c||f).off("keydown",n);a=c=k=null}}};return c}({},v,z));l.register("$26",function(c,f,h){function l(){this.reIndex([])}c.init=function(){return new l};f=l.prototype;f.reIndex=function(b){for(var d={},a=-1,c=b.length;++a<c;)d[b[a]]=a;this.keys=b;this.length=a;this.ords=
209
+ d};f.key=function(b,d){if(null==d)return this.keys[b];var a=this.keys[b],c=this.ords[d];if(d!==a){if(null!=c)throw Error("Clash with item at ["+c+"]");this.keys[b]=d;delete this.ords[a];this.ords[d]=b}return b};f.indexOf=function(b){b=this.ords[b];return null==b?-1:b};f.add=function(b,d){var a=this.ords[b];null==a&&(this.keys[this.length]=b,a=this.ords[b]=this.length++);this[a]=d;return a};f.get=function(b){return this[this.ords[b]]};f.has=function(b){return null!=this.ords[b]};f.del=function(b){this.cut(this.ords[b],
210
+ 1)};f.cut=function(b,d){d=d||1;var a=[].splice.call(this,b,d);this.keys.splice(b,d);this.reIndex(this.keys);return a};f.each=function(b){for(var d=-1,a=this.keys,c=this.length;++d<c;)b(a[d],this[d],d);return this};f.sort=function(b){for(var d=-1,a=this.length,c,f=this.keys,k=this.ords,g=[];++d<a;)g[d]=[this[d],f[d]];g.sort(function(a,d){return b(a[0],d[0])});for(d=0;d<a;d++)c=g[d],this[d]=c[0],c=c[1],f[d]=c,k[c]=d;return this};f.join=function(b){return[].join.call(this,b)};f=null;return c}({},v,z));
211
+ l.register("$27",function(c,f,h){function l(b,d){var a=RegExp("^.{0,"+(b-1)+"}["+d+"]"),c=RegExp("^[^"+d+"]+");return function(d,f){for(var g=d.length,m;g>b;){m=a.exec(d)||c.exec(d);if(null==m)break;m=m[0];f.push(m);m=m.length;g-=m;d=d.substr(m)}0!==g&&f.push(d);return f}}c.create=function(b){function d(a){return m[a]||"\\"+a}var a,c,f=/(?:\r\n|[\r\n\v\f\u2028\u2029])/g,h=/[ \r\n]+/g,g=/[\t\v\f\x07\x08\\\"]/g,m={"\t":"\\t","\v":"\\v","\f":"\\f","\u0007":"\\a","\b":"\\b"};if(null==b||isNaN(b=Number(b)))b=
212
+ 79;0<b&&(a=l(b-3," "),c=l(b-2,"-\u2013 \\.,:;\\?!\\)\\]\\}\\>"));return{pair:function(a,m){if(!m)return a+' ""';m=m.replace(g,d);var h=0;m=m.replace(f,function(){h++;return"\\n\n"});if(!(h||b&&b<m.length+a.length+3))return a+' "'+m+'"';var k=[a+' "'],l=m.split("\n");if(c)for(var p=-1,v=l.length;++p<v;)c(l[p],k);else k=k.concat(l);return k.join('"\n"')+'"'},prefix:function(a,b){var d=a.split(f);return b+d.join("\n"+b)},refs:function(b){b=b.replace(h," ",b);a&&(b=a(b,[]).join("\n#: "));return"#: "+
213
+ b}}};return c}({},v,z));l.register("$41",function(c,f,h){function l(){this.length=0}c.init=function(){return new l};f=l.prototype;f.push=function(b){this[this.length++]=b;return this};f.sort=function(b){[].sort.call(this,b);return this};f.each=function(b){for(var d=-1,a=this.length;++d<a;)b(d,this[d]);return this};return c}({},v,z));l.register("$28",function(c,f,h){function p(){}c.extend=function(b){return b.prototype=new p};f=p.prototype=l.require("$39","abstract.js").init(["add","load"]);f.row=
214
  function(b){return this.rows[b]};f.lock=function(b){return this.locale(b||{lang:"zxx",label:"Unknown",nplurals:1,pluraleq:"n!=1"})};f.unlock=function(){var b=this.loc;this.loc=null;return b};f.locale=function(b){null==b?b=this.loc:this.loc=b=l.require("$38","locale.js").cast(b);return b};f.each=function(b){this.rows.each(b);return this};f.indexOf=function(b){"object"!==typeof b&&(b=this.get(b));if(!b)return-1;null==b.idx&&(b.idx=this.rows.indexOf(b.hash()));return b.idx};f.get=function(b){return this.rows&&
215
+ this.rows.get(b)};f.del=function(b){b=this.indexOf(b);if(-1!==b){var d=this.rows.cut(b,1);if(d&&d.length)return this.length=this.rows.length,this.rows.each(function(a,b,d){b.idx=d}),b}};f.reIndex=function(b,d){var a=this.indexOf(b),c=b.hash(),f=this.rows.indexOf(c);return f===a?a:-1!==f?(d=(d||0)+1,b.source("Error, duplicate "+String(d)+": "+b.source()),this.reIndex(b,d)):this.rows.key(a,c)};f.sort=function(b){this.rows.sort(b);return this};f["export"]=function(){for(var b=-1,d=this.rows,a=d.length,
216
+ c=l.require("$41","list.js").init();++b<a;)c.push(d[b]);return c};f=null;return c}({},v,z));l.register("$29",function(c,f,h){function l(){this.xcmt=this.cmt=this.ref=this._id=this.id=""}c.extend=function(b){return b.prototype=new l};f=l.prototype;f.flag=function(b,d){var a=this.flg||(this.flg=[]);if(null!=d)a[d]=b;else for(var c=Math.max(a.length,this.src.length,this.msg.length);0!==c--;)a[c]=b;return this};f.flagged=function(b){var d=this.flg||[];if(null!=b)return d[b]||0;for(b=d.length;0!==b--;)if(d[b])return!0;
217
+ return!1};f.flags=function(){for(var b,d={},a=[],c=this.flg||[],f=c.length;0!==f--;)b=c[f],d[b]||(d[b]=!0,a.push(b));return a};f.flaggedAs=function(b,d){var a=this.flg||[];if(null!=d)return b===a[d]||0;for(var c=a.length;0!==c--;)if(a[c]===b)return!0;return!1};f.fuzzy=function(b,d){var a=this.flaggedAs(4,b);null!=d&&this.flag(d?4:0,b);return a};f.source=function(b,d){if(null==b)return this.src[d||0]||"";this.src[d||0]=b;return this};f.plural=function(b,d){if(null==b)return this.src[d||1]||"";this.src[d||
218
+ 1]=b||"";return this};f.sourceForms=function(){return this.srcF};f.targetForms=function(){return this.msgF};f.each=function(b){for(var d=-1,a=this.src,c=this.msg,f=Math.max(a.length,c.length);++d<f;)b(d,a[d],c[d]);return this};f.count=function(){return Math.max(this.src.length,this.msg.length)};f.pluralized=function(){return 1<this.src.length||1<this.msg.length};f.translate=function(b,d){this.msg[d||0]=b||"";return this};f.untranslate=function(b){if(null!=b)this.msg[b]="";else{var d=this.msg,a=d.length;
219
+ for(b=0;b<a;b++)d[b]=""}return this};f.translation=function(b){return this.msg[b||0]||""};f.errors=function(b){return this.err&&this.err[b||0]||[]};f.translated=function(b){if(null!=b)return!!this.msg[b];var d=this.msg,a=d.length;for(b=0;b<a;b++)if(!d[b])return!1;return!0};f.untranslated=function(b){if(null!=b)return!this.msg[b];var d=this.msg,a=d.length;for(b=0;b<a;b++)if(d[b])return!1;return!0};f.comment=function(b){if(null==b)return this.cmt;this.cmt=b||"";return this};f.notes=function(b){if(null==
220
  b)return this.xcmt;this.xcmt=b||"";return this};f.refs=function(b){if(null==b)return this.ref;this.ref=b||"";return this};f.format=function(b){if(null==b)return this.fmt;this.fmt=b;return this};f.context=function(b){if(null==b)return this.ctx||"";this.ctx=b||"";return this};f.toString=f.toText=function(){return this.src.concat(this.msg,[this.id,this.ctx]).join(" ")};f.weight=function(){var b=0;this.translation()||(b+=2);this.fuzzy()&&(b+=1);return b};f.equals=function(b){return this===b||this.hash()===
221
+ b.hash()};f.hash=function(){return this.id};f.normalize=function(){for(var b=this.msg.length;0!==b--;)this.msg[b]=this.src[b]||""};f.disabled=function(b){return!!(this.lck||[])[b||0]};f.disable=function(b){(this.lck||(this.lck=[]))[b||0]=!0;return this};f.saved=function(b){var d=this.drt;if(!d)return!0;if(null!=b)return!d[b];for(b=d.length;0!==b--;)if(d[b])return!1;return!0};f.unsave=function(b){(this.drt||(this.drt=[]))[b||0]=!0;return this};f.save=function(b){var d=this.drt;null==b?this.drt=null:
222
+ d[b]=!1;return this};f.is=function(b){return b&&(b===this||b.idx===this.idx)};f.isHTML=function(b){if(null==b)return this.htm||!1;this.htm=b};f=null;return c}({},v,z));l.register("$14",function(c,f,h){function p(a){return{"Project-Id-Version":"PACKAGE VERSION","Report-Msgid-Bugs-To":"","POT-Creation-Date":a||"","PO-Revision-Date":a||"","Last-Translator":"","Language-Team":"",Language:"","Plural-Forms":"","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit"}}
223
+ function b(a,b){var d=a||"";b&&(d+="\x00"+b);return d}function d(){return l.require("$26","collection.js").init()}function a(a){var b=f.console;b&&b.error&&b.error(a.message||String(a))}function e(a){return l.require("$27","format.js").create(a)}function n(a){this.locale(a);this.length=0;this.rows=d();this.head=p(this.now())}function k(a,b){this.src=[a||""];this.msg=[b||""]}c.create=function(a){return new n(a)};h=l.require("$28","messages.js").extend(n);h.now=function(){function a(b,d){for(var c=
224
+ String(b);c.length<d;)c="0"+c;return c}var b=new Date,d=b.getUTCFullYear(),c=b.getUTCMonth()+1,e=b.getUTCDate(),f=b.getUTCHours(),b=b.getUTCMinutes();return a(d,4)+"-"+a(c,2)+"-"+a(e,2)+" "+a(f,2)+":"+a(b,2)+"+0000"};h.header=function(a,b){var d=this.head||(this.head={});if(null==b)return this.headers()[a]||"";d[a]=b||"";return this};h.headers=function(a){var b,d=this.now(),c=this.head||(this.head=p(d));if(null!=a){for(b in a)c[b]=a[b];return this}var e=this.locale();a={};for(b in c)a[b]=String(c[b]);
225
+ e?(a.Language=String(e)||"zxx",a["Language-Team"]=e.label||a.Language,a["Plural-Forms"]="nplurals="+(e.nplurals||"2")+"; plural="+(e.pluraleq||"n!=1")+";",b="PO-Revision-Date"):(a.Language="",a["Plural-Forms"]="nplurals=INTEGER; plural=EXPRESSION;",a["PO-Revision-Date"]="YEAR-MO-DA HO:MI+ZONE",b="POT-Creation-Date");a[b]||(a[b]=d);a["X-Generator"]="Loco https://localise.biz/";return a};h.get=function(a,d){var c=b(a,d);return this.rows.get(c)};h.add=function(b,d){b instanceof k||(b=new k(b));d&&b.context(d);
226
+ var c=b.hash();this.rows.get(c)?a("Duplicate message at index "+this.indexOf(b)):(b.idx=this.rows.add(c,b),this.length=this.rows.length);return b};h.load=function(b){for(var d=-1,c,e,f,h,l,n,p=(f=this.locale())&&f.nplurals||2,v=[];++d<b.length;)c=b[d],null==c.parent?(e=c.source||c.id,f=c.target||"",h=c.context,e||h?(l=new k(e,f),l._id=c._id,h&&l.context(h),c.flag&&l.flag(c.flag,0),c.comment&&l.comment(c.comment),c.notes&&l.notes(c.notes),c.refs&&l.refs(c.refs),l.format(c.format),c.message=l,this.add(l)):
227
+ 0===d&&"object"===typeof f&&(this.head=f,this.headcmt=c.comment)):v.push(c);for(d=-1;++d<v.length;)try{c=v[d];e=c.source||c.id;l=b[c.parent]&&b[c.parent].message;if(!l)throw Error("parent missing for plural "+e);n=c.plural;1===n&&l.plural(e);n>=p||(c.flag&&l.flag(c.flag,n),l.translate(c.target||"",n),c.format&&!l.format()&&l.format(c.format))}catch(z){a(z)}return this};h.merge=function(b){var c=this,e,f=b.header("POT-Creation-Date"),h=c.rows,k=[],l=[];b=b.rows;c.rows.each(function(a,d){null==b.get(a)&&
228
+ l.push(d)});c.rows=d();b.each(function(b,d){try{(e=h.get(b))?(e.ref=d.ref,e.fmt=d.fmt):(e=d,k.push(e)),c.add(e)}catch(f){a(f)}});f&&c.header("POT-Creation-Date",f);return{add:k,del:l}};h.wrap=function(a){this.fmtr=e(a);return this};h.toString=function(){var a,b=this.locale(),d=[],c=[],f=this.headers(),h=!b,l=b&&b.nplurals||2,n=this.fmtr||e();f[b?"PO-Revision-Date":"POT-Creation-Date"]=this.now();for(a in f)c.push(a+": "+f[a]);c=new k("",c.join("\n"));c.comment(this.headcmt||"");h&&c.fuzzy(0,!0);d.push(c.toString());
229
+ d.push("");this.rows.each(function(a,b){a&&(d.push(b.cat(n,h,l)),d.push(""))});return d.join("\n")};h=l.require("$29","message.js").extend(k);h.hash=function(){return b(this.source(),this.context())};h.toString=function(){return this.cat(e())};h.cat=function(a,b,d){var c,e=[],f;(f=this.cmt)&&e.push(a.prefix(f,"# "));(f=this.xcmt)&&e.push(a.prefix(f,"#. "));c=this.ref;if(f=this._id)c+=(c?" ":"")+"loco:"+f;c&&/\S/.test(c)&&e.push(a.refs(c));!b&&this.fuzzy()&&e.push("#, fuzzy");(f=this.fmt)&&e.push("#, "+
230
+ f+"-format");(f=this.ctx)&&e.push(a.pair("msgctxt",f));e.push(a.pair("msgid",this.src[0]));if(null==this.src[1])e.push(a.pair("msgstr",b?"":this.msg[0]));else for(c=-1,e.push(a.pair("msgid_plural",this.src[1])),f=this.msg||["",""],d=d||f.length;++c<d;)e.push(a.pair("msgstr["+c+"]",b?"":f[c]||""));return e.join("\n")};h.compare=function(a,b){var d=this.weight(),c=a.weight();if(d>c)return 1;if(d<c)return-1;if(b){d=this.hash().toLowerCase();c=a.hash().toLowerCase();if(d<c)return 1;if(d>c)return-1}return 0};
231
+ h=h=null;return c}({},v,z));l.register("$16",function(c,f,l){c.init=function(c){function b(){M||(I.click(m),M=h('<div id="loco-fs-creds"></div>').dialog({dialogClass:"request-filesystem-credentials-dialog loco-modal",minWidth:580,modal:!0,autoOpen:!1,closeOnEscape:!0}).on("change",'input[name="connection_type"]',function(){this.checked&&h("#ssh-keys").toggleClass("hidden","ssh"!==h(this).val())}));return M}function d(){G&&(a(h(q)),G=!1);if(H&&L){var b=L,c=h(J);c.find("span.loco-msg").text(b);N||(c.removeClass("jshide").hide().fadeIn(500),
232
+ N=!0)}else N&&(a(h(J)),N=!1)}function a(a){a.slideUp(250).fadeOut(250,function(){h(this).addClass("jshide")})}function e(){if(H)return M&&M.dialog("close"),d(),h(c).find('button[type="submit"]').attr("disabled",!1),h(f).triggerHandler("resize"),w&&w(!0),!0;y&&M?(G||(h(q).removeClass("jshide").hide().fadeIn(500),G=!0),N&&(a(h(J)),N=!1)):d();h(c).find('input[type="submit"]').attr("disabled",!0);w&&w(!1);return!1}function n(a){var b,c,d=r||{};for(b in d)d.hasOwnProperty(b)&&(c=d[b],a[b]?a[b].value=c:
233
+ h('<input type="hidden" />').attr("name",b).appendTo(a).val(c))}function k(a){a.preventDefault();a=h(a.target).serializeArray();s(a);E=!0;return!1}function g(a){a.preventDefault();M.dialog("close");return!1}function m(a){a.preventDefault();M.dialog("open").find('input[name="connection_type"]').change();return!1}function v(a){H=a.authed;C=a.method;h(q).find("span.loco-msg").text(a.message||"Something went wrong.");L=a.warning||"";a.notice&&u.notices.info(a.notice);if(H)"direct"!==C&&(r=a.creds,n(c),
234
+ E&&a.success&&u.notices.success(a.success)),e();else if(a.reason)u.notices.info(a.reason);else if(a=a.prompt){var d=b();d.html(a).find("form").submit(k);d.dialog("option","title",d.find("h2").remove().text());d.find("button.cancel-button").show().click(g);d.find('input[type="submit"]').addClass("button-primary");e();h(f).triggerHandler("resize")}else u.notices.error("Server didn't return credentials, nor a prompt for credentials")}function z(){e()}function s(a){E=!1;u.ajax.setNonce("fsConnect",K).post("fsConnect",
235
+ a,v,z);return a}var r,w,q=c,C=null,E=!1,H=!1,u=f.locoScope,y=c.path.value,F=c.auth.value,K=c["loco-nonce"].value,I=h(q).find("button.button-primary"),J=l.getElementById(q.id+"-warn"),G=!1,N=!1,L="",M;u.notices.convert(J).stick();c.connection_type?(r={},r.connection_type=c.connection_type.value,H=!0):y&&F&&s({path:y,auth:F});e();return{applyCreds:function(a){if(a.nodeType)n(a);else{var b,c=r||{};for(b in c)c.hasOwnProperty(b)&&(a[b]=c[b])}return this},setForm:function(a){c=a;e();n(a);return this},
236
+ connect:function(){y=c.path.value;F=c.auth.value;s(h(c).serializeArray());return this},listen:function(a){w=a;H&&a(!0);return this}}};return c}({},v,z));l.register("$17",function(c,f,v){function p(c,f,g,h){f="n"===g?d(f):a(f);h&&(f=e(f));return b([].sort,[f])(c)}function b(a,b){return function(c){a.apply(c,b);return c}}function d(a){return function(b,c){var d=b&&b[a]||0,e=c&&c[a]||0;return d===e?0:d>e?1:-1}}function a(a){return function(b,c){return(b&&b[a]||"").localeCompare(c&&c[a]||"")}}function e(a){return function(b,
237
+ c){return-1*a(b,c)}}c.init=function(a){function b(a){var c=-1,d=a.length;for(h("tr",q).remove();++c<d;)q.appendChild(a[c].$)}function c(a){s=a?z.find(a,d):d.slice(0);w&&(a=e[w],s=p(s,w,a.type,a.desc));b(s)}var d=[],e=[],f=0,s,r,w,q=a.getElementsByTagName("tbody")[0],v=a.getElementsByTagName("thead")[0],z=l.require("$7","fulltext.js").init();v&&q&&(h("th",v).each(function(a,c){var g=c.getAttribute("data-sort-type");g&&(a=f,h(c).addClass("loco-sort").click(function(c){c.preventDefault();c=a;var f=e[c],
238
+ g=f.type,l=!(f.desc=!f.desc);s=p(s||d.slice(0),c,g,l);b(s);r&&r.removeClass("loco-desc loco-asc");r=h(f.$).addClass(l?"loco-desc":"loco-asc").removeClass(l?"loco-asc":"loco-desc");w=c;return!1}),e[f]={$:c,type:g});c.hasAttribute("colspan")?f+=Number(c.getAttribute("colspan")):f++}),h("tr",q).each(function(a,b){var c,f,g,h=[],k={_:a,$:b},l=b.getElementsByTagName("td");for(f in e){c=l[f];(g=c.textContent.replace(/(^\s+|\s+$)/g,""))&&h.push(g);c.hasAttribute("data-sort-value")&&(g=c.getAttribute("data-sort-value"));
239
+ switch(e[f].type){case "n":g=Number(g)}k[f]=g}d[a]=k;z.index(a,h)}),a=h('form.loco-filter input[type="text"]',a.parentNode),a.length&&(a=a[0],v=h(a.form),1<d.length?l.require("$8","LocoTextListener.js").listen(a,c):v.hide(),v.on("submit",function(a){a.preventDefault();return!1})))};return c}({},v,z));var G=v.locoScope||(v.locoScope={});v=v.locoConf||(v.locoConf={});z=l.require("$1","t.js").init();var L=v.wplang;l.require("$2","array.js");G.l10n=z;z.load(v.wpl10n);L&&z.pluraleq(L.pluraleq);G.string=
240
+ l.require("$3","string.js");G.notices=l.require("$4","notices.js").init(z);G.ajax=l.require("$5","ajax.js").init(v).localise(z);G.locale=l.require("$6","wplocale.js");G.fulltext=l.require("$7","fulltext.js");G.watchtext=l.require("$8","LocoTextListener.js").listen;G.selector=l.require("$9","LocoSelector.js").create;G.autocomp=l.require("$10","LocoAutoComplete.js").init;G.tooltip=l.require("$11","tooltip.js");G.po={ed:l.require("$12","poedit.js"),kbd:l.require("$13","hotkeys.js"),init:l.require("$14",
241
+ "po.js").create,ace:l.require("$15","ace.js").strf("php")};G.fs=l.require("$16","fsconn.js");h("#loco.wrap table.wp-list-table").each(function(c,f){l.require("$17","tables.js").init(f)})})(window,document,window.jQuery);
pub/js/move.js ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Script for file move operation
3
+ */
4
+ !function( window, document, $ ){
5
+
6
+ var fsConn,
7
+ destPath,
8
+ fsHook = document.getElementById('loco-fs'),
9
+ elForm = document.getElementById('loco-move'),
10
+ origPath = elForm.path.value
11
+ ;
12
+
13
+ function setFormDisabled( disabled ){
14
+ $(elForm).find('button.button-primary').each( function(i,button){
15
+ button.disabled = disabled;
16
+ } );
17
+ }
18
+
19
+ function onFsConnect( valid ){
20
+ setFormDisabled( ! ( valid && destPath ) );
21
+ }
22
+
23
+ function validate(event){
24
+ var field = event.target||{}, value;
25
+ if( 'dest' === field.name && ( field.checked || 'text' === field.type ) ){
26
+ value = field.value;
27
+ if( value && value !== destPath ){
28
+ destPath = value;
29
+ setFormDisabled(true);
30
+ // check chosen target permissions
31
+ if( origPath !== value ){
32
+ fsHook.dest.value = value;
33
+ fsConn.connect();
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ function process( event ){
40
+ if( destPath ){
41
+ return true;
42
+ }
43
+ event.preventDefault();
44
+ return false;
45
+ }
46
+
47
+ if( fsHook && elForm ){
48
+ fsConn = window.locoScope.fs.init(fsHook).setForm(elForm).listen(onFsConnect);
49
+ $(elForm).change(validate).submit(process);
50
+ }
51
+
52
+ }( window, document, jQuery );
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: timwhitlock
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, PO, MO, productivity, multilingual, internationalization
4
  Requires at least: 4.1
5
  Requires PHP: 5.2.4
6
- Tested up to: 5.1.1
7
- Stable tag: 2.2.2
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -97,6 +97,13 @@ We don't collect your data or snoop on you. See the [plugin privacy notice](http
97
 
98
  == Changelog ==
99
 
 
 
 
 
 
 
 
100
  = 2.2.2 =
101
  * Security fixes for reading sensitive files
102
  * Fixed old PHP version error in data files
@@ -299,7 +306,7 @@ We don't collect your data or snoop on you. See the [plugin privacy notice](http
299
 
300
  == Upgrade Notice ==
301
 
302
- = 2.2.2 =
303
  * Various bug fixes and improvements
304
 
305
 
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, PO, MO, productivity, multilingual, internationalization
4
  Requires at least: 4.1
5
  Requires PHP: 5.2.4
6
+ Tested up to: 5.2.1
7
+ Stable tag: 2.3.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
97
 
98
  == Changelog ==
99
 
100
+ = 2.3.0 =
101
+ * Added experimental support for multipart uploads
102
+ * Added relocation tab for moving translation sets
103
+ * Creation of missing directories when writing new files
104
+ * Fixed duplicate file addition when iterating over symlink
105
+ * Bumped WP compatibility to 5.2.1
106
+
107
  = 2.2.2 =
108
  * Security fixes for reading sensitive files
109
  * Fixed old PHP version error in data files
306
 
307
  == Upgrade Notice ==
308
 
309
+ = 2.3.0 =
310
  * Various bug fixes and improvements
311
 
312
 
src/admin/bundle/BaseController.php CHANGED
@@ -130,46 +130,25 @@ abstract class Loco_admin_bundle_BaseController extends Loco_mvc_AdminController
130
 
131
  // may have fs credentials saved in session
132
  try {
133
- $session = Loco_data_Session::get();
134
- if( isset($session['loco-fs']) ){
135
- $fields['connection_type'] = $session['loco-fs']['connection_type'];
 
 
136
  }
137
  }
138
  catch( Exception $e ){
139
  Loco_error_AdminNotices::debug( $e->getMessage() );
140
  }
141
 
142
- // specific wording based on file operation type
143
- if( 'create' === $type ){
144
- $this->set('fsPrompt', __('Creating this file requires permission','loco-translate') );
145
- }
146
- else if( 'delete' === $type ){
147
- $this->set('fsPrompt', __('Deleting this file requires permission','loco-translate') );
148
- }
149
- else {
150
- $this->set('fsPrompt', __('Saving this file requires permission','loco-translate') );
151
- }
152
-
153
  // Run pre-checks that may determine file should not be written
154
  if( $relpath ){
155
  $file = new Loco_fs_File( $relpath );
156
  $file->normalize( loco_constant('WP_CONTENT_DIR') );
157
- // total file system block makes connection type irrelevent
158
  try {
159
  $api = new Loco_api_WordPressFileSystem;
160
  $api->preAuthorize($file);
161
- // else just warn if file is sensitive (system)
162
- if( Loco_data_Settings::get()->fs_protect && ( $systype = $file->getUpdateType() ) ){
163
- if( 'create' === $type ){
164
- $this->set('fsWarning', __('This file may be overwritten or deleted when you update WordPress','loco-translate' ) );
165
- }
166
- else if( 'delete' === $type ){
167
- $this->set('fsWarning', __('This directory is managed by WordPress, be careful what you delete','loco-translate' ) );
168
- }
169
- else {
170
- $this->set('fsWarning', __('Changes to this file may be overwritten or deleted when you update WordPress','loco-translate' ) );
171
- }
172
- }
173
  }
174
  catch( Loco_error_WriteException $e ){
175
  $this->set('fsLocked', $e->getMessage() );
@@ -179,5 +158,4 @@ abstract class Loco_admin_bundle_BaseController extends Loco_mvc_AdminController
179
  return $fields;
180
  }
181
 
182
-
183
  }
130
 
131
  // may have fs credentials saved in session
132
  try {
133
+ if( Loco_data_Settings::get()->fs_persist ){
134
+ $session = Loco_data_Session::get();
135
+ if( isset($session['loco-fs']) ){
136
+ $fields['connection_type'] = $session['loco-fs']['connection_type'];
137
+ }
138
  }
139
  }
140
  catch( Exception $e ){
141
  Loco_error_AdminNotices::debug( $e->getMessage() );
142
  }
143
 
 
 
 
 
 
 
 
 
 
 
 
144
  // Run pre-checks that may determine file should not be written
145
  if( $relpath ){
146
  $file = new Loco_fs_File( $relpath );
147
  $file->normalize( loco_constant('WP_CONTENT_DIR') );
148
+ // total file system block makes connection type irrelevant
149
  try {
150
  $api = new Loco_api_WordPressFileSystem;
151
  $api->preAuthorize($file);
 
 
 
 
 
 
 
 
 
 
 
 
152
  }
153
  catch( Loco_error_WriteException $e ){
154
  $this->set('fsLocked', $e->getMessage() );
158
  return $fields;
159
  }
160
 
 
161
  }
src/admin/bundle/LocaleController.php CHANGED
@@ -107,6 +107,7 @@ class Loco_admin_bundle_LocaleController extends Loco_mvc_AdminController {
107
  'view' => Loco_mvc_AdminRouter::generate( $type.'-file-view', $args ),
108
  'info' => Loco_mvc_AdminRouter::generate( $type.'-file-info', $args ),
109
  'edit' => Loco_mvc_AdminRouter::generate( $type.'-file-edit', $args ),
 
110
  'delete' => Loco_mvc_AdminRouter::generate( $type.'-file-delete', $args ),
111
  'copy' => Loco_mvc_AdminRouter::generate( $type.'-msginit', $args ),
112
  ) );
107
  'view' => Loco_mvc_AdminRouter::generate( $type.'-file-view', $args ),
108
  'info' => Loco_mvc_AdminRouter::generate( $type.'-file-info', $args ),
109
  'edit' => Loco_mvc_AdminRouter::generate( $type.'-file-edit', $args ),
110
+ 'move' => Loco_mvc_AdminRouter::generate( $type.'-file-move', $args ),
111
  'delete' => Loco_mvc_AdminRouter::generate( $type.'-file-delete', $args ),
112
  'copy' => Loco_mvc_AdminRouter::generate( $type.'-msginit', $args ),
113
  ) );
src/admin/bundle/ViewController.php CHANGED
@@ -200,9 +200,11 @@ class Loco_admin_bundle_ViewController extends Loco_admin_bundle_BaseController
200
  }
201
 
202
 
203
-
204
  /**
205
- *
 
 
 
206
  */
207
  private function createFileParams( Loco_package_Project $project, Loco_fs_File $file, Loco_Locale $locale = null ){
208
  // Pull Gettext meta data from cache if possible
@@ -231,6 +233,7 @@ class Loco_admin_bundle_ViewController extends Loco_admin_bundle_BaseController
231
  'view' => $this->getProjectLink('file-view', $project, $args ),
232
  'info' => $this->getProjectLink('file-info', $project, $args ),
233
  'edit' => $this->getProjectLink('file-edit', $project, $args ),
 
234
  'delete' => $this->getProjectLink('file-delete', $project, $args ),
235
  'copy' => $this->getProjectLink('msginit', $project, $args ),
236
  ) );
200
  }
201
 
202
 
 
203
  /**
204
+ * @param Loco_package_Project
205
+ * @param Loco_fs_File
206
+ * @param Loco_Locale
207
+ * @return Loco_mvc_ViewParams
208
  */
209
  private function createFileParams( Loco_package_Project $project, Loco_fs_File $file, Loco_Locale $locale = null ){
210
  // Pull Gettext meta data from cache if possible
233
  'view' => $this->getProjectLink('file-view', $project, $args ),
234
  'info' => $this->getProjectLink('file-info', $project, $args ),
235
  'edit' => $this->getProjectLink('file-edit', $project, $args ),
236
+ 'move' => $this->getProjectLink('file-move', $project, $args ),
237
  'delete' => $this->getProjectLink('file-delete', $project, $args ),
238
  'copy' => $this->getProjectLink('msginit', $project, $args ),
239
  ) );
src/admin/config/SettingsController.php CHANGED
@@ -29,7 +29,7 @@ class Loco_admin_config_SettingsController extends Loco_admin_config_BaseControl
29
  $perms->populate( $post->has('caps') ? $post->caps : array() );
30
  // done update
31
  Loco_error_AdminNotices::success( __('Settings saved','loco-translate') );
32
- // remove saved params if persistant options unset
33
  if( ! $opts['fs_persist'] ){
34
  $session = Loco_data_Session::get();
35
  if( isset($session['loco-fs']) ){
29
  $perms->populate( $post->has('caps') ? $post->caps : array() );
30
  // done update
31
  Loco_error_AdminNotices::success( __('Settings saved','loco-translate') );
32
+ // remove saved params from session if persistent options unset
33
  if( ! $opts['fs_persist'] ){
34
  $session = Loco_data_Session::get();
35
  if( isset($session['loco-fs']) ){
src/admin/file/BaseController.php CHANGED
@@ -66,13 +66,15 @@ abstract class Loco_admin_file_BaseController extends Loco_admin_bundle_BaseCont
66
  // POT file has no locale
67
  if( 'pot' === $ext ){
68
  $locale = null;
 
69
  }
70
  // else file may have a locale suffix (unless invalid, such as "default.po")
71
  else {
72
  $locale = $file->getLocale();
 
73
  }
74
 
75
- if( $locale && $locale->isValid() ){
76
  $this->locale = $locale;
77
  $code = (string) $locale;
78
  $this->set( 'locale', new Loco_mvc_ViewParams( array(
@@ -104,14 +106,18 @@ abstract class Loco_admin_file_BaseController extends Loco_admin_bundle_BaseCont
104
  'file-view' => __('Source','loco-translate'),
105
  'file-info' => __('File info','loco-translate'),
106
  'file-diff' => __('Restore','loco-translate'),
 
107
  'file-delete' => __('Delete','loco-translate'),
108
  );
109
 
110
  $suffix = $this->get('action');
111
  $prefix = $this->get('type');
 
112
  foreach( $actions as $action => $name ){
113
- $href = Loco_mvc_AdminRouter::generate( $prefix.'-'.$action, $_GET );
114
- $tabs->add( $name, $href, $action === $suffix );
 
 
115
  }
116
 
117
  // Provide common language creation link if project scope is is valid
66
  // POT file has no locale
67
  if( 'pot' === $ext ){
68
  $locale = null;
69
+ $localised = false;
70
  }
71
  // else file may have a locale suffix (unless invalid, such as "default.po")
72
  else {
73
  $locale = $file->getLocale();
74
+ $localised = $locale->isValid();
75
  }
76
 
77
+ if( $localised ){
78
  $this->locale = $locale;
79
  $code = (string) $locale;
80
  $this->set( 'locale', new Loco_mvc_ViewParams( array(
106
  'file-view' => __('Source','loco-translate'),
107
  'file-info' => __('File info','loco-translate'),
108
  'file-diff' => __('Restore','loco-translate'),
109
+ 'file-move' => $localised ? __('Relocate','loco-translate') : null,
110
  'file-delete' => __('Delete','loco-translate'),
111
  );
112
 
113
  $suffix = $this->get('action');
114
  $prefix = $this->get('type');
115
+ $args = array_intersect_key($_GET,array('path'=>1,'bundle'=>1,'domain'=>1));
116
  foreach( $actions as $action => $name ){
117
+ if( is_string($name) ){
118
+ $href = Loco_mvc_AdminRouter::generate( $prefix.'-'.$action, $args );
119
+ $tabs->add( $name, $href, $action === $suffix );
120
+ }
121
  }
122
 
123
  // Provide common language creation link if project scope is is valid
src/admin/file/DeleteController.php CHANGED
@@ -7,6 +7,7 @@ class Loco_admin_file_DeleteController extends Loco_admin_file_BaseController {
7
 
8
  /**
9
  * Expand single path to all files that will be deleted
 
10
  * @return array
11
  */
12
  private function expandFiles( Loco_fs_File $file ){
@@ -42,7 +43,7 @@ class Loco_admin_file_DeleteController extends Loco_admin_file_BaseController {
42
  // attempt delete if valid nonce posted back
43
  if( $this->checkNonce($action) ){
44
  $api = new Loco_api_WordPressFileSystem;
45
- // delete dependant files, so that master always exists if any others fail
46
  $files = array_reverse( $this->expandFiles($file) );
47
  try {
48
  /* @var $trash Loco_fs_File */
@@ -57,7 +58,7 @@ class Loco_admin_file_DeleteController extends Loco_admin_file_BaseController {
57
  Loco_data_Session::close();
58
  }
59
  catch( Exception $e ){
60
- // tollerate session failure
61
  }
62
  // redirect to bundle overview
63
  $href = Loco_mvc_AdminRouter::generate( $this->get('type').'-view', array( 'bundle' => $this->get('bundle') ) );
@@ -70,7 +71,7 @@ class Loco_admin_file_DeleteController extends Loco_admin_file_BaseController {
70
  }
71
  }
72
  }
73
-
74
  $bundle = $this->getBundle();
75
  $this->set('title', sprintf( __('Delete %s','loco-translate'), $file->basename() ).' &lsaquo; '.$bundle->getName() );
76
  }
7
 
8
  /**
9
  * Expand single path to all files that will be deleted
10
+ * @param Loco_fs_File primary file being deleted, probably the PO
11
  * @return array
12
  */
13
  private function expandFiles( Loco_fs_File $file ){
43
  // attempt delete if valid nonce posted back
44
  if( $this->checkNonce($action) ){
45
  $api = new Loco_api_WordPressFileSystem;
46
+ // delete dependant files first, so master still exists if others fail
47
  $files = array_reverse( $this->expandFiles($file) );
48
  try {
49
  /* @var $trash Loco_fs_File */
58
  Loco_data_Session::close();
59
  }
60
  catch( Exception $e ){
61
+ // tolerate session failure
62
  }
63
  // redirect to bundle overview
64
  $href = Loco_mvc_AdminRouter::generate( $this->get('type').'-view', array( 'bundle' => $this->get('bundle') ) );
71
  }
72
  }
73
  }
74
+ // set page title before render sets inline title
75
  $bundle = $this->getBundle();
76
  $this->set('title', sprintf( __('Delete %s','loco-translate'), $file->basename() ).' &lsaquo; '.$bundle->getName() );
77
  }
src/admin/file/EditController.php CHANGED
@@ -140,6 +140,7 @@ class Loco_admin_file_EditController extends Loco_admin_file_BaseController {
140
  $this->set( 'js', new Loco_mvc_ViewParams( array(
141
  'podata' => $data->jsonSerialize(),
142
  'powrap' => (int) Loco_data_Settings::get()->po_width,
 
143
  'locale' => $locale ? $locale->jsonSerialize() : null,
144
  'potpath' => $locale && $potfile ? $potfile->getRelativePath($wp_content) : null,
145
  'popath' => $this->get('path'),
@@ -153,7 +154,6 @@ class Loco_admin_file_EditController extends Loco_admin_file_BaseController {
153
  'sync' => wp_create_nonce('sync'),
154
  ),
155
  ) ) );
156
-
157
  $this->set( 'ui', new Loco_mvc_ViewParams( array(
158
  // Translators: button for adding a new string when manually editing a POT file
159
  'add' => _x('Add','Editor','loco-translate'),
140
  $this->set( 'js', new Loco_mvc_ViewParams( array(
141
  'podata' => $data->jsonSerialize(),
142
  'powrap' => (int) Loco_data_Settings::get()->po_width,
143
+ 'multipart' => (bool) Loco_data_Settings::get()->ajax_files,
144
  'locale' => $locale ? $locale->jsonSerialize() : null,
145
  'potpath' => $locale && $potfile ? $potfile->getRelativePath($wp_content) : null,
146
  'popath' => $this->get('path'),
154
  'sync' => wp_create_nonce('sync'),
155
  ),
156
  ) ) );
 
157
  $this->set( 'ui', new Loco_mvc_ViewParams( array(
158
  // Translators: button for adding a new string when manually editing a POT file
159
  'add' => _x('Add','Editor','loco-translate'),
src/admin/file/MoveController.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Translation set relocation tool.
4
+ * Moves PO/MO pair and all related files to a new location
5
+ */
6
+ class Loco_admin_file_MoveController extends Loco_admin_file_BaseController {
7
+
8
+
9
+ /**
10
+ * {@inheritdoc}
11
+ */
12
+ public function init(){
13
+ parent::init();
14
+ $file = $this->get('file');
15
+ /* @var Loco_fs_File $file */
16
+ if( $file->exists() && ! $file->isDirectory() ){
17
+ $files = new Loco_fs_Siblings($file);
18
+ // nonce action will be specific to file for extra security
19
+ $path = $file->getPath();
20
+ $action = 'move:'.$path;
21
+ // set up view now in case of late failure
22
+ $fields = new Loco_mvc_HiddenFields( array() );
23
+ $fields->setNonce( $action );
24
+ $fields['auth'] = 'move';
25
+ $fields['path'] = $this->get('path');
26
+ $this->set('hidden',$fields );
27
+ // attempt move if valid nonce posted back
28
+ while( $this->checkNonce($action) ){
29
+ // Chosen location should be valid as a posted "dest" parameter
30
+ if( ! Loco_mvc_PostParams::get()->has('dest') ){
31
+ Loco_error_AdminNotices::err('No destination posted');
32
+ break;
33
+ }
34
+ $target = new Loco_fs_LocaleFile( Loco_mvc_PostParams::get()->dest );
35
+ $ext = $target->extension();
36
+ // primary file extension should only be permitted to change between po and pot
37
+ if( $ext !== $file->extension() && 'po' !== $ext && 'pot' !== $ext ){
38
+ Loco_error_AdminNotices::err('Invalid file extension, *.po or *.pot only');
39
+ break;
40
+ }
41
+ $target->normalize( loco_constant('WP_CONTENT_DIR') );
42
+ $target_dir = $target->getParent()->getPath();
43
+ // Primary file gives template remapping, so all files are renamed with same stub.
44
+ // this can only be one of three things: (en -> en) or (foo-en -> en) or (en -> foo-en)
45
+ // suffix will then consist of file extension, plus any other stuff like backup file date.
46
+ $target_base = $target->filename();
47
+ $source_snip = strlen( $file->filename() );
48
+ // buffer all files to move to preempt write failures
49
+ $movable = array();
50
+ $api = new Loco_api_WordPressFileSystem;
51
+ foreach( $files->expand() as $source ){
52
+ $suffix = substr( $source->basename(), $source_snip ); // <- e.g. "-backup.po~"
53
+ $target = new Loco_fs_File( $target_dir.'/'.$target_base.$suffix );
54
+ // permit valid change of file extension on primary source file (po/pot)
55
+ if( $source === $files->getSource() && $target->extension() !== $ext ){
56
+ $target = $target->cloneExtension($ext);
57
+ }
58
+ if( ! $api->authorizeMove($source,$target) ) {
59
+ Loco_error_AdminNotices::err('Failed to authorize relocation of '.$source->basename() );
60
+ break 2;
61
+ }
62
+ $movable[] = array($source,$target);
63
+ }
64
+ // commit moves. If any fail we'll have separated the files, which is bad
65
+ $count = 0;
66
+ $total = count($movable);
67
+ foreach( $movable as $pair ){
68
+ try {
69
+ $pair[0]->move( $pair[1] );
70
+ $count++;
71
+ }
72
+ catch( Loco_error_Exception $e ){
73
+ Loco_error_AdminNotices::add($e);
74
+ }
75
+ }
76
+ // flash messages for display after redirect
77
+ try {
78
+ if( $count ) {
79
+ Loco_data_Session::get()->flash( 'success', sprintf( _n( 'File moved', '%u files moved', $total, 'loco-translate' ), $total ) );
80
+ }
81
+ if( $total > $count ){
82
+ $diff = $total - $count;
83
+ Loco_data_Session::get()->flash( 'error', sprintf( _n( 'One file could not be moved', '%u files could not be moved', $diff, 'loco-translate' ), $diff ) );
84
+ }
85
+ Loco_data_Session::close();
86
+ }
87
+ catch( Exception $e ){
88
+ // tolerate session failure
89
+ }
90
+ // redirect to bundle overview
91
+ $href = Loco_mvc_AdminRouter::generate( $this->get('type').'-view', array( 'bundle' => $this->get('bundle') ) );
92
+ if( wp_redirect($href) ){
93
+ exit;
94
+ }
95
+ break;
96
+ }
97
+ }
98
+ // set page title before render sets inline title
99
+ $bundle = $this->getBundle();
100
+ $this->set('title', sprintf( __('Move %s','loco-translate'), $file->basename() ).' &lsaquo; '.$bundle->getName() );
101
+ }
102
+
103
+
104
+ /**
105
+ * {@inheritdoc}
106
+ */
107
+ public function render(){
108
+ $file = $this->get('file');
109
+ if( $fail = $this->getFileError($file) ){
110
+ return $fail;
111
+ }
112
+ // relocation requires knowing text domain and locale
113
+ try {
114
+ $project = $this->getProject();
115
+ }
116
+ catch( Loco_error_Exception $e ){
117
+ Loco_error_AdminNotices::warn($e->getMessage());
118
+ $project = null;
119
+ }
120
+ $files = new Loco_fs_Siblings($file);
121
+ $file = new Loco_fs_LocaleFile( $files->getSource() );
122
+ $locale = $file->getLocale();
123
+ // switch between canonical move and custom file path mode
124
+ $custom = is_null($project) || $this->get('custom') || 'po' !== $file->extension() || ! $locale->isValid();
125
+ // common page elements:
126
+ $this->set('files',$files->expand() );
127
+ $this->set('title', sprintf( __('Move %s','loco-translate'), $file->filename() ) );
128
+ $this->enqueueScript('move');
129
+ // set info for existing file location
130
+ $content_dir = loco_constant('WP_CONTENT_DIR');
131
+ $current = $file->getRelativePath($content_dir);
132
+ $parent = new Loco_fs_LocaleDirectory( $file->dirname() );
133
+ $typeId = $parent->getTypeId();
134
+ $this->set('current', new Loco_mvc_ViewParams(array(
135
+ 'path' => $parent->getRelativePath($content_dir),
136
+ 'type' => $parent->getTypeLabel($typeId),
137
+ )) );
138
+ // moving files will require deletion permission on current file location
139
+ // plus write permission on target location, but we don't know what that is yet.
140
+ $fields = $this->prepareFsConnect('move',$current);
141
+ $fields['path'] = '';
142
+ $fields['dest'] = '';
143
+ // custom file move template (POT mode)
144
+ if( $custom ){
145
+ $this->get('hidden')->offsetSet('custom','1');
146
+ $this->set('file', Loco_mvc_FileParams::create($file) );
147
+ return $this->view('admin/file/move-pot');
148
+ }
149
+ // establish valid locations for translation set, which may include current:
150
+ $filechoice = $project->initLocaleFiles($locale);
151
+ // start with current location so always first in list
152
+ $locations = array();
153
+ $locations[$typeId] = new Loco_mvc_ViewParams( array(
154
+ 'label' => $parent->getTypeLabel($typeId),
155
+ 'paths' => array( new Loco_mvc_ViewParams( array(
156
+ 'path' => $current,
157
+ 'active' => true,
158
+ ) ) )
159
+ ) );
160
+ /* @var Loco_fs_File $pofile */
161
+ foreach( $filechoice as $pofile ){
162
+ $relpath = $pofile->getRelativePath($content_dir);
163
+ if( $current === $relpath ){
164
+ continue;
165
+ }
166
+ // initialize location type (system, etc..)
167
+ $parent = new Loco_fs_LocaleDirectory( $pofile->dirname() );
168
+ $typeId = $parent->getTypeId();
169
+ if( ! isset($locations[$typeId]) ){
170
+ $locations[$typeId] = new Loco_mvc_ViewParams( array(
171
+ 'label' => $parent->getTypeLabel($typeId),
172
+ 'paths' => array(),
173
+ ) );
174
+ }
175
+ $choice = new Loco_mvc_ViewParams( array(
176
+ 'path' => $relpath,
177
+ ) );
178
+ $locations[$typeId]['paths'][] = $choice;
179
+ }
180
+ $this->set('locations', $locations );
181
+ $this->set('advanced', $_SERVER['REQUEST_URI'].'&custom=1' );
182
+ return $this->view('admin/file/move-po');
183
+ }
184
+
185
+ }
src/admin/init/InitPoController.php CHANGED
@@ -259,15 +259,6 @@ class Loco_admin_init_InitPoController extends Loco_admin_bundle_BaseController
259
  'paths' => array(),
260
  ) );
261
  }
262
- // lazy build of directory path, suppressing errors
263
- if( ! $parent->exists() ){
264
- try {
265
- $parent->mkdir();
266
- }
267
- catch( Exception $e ){
268
- // Loco_error_AdminNotices::warn( $e->getMessage() );
269
- }
270
- }
271
  // folder may be unwritable (requiring connect to create file) or may be denied under security settings
272
  try {
273
  $context = $parent->getWriteContext()->authorize();
@@ -310,7 +301,7 @@ class Loco_admin_init_InitPoController extends Loco_admin_bundle_BaseController
310
  }
311
 
312
  // hidden fields to pass through to Ajax endpoint
313
- $this->set('hidden', new Loco_mvc_ViewParams( array(
314
  'action' => 'loco_json',
315
  'route' => 'msginit',
316
  'loco-nonce' => $this->setNonce('msginit')->value,
259
  'paths' => array(),
260
  ) );
261
  }
 
 
 
 
 
 
 
 
 
262
  // folder may be unwritable (requiring connect to create file) or may be denied under security settings
263
  try {
264
  $context = $parent->getWriteContext()->authorize();
301
  }
302
 
303
  // hidden fields to pass through to Ajax endpoint
304
+ $this->set('hidden', new Loco_mvc_HiddenFields( array(
305
  'action' => 'loco_json',
306
  'route' => 'msginit',
307
  'loco-nonce' => $this->setNonce('msginit')->value,
src/ajax/DownloadController.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * Ajax "download" route, for outputing raw gettext file contents.
4
  */
5
  class Loco_ajax_DownloadController extends Loco_mvc_AjaxController {
6
 
1
  <?php
2
  /**
3
+ * Ajax "download" route, for outputting raw gettext file contents.
4
  */
5
  class Loco_ajax_DownloadController extends Loco_mvc_AjaxController {
6
 
src/ajax/FsConnectController.php CHANGED
@@ -11,6 +11,7 @@ class Loco_ajax_FsConnectController extends Loco_mvc_AjaxController {
11
 
12
 
13
  /**
 
14
  * @return bool
15
  */
16
  private function authorizeDelete( Loco_fs_File $file ){
@@ -21,13 +22,23 @@ class Loco_ajax_FsConnectController extends Loco_mvc_AjaxController {
21
  return false;
22
  }
23
  }
24
- // else no dependants failed deltable test
25
  return true;
26
  }
27
-
 
 
 
 
 
 
 
 
 
28
 
29
 
30
  /**
 
31
  * @return bool
32
  */
33
  private function authorizeCreate( Loco_fs_File $file ){
@@ -35,7 +46,6 @@ class Loco_ajax_FsConnectController extends Loco_mvc_AjaxController {
35
  }
36
 
37
 
38
-
39
  /**
40
  * @return bool
41
  */
@@ -57,37 +67,73 @@ class Loco_ajax_FsConnectController extends Loco_mvc_AjaxController {
57
  }
58
 
59
 
60
-
61
  /**
62
  * {@inheritdoc}
63
  */
64
  public function render(){
65
-
66
  $post = $this->validate();
67
-
68
- $func = 'authorize'.ucfirst($post->auth);
69
  $auth = array( $this, $func );
70
  if( ! is_callable($auth) ){
71
  throw new Loco_error_Exception('Unexpected file operation');
72
  }
73
-
74
  $file = new Loco_fs_File( $post->path );
75
  $base = loco_constant('WP_CONTENT_DIR');
76
  $file->normalize($base);
77
-
78
- $this->api = new Loco_api_WordPressFileSystem;
79
-
 
 
 
 
 
80
  try {
81
- if( call_user_func( $auth, $file ) ){
 
82
  $this->set( 'authed', true );
83
  $this->set( 'valid', $this->api->getOutputCredentials() );
84
  $this->set( 'creds', $this->api->getInputCredentials() );
85
  $this->set( 'method', $this->api->getFileSystem()->method );
86
  $this->set( 'success', __('Connected to remote file system','loco-translate') );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
  else if( $html = $this->api->getForm() ){
89
  $this->set( 'authed', false );
90
  $this->set( 'prompt', $html );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  }
92
  else {
93
  throw new Loco_error_Exception('Failed to get credentials form');
11
 
12
 
13
  /**
14
+ * @param Loco_fs_File existing file path (must exist)
15
  * @return bool
16
  */
17
  private function authorizeDelete( Loco_fs_File $file ){
22
  return false;
23
  }
24
  }
25
+ // else no dependants failed deletable test
26
  return true;
27
  }
28
+
29
+
30
+ /**
31
+ * @param Loco_fs_File file being moved (must exist)
32
+ * @param Loco_fs_File target path (should not exist)
33
+ * @return bool
34
+ */
35
+ private function authorizeMove( Loco_fs_File $source, Loco_fs_File $target = null ){
36
+ return $this->api->authorizeMove($source,$target);
37
+ }
38
 
39
 
40
  /**
41
+ * @param Loco_fs_File new file path (should not exist)
42
  * @return bool
43
  */
44
  private function authorizeCreate( Loco_fs_File $file ){
46
  }
47
 
48
 
 
49
  /**
50
  * @return bool
51
  */
67
  }
68
 
69
 
 
70
  /**
71
  * {@inheritdoc}
72
  */
73
  public function render(){
74
+ // establish operation being authorized (create,delete,etc..)
75
  $post = $this->validate();
76
+ $type = $post->auth;
77
+ $func = 'authorize'.ucfirst($type);
78
  $auth = array( $this, $func );
79
  if( ! is_callable($auth) ){
80
  throw new Loco_error_Exception('Unexpected file operation');
81
  }
82
+ // all auth methods require at least one file argument
83
  $file = new Loco_fs_File( $post->path );
84
  $base = loco_constant('WP_CONTENT_DIR');
85
  $file->normalize($base);
86
+ $args = array($file);
87
+ // some auth methods also require a destination/target (move,copy,etc..)
88
+ if( $dest = $post->dest ){
89
+ $file = new Loco_fs_File($dest);
90
+ $file->normalize($base);
91
+ $args[] = $file;
92
+ }
93
+ // call auth method and respond with status and prompt HTML if connect required
94
  try {
95
+ $this->api = new Loco_api_WordPressFileSystem;
96
+ if( call_user_func_array($auth,$args) ){
97
  $this->set( 'authed', true );
98
  $this->set( 'valid', $this->api->getOutputCredentials() );
99
  $this->set( 'creds', $this->api->getInputCredentials() );
100
  $this->set( 'method', $this->api->getFileSystem()->method );
101
  $this->set( 'success', __('Connected to remote file system','loco-translate') );
102
+ // warning when writing to this location is risky (overwrites during wp update)
103
+ if( Loco_data_Settings::get()->fs_protect && $file->getUpdateType() ){
104
+ if( 'create' === $type ){
105
+ $message = __('This file may be overwritten or deleted when you update WordPress','loco-translate');
106
+ }
107
+ else if( 'delete' === $type ){
108
+ $message = __('This directory is managed by WordPress, be careful what you delete','loco-translate');
109
+ }
110
+ else if( 'move' === $type ){
111
+ $message = __('This directory is managed by WordPress. Removed files may be restored during updates','loco-translate');
112
+ }
113
+ else {
114
+ $message = __('Changes to this file may be overwritten or deleted when you update WordPress','loco-translate');
115
+ }
116
+ $this->set('warning',$message);
117
+ }
118
  }
119
  else if( $html = $this->api->getForm() ){
120
  $this->set( 'authed', false );
121
  $this->set( 'prompt', $html );
122
+ // supporting text based on file operation type explains why auth is required
123
+ if( 'create' === $type ){
124
+ $message = __('Creating this file requires permission','loco-translate');
125
+ }
126
+ else if( 'delete' === $type ){
127
+ $message = __('Deleting this file requires permission','loco-translate');
128
+ }
129
+ else if( 'move' === $type ){
130
+ $message = __('This move operation requires permission','loco-translate');
131
+ }
132
+ else {
133
+ $message = __('Saving this file requires permission','loco-translate');
134
+ }
135
+ // message is printed before default text, so needs delimiting.
136
+ $this->set('message',$message.'.');
137
  }
138
  else {
139
  throw new Loco_error_Exception('Failed to get credentials form');
src/ajax/SaveController.php CHANGED
@@ -43,8 +43,14 @@ class Loco_ajax_SaveController extends Loco_ajax_common_BundleController {
43
  // force the use of remote file system when configured from front end
44
  $api = new Loco_api_WordPressFileSystem;
45
 
46
- // data posted must be valid
47
- $data = Loco_gettext_Data::fromSource( $post->data );
 
 
 
 
 
 
48
 
49
  // WordPress-ize some headers that differ from JavaScript libs
50
  if( $compile = (bool) $locale ){
43
  // force the use of remote file system when configured from front end
44
  $api = new Loco_api_WordPressFileSystem;
45
 
46
+ // data posted may be either 'multipart/form-data' (recommended for large files)
47
+ if( isset($_FILES['po']) ){
48
+ $data = Loco_gettext_Data::fromSource( Loco_data_Upload::src('po') );
49
+ }
50
+ // else 'application/x-www-form-urlencoded' by default
51
+ else {
52
+ $data = Loco_gettext_Data::fromSource( $post->data );
53
+ }
54
 
55
  // WordPress-ize some headers that differ from JavaScript libs
56
  if( $compile = (bool) $locale ){
src/ajax/XgettextController.php CHANGED
@@ -32,7 +32,6 @@ class Loco_ajax_XgettextController extends Loco_ajax_common_BundleController {
32
  $potfile = new Loco_fs_File( $target.'/'.$name );
33
  $api = new Loco_api_WordPressFileSystem;
34
  $api->authorizeCreate($potfile);
35
-
36
  // Do extraction and grab only given domain's strings
37
  $ext = new Loco_gettext_Extraction( $bundle );
38
  $domain = $project->getDomain()->getName();
32
  $potfile = new Loco_fs_File( $target.'/'.$name );
33
  $api = new Loco_api_WordPressFileSystem;
34
  $api->authorizeCreate($potfile);
 
35
  // Do extraction and grab only given domain's strings
36
  $ext = new Loco_gettext_Extraction( $bundle );
37
  $domain = $project->getDomain()->getName();
src/api/WordPressFileSystem.php CHANGED
@@ -60,6 +60,8 @@ class Loco_api_WordPressFileSystem {
60
 
61
 
62
  /**
 
 
63
  * @throws Loco_error_WriteException
64
  * @return bool always true
65
  */
@@ -76,6 +78,7 @@ class Loco_api_WordPressFileSystem {
76
 
77
  /**
78
  * Authorize for the creation of a file that does not exist
 
79
  * @return bool whether file system is authorized NOT necessarily whether file is creatable
80
  */
81
  public function authorizeCreate( Loco_fs_File $file ){
@@ -89,6 +92,7 @@ class Loco_api_WordPressFileSystem {
89
 
90
  /**
91
  * Authorize for the update of a file that does exist
 
92
  * @return bool whether file system is authorized NOT necessarily whether file is updatable
93
  */
94
  public function authorizeUpdate( Loco_fs_File $file ){
@@ -102,6 +106,7 @@ class Loco_api_WordPressFileSystem {
102
 
103
  /**
104
  * Authorize for update or creation, depending whether file exists
 
105
  * @return bool
106
  */
107
  public function authorizeSave( Loco_fs_File $file ){
@@ -111,7 +116,8 @@ class Loco_api_WordPressFileSystem {
111
 
112
 
113
  /**
114
- * Authorize for copy, meaning file must exist and directory be writable
 
115
  * @return bool
116
  */
117
  public function authorizeCopy( Loco_fs_File $file ){
@@ -121,10 +127,29 @@ class Loco_api_WordPressFileSystem {
121
  }
122
  return $file->creatable() || $this->authorize($file);
123
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
 
126
  /**
127
  * Authorize for the removal of an existing file
 
128
  * @return bool whether file system is authorized NOT necessarily whether file is removable
129
  */
130
  public function authorizeDelete( Loco_fs_File $file ){
@@ -138,6 +163,7 @@ class Loco_api_WordPressFileSystem {
138
 
139
  /**
140
  * Connect file to credentials in posted data. Used when established in advance what connection is needed
 
141
  * @return bool whether file system is authorized
142
  */
143
  public function authorizeConnect( Loco_fs_File $file ){
@@ -151,14 +177,14 @@ class Loco_api_WordPressFileSystem {
151
  }
152
 
153
 
154
-
155
  /**
156
- * Wraps `request_filesystem_credentials` negotiation to obtain a remote connection and buffer WordPress form outout
157
  * Call before output started, because buffers.
 
 
158
  */
159
  private function authorize( Loco_fs_File $file ){
160
  // may already have authorized successfully
161
- // TODO unsure whether to pass $disconnected
162
  if( $fs = $this->fs ){
163
  $file->getWriteContext()->connect( $fs, false );
164
  return true;
@@ -184,7 +210,7 @@ class Loco_api_WordPressFileSystem {
184
  $session = Loco_data_Session::get();
185
  if( isset($session['loco-fs']) ){
186
  $creds = $session['loco-fs'];
187
- if( $this->tryCredentials($creds,$file) ){
188
  $this->creds_in = array();
189
  return true;
190
  }
@@ -234,14 +260,15 @@ class Loco_api_WordPressFileSystem {
234
  $type = apply_filters( 'filesystem_method', $type, $post->getArrayCopy(), $context, true );
235
 
236
  // the only params we'll pass into form will be those used by the ajax fsConnect end point
237
- $extra = array( 'loco-nonce', 'path', 'auth' );
238
 
239
  // capture WordPress output during negotiation.
240
  $buffer = Loco_output_Buffer::start();
241
 
242
- if( $creds = request_filesystem_credentials( '', $type, false, $context, $extra ) ){
 
243
  // credentials passed through, should allow connect if they are correct
244
- if( $this->tryCredentials( $creds?$creds:array(), $file ) ){
245
  $this->persistCredentials();
246
  return true;
247
  }
@@ -265,9 +292,9 @@ class Loco_api_WordPressFileSystem {
265
  }
266
 
267
 
268
-
269
  /**
270
- * @internal
 
271
  * @return bool when credentials connected ok
272
  */
273
  private function tryCredentials( array $creds, Loco_fs_File $file ){
@@ -284,10 +311,9 @@ class Loco_api_WordPressFileSystem {
284
  }
285
 
286
 
287
-
288
  /**
289
  * Set current credentials in session if settings allow
290
- * @return bool whether creds persisted
291
  */
292
  private function persistCredentials(){
293
  try {
@@ -307,7 +333,6 @@ class Loco_api_WordPressFileSystem {
307
  }
308
 
309
 
310
-
311
  /**
312
  * Get working credentials that resulted in connection
313
  * @return array
@@ -315,8 +340,7 @@ class Loco_api_WordPressFileSystem {
315
  public function getOutputCredentials(){
316
  return $this->creds_out;
317
  }
318
-
319
-
320
 
321
  /**
322
  * Get input credentials from original post.
@@ -328,7 +352,6 @@ class Loco_api_WordPressFileSystem {
328
  }
329
 
330
 
331
-
332
  /**
333
  * Get currently configured filesystem API
334
  * @return WP_Filesystem_Direct
@@ -341,9 +364,9 @@ class Loco_api_WordPressFileSystem {
341
  }
342
 
343
 
344
-
345
  /**
346
  * Check if a file is safe from WordPress automatic updates
 
347
  * @return bool
348
  */
349
  public function isAutoUpdatable( Loco_fs_File $file ){
@@ -366,9 +389,8 @@ class Loco_api_WordPressFileSystem {
366
  }
367
 
368
 
369
-
370
  /**
371
- * Check if systen is configured to deny auto-updates
372
  * @return bool
373
  */
374
  public function isAutoUpdateDenied(){
60
 
61
 
62
  /**
63
+ * Pre-auth checks for superficial file system blocks and disconnects any active remotes
64
+ * @param Loco_fs_File
65
  * @throws Loco_error_WriteException
66
  * @return bool always true
67
  */
78
 
79
  /**
80
  * Authorize for the creation of a file that does not exist
81
+ * @param Loco_fs_File
82
  * @return bool whether file system is authorized NOT necessarily whether file is creatable
83
  */
84
  public function authorizeCreate( Loco_fs_File $file ){
92
 
93
  /**
94
  * Authorize for the update of a file that does exist
95
+ * @param Loco_fs_File
96
  * @return bool whether file system is authorized NOT necessarily whether file is updatable
97
  */
98
  public function authorizeUpdate( Loco_fs_File $file ){
106
 
107
  /**
108
  * Authorize for update or creation, depending whether file exists
109
+ * @param Loco_fs_File
110
  * @return bool
111
  */
112
  public function authorizeSave( Loco_fs_File $file ){
116
 
117
 
118
  /**
119
+ * Authorize for copy (to same directory), meaning source file must exist and directory be writable
120
+ * @param Loco_fs_File
121
  * @return bool
122
  */
123
  public function authorizeCopy( Loco_fs_File $file ){
127
  }
128
  return $file->creatable() || $this->authorize($file);
129
  }
130
+
131
+
132
+ /**
133
+ * Authorize for move (to another path if given).
134
+ * @param Loco_fs_File file being moved (must exist)
135
+ * @param Loco_fs_File target path (should not exist)
136
+ * @return bool
137
+ */
138
+ public function authorizeMove( Loco_fs_File $source, Loco_fs_File $target = null ){
139
+ // source is in charge of its own deletion
140
+ $result = $this->authorizeDelete($source);
141
+ // target is in charge of copying original which it must also be able to read.
142
+ if( $target && ! $this->authorizeCreate($target) ){
143
+ $result = false;
144
+ }
145
+ // value returned will be false if at least one file requires we add credentials
146
+ return $result;
147
+ }
148
 
149
 
150
  /**
151
  * Authorize for the removal of an existing file
152
+ * @param Loco_fs_File
153
  * @return bool whether file system is authorized NOT necessarily whether file is removable
154
  */
155
  public function authorizeDelete( Loco_fs_File $file ){
163
 
164
  /**
165
  * Connect file to credentials in posted data. Used when established in advance what connection is needed
166
+ * @param Loco_fs_File
167
  * @return bool whether file system is authorized
168
  */
169
  public function authorizeConnect( Loco_fs_File $file ){
177
  }
178
 
179
 
 
180
  /**
181
+ * Wraps `request_filesystem_credentials` negotiation to obtain a remote connection and buffer WordPress form output
182
  * Call before output started, because buffers.
183
+ * @param Loco_fs_File
184
+ * @return bool
185
  */
186
  private function authorize( Loco_fs_File $file ){
187
  // may already have authorized successfully
 
188
  if( $fs = $this->fs ){
189
  $file->getWriteContext()->connect( $fs, false );
190
  return true;
210
  $session = Loco_data_Session::get();
211
  if( isset($session['loco-fs']) ){
212
  $creds = $session['loco-fs'];
213
+ if( is_array($creds) && $this->tryCredentials($creds,$file) ){
214
  $this->creds_in = array();
215
  return true;
216
  }
260
  $type = apply_filters( 'filesystem_method', $type, $post->getArrayCopy(), $context, true );
261
 
262
  // the only params we'll pass into form will be those used by the ajax fsConnect end point
263
+ $extra = array( 'loco-nonce', 'path', 'auth', 'dest' );
264
 
265
  // capture WordPress output during negotiation.
266
  $buffer = Loco_output_Buffer::start();
267
 
268
+ $creds = request_filesystem_credentials( '', $type, false, $context, $extra );
269
+ if( is_array($creds) ){
270
  // credentials passed through, should allow connect if they are correct
271
+ if( $this->tryCredentials($creds,$file) ){
272
  $this->persistCredentials();
273
  return true;
274
  }
292
  }
293
 
294
 
 
295
  /**
296
+ * @param array credentials returned from request_filesystem_credentials
297
+ * @param Loco_fs_File file to authorize write context
298
  * @return bool when credentials connected ok
299
  */
300
  private function tryCredentials( array $creds, Loco_fs_File $file ){
311
  }
312
 
313
 
 
314
  /**
315
  * Set current credentials in session if settings allow
316
+ * @return bool whether credentials persisted
317
  */
318
  private function persistCredentials(){
319
  try {
333
  }
334
 
335
 
 
336
  /**
337
  * Get working credentials that resulted in connection
338
  * @return array
340
  public function getOutputCredentials(){
341
  return $this->creds_out;
342
  }
343
+
 
344
 
345
  /**
346
  * Get input credentials from original post.
352
  }
353
 
354
 
 
355
  /**
356
  * Get currently configured filesystem API
357
  * @return WP_Filesystem_Direct
364
  }
365
 
366
 
 
367
  /**
368
  * Check if a file is safe from WordPress automatic updates
369
+ * @param Loco_fs_File
370
  * @return bool
371
  */
372
  public function isAutoUpdatable( Loco_fs_File $file ){
389
  }
390
 
391
 
 
392
  /**
393
+ * Check if system is configured to deny auto-updates
394
  * @return bool
395
  */
396
  public function isAutoUpdateDenied(){
src/data/Settings.php CHANGED
@@ -15,6 +15,7 @@
15
  * @property bool $po_utf8_bom Whether to prepend PO and POT files with UTF-8 byte order mark
16
  * @property string $po_width PO/POT file maximum line width (wrapping) zero to disable
17
  * @property bool $jed_pretty Whether to pretty print JSON JED files
 
18
  */
19
  class Loco_data_Settings extends Loco_data_Serializable {
20
 
@@ -43,6 +44,7 @@ class Loco_data_Settings extends Loco_data_Serializable {
43
  'po_utf8_bom' => false,
44
  'po_width' => '79',
45
  'jed_pretty' => false,
 
46
  );
47
 
48
 
15
  * @property bool $po_utf8_bom Whether to prepend PO and POT files with UTF-8 byte order mark
16
  * @property string $po_width PO/POT file maximum line width (wrapping) zero to disable
17
  * @property bool $jed_pretty Whether to pretty print JSON JED files
18
+ * @property bool $ajax_files Whether to submit PO data as concrete files
19
  */
20
  class Loco_data_Settings extends Loco_data_Serializable {
21
 
44
  'po_utf8_bom' => false,
45
  'po_width' => '79',
46
  'jed_pretty' => false,
47
+ 'ajax_files' => false,
48
  );
49
 
50
 
src/data/Upload.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Simple wrapper for transient file uploads carrying PO data.
4
+ * Doesn't move or persist uploaded files, so doesn't call wp_handle_upload()
5
+ */
6
+ class Loco_data_Upload {
7
+
8
+ /**
9
+ * @var Loco_fs_File
10
+ */
11
+ private $file;
12
+
13
+
14
+ /**
15
+ * Pass through temporary file data
16
+ * @param string key in $_FILES known to exist
17
+ * @return string
18
+ * @throws Loco_error_UploadException
19
+ */
20
+ public static function src($key){
21
+ $upload = new Loco_data_Upload($_FILES[$key]);
22
+ return $upload->file->getContents();
23
+ }
24
+
25
+
26
+ /**
27
+ * @param array member of $_FILE
28
+ * @throws Loco_error_UploadException
29
+ */
30
+ public function __construct( array $data ){
31
+ // https://www.php.net/manual/en/features.file-upload.errors.php
32
+ $code = (int) $data['error'];
33
+ switch( $code ){
34
+ case UPLOAD_ERR_OK:
35
+ break;
36
+ case UPLOAD_ERR_INI_SIZE:
37
+ throw new Loco_error_UploadException('The uploaded file exceeds the upload_max_filesize directive in php.ini',$code);
38
+ case UPLOAD_ERR_FORM_SIZE:
39
+ throw new Loco_error_UploadException('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',$code);
40
+ case UPLOAD_ERR_PARTIAL:
41
+ throw new Loco_error_UploadException('The uploaded file was only partially uploaded',$code);
42
+ case UPLOAD_ERR_NO_FILE:
43
+ throw new Loco_error_UploadException('No file was uploaded, or data is empty',$code);
44
+ case UPLOAD_ERR_NO_TMP_DIR:
45
+ throw new Loco_error_UploadException('Missing temporary folder for uploaded file',$code);
46
+ case UPLOAD_ERR_CANT_WRITE:
47
+ throw new Loco_error_UploadException('Failed to save uploaded file to disk',$code);
48
+ case UPLOAD_ERR_EXTENSION:
49
+ throw new Loco_error_UploadException('Your server blocked the file upload',$code);
50
+ default:
51
+ throw new Loco_error_UploadException('Unknown file upload error',$code);
52
+ }
53
+ // mime check is largely pointless but may as well check as we'll only send one type
54
+ if( 'application/x-gettext' !== $data['type'] ){
55
+ throw new Loco_error_UploadException('Unsupported file type, expected PO or POT file');
56
+ }
57
+ // upload is OK according to PHP, but check it's really readable and not empty
58
+ $path = $data['tmp_name'];
59
+ $file = new Loco_fs_File($path);
60
+ if( ! $file->exists() ){
61
+ throw new Loco_error_UploadException('Uploaded file is not readable',UPLOAD_ERR_NO_FILE);
62
+ }
63
+ if( 0 === $file->size() ){
64
+ throw new Loco_error_UploadException('Uploaded file contains no data',UPLOAD_ERR_NO_FILE);
65
+ }
66
+ // file is really ok
67
+ $this->file = $file;
68
+ }
69
+
70
+ }
71
+
src/error/AdminNotices.php CHANGED
@@ -44,31 +44,13 @@ class Loco_error_AdminNotices extends Loco_hooks_Hookable {
44
  }
45
  // if exception wasn't thrown we have to do some work to establish where it was invoked
46
  if( __FILE__ === $error->getFile() ){
47
- /*$stack = debug_backtrace(0);
48
- if( is_array($stack) && 1 < count($stack) ){
49
- $callee = $stack[1];
50
- if( is_array($callee) ){
51
- $error->setCallee($callee);
52
- }
53
- }*/
54
  $error->setCallee(1);
55
  }
56
  // Log messages of minimum priority and up, depending on debug mode
57
  // note that non-debug level is in line with error_reporting set by WordPress (notices ignored)
58
  $priority = loco_debugging() ? Loco_error_Exception::LEVEL_DEBUG : Loco_error_Exception::LEVEL_WARNING;
59
  if( $error->getLevel() <= $priority ){
60
- $file = new Loco_fs_File( $error->getRealFile() );
61
- $path = $file->getRelativePath( loco_plugin_root() );
62
- $text = sprintf('[Loco.%s] "%s" in %s:%u', $error->getType(), $error->getMessage(), $path, $error->getRealLine() );
63
- // separate error log in CWD for tests
64
- if( 'cli' === PHP_SAPI && defined('LOCO_TEST') && LOCO_TEST ){
65
- error_log( '['.date('c').'] '.$text."\n", 3, 'debug.log' );
66
- }
67
- // Else write to default PHP log, but note that WordPress may have set this to wp-content/debug.log.
68
- // If no `error_log` is set this will send message to the SAPI, so check your httpd/fast-cgi errors too.
69
- else {
70
- error_log( $text, 0 );
71
- }
72
  }
73
  return $error;
74
  }
@@ -85,6 +67,17 @@ class Loco_error_AdminNotices extends Loco_hooks_Hookable {
85
  }
86
 
87
 
 
 
 
 
 
 
 
 
 
 
 
88
  /**
89
  * Raise a warning message
90
  * @param string
44
  }
45
  // if exception wasn't thrown we have to do some work to establish where it was invoked
46
  if( __FILE__ === $error->getFile() ){
 
 
 
 
 
 
 
47
  $error->setCallee(1);
48
  }
49
  // Log messages of minimum priority and up, depending on debug mode
50
  // note that non-debug level is in line with error_reporting set by WordPress (notices ignored)
51
  $priority = loco_debugging() ? Loco_error_Exception::LEVEL_DEBUG : Loco_error_Exception::LEVEL_WARNING;
52
  if( $error->getLevel() <= $priority ){
53
+ $error->log();
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
  return $error;
56
  }
67
  }
68
 
69
 
70
+ /**
71
+ * Raise a failure message
72
+ * @param string
73
+ * @return Loco_error_Exception
74
+ */
75
+ public static function err( $message ){
76
+ $notice = new Loco_error_Exception($message);
77
+ return self::add( $notice->setCallee(1) );
78
+ }
79
+
80
+
81
  /**
82
  * Raise a warning message
83
  * @param string
src/error/Debug.php CHANGED
@@ -26,5 +26,20 @@ class Loco_error_Debug extends Loco_error_Exception {
26
  public function getLevel(){
27
  return Loco_error_Exception::LEVEL_DEBUG;
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
  }
26
  public function getLevel(){
27
  return Loco_error_Exception::LEVEL_DEBUG;
28
  }
29
+
30
+
31
+ /**
32
+ * Log debugging message to file without raising admin notice
33
+ * @param string
34
+ * @codeCoverageIgnore
35
+ */
36
+ public static function trace( $message ){
37
+ if( 1 < func_get_args() ){
38
+ $message = call_user_func_array('sprintf',func_get_args());
39
+ }
40
+ $debug = new Loco_error_Debug($message);
41
+ $debug->setCallee(1);
42
+ $debug->log();
43
+ }
44
 
45
  }
src/error/Exception.php CHANGED
@@ -93,6 +93,27 @@ class Loco_error_Exception extends Exception implements JsonSerializable {
93
  }
94
 
95
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  /**
97
  * Get view template for rendering error to HTML.
98
  * @return string path relative to root tpl directory
93
  }
94
 
95
 
96
+ /**
97
+ * Write this error to file regardless of log level
98
+ * @param Loco_error_Exception
99
+ * @return void
100
+ */
101
+ public function log(){
102
+ $file = new Loco_fs_File( $this->getRealFile() );
103
+ $path = $file->getRelativePath( loco_plugin_root() );
104
+ $text = sprintf('[Loco.%s] "%s" in %s:%u', $this->getType(), $this->getMessage(), $path, $this->getRealLine() );
105
+ // separate error log in CWD for tests
106
+ if( 'cli' === PHP_SAPI && defined('LOCO_TEST') && LOCO_TEST ){
107
+ error_log( '['.date('c').'] '.$text."\n", 3, 'debug.log' );
108
+ }
109
+ // Else write to default PHP log, but note that WordPress may have set this to wp-content/debug.log.
110
+ // If no `error_log` is set this will send message to the SAPI, so check your httpd/fast-cgi errors too.
111
+ else {
112
+ error_log( $text, 0 );
113
+ }
114
+ }
115
+
116
+
117
  /**
118
  * Get view template for rendering error to HTML.
119
  * @return string path relative to root tpl directory
src/error/UploadException.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Exception type for failed uploads
4
+ */
5
+ class Loco_error_UploadException extends Loco_error_Exception {
6
+
7
+
8
+ }
src/fs/Directory.php CHANGED
@@ -12,7 +12,7 @@ class Loco_fs_Directory extends Loco_fs_File {
12
 
13
 
14
  /**
15
- * @override
16
  */
17
  public function isDirectory(){
18
  return true;
@@ -21,6 +21,7 @@ class Loco_fs_Directory extends Loco_fs_File {
21
 
22
  /**
23
  * Set recursive flag for use when traversing directory trees
 
24
  * @return Loco_fs_Directory
25
  */
26
  public function setRecursive( $bool ){
@@ -33,14 +34,10 @@ class Loco_fs_Directory extends Loco_fs_File {
33
  * @return bool
34
  */
35
  public function isRecursive(){
36
- if( func_num_args() ){
37
- throw new InvalidArgumentException('Did you mean to use setRecursive?');
38
- }
39
  return $this->r;
40
  }
41
 
42
 
43
-
44
  /**
45
  * Create this directory for real.
46
  *
@@ -54,5 +51,4 @@ class Loco_fs_Directory extends Loco_fs_File {
54
  return $this;
55
  }
56
 
57
-
58
  }
12
 
13
 
14
  /**
15
+ * {@inheritDoc}
16
  */
17
  public function isDirectory(){
18
  return true;
21
 
22
  /**
23
  * Set recursive flag for use when traversing directory trees
24
+ * @param bool
25
  * @return Loco_fs_Directory
26
  */
27
  public function setRecursive( $bool ){
34
  * @return bool
35
  */
36
  public function isRecursive(){
 
 
 
37
  return $this->r;
38
  }
39
 
40
 
 
41
  /**
42
  * Create this directory for real.
43
  *
51
  return $this;
52
  }
53
 
 
54
  }
src/fs/File.php CHANGED
@@ -384,7 +384,9 @@ class Loco_fs_File {
384
 
385
 
386
  /**
387
- *
 
 
388
  */
389
  private static function explode( $path, array $b ){
390
  $a = explode( '/', $path );
@@ -410,7 +412,8 @@ class Loco_fs_File {
410
 
411
  /**
412
  * Get path relative to given location, unless path is already relative
413
- * @return string
 
414
  */
415
  public function getRelativePath( $base ){
416
  $path = $this->normalize();
@@ -425,7 +428,7 @@ class Loco_fs_File {
425
  if( isset($path{$length}) ){
426
  return substr( $path, $length );
427
  }
428
- // else paths were idenitcal
429
  return '';
430
  }
431
  // else attempt to find nearest common root
@@ -446,7 +449,6 @@ class Loco_fs_File {
446
  }
447
 
448
 
449
-
450
  /**
451
  * @return bool
452
  */
@@ -514,17 +516,18 @@ class Loco_fs_File {
514
 
515
 
516
  /**
517
- * @return Loco_fs_Directory
518
  */
519
  public function getParent(){
 
520
  $path = $this->dirname();
521
  if( '.' !== $path && $this->path !== $path ){
522
  $dir = new Loco_fs_Directory( $path );
523
  $dir->cloneWriteContext( $this->w );
524
- return $dir;
525
  }
526
- }
527
-
 
528
 
529
  /**
530
  * Copy this file for real
@@ -536,11 +539,23 @@ class Loco_fs_File {
536
  $copy = clone $this;
537
  $copy->path = $dest;
538
  $copy->clearStat();
539
- $this->getWriteContext()->copy( $copy );
540
  return $copy;
541
  }
542
 
543
 
 
 
 
 
 
 
 
 
 
 
 
 
544
  /**
545
  * Delete this file for real
546
  * @throws Loco_error_WriteException
384
 
385
 
386
  /**
387
+ * @param string
388
+ * @param string[]
389
+ * @return array
390
  */
391
  private static function explode( $path, array $b ){
392
  $a = explode( '/', $path );
412
 
413
  /**
414
  * Get path relative to given location, unless path is already relative
415
+ * @param string base path
416
+ * @return string path relative to given base
417
  */
418
  public function getRelativePath( $base ){
419
  $path = $this->normalize();
428
  if( isset($path{$length}) ){
429
  return substr( $path, $length );
430
  }
431
+ // else paths were identical
432
  return '';
433
  }
434
  // else attempt to find nearest common root
449
  }
450
 
451
 
 
452
  /**
453
  * @return bool
454
  */
516
 
517
 
518
  /**
519
+ * @return Loco_fs_Directory|null
520
  */
521
  public function getParent(){
522
+ $dir = null;
523
  $path = $this->dirname();
524
  if( '.' !== $path && $this->path !== $path ){
525
  $dir = new Loco_fs_Directory( $path );
526
  $dir->cloneWriteContext( $this->w );
 
527
  }
528
+ return $dir;
529
+ }
530
+
531
 
532
  /**
533
  * Copy this file for real
539
  $copy = clone $this;
540
  $copy->path = $dest;
541
  $copy->clearStat();
542
+ $this->getWriteContext()->copy($copy);
543
  return $copy;
544
  }
545
 
546
 
547
+ /**
548
+ * Move/rename this file for real
549
+ * @param Loco_fs_File target file with new path
550
+ * @throws Loco_error_WriteException
551
+ * @return Loco_fs_File original file that should no longer exist
552
+ */
553
+ public function move( Loco_fs_File $dest ){
554
+ $this->getWriteContext()->move($dest);
555
+ return $this->clearStat();
556
+ }
557
+
558
+
559
  /**
560
  * Delete this file for real
561
  * @throws Loco_error_WriteException
src/fs/FileFinder.php CHANGED
@@ -17,8 +17,8 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
17
  private $subdir;
18
 
19
  /**
20
- * whether directories all read into memory
21
- * @var Loco_fs_FileList
22
  */
23
  private $cached;
24
 
@@ -29,19 +29,19 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
29
  private $cache;
30
 
31
  /**
32
- * internal array pointer for whole list of paths
33
  * @var int
34
  */
35
  private $i;
36
 
37
  /**
38
- * internal pointer for directory being read
39
  * @var int
40
  */
41
  private $d;
42
 
43
  /**
44
- * current directory being read
45
  * @var resource
46
  */
47
  private $dir;
@@ -73,7 +73,7 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
73
  private $symlinks = true;
74
 
75
  /**
76
- * Registry of followed links by their resolved path
77
  * @var Loco_fs_FileList
78
  */
79
  private $linked;
@@ -367,9 +367,8 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
367
  continue;
368
  }
369
  // file represented as object containing original path
370
- $file = new Loco_fs_File( $path );
371
  $this->add( $file );
372
- $this->i++;
373
  return $file;
374
  }
375
  $this->close();
@@ -387,23 +386,24 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
387
  }
388
 
389
 
390
-
391
  /**
392
- * Implement FileListInterface::add
393
- * @param Loco_fs_File
394
  */
395
  public function add( Loco_fs_File $file ){
396
  if( $this->exts ){
397
  $ext = $file->extension();
398
  if( ! isset($this->exts[$ext]) ){
399
- return;
400
  }
401
- $this->exts[$ext]->add( $file );
 
 
 
 
402
  }
403
- $this->cache->add( $file );
404
  }
405
 
406
-
407
 
408
  /**
409
  * @return int
@@ -447,12 +447,17 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
447
  }
448
 
449
 
450
-
 
 
451
  public function key(){
452
  return $this->i;
453
  }
454
 
455
 
 
 
 
456
  public function valid(){
457
  // may be in lazy state after rewind
458
  // must do initial read now in case list is empty
17
  private $subdir;
18
 
19
  /**
20
+ * Whether directories all read into memory
21
+ * @var bool
22
  */
23
  private $cached;
24
 
29
  private $cache;
30
 
31
  /**
32
+ * Internal array pointer for whole list of paths
33
  * @var int
34
  */
35
  private $i;
36
 
37
  /**
38
+ * Internal pointer for directory being read
39
  * @var int
40
  */
41
  private $d;
42
 
43
  /**
44
+ * Current directory being read
45
  * @var resource
46
  */
47
  private $dir;
73
  private $symlinks = true;
74
 
75
  /**
76
+ * Registry of followed links by their original path
77
  * @var Loco_fs_FileList
78
  */
79
  private $linked;
367
  continue;
368
  }
369
  // file represented as object containing original path
370
+ $file = new Loco_fs_File($path);
371
  $this->add( $file );
 
372
  return $file;
373
  }
374
  $this->close();
386
  }
387
 
388
 
 
389
  /**
390
+ * {@inheritDoc}
 
391
  */
392
  public function add( Loco_fs_File $file ){
393
  if( $this->exts ){
394
  $ext = $file->extension();
395
  if( ! isset($this->exts[$ext]) ){
396
+ return false;
397
  }
398
+ $this->exts[$ext]->add($file);
399
+ }
400
+ if( $this->cache->add($file) ){
401
+ $this->i++;
402
+ return true;
403
  }
404
+ return false;
405
  }
406
 
 
407
 
408
  /**
409
  * @return int
447
  }
448
 
449
 
450
+ /**
451
+ * @return int
452
+ */
453
  public function key(){
454
  return $this->i;
455
  }
456
 
457
 
458
+ /**
459
+ * @return bool
460
+ */
461
  public function valid(){
462
  // may be in lazy state after rewind
463
  // must do initial read now in case list is empty
src/fs/FileList.php CHANGED
@@ -11,7 +11,8 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
11
  private $unique = array();
12
 
13
  /**
14
- * Override to ensure original list is indexed
 
15
  */
16
  public function __construct( $a = array() ){
17
  parent::__construct( array() );
@@ -36,6 +37,7 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
36
 
37
  /**
38
  * @internal
 
39
  */
40
  public function __toString(){
41
  return implode( "\n", $this->getArrayCopy() );
@@ -44,6 +46,7 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
44
 
45
  /**
46
  * Generate a unique key for file
 
47
  * @return string
48
  */
49
  private function hash( Loco_fs_File $file ){
@@ -57,7 +60,7 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
57
 
58
 
59
  /**
60
- * @codeCoverageIgnore
61
  */
62
  public function offsetSet( $index, $value ){
63
  throw new Exception('Use Loco_fs_FileList::add');
@@ -65,22 +68,22 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
65
 
66
 
67
  /**
68
- * Add a file uniquely collection
69
- * @return Loco_fs_FileList
70
  */
71
  public function add( Loco_fs_File $file ){
72
  $hash = $this->hash( $file );
73
- if( ! isset($this->unique[$hash]) ){
74
- $this->unique[$hash] = true;
75
- parent::offsetSet( null, $file );
76
  }
77
-
78
- return $this;
 
79
  }
80
 
81
 
82
  /**
83
  * Check if given file is already in list
 
84
  * @return bool
85
  */
86
  public function has( Loco_fs_File $file ){
@@ -91,6 +94,7 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
91
 
92
  /**
93
  * Get a copy of list with only files not contained in passed list
 
94
  * @return Loco_fs_FileList
95
  */
96
  public function diff( Loco_fs_FileList $not_in ){
@@ -105,6 +109,7 @@ class Loco_fs_FileList extends ArrayIterator implements Loco_fs_FileListInterfac
105
 
106
  /**
107
  * Merge another list of the SAME TYPE uniquely on top of current one
 
108
  * @return Loco_fs_FileList
109
  */
110
  public function augment( loco_fs_FileList $list ){
11
  private $unique = array();
12
 
13
  /**
14
+ * Construct with initial list if files
15
+ * @param Loco_fs_File[]
16
  */
17
  public function __construct( $a = array() ){
18
  parent::__construct( array() );
37
 
38
  /**
39
  * @internal
40
+ * @return string
41
  */
42
  public function __toString(){
43
  return implode( "\n", $this->getArrayCopy() );
46
 
47
  /**
48
  * Generate a unique key for file
49
+ * @param Loco_fs_File
50
  * @return string
51
  */
52
  private function hash( Loco_fs_File $file ){
60
 
61
 
62
  /**
63
+ * {@inheritDoc}
64
  */
65
  public function offsetSet( $index, $value ){
66
  throw new Exception('Use Loco_fs_FileList::add');
68
 
69
 
70
  /**
71
+ * {@inheritDoc}
 
72
  */
73
  public function add( Loco_fs_File $file ){
74
  $hash = $this->hash( $file );
75
+ if( isset($this->unique[$hash]) ){
76
+ return false;
 
77
  }
78
+ $this->unique[$hash] = true;
79
+ parent::offsetSet( null, $file );
80
+ return true;
81
  }
82
 
83
 
84
  /**
85
  * Check if given file is already in list
86
+ * @param Loco_fs_File
87
  * @return bool
88
  */
89
  public function has( Loco_fs_File $file ){
94
 
95
  /**
96
  * Get a copy of list with only files not contained in passed list
97
+ * @param Loco_fs_FileList
98
  * @return Loco_fs_FileList
99
  */
100
  public function diff( Loco_fs_FileList $not_in ){
109
 
110
  /**
111
  * Merge another list of the SAME TYPE uniquely on top of current one
112
+ * @param Loco_fs_FileList
113
  * @return Loco_fs_FileList
114
  */
115
  public function augment( loco_fs_FileList $list ){
src/fs/FileListInterface.php CHANGED
@@ -1,7 +1,12 @@
1
  <?php
2
 
3
  interface Loco_fs_FileListInterface extends Countable, Iterator {
4
-
 
 
 
 
 
5
  public function add( Loco_fs_File $file );
6
 
7
  }
1
  <?php
2
 
3
  interface Loco_fs_FileListInterface extends Countable, Iterator {
4
+
5
+ /**
6
+ * Add a file uniquely
7
+ * @param Loco_fs_File
8
+ * @return bool whether file was added (and didn't already exist)
9
+ */
10
  public function add( Loco_fs_File $file );
11
 
12
  }
src/fs/FileWriter.php CHANGED
@@ -10,7 +10,7 @@ class Loco_fs_FileWriter {
10
  private $file;
11
 
12
  /**
13
- * @var WP_Filesystem_Direct
14
  */
15
  private $fs;
16
 
@@ -144,11 +144,19 @@ class Loco_fs_FileWriter {
144
  $this->authorize();
145
  $source = $this->getPath();
146
  $target = $this->mapPath( $copy->getPath() );
147
- // bugs in WP file system "exists" methods mean forcing $overwrite, but checking reliably first
148
  if( $copy->exists() ){
 
149
  throw new Loco_error_WriteException( __('Refusing to copy over an existing file','loco-translate') );
150
  }
151
- if( ! $this->fs->copy( $source, $target, true ) ){
 
 
 
 
 
 
 
152
  throw new Loco_error_WriteException( sprintf( __('Failed to copy %s to %s','loco-translate'), basename($source), basename($target) ) );
153
  }
154
 
@@ -156,6 +164,28 @@ class Loco_fs_FileWriter {
156
  }
157
 
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
  /**
161
  * @param bool
@@ -183,6 +213,11 @@ class Loco_fs_FileWriter {
183
  if( $file->isDirectory() ){
184
  throw new Loco_error_WriteException( sprintf( __('"%s" is a directory, not a file','loco-translate'), $file->basename() ) );
185
  }
 
 
 
 
 
186
  // avoid chmod of existing file
187
  if( $file->exists() ){
188
  $mode = $file->mode();
@@ -190,21 +225,27 @@ class Loco_fs_FileWriter {
190
  // may have bypassed definition of FS_CHMOD_FILE
191
  else {
192
  $mode = defined('FS_CHMOD_FILE') ? FS_CHMOD_FILE : 0644;
 
 
 
 
193
  }
 
194
  $path = $this->getPath();
195
- while( ! $this->fs->put_contents( $path, $data, $mode ) ){
196
  // provide useful reason for failure if possible
197
- if( $file->exists() && ! $this->fs->is_writable($path) ){
198
- Loco_error_AdminNotices::debug( sprintf('File not writable, cannot update %s',$path) );
199
  throw new Loco_error_WriteException( __("Permission denied to update file",'loco-translate') );
200
  }
201
- // full directory path may not exist. we won't create it, but user should be warned
202
- if( ( $dir = $file->getParent() ) && ! $dir->exists() ){
203
- $path = $dir->getRelativePath( loco_constant('WP_CONTENT_DIR') );
204
- Loco_error_AdminNotices::debug( sprintf('Directory not found via "%s" method, ensure "wp-content/%s" exists and is writable',$this->fs->method,$path) );
205
- throw new Loco_error_WriteException( __("Parent directory doesn't exist",'loco-translate') );
206
  }
207
  // else reason for failure is not established
 
208
  throw new Loco_error_WriteException( __('Failed to save file','loco-translate').': '.$file->basename() );
209
  }
210
 
@@ -212,26 +253,30 @@ class Loco_fs_FileWriter {
212
  }
213
 
214
 
215
-
216
  /**
 
 
217
  * @return bool
218
  * @throws Loco_error_WriteException
219
  */
220
- public function mkdir(){
 
 
 
221
  $this->authorize();
222
  $fs = $this->fs;
223
  // may have bypassed definition of FS_CHMOD_DIR
224
  $mode = defined('FS_CHMOD_DIR') ? FS_CHMOD_DIR : 0755;
225
  // find first ancestor that exists while building tree
226
  $stack = array();
227
- $here = $this->file;
228
  /* @var $parent Loco_fs_Directory */
229
  while( $parent = $here->getParent() ){
230
  array_unshift( $stack, $this->mapPath( $here->getPath() ) );
231
  if( $parent->exists() ){
232
  // have existent directory, now build full path
233
  foreach( $stack as $path ){
234
- if( ! $fs->mkdir( $path, $mode ) ){
 
235
  throw new Loco_error_WriteException( __('Failed to create directory','loco-translate') );
236
  }
237
  }
@@ -239,11 +284,11 @@ class Loco_fs_FileWriter {
239
  }
240
  $here = $parent;
241
  }
 
242
  throw new Loco_error_WriteException( __('Failed to build directory path','loco-translate') );
243
  }
244
 
245
 
246
-
247
  /**
248
  * Check whether write operations are permitted, or throw
249
  * @throws Loco_error_WriteException
@@ -261,7 +306,6 @@ class Loco_fs_FileWriter {
261
  }
262
 
263
 
264
-
265
  /**
266
  * Check if file system modification is banned at WordPress level
267
  * @return bool
10
  private $file;
11
 
12
  /**
13
+ * @var WP_Filesystem_Base
14
  */
15
  private $fs;
16
 
144
  $this->authorize();
145
  $source = $this->getPath();
146
  $target = $this->mapPath( $copy->getPath() );
147
+ // bugs in WP file system "exists" methods means we must force $overwrite=true; so checking file existence first
148
  if( $copy->exists() ){
149
+ Loco_error_AdminNotices::debug(sprintf('Cannot copy %s to %s (target already exists)',$source,$target));
150
  throw new Loco_error_WriteException( __('Refusing to copy over an existing file','loco-translate') );
151
  }
152
+ // ensure target directory exists, although in most cases copy will be in situ
153
+ $parent = $copy->getParent();
154
+ if( $parent && ! $parent->exists() ){
155
+ $this->mkdir($parent);
156
+ }
157
+ // perform WP file system copy method
158
+ if( ! $this->fs->copy($source,$target,true) ){
159
+ Loco_error_AdminNotices::debug(sprintf('Failed to copy %s to %s via "%s" method',$source,$target,$this->fs->method));
160
  throw new Loco_error_WriteException( sprintf( __('Failed to copy %s to %s','loco-translate'), basename($source), basename($target) ) );
161
  }
162
 
164
  }
165
 
166
 
167
+ /**
168
+ * @param Loco_fs_File target file with new path
169
+ * @return Loco_fs_FileWriter
170
+ * @throws Loco_error_WriteException
171
+ */
172
+ public function move( Loco_fs_File $dest ){
173
+ $orig = $this->file;
174
+ try {
175
+ // target should have been authorized to create the new file
176
+ $context = clone $dest->getWriteContext();
177
+ $context->setFile($orig);
178
+ $context->copy($dest);
179
+ // source should have been authorized to delete the original file
180
+ $this->delete(false);
181
+ return $this;
182
+ }
183
+ catch( Loco_error_WriteException $e ){
184
+ Loco_error_AdminNotices::debug('copy/delete failure: '.$e->getMessage() );
185
+ throw new Loco_error_WriteException( sprintf( 'Failed to move %s', $orig->basename() ) );
186
+ }
187
+ }
188
+
189
 
190
  /**
191
  * @param bool
213
  if( $file->isDirectory() ){
214
  throw new Loco_error_WriteException( sprintf( __('"%s" is a directory, not a file','loco-translate'), $file->basename() ) );
215
  }
216
+ // file having no parent directory is likely an error, like a relative path.
217
+ $dir = $file->getParent();
218
+ if( ! $dir ){
219
+ throw new Loco_error_WriteException( sprintf('Bad file path "%s"',$file) );
220
+ }
221
  // avoid chmod of existing file
222
  if( $file->exists() ){
223
  $mode = $file->mode();
225
  // may have bypassed definition of FS_CHMOD_FILE
226
  else {
227
  $mode = defined('FS_CHMOD_FILE') ? FS_CHMOD_FILE : 0644;
228
+ // new file may also require directory path building
229
+ if( ! $dir->exists() ){
230
+ $this->mkdir($dir);
231
+ }
232
  }
233
+ $fs = $this->fs;
234
  $path = $this->getPath();
235
+ if( ! $fs->put_contents($path,$data,$mode) ){
236
  // provide useful reason for failure if possible
237
+ if( $file->exists() && ! $file->writable() ){
238
+ Loco_error_AdminNotices::debug( sprintf('File not writable via "%s" method, check permissions on %s',$fs->method,$path) );
239
  throw new Loco_error_WriteException( __("Permission denied to update file",'loco-translate') );
240
  }
241
+ // directory path should exist or have thrown error earlier.
242
+ // directory path may not be writable by same fs context
243
+ if( ! $dir->writable() ){
244
+ Loco_error_AdminNotices::debug( sprintf('Directory not writable via "%s" method; check permissions for %s',$fs->method,$dir) );
245
+ throw new Loco_error_WriteException( __("Parent directory isn't writable",'loco-translate') );
246
  }
247
  // else reason for failure is not established
248
+ Loco_error_AdminNotices::debug( sprintf('Unknown write failure via "%s" method; check %s',$fs->method,$path) );
249
  throw new Loco_error_WriteException( __('Failed to save file','loco-translate').': '.$file->basename() );
250
  }
251
 
253
  }
254
 
255
 
 
256
  /**
257
+ * Create current directory context
258
+ * @param Loco_fs_File optional directory
259
  * @return bool
260
  * @throws Loco_error_WriteException
261
  */
262
+ public function mkdir( Loco_fs_File $here = null ) {
263
+ if( is_null($here) ){
264
+ $here = $this->file;
265
+ }
266
  $this->authorize();
267
  $fs = $this->fs;
268
  // may have bypassed definition of FS_CHMOD_DIR
269
  $mode = defined('FS_CHMOD_DIR') ? FS_CHMOD_DIR : 0755;
270
  // find first ancestor that exists while building tree
271
  $stack = array();
 
272
  /* @var $parent Loco_fs_Directory */
273
  while( $parent = $here->getParent() ){
274
  array_unshift( $stack, $this->mapPath( $here->getPath() ) );
275
  if( $parent->exists() ){
276
  // have existent directory, now build full path
277
  foreach( $stack as $path ){
278
+ if( ! $fs->mkdir($path,$mode) ){
279
+ Loco_error_AdminNotices::debug( sprintf('mkdir(%s,%03o) failed via "%s" method;',var_export($path,1),$mode,$fs->method) );
280
  throw new Loco_error_WriteException( __('Failed to create directory','loco-translate') );
281
  }
282
  }
284
  }
285
  $here = $parent;
286
  }
287
+ // refusing to create directory when the entire path is missing. e.g. "/bad"
288
  throw new Loco_error_WriteException( __('Failed to build directory path','loco-translate') );
289
  }
290
 
291
 
 
292
  /**
293
  * Check whether write operations are permitted, or throw
294
  * @throws Loco_error_WriteException
306
  }
307
 
308
 
 
309
  /**
310
  * Check if file system modification is banned at WordPress level
311
  * @return bool
src/fs/LocaleDirectory.php CHANGED
@@ -52,6 +52,7 @@ class Loco_fs_LocaleDirectory extends Loco_fs_Directory {
52
 
53
  /**
54
  * Get translated version of getTypeId
 
55
  * @return string
56
  */
57
  public function getTypeLabel( $id ){
52
 
53
  /**
54
  * Get translated version of getTypeId
55
+ * @param string id
56
  * @return string
57
  */
58
  public function getTypeLabel( $id ){
src/fs/LocaleFile.php CHANGED
@@ -31,7 +31,7 @@ class Loco_fs_LocaleFile extends Loco_fs_File {
31
  $this->prefix = implode( '-', $parts );
32
  // handle situations where suffixless name is wrongly taken as the prefix
33
  // e.g. "de.po" is valid but "hello.po" is not.
34
- // There are still some ambigous situations, e.g. "foo-bar.po" is valid, but nonsense
35
  if( ! $this->prefix && ! $this->getLocale()->isValid() ){
36
  $this->prefix = $this->suffix;
37
  $this->suffix = '';
31
  $this->prefix = implode( '-', $parts );
32
  // handle situations where suffixless name is wrongly taken as the prefix
33
  // e.g. "de.po" is valid but "hello.po" is not.
34
+ // There are still some ambiguous situations, e.g. "foo-bar.po" is valid, but nonsense
35
  if( ! $this->prefix && ! $this->getLocale()->isValid() ){
36
  $this->prefix = $this->suffix;
37
  $this->suffix = '';
src/fs/Locations.php CHANGED
@@ -133,13 +133,10 @@ class Loco_fs_Locations extends ArrayObject {
133
  * @return Loco_fs_Locations
134
  */
135
  public function add( $path ){
136
- $path = Loco_fs_File::abs($path);
137
- if( ! $path ){
138
- throw new InvalidArgumentException('Location must be absolute path');
139
  }
140
- // path must have trailing slash, otherwise "/plugins/foobar" would match "/plugins/foo/"
141
- $path = trailingslashit($path);
142
- $this[$path] = strlen($path);
143
  return $this;
144
  }
145
 
@@ -150,10 +147,11 @@ class Loco_fs_Locations extends ArrayObject {
150
  * @return bool whether path matched
151
  */
152
  public function check( $path ){
153
- $path = trailingslashit( Loco_fs_File::abs($path) );
154
- foreach( $this as $prefix => $length ){
155
- if( $prefix === $path || substr($path,0,$length) === $prefix ){
156
- return true;
 
157
  }
158
  }
159
  return false;
@@ -167,15 +165,37 @@ class Loco_fs_Locations extends ArrayObject {
167
  * @return string | null
168
  */
169
  public function rel( $path ){
170
- $path = trailingslashit( Loco_fs_File::abs($path) );
171
- foreach( $this as $prefix => $length ){
172
- if( $prefix === $path ){
173
- return '.';
174
- }
175
- if( substr($path,0,$length) === $prefix ){
176
- return untrailingslashit( substr($path,$length) );
 
177
  }
178
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
180
 
 
181
  }
133
  * @return Loco_fs_Locations
134
  */
135
  public function add( $path ){
136
+ foreach( $this->expand($path) as $path ){
137
+ // path must have trailing slash, otherwise "/plugins/foobar" would match "/plugins/foo/"
138
+ $this[$path] = strlen($path);
139
  }
 
 
 
140
  return $this;
141
  }
142
 
147
  * @return bool whether path matched
148
  */
149
  public function check( $path ){
150
+ foreach( $this->expand($path) as $path ){
151
+ foreach( $this as $prefix => $length ){
152
+ if( $prefix === $path || substr($path,0,$length) === $prefix ){
153
+ return true;
154
+ }
155
  }
156
  }
157
  return false;
165
  * @return string | null
166
  */
167
  public function rel( $path ){
168
+ foreach( $this->expand($path) as $path ){
169
+ foreach( $this as $prefix => $length ){
170
+ if( $prefix === $path ){
171
+ return '.';
172
+ }
173
+ if( substr($path,0,$length) === $prefix ){
174
+ return untrailingslashit( substr($path,$length) );
175
+ }
176
  }
177
  }
178
+ return null;
179
+ }
180
+
181
+
182
+ /**
183
+ * @param string
184
+ * @return string[]
185
+ */
186
+ private function expand( $path ){
187
+ $path = Loco_fs_File::abs($path);
188
+ if( ! $path ){
189
+ throw new InvalidArgumentException('Expected absolute path');
190
+ }
191
+ $paths = array( trailingslashit($path) );
192
+ // add real path if differs
193
+ $real = realpath($path);
194
+ if( $real && $real !== $path ){
195
+ $paths[] = trailingslashit($real);
196
+ }
197
+ return $paths;
198
  }
199
 
200
+
201
  }
src/fs/Revisions.php CHANGED
@@ -37,6 +37,7 @@ class Loco_fs_Revisions implements Countable/*, IteratorAggregate*/ {
37
 
38
  /**
39
  * Construct from master file (current version)
 
40
  */
41
  public function __construct( Loco_fs_File $file ){
42
  $this->master = $file;
@@ -148,6 +149,7 @@ class Loco_fs_Revisions implements Countable/*, IteratorAggregate*/ {
148
  $this->paths = array();
149
  $regex = $this->getRegExp();
150
  $finder = new Loco_fs_FileFinder( $this->master->dirname() );
 
151
  /* @var $file Loco_fs_File */
152
  foreach( $finder as $file ){
153
  if( preg_match( $regex, $file->basename(), $r ) ){
@@ -164,6 +166,7 @@ class Loco_fs_Revisions implements Countable/*, IteratorAggregate*/ {
164
 
165
  /**
166
  * Parse a file path into a timestamp
 
167
  * @return int
168
  */
169
  public function getTimestamp( $path ){
@@ -193,6 +196,7 @@ class Loco_fs_Revisions implements Countable/*, IteratorAggregate*/ {
193
  /**
194
  * Delete file when object removed from memory.
195
  * Previously unlinked on shutdown, but doesn't work with WordPress file system abstraction
 
196
  * @return void
197
  */
198
  public function unlinkLater($path){
37
 
38
  /**
39
  * Construct from master file (current version)
40
+ * @param Loco_fs_File
41
  */
42
  public function __construct( Loco_fs_File $file ){
43
  $this->master = $file;
149
  $this->paths = array();
150
  $regex = $this->getRegExp();
151
  $finder = new Loco_fs_FileFinder( $this->master->dirname() );
152
+ $finder->setRecursive(false);
153
  /* @var $file Loco_fs_File */
154
  foreach( $finder as $file ){
155
  if( preg_match( $regex, $file->basename(), $r ) ){
166
 
167
  /**
168
  * Parse a file path into a timestamp
169
+ * @param string
170
  * @return int
171
  */
172
  public function getTimestamp( $path ){
196
  /**
197
  * Delete file when object removed from memory.
198
  * Previously unlinked on shutdown, but doesn't work with WordPress file system abstraction
199
+ * @param string
200
  * @return void
201
  */
202
  public function unlinkLater($path){
src/fs/Siblings.php CHANGED
@@ -34,10 +34,9 @@ class Loco_fs_Siblings {
34
  }
35
 
36
 
37
-
38
  /**
39
  * Get all dependant files (including self) that actually exist on disk
40
- * @return array
41
  */
42
  public function expand(){
43
  $siblings = array();
@@ -72,7 +71,6 @@ class Loco_fs_Siblings {
72
  }
73
 
74
 
75
-
76
  /**
77
  * @return Loco_fs_File
78
  */
34
  }
35
 
36
 
 
37
  /**
38
  * Get all dependant files (including self) that actually exist on disk
39
+ * @return Loco_fs_File[]
40
  */
41
  public function expand(){
42
  $siblings = array();
71
  }
72
 
73
 
 
74
  /**
75
  * @return Loco_fs_File
76
  */
src/mvc/AdminRouter.php CHANGED
@@ -82,9 +82,10 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
82
  }
83
 
84
 
85
-
86
  /**
87
  * Early hook as soon as we know what screen will be rendered
 
 
88
  */
89
  public function on_current_screen( WP_Screen $screen ){
90
  $action = isset($_GET['action']) ? $_GET['action'] : null;
@@ -92,12 +93,13 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
92
  }
93
 
94
 
95
-
96
  /**
97
  * Instantiate admin page controller from current screen.
98
  * This is called early (before renderPage) so controller can listen on other hooks.
99
  *
100
- * @return Loco_mvc_AdminController
 
 
101
  */
102
  public function initPage( WP_Screen $screen, $action = '' ){
103
  $class = null;
@@ -109,7 +111,7 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
109
  }
110
  if( is_null($class) ){
111
  $this->ctrl = null;
112
- return;
113
  }
114
  // class should exist, so throw fatal if it doesn't
115
  $this->ctrl = new $class;
@@ -147,10 +149,10 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
147
  }
148
 
149
 
150
-
151
  /**
152
  * Convert WordPress internal WPScreen $id into route prefix for an admin page controller
153
- * @return string
 
154
  */
155
  private static function screenToPage( WP_Screen $screen ){
156
  // Hooked menu slug is either "toplevel_page_loco" or "{title}_page_loco-{page}"
@@ -163,14 +165,17 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
163
  $page = substr( $id, $start+11 ) or $page = '';
164
  return $page;
165
  }
 
166
  }
167
 
168
 
169
-
170
  /**
171
  * Get unvalidated controller class for given route parameters
172
  * Abstracted from initPage so we can validate routes in self::generate
173
- * @return string
 
 
 
174
  */
175
  private static function pageToClass( $page, $action, array &$args ){
176
  $routes = array (
@@ -200,6 +205,7 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
200
  '{type}-file-edit' => 'file_Edit',
201
  '{type}-file-info' => 'file_Info',
202
  '{type}-file-diff' => 'file_Diff',
 
203
  '{type}-file-delete' => 'file_Delete',
204
  // test routes that don't actually exist
205
  'test-no-class' => 'test_NonExistantClass',
@@ -221,12 +227,14 @@ class Loco_mvc_AdminRouter extends Loco_hooks_Hookable {
221
  }
222
  // debug routing failures:
223
  // throw new Exception( sprintf('Failed to get page class from $page=%s',$page) );
 
224
  }
225
 
226
 
227
 
228
  /**
229
  * Main entry point for admin menu callback, establishes page and hands off to controller
 
230
  */
231
  public function renderPage(){
232
  try {
82
  }
83
 
84
 
 
85
  /**
86
  * Early hook as soon as we know what screen will be rendered
87
+ * @param WP_Screen
88
+ * @return void
89
  */
90
  public function on_current_screen( WP_Screen $screen ){
91
  $action = isset($_GET['action']) ? $_GET['action'] : null;
93
  }
94
 
95
 
 
96
  /**
97
  * Instantiate admin page controller from current screen.
98
  * This is called early (before renderPage) so controller can listen on other hooks.
99
  *
100
+ * @param WP_Screen
101
+ * @param string
102
+ * @return Loco_mvc_AdminController|null
103
  */
104
  public function initPage( WP_Screen $screen, $action = '' ){
105
  $class = null;
111
  }
112
  if( is_null($class) ){
113
  $this->ctrl = null;
114
+ return null;
115
  }
116
  // class should exist, so throw fatal if it doesn't
117
  $this->ctrl = new $class;
149
  }
150
 
151
 
 
152
  /**
153
  * Convert WordPress internal WPScreen $id into route prefix for an admin page controller
154
+ * @param WP_Screen
155
+ * @return string|null
156
  */
157
  private static function screenToPage( WP_Screen $screen ){
158
  // Hooked menu slug is either "toplevel_page_loco" or "{title}_page_loco-{page}"
165
  $page = substr( $id, $start+11 ) or $page = '';
166
  return $page;
167
  }
168
+ return null;
169
  }
170
 
171
 
 
172
  /**
173
  * Get unvalidated controller class for given route parameters
174
  * Abstracted from initPage so we can validate routes in self::generate
175
+ * @param string
176
+ * @param string
177
+ * @param array reference
178
+ * @return string|null
179
  */
180
  private static function pageToClass( $page, $action, array &$args ){
181
  $routes = array (
205
  '{type}-file-edit' => 'file_Edit',
206
  '{type}-file-info' => 'file_Info',
207
  '{type}-file-diff' => 'file_Diff',
208
+ '{type}-file-move' => 'file_Move',
209
  '{type}-file-delete' => 'file_Delete',
210
  // test routes that don't actually exist
211
  'test-no-class' => 'test_NonExistantClass',
227
  }
228
  // debug routing failures:
229
  // throw new Exception( sprintf('Failed to get page class from $page=%s',$page) );
230
+ return null;
231
  }
232
 
233
 
234
 
235
  /**
236
  * Main entry point for admin menu callback, establishes page and hands off to controller
237
+ * @return void
238
  */
239
  public function renderPage(){
240
  try {
src/mvc/Controller.php CHANGED
@@ -66,6 +66,7 @@ abstract class Loco_mvc_Controller extends Loco_hooks_Hookable {
66
  * Check if a valid nonce has been sent in current request.
67
  * Fails if nonce is invalid, but returns false if not sent so scripts can exit accordingly.
68
  * @throws Loco_error_Exception
 
69
  * @return bool true if data has been posted and nonce is valid
70
  */
71
  public function checkNonce( $action ){
@@ -85,7 +86,7 @@ abstract class Loco_mvc_Controller extends Loco_hooks_Hookable {
85
 
86
 
87
  /**
88
- * Filter calback for `translations_api'
89
  * Ensures silent failure of translations_api when network disabled, see $this->getAvailableCore
90
  */
91
  public function filter_translations_api( $value = false ){
66
  * Check if a valid nonce has been sent in current request.
67
  * Fails if nonce is invalid, but returns false if not sent so scripts can exit accordingly.
68
  * @throws Loco_error_Exception
69
+ * @param string action for passing to wp_verify_nonce
70
  * @return bool true if data has been posted and nonce is valid
71
  */
72
  public function checkNonce( $action ){
86
 
87
 
88
  /**
89
+ * Filter callback for `translations_api'
90
  * Ensures silent failure of translations_api when network disabled, see $this->getAvailableCore
91
  */
92
  public function filter_translations_api( $value = false ){
src/mvc/FileParams.php CHANGED
@@ -2,9 +2,9 @@
2
  /**
3
  * Abstracts information about a file into a view parameter object.
4
  *
5
- * @property string $name
6
- * @property string $path
7
- * @property string $relpath
8
  */
9
  class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
10
 
@@ -17,6 +17,8 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
17
 
18
  /**
19
  * Print property as a number of bytes in larger denominations
 
 
20
  */
21
  public static function renderBytes( $n ){
22
  $i = 0;
@@ -41,6 +43,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
41
 
42
 
43
  /**
 
44
  * @return Loco_mvc_FileParams
45
  */
46
  public static function create( Loco_fs_File $file ) {
@@ -50,8 +53,10 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
50
 
51
  /**
52
  * Override does lazy property initialization
 
 
53
  */
54
- public function __construct( array $props = array(), Loco_fs_File $file ){
55
  parent::__construct( array (
56
  'name' => '',
57
  'path' => '',
@@ -68,7 +73,6 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
68
  }
69
 
70
 
71
-
72
  /**
73
  * {@inheritdoc}
74
  * Override to get live information from file object
@@ -82,7 +86,6 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
82
  }
83
 
84
 
85
-
86
  /**
87
  * {@inheritdoc}
88
  * Override to ensure all properties populated
@@ -96,8 +99,8 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
96
  }
97
 
98
 
99
-
100
  /**
 
101
  * @return string
102
  */
103
  private function _get_name(){
@@ -106,6 +109,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
106
 
107
 
108
  /**
 
109
  * @return string
110
  */
111
  private function _get_path(){
@@ -114,11 +118,11 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
114
 
115
 
116
  /**
 
117
  * @return string
118
  */
119
  private function _get_relpath(){
120
- $base = loco_constant('WP_CONTENT_DIR');
121
- return $this->file->getRelativePath($base);
122
  }
123
 
124
 
@@ -126,6 +130,8 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
126
  * Using slightly modified version of WordPress's Human time differencing
127
  * + Added "Just now" when in the last 30 seconds
128
  * TODO possibly replace with custom function that includes "Yesterday" etc..
 
 
129
  */
130
  private function _get_reltime(){
131
  $time = $this->has('mtime') ? $this['mtime'] : $this->file->modified();
@@ -142,8 +148,8 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
142
  }
143
 
144
 
145
-
146
  /**
 
147
  * @return int
148
  */
149
  private function _get_bytes(){
@@ -152,6 +158,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
152
 
153
 
154
  /**
 
155
  * @return string
156
  */
157
  private function _get_size(){
@@ -161,6 +168,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
161
 
162
  /**
163
  * Get octal file mode
 
164
  * @return string
165
  */
166
  private function _get_imode(){
@@ -171,6 +179,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
171
 
172
  /**
173
  * Get rwx file mode
 
174
  * @return string
175
  */
176
  private function _get_smode(){
@@ -181,6 +190,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
181
 
182
  /**
183
  * Get file owner name
 
184
  * @return string
185
  */
186
  private function _get_owner(){
@@ -193,6 +203,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
193
 
194
  /**
195
  * Get group owner name
 
196
  * @return string
197
  */
198
  private function _get_group(){
@@ -205,6 +216,7 @@ class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
205
 
206
  /**
207
  * Print pseudo console line
 
208
  */
209
  public function ls(){
210
  $this->e('smode');
2
  /**
3
  * Abstracts information about a file into a view parameter object.
4
  *
5
+ * @property-read string $name
6
+ * @property-read string $path
7
+ * @property-read string $relpath
8
  */
9
  class Loco_mvc_FileParams extends Loco_mvc_ViewParams {
10
 
17
 
18
  /**
19
  * Print property as a number of bytes in larger denominations
20
+ * @param int
21
+ * @return string
22
  */
23
  public static function renderBytes( $n ){
24
  $i = 0;
43
 
44
 
45
  /**
46
+ * @param Loco_fs_File
47
  * @return Loco_mvc_FileParams
48
  */
49
  public static function create( Loco_fs_File $file ) {
53
 
54
  /**
55
  * Override does lazy property initialization
56
+ * @param array initial extra properties
57
+ * @param Loco_fs_File
58
  */
59
+ public function __construct( array $props, Loco_fs_File $file ){
60
  parent::__construct( array (
61
  'name' => '',
62
  'path' => '',
73
  }
74
 
75
 
 
76
  /**
77
  * {@inheritdoc}
78
  * Override to get live information from file object
86
  }
87
 
88
 
 
89
  /**
90
  * {@inheritdoc}
91
  * Override to ensure all properties populated
99
  }
100
 
101
 
 
102
  /**
103
+ * @internal
104
  * @return string
105
  */
106
  private function _get_name(){
109
 
110
 
111
  /**
112
+ * @internal
113
  * @return string
114
  */
115
  private function _get_path(){
118
 
119
 
120
  /**
121
+ * @internal
122
  * @return string
123
  */
124
  private function _get_relpath(){
125
+ return $this->file->getRelativePath( loco_constant('WP_CONTENT_DIR') );
 
126
  }
127
 
128
 
130
  * Using slightly modified version of WordPress's Human time differencing
131
  * + Added "Just now" when in the last 30 seconds
132
  * TODO possibly replace with custom function that includes "Yesterday" etc..
133
+ * @internal
134
+ * @return string
135
  */
136
  private function _get_reltime(){
137
  $time = $this->has('mtime') ? $this['mtime'] : $this->file->modified();
148
  }
149
 
150
 
 
151
  /**
152
+ * @internal
153
  * @return int
154
  */
155
  private function _get_bytes(){
158
 
159
 
160
  /**
161
+ * @internal
162
  * @return string
163
  */
164
  private function _get_size(){
168
 
169
  /**
170
  * Get octal file mode
171
+ * @internal
172
  * @return string
173
  */
174
  private function _get_imode(){
179
 
180
  /**
181
  * Get rwx file mode
182
+ * @internal
183
  * @return string
184
  */
185
  private function _get_smode(){
190
 
191
  /**
192
  * Get file owner name
193
+ * @internal
194
  * @return string
195
  */
196
  private function _get_owner(){
203
 
204
  /**
205
  * Get group owner name
206
+ * @internal
207
  * @return string
208
  */
209
  private function _get_group(){
216
 
217
  /**
218
  * Print pseudo console line
219
+ * @return string;
220
  */
221
  public function ls(){
222
  $this->e('smode');
src/mvc/HiddenFields.php CHANGED
@@ -19,6 +19,7 @@ class Loco_mvc_HiddenFields extends Loco_mvc_ViewParams {
19
 
20
  /**
21
  * Add a nonce field
 
22
  * @return Loco_mvc_HiddenFields
23
  */
24
  public function setNonce( $action ){
@@ -29,6 +30,7 @@ class Loco_mvc_HiddenFields extends Loco_mvc_ViewParams {
29
 
30
  /**
31
  * Load postdata fields
 
32
  * @return Loco_mvc_HiddenFields
33
  */
34
  public function addPost( Loco_mvc_PostParams $post ){
19
 
20
  /**
21
  * Add a nonce field
22
+ * @param string action passed to wp_create_nonce
23
  * @return Loco_mvc_HiddenFields
24
  */
25
  public function setNonce( $action ){
30
 
31
  /**
32
  * Load postdata fields
33
+ * @param Loco_mvc_PostParams post data
34
  * @return Loco_mvc_HiddenFields
35
  */
36
  public function addPost( Loco_mvc_PostParams $post ){
src/mvc/PostParams.php CHANGED
@@ -50,11 +50,11 @@ class Loco_mvc_PostParams extends Loco_mvc_ViewParams {
50
  }
51
 
52
 
53
-
54
  /**
55
  * Construct postdata from a series of value pairs.
56
  * This is used in tests to simulate how a form is serialized and posted
57
  *
 
58
  * @return Loco_mvc_PostParams
59
  */
60
  public static function fromSerial( array $serial ){
@@ -67,7 +67,6 @@ class Loco_mvc_PostParams extends Loco_mvc_ViewParams {
67
  }
68
 
69
 
70
-
71
  /**
72
  * Collapse nested array down to series of scalar forms
73
  * @return array
50
  }
51
 
52
 
 
53
  /**
54
  * Construct postdata from a series of value pairs.
55
  * This is used in tests to simulate how a form is serialized and posted
56
  *
57
+ * @param array
58
  * @return Loco_mvc_PostParams
59
  */
60
  public static function fromSerial( array $serial ){
67
  }
68
 
69
 
 
70
  /**
71
  * Collapse nested array down to series of scalar forms
72
  * @return array
tpl/admin/bundle/inc-po-table.php CHANGED
@@ -2,6 +2,8 @@
2
  /**
3
  * Table of localised file pairs in a project
4
  */
 
 
5
  if( $pairs ):?>
6
 
7
  <table class="wp-list-table widefat fixed striped">
@@ -28,7 +30,6 @@
28
  </tr>
29
  </thead>
30
  <tbody><?php
31
- /* @var $po Loco_pages_ViewParams */
32
  foreach( $pairs as $po ): $ispo = (bool) $po->lcode;?>
33
  <tr>
34
  <td class="has-row-actions" data-sort-value="<?php $po->e('lname')?>">
@@ -50,10 +51,10 @@
50
  <a href="<?php $po->e('view')?>"><?php esc_html_e('View','loco-translate')?></a> |
51
  </span>
52
  <span>
53
- <a href="<?php $po->e('copy')?>"><?php esc_html_e('Copy','loco-translate')?></a> |
54
  </span>
55
  <span>
56
- <a href="<?php $po->e('info')?>"><?php esc_html_e('Info','loco-translate')?></a> |
57
  </span>
58
  <span class="trash">
59
  <a href="<?php $po->e('delete')?>"><?php esc_html_e('Delete','loco-translate')?></a>
2
  /**
3
  * Table of localised file pairs in a project
4
  */
5
+
6
+ /* @var Loco_mvc_ViewParams[] $pairs */
7
  if( $pairs ):?>
8
 
9
  <table class="wp-list-table widefat fixed striped">
30
  </tr>
31
  </thead>
32
  <tbody><?php
 
33
  foreach( $pairs as $po ): $ispo = (bool) $po->lcode;?>
34
  <tr>
35
  <td class="has-row-actions" data-sort-value="<?php $po->e('lname')?>">
51
  <a href="<?php $po->e('view')?>"><?php esc_html_e('View','loco-translate')?></a> |
52
  </span>
53
  <span>
54
+ <a href="<?php $po->e('info')?>"><?php esc_html_e('Info','loco-translate')?></a> |
55
  </span>
56
  <span>
57
+ <a href="<?php $po->e('copy')?>"><?php esc_html_e('Copy','loco-translate')?></a> |
58
  </span>
59
  <span class="trash">
60
  <a href="<?php $po->e('delete')?>"><?php esc_html_e('Delete','loco-translate')?></a>
tpl/admin/bundle/locale.php CHANGED
@@ -51,7 +51,7 @@ $this->extend('../layout');
51
  </tr>
52
  </thead>
53
  <tbody><?php
54
- /* @var $po Loco_pages_ViewParams */
55
  foreach( $group as $po ): ?>
56
  <tr>
57
  <td class="has-row-actions" data-sort-value="<?php $po->e('lname')?>">
@@ -66,10 +66,10 @@ $this->extend('../layout');
66
  <a href="<?php $po->e('view')?>"><?php esc_html_e('View','loco-translate')?></a> |
67
  </span>
68
  <span>
69
- <a href="<?php $po->e('copy')?>"><?php esc_html_e('Copy','loco-translate')?></a> |
70
  </span>
71
  <span>
72
- <a href="<?php $po->e('info')?>"><?php esc_html_e('Info','loco-translate')?></a> |
73
  </span>
74
  <span class="trash">
75
  <a href="<?php $po->e('delete')?>"><?php esc_html_e('Delete','loco-translate')?></a>
51
  </tr>
52
  </thead>
53
  <tbody><?php
54
+ /* @var Loco_mvc_ViewParams $po */
55
  foreach( $group as $po ): ?>
56
  <tr>
57
  <td class="has-row-actions" data-sort-value="<?php $po->e('lname')?>">
66
  <a href="<?php $po->e('view')?>"><?php esc_html_e('View','loco-translate')?></a> |
67
  </span>
68
  <span>
69
+ <a href="<?php $po->e('info')?>"><?php esc_html_e('Info','loco-translate')?></a> |
70
  </span>
71
  <span>
72
+ <a href="<?php $po->e('copy')?>"><?php esc_html_e('Copy','loco-translate')?></a> |
73
  </span>
74
  <span class="trash">
75
  <a href="<?php $po->e('delete')?>"><?php esc_html_e('Delete','loco-translate')?></a>
tpl/admin/common/inc-fsconn.php CHANGED
@@ -31,42 +31,35 @@
31
 
32
 
33
  // else render remote connection form
34
- else:
35
-
36
- if( $params->has('fsWarning') ):?>
37
  <div id="loco-fs-warn" class="has-nav notice inline notice-info jshide">
38
  <p>
39
  <strong class="has-icon"><?php esc_html_e('Notice','loco-translate')?>:</strong>
40
- <span><?php echo esc_html($fsWarning)?>.</span>
41
  </p>
42
  <nav>
43
  <a href="<?php echo $help?>#wp" target="_blank"><?php esc_html_e('Documentation','loco-translate')?></a>
44
  <span>|</span>
45
  <a href="<?php $this->route('config')->e('href')?>#loco--fs-protect"><?php esc_html_e('Settings','loco-translate')?></a>
46
  </nav>
47
- </div><?php
48
- endif?>
49
-
50
  <form id="loco-fs" class="has-nav notice inline notice-locked jshide jsonly">
51
  <p>
52
  <strong class="has-icon"><?php
53
  // Translators: When a file or folder cannot be modified due to filesystem permissions
54
  esc_html_e('Write protected','loco-translate')?>:
55
  </strong>
56
- <span><?php
57
- $params->e('fsPrompt')?>.
58
  </span>
59
  <span><?php
60
- esc_html_e('Click "Connect" to authenticate with the server','loco-translate')?>.</span>
61
- </p><?php
62
- // remote connect button required when not pre-authed
63
- if( ! $fsFields->has('connection_type') ):?>
64
  <nav>
65
  <button type="button" class="button button-small button-primary"><?php esc_html_e('Connect','loco-translate')?></button>
66
  <a class="button button-small" href="<?php echo $help?>#remote" target="_blank"> ? </a>
67
  </nav><?php
68
- // else form will remain hidden
69
- endif;
70
  $fsFields->_e();?>
71
  </form><?php
72
  endif;
31
 
32
 
33
  // else render remote connection form
34
+ else:?>
 
 
35
  <div id="loco-fs-warn" class="has-nav notice inline notice-info jshide">
36
  <p>
37
  <strong class="has-icon"><?php esc_html_e('Notice','loco-translate')?>:</strong>
38
+ <span class="loco-msg"><!-- warning to be loaded by ajax --></span>
39
  </p>
40
  <nav>
41
  <a href="<?php echo $help?>#wp" target="_blank"><?php esc_html_e('Documentation','loco-translate')?></a>
42
  <span>|</span>
43
  <a href="<?php $this->route('config')->e('href')?>#loco--fs-protect"><?php esc_html_e('Settings','loco-translate')?></a>
44
  </nav>
45
+ </div>
 
 
46
  <form id="loco-fs" class="has-nav notice inline notice-locked jshide jsonly">
47
  <p>
48
  <strong class="has-icon"><?php
49
  // Translators: When a file or folder cannot be modified due to filesystem permissions
50
  esc_html_e('Write protected','loco-translate')?>:
51
  </strong>
52
+ <span class="loco-msg">
53
+ <!-- specific reason to be loaded by ajax -->
54
  </span>
55
  <span><?php
56
+ esc_html_e('Click "Connect" to authenticate with the server','loco-translate')?>.
57
+ </span>
58
+ </p>
 
59
  <nav>
60
  <button type="button" class="button button-small button-primary"><?php esc_html_e('Connect','loco-translate')?></button>
61
  <a class="button button-small" href="<?php echo $help?>#remote" target="_blank"> ? </a>
62
  </nav><?php
 
 
63
  $fsFields->_e();?>
64
  </form><?php
65
  endif;
tpl/admin/config/settings.php CHANGED
@@ -83,7 +83,13 @@ $fs_help = esc_url( apply_filters('loco_external','https://localise.biz/wordpres
83
  <p>
84
  <label for="loco--po-utf8-bom">
85
  <input type="checkbox" name="opts[po_utf8_bom]" value="1" id="loco--po-utf8-bom"<?php echo $opts->po_utf8_bom?' checked':''?> />
86
- <?php esc_html_e('Add UTF-8 byte order mark','loco-translate')?> (<?php esc_html_e('Not recommended','loco-translate')?>)
 
 
 
 
 
 
87
  </label>
88
  </p>
89
  </fieldset>
83
  <p>
84
  <label for="loco--po-utf8-bom">
85
  <input type="checkbox" name="opts[po_utf8_bom]" value="1" id="loco--po-utf8-bom"<?php echo $opts->po_utf8_bom?' checked':''?> />
86
+ <?php esc_html_e('Add UTF-8 byte order mark','loco-translate')?> (<?php esc_html_e('Not recommended','loco-translate')?>)
87
+ </label>
88
+ </p>
89
+ <p>
90
+ <label for="loco--ajax-files">
91
+ <input type="checkbox" name="opts[ajax_files]" value="1" id="loco--ajax-files"<?php echo $opts->ajax_files?' checked':''?> />
92
+ Submit PO data as multipart file uploads (Experimental)
93
  </label>
94
  </p>
95
  </fieldset>
tpl/admin/file/delete.php CHANGED
@@ -31,6 +31,6 @@ $this->extend('../layout');
31
  </p>
32
  </div>
33
  <?php
34
- /* @var $hidden Loco_mvc_HiddenFields */
35
  $hidden->_e();?>
36
  </form>
31
  </p>
32
  </div>
33
  <?php
34
+ /* @var Loco_mvc_HiddenFields $hidden */
35
  $hidden->_e();?>
36
  </form>
tpl/admin/file/move-po.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Confirmation form for moving localized files to a new location.
4
+ */
5
+ $this->extend('move');
6
+ $this->start('source');
7
+
8
+ /* @var Loco_mvc_ViewParams $current */
9
+ /* @var Loco_mvc_ViewParams[] $locations */
10
+ ?>
11
+
12
+ <div class="notice inline notice-generic">
13
+ <h2>
14
+ Choose a new location for these translations
15
+ </h2>
16
+ <table class="form-table">
17
+ <tbody class="loco-paths"><?php
18
+ foreach( $locations as $typeId => $location ):?>
19
+ <tr class="compact">
20
+ <td>
21
+ <p class="description"><?php $location->e('label')?>:</p>
22
+ </td>
23
+ <td><?php
24
+ /* @var Loco_mvc_FileParams $choice */
25
+ foreach( $location['paths'] as $choice ):?>
26
+ <p><?php
27
+ if( $choice->active ):?>
28
+ <label>
29
+ <input type="radio" name="dest" value="" disabled checked /><?php
30
+ else:?>
31
+ <label>
32
+ <input type="radio" name="dest" value="<?php $choice->e('path')?>" /><?php
33
+ endif?>
34
+ <code class="path"><?php $choice->e('path')?></code>
35
+ </label>
36
+ </p><?php
37
+ endforeach?>
38
+ </td>
39
+ </tr><?php
40
+ endforeach?>
41
+ </tbody>
42
+ </table>
43
+ </div>
tpl/admin/file/move-pot.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Confirmation form for moving file or group of files to an exact/custom location.
4
+ * Use for moving POT file, but also moving PO siblings when locale or text domain is unknown
5
+ */
6
+ $this->extend('move');
7
+ $this->start('source');
8
+
9
+ /* @var Loco_mvc_FileParams $file */
10
+ /* @var Loco_mvc_ViewParams $current */
11
+ ?>
12
+ <div class="notice inline notice-generic">
13
+ <h2>
14
+ Enter a new location for this file
15
+ </h2>
16
+ <p>
17
+ <input type="text" name="dest" value="<?php $file->e('relpath')?>" class="large-text" />
18
+ </p>
19
+ </div>
tpl/admin/file/move.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Confirmation form for moving any file or group of file siblings.
4
+ */
5
+ $this->extend('../layout');
6
+ ?>
7
+
8
+ <form action="" method="post" enctype="application/x-www-form-urlencoded" id="loco-move"><?php
9
+ /* @var Loco_mvc_HiddenFields $hidden */
10
+ $hidden->_e();
11
+ echo $source?>
12
+ <div class="notice inline notice-info">
13
+ <h2>
14
+ Confirm relocation
15
+ </h2>
16
+ <p>
17
+ The following files will be moved/renamed to the new location:<?php
18
+ /* @var Loco_fs_File[] $files */
19
+ foreach( $files as $file ):
20
+ echo '<div>',$params->escape( $file->basename() ),'</div>';
21
+ endforeach?>
22
+ </p>
23
+ <p class="submit">
24
+ <button type="submit" class="button button-primary" disabled><?php esc_html_e('Move files','loco-translate')?></button><?php
25
+ if( $params->has('advanced') ):?>
26
+ <a href="<?php $params->e('advanced')?>" class="button button-link">Advanced</a><?php
27
+ endif?>
28
+ </p>
29
+ </div>
30
+ </form>
31
+
tpl/admin/init/init-po.php CHANGED
@@ -38,11 +38,8 @@ $this->extend('../layout');
38
  <p><?php $params->e('summary')?></p>
39
 
40
  <form action="" method="post" enctype="application/x-www-form-urlencoded" id="loco-poinit"><?php
41
- /* @var Loco_mvc_ViewParams $hidden */
42
- foreach( $hidden as $name => $value ):?>
43
- <input type="hidden" name="<?php echo $name?>" value="<?php $hidden->e($name)?>" /><?php
44
- endforeach;?>
45
-
46
  <table class="form-table">
47
  <tbody class="loco-locales">
48
  <tr valign="top">
@@ -105,9 +102,7 @@ $this->extend('../layout');
105
  foreach( $locations as $typeId => $location ):?>
106
  <tr class="compact">
107
  <td>
108
- <p class="description">
109
- <?php $location->e('label')?>:
110
- </p>
111
  </td>
112
  <td><?php
113
  /* @var Loco_mvc_FileParams $choice */
38
  <p><?php $params->e('summary')?></p>
39
 
40
  <form action="" method="post" enctype="application/x-www-form-urlencoded" id="loco-poinit"><?php
41
+ /* @var Loco_mvc_HiddenFields $hidden */
42
+ $hidden->_e();?>
 
 
 
43
  <table class="form-table">
44
  <tbody class="loco-locales">
45
  <tr valign="top">
102
  foreach( $locations as $typeId => $location ):?>
103
  <tr class="compact">
104
  <td>
105
+ <p class="description"><?php $location->e('label')?>:</p>
 
 
106
  </td>
107
  <td><?php
108
  /* @var Loco_mvc_FileParams $choice */