Toolset Types – Custom Post Types, Custom Fields and Taxonomies - Version 2.3

Version Description

  • Free Types version which will be available on wordpress.org only.
  • Added a dismissable notice about what is going on with Types development.
  • Removed the Installer dependency. Clients who buy Toolset will have to download Types 3.0+ manually for the first time.
  • Users should no longer be asked to buy a subscription in order to upgrade (sorry about that).
Download this release

Release Info

Developer zaantar
Plugin Icon 128x128 Toolset Types – Custom Post Types, Custom Fields and Taxonomies
Version 2.3
Comparing to
See all releases

Code changes from version 2.2.23 to 2.3

Files changed (257) hide show
  1. application/autoload_classmap.php +1 -0
  2. application/bootstrap.php +0 -17
  3. application/controllers/admin.php +3 -0
  4. application/controllers/admin_notice/free-version.php +99 -0
  5. application/views/admin-notices/free-version/types-3-0.phtml +95 -0
  6. application/views/admin-notices/free-version/types-3-1.phtml +18 -0
  7. package-lock.json +2265 -0
  8. public/css/information.css +0 -0
  9. public/images/ajax-loader-overlay.gif +0 -0
  10. public/img/toolset-logo-no-margin.png +0 -0
  11. public/js/feedback-on-deactivation.js +0 -0
  12. public/js/information.js +0 -0
  13. public/js/notice-dismiss.js +0 -0
  14. public/js/settings.js +0 -0
  15. public/js/slug_conflict_checker.js +0 -0
  16. public/page/add_term.js +0 -0
  17. public/page/adjust_submenu_links.js +0 -0
  18. public/page/edit_post_type/main.js +0 -0
  19. public/page/edit_taxonomy/main.js +0 -0
  20. public/page/field_control/main.js +0 -0
  21. public/page/field_control/style.css +0 -0
  22. public/page/field_control/viewmodels/BulkChangeManagementStatusDialogViewModel.js +0 -0
  23. public/page/field_control/viewmodels/ChangeAssignDialogViewModel.js +0 -0
  24. public/page/field_control/viewmodels/ChangeFieldTypeDialogViewModel.js +0 -0
  25. public/page/field_control/viewmodels/DeleteDialogViewModel.js +0 -0
  26. public/page/field_control/viewmodels/FieldDefinitionViewModel.js +0 -0
  27. public/page/field_control/viewmodels/ListingViewModel.js +0 -0
  28. readme.txt +68 -50
  29. vendor/autoload.php +1 -1
  30. vendor/composer/ClassLoader.php +2 -2
  31. vendor/composer/autoload_classmap.php +42 -24
  32. vendor/composer/autoload_namespaces.php +0 -1
  33. vendor/composer/autoload_real.php +7 -7
  34. vendor/composer/autoload_static.php +47 -36
  35. vendor/composer/installed.json +8 -130
  36. vendor/otgs/icons/css/otgs-icons.css +0 -196
  37. vendor/otgs/icons/fonts/otgs-icons.eot +0 -0
  38. vendor/otgs/icons/fonts/otgs-icons.svg +0 -62
  39. vendor/otgs/icons/fonts/otgs-icons.ttf +0 -0
  40. vendor/otgs/icons/fonts/otgs-icons.woff +0 -0
  41. vendor/otgs/icons/icons-overview.html +0 -456
  42. vendor/otgs/icons/otgs-icons.php +0 -20
  43. vendor/otgs/icons/plugin-icons/toolset/access/icon-128x128.png +0 -0
  44. vendor/otgs/icons/plugin-icons/toolset/access/icon-256x256.png +0 -0
  45. vendor/otgs/icons/plugin-icons/toolset/access/icon.svg +0 -25
  46. vendor/otgs/icons/plugin-icons/toolset/bootstrap/icon-128x128.png +0 -0
  47. vendor/otgs/icons/plugin-icons/toolset/bootstrap/icon-256x256.png +0 -0
  48. vendor/otgs/icons/plugin-icons/toolset/bootstrap/icon.svg +0 -25
  49. vendor/otgs/icons/plugin-icons/toolset/cred/icon-128x128.png +0 -0
  50. vendor/otgs/icons/plugin-icons/toolset/cred/icon-256x256.png +0 -0
  51. vendor/otgs/icons/plugin-icons/toolset/cred/icon.svg +0 -24
  52. vendor/otgs/icons/plugin-icons/toolset/layouts/icon-128x128.png +0 -0
  53. vendor/otgs/icons/plugin-icons/toolset/layouts/icon-256x256.png +0 -0
  54. vendor/otgs/icons/plugin-icons/toolset/layouts/icon.svg +0 -24
  55. vendor/otgs/icons/plugin-icons/toolset/module-manager/icon-128x128.png +0 -0
  56. vendor/otgs/icons/plugin-icons/toolset/module-manager/icon-256x256.png +0 -0
  57. vendor/otgs/icons/plugin-icons/toolset/module-manager/icon.svg +0 -24
  58. vendor/otgs/icons/plugin-icons/toolset/packager/icon-128x128.png +0 -0
  59. vendor/otgs/icons/plugin-icons/toolset/packager/icon-256x256.png +0 -0
  60. vendor/otgs/icons/plugin-icons/toolset/packager/icon.svg +0 -26
  61. vendor/otgs/icons/plugin-icons/toolset/ref-sites/icon-128x128.png +0 -0
  62. vendor/otgs/icons/plugin-icons/toolset/ref-sites/icon-256x256.png +0 -0
  63. vendor/otgs/icons/plugin-icons/toolset/ref-sites/icon.svg +0 -25
  64. vendor/otgs/icons/plugin-icons/toolset/support/icon-128x128.png +0 -0
  65. vendor/otgs/icons/plugin-icons/toolset/support/icon-256x256.png +0 -0
  66. vendor/otgs/icons/plugin-icons/toolset/support/icon.svg +0 -24
  67. vendor/otgs/icons/plugin-icons/toolset/toolset-core/icon-128x128.png +0 -0
  68. vendor/otgs/icons/plugin-icons/toolset/toolset-core/icon-256x256.png +0 -0
  69. vendor/otgs/icons/plugin-icons/toolset/toolset-core/icon.svg +0 -62
  70. vendor/otgs/icons/plugin-icons/toolset/types/icon-128x128.png +0 -0
  71. vendor/otgs/icons/plugin-icons/toolset/types/icon-256x256.png +0 -0
  72. vendor/otgs/icons/plugin-icons/toolset/types/icon.svg +0 -24
  73. vendor/otgs/icons/plugin-icons/toolset/views/icon-128x128.png +0 -0
  74. vendor/otgs/icons/plugin-icons/toolset/views/icon-256x256.png +0 -0
  75. vendor/otgs/icons/plugin-icons/toolset/views/icon.svg +0 -27
  76. vendor/otgs/icons/plugin-icons/wpml/acfml/icon-128.x128.png +0 -0
  77. vendor/otgs/icons/plugin-icons/wpml/acfml/icon-256x256.png +0 -0
  78. vendor/otgs/icons/plugin-icons/wpml/acfml/icon.svg +0 -43
  79. vendor/otgs/icons/plugin-icons/wpml/bpml/icon-128x128.png +0 -0
  80. vendor/otgs/icons/plugin-icons/wpml/bpml/icon-256x256.png +0 -0
  81. vendor/otgs/icons/plugin-icons/wpml/bpml/icon.svg +0 -40
  82. vendor/otgs/icons/plugin-icons/wpml/gfml/icon-128x128.png +0 -0
  83. vendor/otgs/icons/plugin-icons/wpml/gfml/icon-256x256.png +0 -0
  84. vendor/otgs/icons/plugin-icons/wpml/gfml/icon.svg +0 -39
  85. vendor/otgs/icons/plugin-icons/wpml/wcml/icon-128x128.png +0 -0
  86. vendor/otgs/icons/plugin-icons/wpml/wcml/icon-256x256.png +0 -0
  87. vendor/otgs/icons/plugin-icons/wpml/wcml/icon.svg +0 -38
  88. vendor/otgs/icons/plugin-icons/wpml/wpml-all-import/icon-128.x128.png +0 -0
  89. vendor/otgs/icons/plugin-icons/wpml/wpml-all-import/icon-256x256.png +0 -0
  90. vendor/otgs/icons/plugin-icons/wpml/wpml-all-import/icon.svg +0 -39
  91. vendor/otgs/icons/plugin-icons/wpml/wpml-cms-nav/icon-128x128.png +0 -0
  92. vendor/otgs/icons/plugin-icons/wpml/wpml-cms-nav/icon-256x256.png +0 -0
  93. vendor/otgs/icons/plugin-icons/wpml/wpml-cms-nav/icon.svg +0 -38
  94. vendor/otgs/icons/plugin-icons/wpml/wpml-core/icon-128x128.png +0 -0
  95. vendor/otgs/icons/plugin-icons/wpml/wpml-core/icon-256x256.png +0 -0
  96. vendor/otgs/icons/plugin-icons/wpml/wpml-core/icon.svg +0 -34
  97. vendor/otgs/icons/plugin-icons/wpml/wpml-media/icon-128x128.png +0 -0
  98. vendor/otgs/icons/plugin-icons/wpml/wpml-media/icon-256x256.png +0 -0
  99. vendor/otgs/icons/plugin-icons/wpml/wpml-media/icon.svg +0 -39
  100. vendor/otgs/icons/plugin-icons/wpml/wpml-sl/icon-128x128.png +0 -0
  101. vendor/otgs/icons/plugin-icons/wpml/wpml-sl/icon-256x256.png +0 -0
  102. vendor/otgs/icons/plugin-icons/wpml/wpml-sl/icon.svg +0 -39
  103. vendor/otgs/icons/plugin-icons/wpml/wpml-st/icon-128x128.png +0 -0
  104. vendor/otgs/icons/plugin-icons/wpml/wpml-st/icon-256x256.png +0 -0
  105. vendor/otgs/icons/plugin-icons/wpml/wpml-st/icon.svg +0 -39
  106. vendor/otgs/icons/plugin-icons/wpml/wpml-tm/icon-128x128.png +0 -0
  107. vendor/otgs/icons/plugin-icons/wpml/wpml-tm/icon-256x256.png +0 -0
  108. vendor/otgs/icons/plugin-icons/wpml/wpml-tm/icon.svg +0 -39
  109. vendor/otgs/installer/README.md +0 -63
  110. vendor/otgs/installer/changelog.txt +0 -188
  111. vendor/otgs/installer/includes/class-installer-dependencies.php +0 -291
  112. vendor/otgs/installer/includes/class-installer-theme.php +0 -979
  113. vendor/otgs/installer/includes/class-installer-upgrader-skins.php +0 -38
  114. vendor/otgs/installer/includes/class-otgs-installer-filename-hooks.php +0 -33
  115. vendor/otgs/installer/includes/class-otgs-installer-icons.php +0 -45
  116. vendor/otgs/installer/includes/class-otgs-installer-php-functions.php +0 -29
  117. vendor/otgs/installer/includes/class-otgs-installer-plugins-page-notice.php +0 -118
  118. vendor/otgs/installer/includes/class-otgs-installer-wp-components-hooks.php +0 -65
  119. vendor/otgs/installer/includes/class-otgs-installer-wp-components-sender.php +0 -47
  120. vendor/otgs/installer/includes/class-otgs-installer-wp-components-setting-ajax.php +0 -46
  121. vendor/otgs/installer/includes/class-otgs-installer-wp-components-setting-resources.php +0 -31
  122. vendor/otgs/installer/includes/class-otgs-installer-wp-components-setting-templates.php +0 -83
  123. vendor/otgs/installer/includes/class-otgs-installer-wp-components-storage.php +0 -74
  124. vendor/otgs/installer/includes/class-otgs-installer-wp-share-local-components-setting.php +0 -27
  125. vendor/otgs/installer/includes/class-translation-service-info.php +0 -40
  126. vendor/otgs/installer/includes/class-wp-installer-api.php +0 -134
  127. vendor/otgs/installer/includes/class-wp-installer-channels.php +0 -282
  128. vendor/otgs/installer/includes/class-wp-installer.php +0 -2776
  129. vendor/otgs/installer/includes/functions-core.php +0 -9
  130. vendor/otgs/installer/includes/functions-templates.php +0 -6
  131. vendor/otgs/installer/installer.php +0 -57
  132. vendor/otgs/installer/loader.php +0 -154
  133. vendor/otgs/installer/locale/installer-ar.mo +0 -0
  134. vendor/otgs/installer/locale/installer-de_DE.mo +0 -0
  135. vendor/otgs/installer/locale/installer-el.mo +0 -0
  136. vendor/otgs/installer/locale/installer-es_ES.mo +0 -0
  137. vendor/otgs/installer/locale/installer-fr_FR.mo +0 -0
  138. vendor/otgs/installer/locale/installer-he_IL.mo +0 -0
  139. vendor/otgs/installer/locale/installer-it_IT.mo +0 -0
  140. vendor/otgs/installer/locale/installer-ja.mo +0 -0
  141. vendor/otgs/installer/locale/installer-ko_KR.mo +0 -0
  142. vendor/otgs/installer/locale/installer-nl_NL.mo +0 -0
  143. vendor/otgs/installer/locale/installer-pl_PL.mo +0 -0
  144. vendor/otgs/installer/locale/installer-pt_BR.mo +0 -0
  145. vendor/otgs/installer/locale/installer-pt_PT.mo +0 -0
  146. vendor/otgs/installer/locale/installer-ru_RU.mo +0 -0
  147. vendor/otgs/installer/locale/installer-sv_SE.mo +0 -0
  148. vendor/otgs/installer/locale/installer-uk_UA.mo +0 -0
  149. vendor/otgs/installer/locale/installer-vi.mo +0 -0
  150. vendor/otgs/installer/locale/installer-zh_CN.mo +0 -0
  151. vendor/otgs/installer/locale/installer-zh_TW.mo +0 -0
  152. vendor/otgs/installer/locale/orig/installer.po +0 -230
  153. vendor/otgs/installer/phpcs.compatibility.xml +0 -19
  154. vendor/otgs/installer/phpcs.xml +0 -17
  155. vendor/otgs/installer/phpunit.xml +0 -24
  156. vendor/otgs/installer/repositories.xml +0 -13
  157. vendor/otgs/installer/res/css/admin.css +0 -339
  158. vendor/otgs/installer/res/css/tooltip/tooltip.css +0 -1
  159. vendor/otgs/installer/res/img/complete.png +0 -0
  160. vendor/otgs/installer/res/img/computer.png +0 -0
  161. vendor/otgs/installer/res/img/dn.gif +0 -0
  162. vendor/otgs/installer/res/img/dn2.gif +0 -0
  163. vendor/otgs/installer/res/img/globe.png +0 -0
  164. vendor/otgs/installer/res/img/icon_error.gif +0 -0
  165. vendor/otgs/installer/res/img/on.png +0 -0
  166. vendor/otgs/installer/res/img/spinner.gif +0 -0
  167. vendor/otgs/installer/res/js/admin.js +0 -463
  168. vendor/otgs/installer/res/js/channels.js +0 -261
  169. vendor/otgs/installer/res/js/iframeResizer.min.js +0 -10
  170. vendor/otgs/installer/res/js/installer_theme_install.js +0 -97
  171. vendor/otgs/installer/res/js/save-components-setting.js +0 -21
  172. vendor/otgs/installer/res/js/tooltip/tooltip.js +0 -82
  173. vendor/otgs/installer/templates/channel-selector.php +0 -68
  174. vendor/otgs/installer/templates/components-setting/commercial-tab.twig +0 -7
  175. vendor/otgs/installer/templates/components-setting/plugins-page.twig +0 -24
  176. vendor/otgs/installer/templates/downloads-list-compact.php +0 -80
  177. vendor/otgs/installer/templates/downloads-list.php +0 -109
  178. vendor/otgs/installer/templates/products-compact.php +0 -147
  179. vendor/otgs/installer/templates/repository-listing.php +0 -243
  180. vendor/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service-loader.php +0 -32
  181. vendor/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service.php +0 -27
  182. vendor/otgs/installer/templates/template-service/interface-iotgs-installer-template-service.php +0 -5
  183. vendor/toolset/toolset-common/autoload_classmap.php +20 -1
  184. vendor/toolset/toolset-common/bootstrap.php +22 -0
  185. vendor/toolset/toolset-common/changelog.md +60 -1
  186. vendor/toolset/toolset-common/classes/validation-cakephp.php +45 -16
  187. vendor/toolset/toolset-common/inc/autoloaded/admin.php +6 -0
  188. vendor/toolset/toolset-common/inc/autoloaded/admin/notices.php +1 -91
  189. vendor/toolset/toolset-common/inc/autoloaded/ajax_handler/migrate_to_m2m.php +64 -7
  190. vendor/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_post_type.php +117 -0
  191. vendor/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php +67 -36
  192. vendor/toolset/toolset-common/inc/autoloaded/element/domain.php +1 -1
  193. vendor/toolset/toolset-common/inc/autoloaded/element/element.php +0 -12
  194. vendor/toolset/toolset-common/inc/autoloaded/element/element_factory.php +1 -0
  195. vendor/toolset/toolset-common/inc/autoloaded/element/i_post.php +0 -7
  196. vendor/toolset/toolset-common/inc/autoloaded/element/post.php +1 -1
  197. vendor/toolset/toolset-common/inc/autoloaded/element/post_translation_set.php +5 -1
  198. vendor/toolset/toolset-common/inc/autoloaded/field/definition_abstract.php +0 -36
  199. vendor/toolset/toolset-common/inc/autoloaded/field/definition_factory.php +0 -6
  200. vendor/toolset/toolset-common/inc/autoloaded/field/definition_factory_interface.php +1 -0
  201. vendor/toolset/toolset-common/inc/autoloaded/field/group.php +13 -0
  202. vendor/toolset/toolset-common/inc/autoloaded/field/group/post.php +1 -2
  203. vendor/toolset/toolset-common/inc/autoloaded/field/group/post_factory.php +1 -0
  204. vendor/toolset/toolset-common/inc/autoloaded/field/renderer/preview/post.php +32 -0
  205. vendor/toolset/toolset-common/inc/autoloaded/field/renderer/toolset_forms_repeatable_group.php +112 -16
  206. vendor/toolset/toolset-common/inc/autoloaded/field/type/definition.php +20 -17
  207. vendor/toolset/toolset-common/inc/autoloaded/field/type/definition_factory.php +5 -4
  208. vendor/toolset/toolset-common/inc/autoloaded/i_query.php +0 -16
  209. vendor/toolset/toolset-common/inc/autoloaded/interop/handler/installer_compatibility_reporting.php +315 -0
  210. vendor/toolset/toolset-common/inc/autoloaded/interop/handler_interface.php +15 -0
  211. vendor/toolset/toolset-common/inc/autoloaded/interop/mediator.php +24 -0
  212. vendor/toolset/toolset-common/inc/autoloaded/maintenance_mode/controller.php +112 -0
  213. vendor/toolset/toolset-common/inc/autoloaded/post_type/abstract.php +13 -6
  214. vendor/toolset/toolset-common/inc/autoloaded/post_type/excluded_list.php +11 -10
  215. vendor/toolset/toolset-common/inc/autoloaded/post_type/from_types.php +14 -1
  216. vendor/toolset/toolset-common/inc/autoloaded/post_type/i_post_type.php +2 -2
  217. vendor/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_from_types.php +14 -0
  218. vendor/toolset/toolset-common/inc/autoloaded/post_type/list.php +25 -0
  219. vendor/toolset/toolset-common/inc/autoloaded/post_type/repository.php +43 -1
  220. vendor/toolset/toolset-common/inc/autoloaded/postmeta_access/loader.php +23 -0
  221. vendor/toolset/toolset-common/inc/autoloaded/postmeta_access/m2m.php +348 -0
  222. vendor/toolset/toolset-common/inc/autoloaded/relationship_service.php +192 -71
  223. vendor/toolset/toolset-common/inc/autoloaded/renderer/output_template_repository.php +26 -6
  224. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/base.php +160 -0
  225. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/factory.php +106 -0
  226. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/m2m.php +474 -0
  227. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2m.php +96 -0
  228. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2o.php +83 -0
  229. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/option.php +186 -0
  230. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/legacy.php +33 -0
  231. vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/m2m.php +148 -5
  232. vendor/toolset/toolset-common/inc/autoloaded/upgrade/command/delete_obsolete_version_number_option.php +26 -0
  233. vendor/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php +97 -26
  234. vendor/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v2_database_structure_upgrade.php +118 -0
  235. vendor/toolset/toolset-common/inc/autoloaded/upgrade/command_definition.php +1 -1
  236. vendor/toolset/toolset-common/inc/autoloaded/upgrade/command_definition_repository.php +22 -4
  237. vendor/toolset/toolset-common/inc/autoloaded/upgrade/command_interface.php +2 -0
  238. vendor/toolset/toolset-common/inc/autoloaded/upgrade/controller.php +65 -18
  239. vendor/toolset/toolset-common/inc/autoloaded/upgrade/executed_commands.php +6 -0
  240. vendor/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/abstract.php +7 -1
  241. vendor/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/m2m.php +316 -10
  242. vendor/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/table_join_manager.php +97 -29
  243. vendor/toolset/toolset-common/inc/m2m/association/Repository.php +193 -0
  244. vendor/toolset/toolset-common/inc/m2m/association/association.php +18 -48
  245. vendor/toolset/toolset-common/inc/m2m/association/cleanup/cron_handler.php +0 -3
  246. vendor/toolset/toolset-common/inc/m2m/association/cleanup/post.php +10 -1
  247. vendor/toolset/toolset-common/inc/m2m/association/cleanup/post_type.php +75 -0
  248. vendor/toolset/toolset-common/inc/m2m/association/intermediary_post_persistence.php +27 -0
  249. vendor/toolset/toolset-common/inc/m2m/association/persistence.php +62 -0
  250. vendor/toolset/toolset-common/inc/m2m/association/query/association_query.php +7 -0
  251. vendor/toolset/toolset-common/inc/m2m/association/query/association_query_v2.php +152 -5
  252. vendor/toolset/toolset-common/inc/m2m/association/query/condition/exclude_relationship.php +21 -0
  253. vendor/toolset/toolset-common/inc/m2m/association/query/condition/has_intermediary_id.php +20 -0
  254. vendor/toolset/toolset-common/inc/m2m/association/query/condition/intermediary_id.php +41 -0
  255. vendor/toolset/toolset-common/inc/m2m/association/query/condition/relationship_id.php +12 -2
  256. vendor/toolset/toolset-common/inc/m2m/association/query/condition/relationship_origin.php +45 -0
  257. vendor/toolset/toolset-common/inc/m2m/association/query/condition_factory.php +33 -2
application/autoload_classmap.php CHANGED
@@ -134,6 +134,7 @@ return array(
134
  'Types_Twig_Autoloader' => dirname( __FILE__ ) . '/controllers/twig_autoloader.php',
135
  'Types_Upgrade' => dirname( __FILE__ ) . '/controllers/upgrade.php',
136
  'Types_Utils' => dirname( __FILE__ ) . '/controllers/admin_notice/utils.php',
 
137
  'Types_Utils_Post_Type_Option' => dirname( __FILE__ ) . '/controllers/utils/post_type_option.php',
138
  'Types_Wpml_Field_Group' => dirname( __FILE__ ) . '/models/wpml/field_group.php',
139
  'Types_Wpml_Field_Group_String_Description' => dirname( __FILE__ ) . '/models/wpml/field/group/string/description.php',
134
  'Types_Twig_Autoloader' => dirname( __FILE__ ) . '/controllers/twig_autoloader.php',
135
  'Types_Upgrade' => dirname( __FILE__ ) . '/controllers/upgrade.php',
136
  'Types_Utils' => dirname( __FILE__ ) . '/controllers/admin_notice/utils.php',
137
+ 'Types_Admin_Notices_Free_Version' => dirname( __FILE__ ) . '/controllers/admin_notice/free-version.php',
138
  'Types_Utils_Post_Type_Option' => dirname( __FILE__ ) . '/controllers/utils/post_type_option.php',
139
  'Types_Wpml_Field_Group' => dirname( __FILE__ ) . '/models/wpml/field_group.php',
140
  'Types_Wpml_Field_Group_String_Description' => dirname( __FILE__ ) . '/models/wpml/field/group/string/description.php',
application/bootstrap.php CHANGED
@@ -33,23 +33,6 @@ if ( !defined( 'EDITOR_ADDON_RELPATH' ) ) {
33
  define( 'EDITOR_ADDON_RELPATH', WPCF_EMBEDDED_TOOLSET_RELPATH . '/toolset-common/visual-editor' );
34
  }
35
 
36
- // installer
37
- $installer = TYPES_ABSPATH . '/vendor/otgs/installer/loader.php';
38
- if ( file_exists( $installer ) ) {
39
- /** @noinspection PhpIncludeInspection */
40
- include_once $installer;
41
- if ( function_exists( 'WP_Installer_Setup' ) ) {
42
- WP_Installer_Setup(
43
- $wp_installer_instance,
44
- array(
45
- 'plugins_install_tab' => '1',
46
- 'repositories_include' => array('toolset', 'wpml'),
47
- 'high_priority' => '0',
48
- )
49
- );
50
- }
51
- }
52
-
53
 
54
  // Get new functions.php
55
  require_once( dirname( __FILE__ ) . '/functions.php' );
33
  define( 'EDITOR_ADDON_RELPATH', WPCF_EMBEDDED_TOOLSET_RELPATH . '/toolset-common/visual-editor' );
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
  // Get new functions.php
38
  require_once( dirname( __FILE__ ) . '/functions.php' );
application/controllers/admin.php CHANGED
@@ -41,6 +41,9 @@ final class Types_Admin {
41
  }
42
 
43
  $this->init_page_extensions();
 
 
 
44
  }
45
 
46
 
41
  }
42
 
43
  $this->init_page_extensions();
44
+
45
+ // admin notices
46
+ Toolset_Singleton_Factory::get( 'Types_Admin_Notices_Free_Version' );
47
  }
48
 
49
 
application/controllers/admin_notice/free-version.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class Types_Admin_Notices_Free_Version
5
+ *
6
+ * Controls all admin notices which are only relevant for the free version of Types
7
+ *
8
+ * @since 2.3
9
+ */
10
+ class Types_Admin_Notices_Free_Version extends Toolset_Controller_Admin_Notices {
11
+
12
+ const NOTICE_TYPES_3_0 = 'types-3-0-features';
13
+ const NOTICE_TYPES_3_1 = 'types-3-1-features';
14
+
15
+ /**
16
+ * Types_Admin_Notices_Free_Version constructor.
17
+ * (same as parent, but as we use $this to call the action it's important to overwrite it)
18
+ *
19
+ * @param Toolset_Constants|null $constants
20
+ */
21
+ public function __construct( Toolset_Constants $constants = null ) {
22
+ if ( null === $constants ) {
23
+ $constants = new Toolset_Constants();
24
+ }
25
+ $this->constants = $constants;
26
+
27
+ add_action( 'init', array( $this, 'init' ), 1000 );
28
+ }
29
+
30
+ /**
31
+ * Init notices by screen
32
+ */
33
+ public function init_screens() {
34
+ if( ! function_exists( 'get_current_screen' ) ) {
35
+ // loaded to early
36
+ return;
37
+ }
38
+
39
+ $this->current_screen = get_current_screen();
40
+
41
+ $this->screen_wordpress_dashboard();
42
+ }
43
+
44
+ /**
45
+ * Notices for the Wordpress Dashboard Page
46
+ */
47
+ protected function screen_wordpress_dashboard() {
48
+ if( $this->get_current_screen_id() != 'dashboard' ) {
49
+ return;
50
+ }
51
+
52
+ $this->new_features_of_paid_types();
53
+ }
54
+
55
+ /**
56
+ * New feature of paid types
57
+ * Will only show notices if only types is active
58
+ */
59
+ private function new_features_of_paid_types() {
60
+ if( ! $this->only_types_active() ) {
61
+ // not only types active
62
+ return;
63
+ }
64
+
65
+ // new features of paid types (here should only be the newest version,
66
+ // otherwise new clients or old on new installations see all release notices)
67
+ $this->notice_types_release_3_0();
68
+ }
69
+
70
+ /**
71
+ * Notice about Types 3.0 features
72
+ *
73
+ * @return bool|Toolset_Admin_Notice_Dismissible
74
+ */
75
+ private function notice_types_release_3_0() {
76
+ $notice = new Toolset_Admin_Notice_Dismissible( self::NOTICE_TYPES_3_0, '', $this->constants );
77
+ $notice->set_similar_notices_key( Toolset_Admin_Notices_Manager::SIMILAR_NOTICES_FREE_PLUGIN_SHOWS_PAID_FEATURES );
78
+ $notice->set_content( TYPES_ABSPATH . '/application/views/admin-notices/free-version/types-3-0.phtml' );
79
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
80
+
81
+ return $notice;
82
+ }
83
+
84
+ /**
85
+ * Notice about Types 3.1 features
86
+ *
87
+ * NOT USED YET - ADDED FOR TESTING AND KEPT IT FOR NEXT RELEASE
88
+ *
89
+ * @return bool|Toolset_Admin_Notice_Dismissible
90
+ */
91
+ private function notice_types_release_3_1() {
92
+ $notice = new Toolset_Admin_Notice_Dismissible( self::NOTICE_TYPES_3_1, '', $this->constants );
93
+ $notice->set_similar_notices_key( Toolset_Admin_Notices_Manager::SIMILAR_NOTICES_FREE_PLUGIN_SHOWS_PAID_FEATURES );
94
+ $notice->set_content( TYPES_ABSPATH . '/application/views/admin-notices/free-version/types-3-1.phtml' );
95
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
96
+
97
+ return $notice;
98
+ }
99
+ }
application/views/admin-notices/free-version/types-3-0.phtml ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="toolset-notice-wp-no-external-link-highlighting">
2
+ <h3>
3
+ <?php _e( 'A major new release of Types is available', 'wpcf' ); ?>
4
+ </h3>
5
+
6
+ <p class="toolset-list-title">
7
+ <?php _e( 'Types 3.0, released on 28th May 2018, includes major new features that will help you build advanced sites faster and easier.' , 'wpcf' ); ?>
8
+ </p>
9
+
10
+
11
+ <ul class="toolset-list">
12
+ <li>
13
+ <?php
14
+ echo Toolset_Admin_Notices_Manager::tpl_link(
15
+ __( 'Repeatable field groups', 'wpcf' ),
16
+ 'https://toolset.com/documentation/getting-started-with-toolset/creating-and-displaying-repeatable-field-groups/' .
17
+ '?utm_source=typesplugin' .
18
+ '&utm_campaign=moving-types-to-toolset' .
19
+ '&utm_medium=message-about-types-3-0' .
20
+ '&utm_term=repeatable-field-groups',
21
+ true
22
+ );
23
+ ?>
24
+ </li>
25
+ <li>
26
+ <?php
27
+ echo Toolset_Admin_Notices_Manager::tpl_link(
28
+ __( 'Post reference fields', 'wpcf' ),
29
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/using-post-reference-fields-to-display-information-from-a-related-post/' .
30
+ '?utm_source=typesplugin' .
31
+ '&utm_campaign=moving-types-to-toolset' .
32
+ '&utm_medium=message-about-types-3-0' .
33
+ '&utm_term=post-reference-fields',
34
+ true
35
+ );
36
+ ?>
37
+ </li>
38
+ <li>
39
+ <?php
40
+ echo Toolset_Admin_Notices_Manager::tpl_link(
41
+ __( 'Many-to-many relationships', 'wpcf' ),
42
+ 'https://toolset.com/documentation/post-relationships/' .
43
+ '?utm_source=typesplugin' .
44
+ '&utm_campaign=moving-types-to-toolset' .
45
+ '&utm_medium=message-about-types-3-0' .
46
+ '&utm_term=many-to-many-relationships',
47
+ true
48
+ );
49
+ ?>
50
+ </li>
51
+ </ul>
52
+
53
+
54
+ <p>
55
+ <?php _e( 'This release is part of the paid Toolset package. It costs some money, but worth every penny (if you’re not 100% happy, you get your money back).', 'wpcf' ); ?>
56
+ </p>
57
+
58
+ <p>
59
+ <?php
60
+ echo Toolset_Admin_Notices_Manager::tpl_link(
61
+ __( 'Learn what’s new', 'wpcf' ),
62
+ 'https://toolset.com/2018/05/toolset-post-relationships-release/' .
63
+ '?utm_source=typesplugin' .
64
+ '&utm_campaign=moving-types-to-toolset' .
65
+ '&utm_medium=message-about-types-3-0' .
66
+ '&utm_term=learn-whats-new',
67
+ true
68
+ );
69
+ ?>
70
+
71
+ &nbsp;
72
+
73
+ <?php
74
+ echo Toolset_Admin_Notices_Manager::tpl_link(
75
+ __( 'Pricing', 'wpcf' ),
76
+ 'https://toolset.com/buy/' .
77
+ '?utm_source=typesplugin' .
78
+ '&utm_campaign=moving-types-to-toolset' .
79
+ '&utm_medium=message-about-types-3-0' .
80
+ '&utm_term=pricing',
81
+ true
82
+ );
83
+ ?>
84
+ </p>
85
+
86
+ <p>
87
+ <input type="checkbox" id="free-plugin-offers" name="dismiss-similar-notices[]" value="<?php echo Toolset_Admin_Notices_Manager::SIMILAR_NOTICES_FREE_PLUGIN_SHOWS_PAID_FEATURES; ?>" />
88
+ <label for="free-plugin-offers"><?php _e( 'Don’t show similar offers again', 'wpcf' ); ?></label>
89
+ </p>
90
+
91
+ <p>
92
+ <span data-toolset-dismissible="<?php echo Types_Admin_Notices_Free_Version::NOTICE_TYPES_3_0; ?>"
93
+ class="toolset-button toolset-button-primary"><?php _e( 'Got it', 'wpcf' ); ?></span>
94
+ </p>
95
+ </div>
application/views/admin-notices/free-version/types-3-1.phtml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php /* not used for production yet */ ?>
2
+ <h3>
3
+ <?php _e( 'A major new release of Types is available', 'wpcf' ); ?>
4
+ </h3>
5
+
6
+ <p class="toolset-list-title">
7
+ <?php _e( 'Types 3.1, released on ...' , 'wpcf' ); ?>
8
+ </p>
9
+
10
+ <p>
11
+ <input type="checkbox" id="free-plugin-offers" name="dismiss-similar-notices[]" value="<?php echo Toolset_Admin_Notices_Manager::SIMILAR_NOTICES_FREE_PLUGIN_SHOWS_PAID_FEATURES; ?>" />
12
+ <label for="free-plugin-offers"><?php _e( 'Don’t show similar offers again', 'wpcf' ); ?></label>
13
+ </p>
14
+
15
+ <p>
16
+ <span data-toolset-dismissible="<?php echo Types_Admin_Notices_Free_Version::NOTICE_TYPES_3_1; ?>"
17
+ class="toolset-button toolset-button-primary"><?php _e( 'Got it', 'wpcf' ); ?></span>
18
+ </p>
package-lock.json ADDED
@@ -0,0 +1,2265 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "otgs-ci",
3
+ "requires": true,
4
+ "lockfileVersion": 1,
5
+ "dependencies": {
6
+ "ansi-gray": {
7
+ "version": "0.1.1",
8
+ "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
9
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
10
+ "requires": {
11
+ "ansi-wrap": "0.1.0"
12
+ }
13
+ },
14
+ "ansi-regex": {
15
+ "version": "2.1.1",
16
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
17
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
18
+ },
19
+ "ansi-styles": {
20
+ "version": "2.2.1",
21
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
22
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
23
+ },
24
+ "ansi-wrap": {
25
+ "version": "0.1.0",
26
+ "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz",
27
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
28
+ },
29
+ "archy": {
30
+ "version": "1.0.0",
31
+ "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz",
32
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
33
+ },
34
+ "arr-diff": {
35
+ "version": "4.0.0",
36
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
37
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
38
+ },
39
+ "arr-flatten": {
40
+ "version": "1.1.0",
41
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
42
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
43
+ },
44
+ "arr-union": {
45
+ "version": "3.1.0",
46
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
47
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
48
+ },
49
+ "array-differ": {
50
+ "version": "1.0.0",
51
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
52
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE="
53
+ },
54
+ "array-each": {
55
+ "version": "1.0.1",
56
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
57
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8="
58
+ },
59
+ "array-slice": {
60
+ "version": "1.1.0",
61
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
62
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w=="
63
+ },
64
+ "array-union": {
65
+ "version": "1.0.2",
66
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
67
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
68
+ "dev": true,
69
+ "requires": {
70
+ "array-uniq": "1.0.3"
71
+ }
72
+ },
73
+ "array-uniq": {
74
+ "version": "1.0.3",
75
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
76
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
77
+ },
78
+ "array-unique": {
79
+ "version": "0.3.2",
80
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
81
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
82
+ },
83
+ "arrify": {
84
+ "version": "1.0.1",
85
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
86
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
87
+ "dev": true
88
+ },
89
+ "assign-symbols": {
90
+ "version": "1.0.0",
91
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
92
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
93
+ },
94
+ "atob": {
95
+ "version": "2.1.1",
96
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
97
+ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio="
98
+ },
99
+ "balanced-match": {
100
+ "version": "1.0.0",
101
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
102
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
103
+ },
104
+ "base": {
105
+ "version": "0.11.2",
106
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
107
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
108
+ "requires": {
109
+ "cache-base": "1.0.1",
110
+ "class-utils": "0.3.6",
111
+ "component-emitter": "1.2.1",
112
+ "define-property": "1.0.0",
113
+ "isobject": "3.0.1",
114
+ "mixin-deep": "1.3.1",
115
+ "pascalcase": "0.1.1"
116
+ },
117
+ "dependencies": {
118
+ "define-property": {
119
+ "version": "1.0.0",
120
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
121
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
122
+ "requires": {
123
+ "is-descriptor": "1.0.2"
124
+ }
125
+ },
126
+ "is-accessor-descriptor": {
127
+ "version": "1.0.0",
128
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
129
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
130
+ "requires": {
131
+ "kind-of": "6.0.2"
132
+ }
133
+ },
134
+ "is-data-descriptor": {
135
+ "version": "1.0.0",
136
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
137
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
138
+ "requires": {
139
+ "kind-of": "6.0.2"
140
+ }
141
+ },
142
+ "is-descriptor": {
143
+ "version": "1.0.2",
144
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
145
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
146
+ "requires": {
147
+ "is-accessor-descriptor": "1.0.0",
148
+ "is-data-descriptor": "1.0.0",
149
+ "kind-of": "6.0.2"
150
+ }
151
+ }
152
+ }
153
+ },
154
+ "beeper": {
155
+ "version": "1.1.1",
156
+ "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
157
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak="
158
+ },
159
+ "brace-expansion": {
160
+ "version": "1.1.11",
161
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
162
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
163
+ "requires": {
164
+ "balanced-match": "1.0.0",
165
+ "concat-map": "0.0.1"
166
+ }
167
+ },
168
+ "braces": {
169
+ "version": "2.3.2",
170
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
171
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
172
+ "requires": {
173
+ "arr-flatten": "1.1.0",
174
+ "array-unique": "0.3.2",
175
+ "extend-shallow": "2.0.1",
176
+ "fill-range": "4.0.0",
177
+ "isobject": "3.0.1",
178
+ "repeat-element": "1.1.2",
179
+ "snapdragon": "0.8.2",
180
+ "snapdragon-node": "2.1.1",
181
+ "split-string": "3.1.0",
182
+ "to-regex": "3.0.2"
183
+ },
184
+ "dependencies": {
185
+ "extend-shallow": {
186
+ "version": "2.0.1",
187
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
188
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
189
+ "requires": {
190
+ "is-extendable": "0.1.1"
191
+ }
192
+ }
193
+ }
194
+ },
195
+ "cache-base": {
196
+ "version": "1.0.1",
197
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
198
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
199
+ "requires": {
200
+ "collection-visit": "1.0.0",
201
+ "component-emitter": "1.2.1",
202
+ "get-value": "2.0.6",
203
+ "has-value": "1.0.0",
204
+ "isobject": "3.0.1",
205
+ "set-value": "2.0.0",
206
+ "to-object-path": "0.3.0",
207
+ "union-value": "1.0.0",
208
+ "unset-value": "1.0.0"
209
+ }
210
+ },
211
+ "chalk": {
212
+ "version": "1.1.3",
213
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
214
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
215
+ "requires": {
216
+ "ansi-styles": "2.2.1",
217
+ "escape-string-regexp": "1.0.5",
218
+ "has-ansi": "2.0.0",
219
+ "strip-ansi": "3.0.1",
220
+ "supports-color": "2.0.0"
221
+ }
222
+ },
223
+ "class-utils": {
224
+ "version": "0.3.6",
225
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
226
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
227
+ "requires": {
228
+ "arr-union": "3.1.0",
229
+ "define-property": "0.2.5",
230
+ "isobject": "3.0.1",
231
+ "static-extend": "0.1.2"
232
+ },
233
+ "dependencies": {
234
+ "define-property": {
235
+ "version": "0.2.5",
236
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
237
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
238
+ "requires": {
239
+ "is-descriptor": "0.1.6"
240
+ }
241
+ }
242
+ }
243
+ },
244
+ "clone": {
245
+ "version": "1.0.4",
246
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
247
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
248
+ },
249
+ "clone-stats": {
250
+ "version": "0.0.1",
251
+ "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
252
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE="
253
+ },
254
+ "collection-visit": {
255
+ "version": "1.0.0",
256
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
257
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
258
+ "requires": {
259
+ "map-visit": "1.0.0",
260
+ "object-visit": "1.0.1"
261
+ }
262
+ },
263
+ "color-support": {
264
+ "version": "1.1.3",
265
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
266
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
267
+ },
268
+ "component-emitter": {
269
+ "version": "1.2.1",
270
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
271
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY="
272
+ },
273
+ "concat-map": {
274
+ "version": "0.0.1",
275
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
276
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
277
+ },
278
+ "copy-descriptor": {
279
+ "version": "0.1.1",
280
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
281
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
282
+ },
283
+ "core-util-is": {
284
+ "version": "1.0.2",
285
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
286
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
287
+ },
288
+ "dateformat": {
289
+ "version": "2.2.0",
290
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
291
+ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI="
292
+ },
293
+ "debug": {
294
+ "version": "2.6.9",
295
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
296
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
297
+ "requires": {
298
+ "ms": "2.0.0"
299
+ }
300
+ },
301
+ "decode-uri-component": {
302
+ "version": "0.2.0",
303
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
304
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
305
+ },
306
+ "defaults": {
307
+ "version": "1.0.3",
308
+ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
309
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
310
+ "requires": {
311
+ "clone": "1.0.4"
312
+ }
313
+ },
314
+ "define-property": {
315
+ "version": "2.0.2",
316
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
317
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
318
+ "requires": {
319
+ "is-descriptor": "1.0.2",
320
+ "isobject": "3.0.1"
321
+ },
322
+ "dependencies": {
323
+ "is-accessor-descriptor": {
324
+ "version": "1.0.0",
325
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
326
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
327
+ "requires": {
328
+ "kind-of": "6.0.2"
329
+ }
330
+ },
331
+ "is-data-descriptor": {
332
+ "version": "1.0.0",
333
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
334
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
335
+ "requires": {
336
+ "kind-of": "6.0.2"
337
+ }
338
+ },
339
+ "is-descriptor": {
340
+ "version": "1.0.2",
341
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
342
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
343
+ "requires": {
344
+ "is-accessor-descriptor": "1.0.0",
345
+ "is-data-descriptor": "1.0.0",
346
+ "kind-of": "6.0.2"
347
+ }
348
+ }
349
+ }
350
+ },
351
+ "del": {
352
+ "version": "2.2.2",
353
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
354
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
355
+ "dev": true,
356
+ "requires": {
357
+ "globby": "5.0.0",
358
+ "is-path-cwd": "1.0.0",
359
+ "is-path-in-cwd": "1.0.1",
360
+ "object-assign": "4.1.1",
361
+ "pify": "2.3.0",
362
+ "pinkie-promise": "2.0.1",
363
+ "rimraf": "2.6.2"
364
+ },
365
+ "dependencies": {
366
+ "object-assign": {
367
+ "version": "4.1.1",
368
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
369
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
370
+ "dev": true
371
+ }
372
+ }
373
+ },
374
+ "deprecated": {
375
+ "version": "0.0.1",
376
+ "resolved": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz",
377
+ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk="
378
+ },
379
+ "detect-file": {
380
+ "version": "1.0.0",
381
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
382
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc="
383
+ },
384
+ "duplexer2": {
385
+ "version": "0.0.2",
386
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
387
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
388
+ "requires": {
389
+ "readable-stream": "1.1.14"
390
+ }
391
+ },
392
+ "end-of-stream": {
393
+ "version": "0.1.5",
394
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz",
395
+ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
396
+ "requires": {
397
+ "once": "1.3.3"
398
+ }
399
+ },
400
+ "escape-string-regexp": {
401
+ "version": "1.0.5",
402
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
403
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
404
+ },
405
+ "expand-brackets": {
406
+ "version": "2.1.4",
407
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
408
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
409
+ "requires": {
410
+ "debug": "2.6.9",
411
+ "define-property": "0.2.5",
412
+ "extend-shallow": "2.0.1",
413
+ "posix-character-classes": "0.1.1",
414
+ "regex-not": "1.0.2",
415
+ "snapdragon": "0.8.2",
416
+ "to-regex": "3.0.2"
417
+ },
418
+ "dependencies": {
419
+ "define-property": {
420
+ "version": "0.2.5",
421
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
422
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
423
+ "requires": {
424
+ "is-descriptor": "0.1.6"
425
+ }
426
+ },
427
+ "extend-shallow": {
428
+ "version": "2.0.1",
429
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
430
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
431
+ "requires": {
432
+ "is-extendable": "0.1.1"
433
+ }
434
+ }
435
+ }
436
+ },
437
+ "expand-tilde": {
438
+ "version": "2.0.2",
439
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
440
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
441
+ "requires": {
442
+ "homedir-polyfill": "1.0.1"
443
+ }
444
+ },
445
+ "extend": {
446
+ "version": "3.0.1",
447
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
448
+ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
449
+ },
450
+ "extend-shallow": {
451
+ "version": "3.0.2",
452
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
453
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
454
+ "requires": {
455
+ "assign-symbols": "1.0.0",
456
+ "is-extendable": "1.0.1"
457
+ },
458
+ "dependencies": {
459
+ "is-extendable": {
460
+ "version": "1.0.1",
461
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
462
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
463
+ "requires": {
464
+ "is-plain-object": "2.0.4"
465
+ }
466
+ }
467
+ }
468
+ },
469
+ "extglob": {
470
+ "version": "2.0.4",
471
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
472
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
473
+ "requires": {
474
+ "array-unique": "0.3.2",
475
+ "define-property": "1.0.0",
476
+ "expand-brackets": "2.1.4",
477
+ "extend-shallow": "2.0.1",
478
+ "fragment-cache": "0.2.1",
479
+ "regex-not": "1.0.2",
480
+ "snapdragon": "0.8.2",
481
+ "to-regex": "3.0.2"
482
+ },
483
+ "dependencies": {
484
+ "define-property": {
485
+ "version": "1.0.0",
486
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
487
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
488
+ "requires": {
489
+ "is-descriptor": "1.0.2"
490
+ }
491
+ },
492
+ "extend-shallow": {
493
+ "version": "2.0.1",
494
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
495
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
496
+ "requires": {
497
+ "is-extendable": "0.1.1"
498
+ }
499
+ },
500
+ "is-accessor-descriptor": {
501
+ "version": "1.0.0",
502
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
503
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
504
+ "requires": {
505
+ "kind-of": "6.0.2"
506
+ }
507
+ },
508
+ "is-data-descriptor": {
509
+ "version": "1.0.0",
510
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
511
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
512
+ "requires": {
513
+ "kind-of": "6.0.2"
514
+ }
515
+ },
516
+ "is-descriptor": {
517
+ "version": "1.0.2",
518
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
519
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
520
+ "requires": {
521
+ "is-accessor-descriptor": "1.0.0",
522
+ "is-data-descriptor": "1.0.0",
523
+ "kind-of": "6.0.2"
524
+ }
525
+ }
526
+ }
527
+ },
528
+ "fancy-log": {
529
+ "version": "1.3.2",
530
+ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.2.tgz",
531
+ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
532
+ "requires": {
533
+ "ansi-gray": "0.1.1",
534
+ "color-support": "1.1.3",
535
+ "time-stamp": "1.1.0"
536
+ }
537
+ },
538
+ "fill-range": {
539
+ "version": "4.0.0",
540
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
541
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
542
+ "requires": {
543
+ "extend-shallow": "2.0.1",
544
+ "is-number": "3.0.0",
545
+ "repeat-string": "1.6.1",
546
+ "to-regex-range": "2.1.1"
547
+ },
548
+ "dependencies": {
549
+ "extend-shallow": {
550
+ "version": "2.0.1",
551
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
552
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
553
+ "requires": {
554
+ "is-extendable": "0.1.1"
555
+ }
556
+ }
557
+ }
558
+ },
559
+ "find-index": {
560
+ "version": "0.1.1",
561
+ "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz",
562
+ "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ="
563
+ },
564
+ "findup-sync": {
565
+ "version": "2.0.0",
566
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
567
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
568
+ "requires": {
569
+ "detect-file": "1.0.0",
570
+ "is-glob": "3.1.0",
571
+ "micromatch": "3.1.10",
572
+ "resolve-dir": "1.0.1"
573
+ }
574
+ },
575
+ "fined": {
576
+ "version": "1.1.0",
577
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz",
578
+ "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=",
579
+ "requires": {
580
+ "expand-tilde": "2.0.2",
581
+ "is-plain-object": "2.0.4",
582
+ "object.defaults": "1.1.0",
583
+ "object.pick": "1.3.0",
584
+ "parse-filepath": "1.0.2"
585
+ }
586
+ },
587
+ "first-chunk-stream": {
588
+ "version": "1.0.0",
589
+ "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz",
590
+ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04="
591
+ },
592
+ "flagged-respawn": {
593
+ "version": "1.0.0",
594
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.0.tgz",
595
+ "integrity": "sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c="
596
+ },
597
+ "for-in": {
598
+ "version": "1.0.2",
599
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
600
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
601
+ },
602
+ "for-own": {
603
+ "version": "1.0.0",
604
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
605
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
606
+ "requires": {
607
+ "for-in": "1.0.2"
608
+ }
609
+ },
610
+ "fragment-cache": {
611
+ "version": "0.2.1",
612
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
613
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
614
+ "requires": {
615
+ "map-cache": "0.2.2"
616
+ }
617
+ },
618
+ "fs.realpath": {
619
+ "version": "1.0.0",
620
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
621
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
622
+ "dev": true
623
+ },
624
+ "gaze": {
625
+ "version": "0.5.2",
626
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz",
627
+ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
628
+ "requires": {
629
+ "globule": "0.1.0"
630
+ }
631
+ },
632
+ "get-value": {
633
+ "version": "2.0.6",
634
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
635
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
636
+ },
637
+ "glob": {
638
+ "version": "4.5.3",
639
+ "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz",
640
+ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
641
+ "requires": {
642
+ "inflight": "1.0.6",
643
+ "inherits": "2.0.3",
644
+ "minimatch": "2.0.10",
645
+ "once": "1.3.3"
646
+ }
647
+ },
648
+ "glob-stream": {
649
+ "version": "3.1.18",
650
+ "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz",
651
+ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
652
+ "requires": {
653
+ "glob": "4.5.3",
654
+ "glob2base": "0.0.12",
655
+ "minimatch": "2.0.10",
656
+ "ordered-read-streams": "0.1.0",
657
+ "through2": "0.6.5",
658
+ "unique-stream": "1.0.0"
659
+ },
660
+ "dependencies": {
661
+ "readable-stream": {
662
+ "version": "1.0.34",
663
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
664
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
665
+ "requires": {
666
+ "core-util-is": "1.0.2",
667
+ "inherits": "2.0.3",
668
+ "isarray": "0.0.1",
669
+ "string_decoder": "0.10.31"
670
+ }
671
+ },
672
+ "through2": {
673
+ "version": "0.6.5",
674
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
675
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
676
+ "requires": {
677
+ "readable-stream": "1.0.34",
678
+ "xtend": "4.0.1"
679
+ }
680
+ }
681
+ }
682
+ },
683
+ "glob-watcher": {
684
+ "version": "0.0.6",
685
+ "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz",
686
+ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
687
+ "requires": {
688
+ "gaze": "0.5.2"
689
+ }
690
+ },
691
+ "glob2base": {
692
+ "version": "0.0.12",
693
+ "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz",
694
+ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
695
+ "requires": {
696
+ "find-index": "0.1.1"
697
+ }
698
+ },
699
+ "global-modules": {
700
+ "version": "1.0.0",
701
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
702
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
703
+ "requires": {
704
+ "global-prefix": "1.0.2",
705
+ "is-windows": "1.0.2",
706
+ "resolve-dir": "1.0.1"
707
+ }
708
+ },
709
+ "global-prefix": {
710
+ "version": "1.0.2",
711
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
712
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
713
+ "requires": {
714
+ "expand-tilde": "2.0.2",
715
+ "homedir-polyfill": "1.0.1",
716
+ "ini": "1.3.5",
717
+ "is-windows": "1.0.2",
718
+ "which": "1.3.1"
719
+ }
720
+ },
721
+ "globby": {
722
+ "version": "5.0.0",
723
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
724
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
725
+ "dev": true,
726
+ "requires": {
727
+ "array-union": "1.0.2",
728
+ "arrify": "1.0.1",
729
+ "glob": "7.1.2",
730
+ "object-assign": "4.1.1",
731
+ "pify": "2.3.0",
732
+ "pinkie-promise": "2.0.1"
733
+ },
734
+ "dependencies": {
735
+ "glob": {
736
+ "version": "7.1.2",
737
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
738
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
739
+ "dev": true,
740
+ "requires": {
741
+ "fs.realpath": "1.0.0",
742
+ "inflight": "1.0.6",
743
+ "inherits": "2.0.3",
744
+ "minimatch": "3.0.4",
745
+ "once": "1.3.3",
746
+ "path-is-absolute": "1.0.1"
747
+ }
748
+ },
749
+ "minimatch": {
750
+ "version": "3.0.4",
751
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
752
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
753
+ "dev": true,
754
+ "requires": {
755
+ "brace-expansion": "1.1.11"
756
+ }
757
+ },
758
+ "object-assign": {
759
+ "version": "4.1.1",
760
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
761
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
762
+ "dev": true
763
+ }
764
+ }
765
+ },
766
+ "globule": {
767
+ "version": "0.1.0",
768
+ "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
769
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
770
+ "requires": {
771
+ "glob": "3.1.21",
772
+ "lodash": "1.0.2",
773
+ "minimatch": "0.2.14"
774
+ },
775
+ "dependencies": {
776
+ "glob": {
777
+ "version": "3.1.21",
778
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
779
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
780
+ "requires": {
781
+ "graceful-fs": "1.2.3",
782
+ "inherits": "1.0.2",
783
+ "minimatch": "0.2.14"
784
+ }
785
+ },
786
+ "graceful-fs": {
787
+ "version": "1.2.3",
788
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
789
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q="
790
+ },
791
+ "inherits": {
792
+ "version": "1.0.2",
793
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
794
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js="
795
+ },
796
+ "minimatch": {
797
+ "version": "0.2.14",
798
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
799
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
800
+ "requires": {
801
+ "lru-cache": "2.7.3",
802
+ "sigmund": "1.0.1"
803
+ }
804
+ }
805
+ }
806
+ },
807
+ "glogg": {
808
+ "version": "1.0.1",
809
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
810
+ "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==",
811
+ "requires": {
812
+ "sparkles": "1.0.1"
813
+ }
814
+ },
815
+ "graceful-fs": {
816
+ "version": "3.0.11",
817
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
818
+ "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
819
+ "requires": {
820
+ "natives": "1.1.4"
821
+ }
822
+ },
823
+ "gulp": {
824
+ "version": "3.9.1",
825
+ "resolved": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz",
826
+ "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
827
+ "requires": {
828
+ "archy": "1.0.0",
829
+ "chalk": "1.1.3",
830
+ "deprecated": "0.0.1",
831
+ "gulp-util": "3.0.8",
832
+ "interpret": "1.1.0",
833
+ "liftoff": "2.5.0",
834
+ "minimist": "1.2.0",
835
+ "orchestrator": "0.3.8",
836
+ "pretty-hrtime": "1.0.3",
837
+ "semver": "4.3.6",
838
+ "tildify": "1.2.0",
839
+ "v8flags": "2.1.1",
840
+ "vinyl-fs": "0.3.14"
841
+ }
842
+ },
843
+ "gulp-string-replace": {
844
+ "version": "0.4.0",
845
+ "resolved": "https://registry.npmjs.org/gulp-string-replace/-/gulp-string-replace-0.4.0.tgz",
846
+ "integrity": "sha1-4K+LN+LUxQ+RXW021tly/vZE9xY=",
847
+ "dev": true,
848
+ "requires": {
849
+ "extend": "3.0.1",
850
+ "gulp-util": "3.0.8",
851
+ "replacestream": "4.0.3",
852
+ "through2": "2.0.3"
853
+ }
854
+ },
855
+ "gulp-util": {
856
+ "version": "3.0.8",
857
+ "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
858
+ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
859
+ "requires": {
860
+ "array-differ": "1.0.0",
861
+ "array-uniq": "1.0.3",
862
+ "beeper": "1.1.1",
863
+ "chalk": "1.1.3",
864
+ "dateformat": "2.2.0",
865
+ "fancy-log": "1.3.2",
866
+ "gulplog": "1.0.0",
867
+ "has-gulplog": "0.1.0",
868
+ "lodash._reescape": "3.0.0",
869
+ "lodash._reevaluate": "3.0.0",
870
+ "lodash._reinterpolate": "3.0.0",
871
+ "lodash.template": "3.6.2",
872
+ "minimist": "1.2.0",
873
+ "multipipe": "0.1.2",
874
+ "object-assign": "3.0.0",
875
+ "replace-ext": "0.0.1",
876
+ "through2": "2.0.3",
877
+ "vinyl": "0.5.3"
878
+ }
879
+ },
880
+ "gulplog": {
881
+ "version": "1.0.0",
882
+ "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
883
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
884
+ "requires": {
885
+ "glogg": "1.0.1"
886
+ }
887
+ },
888
+ "has-ansi": {
889
+ "version": "2.0.0",
890
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
891
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
892
+ "requires": {
893
+ "ansi-regex": "2.1.1"
894
+ }
895
+ },
896
+ "has-gulplog": {
897
+ "version": "0.1.0",
898
+ "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz",
899
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
900
+ "requires": {
901
+ "sparkles": "1.0.1"
902
+ }
903
+ },
904
+ "has-value": {
905
+ "version": "1.0.0",
906
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
907
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
908
+ "requires": {
909
+ "get-value": "2.0.6",
910
+ "has-values": "1.0.0",
911
+ "isobject": "3.0.1"
912
+ }
913
+ },
914
+ "has-values": {
915
+ "version": "1.0.0",
916
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
917
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
918
+ "requires": {
919
+ "is-number": "3.0.0",
920
+ "kind-of": "4.0.0"
921
+ },
922
+ "dependencies": {
923
+ "kind-of": {
924
+ "version": "4.0.0",
925
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
926
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
927
+ "requires": {
928
+ "is-buffer": "1.1.6"
929
+ }
930
+ }
931
+ }
932
+ },
933
+ "homedir-polyfill": {
934
+ "version": "1.0.1",
935
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
936
+ "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
937
+ "requires": {
938
+ "parse-passwd": "1.0.0"
939
+ }
940
+ },
941
+ "inflight": {
942
+ "version": "1.0.6",
943
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
944
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
945
+ "requires": {
946
+ "once": "1.3.3",
947
+ "wrappy": "1.0.2"
948
+ }
949
+ },
950
+ "inherits": {
951
+ "version": "2.0.3",
952
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
953
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
954
+ },
955
+ "ini": {
956
+ "version": "1.3.5",
957
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
958
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
959
+ },
960
+ "interpret": {
961
+ "version": "1.1.0",
962
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
963
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
964
+ },
965
+ "is-absolute": {
966
+ "version": "1.0.0",
967
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
968
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
969
+ "requires": {
970
+ "is-relative": "1.0.0",
971
+ "is-windows": "1.0.2"
972
+ }
973
+ },
974
+ "is-accessor-descriptor": {
975
+ "version": "0.1.6",
976
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
977
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
978
+ "requires": {
979
+ "kind-of": "3.2.2"
980
+ },
981
+ "dependencies": {
982
+ "kind-of": {
983
+ "version": "3.2.2",
984
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
985
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
986
+ "requires": {
987
+ "is-buffer": "1.1.6"
988
+ }
989
+ }
990
+ }
991
+ },
992
+ "is-buffer": {
993
+ "version": "1.1.6",
994
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
995
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
996
+ },
997
+ "is-data-descriptor": {
998
+ "version": "0.1.4",
999
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
1000
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
1001
+ "requires": {
1002
+ "kind-of": "3.2.2"
1003
+ },
1004
+ "dependencies": {
1005
+ "kind-of": {
1006
+ "version": "3.2.2",
1007
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1008
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1009
+ "requires": {
1010
+ "is-buffer": "1.1.6"
1011
+ }
1012
+ }
1013
+ }
1014
+ },
1015
+ "is-descriptor": {
1016
+ "version": "0.1.6",
1017
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
1018
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
1019
+ "requires": {
1020
+ "is-accessor-descriptor": "0.1.6",
1021
+ "is-data-descriptor": "0.1.4",
1022
+ "kind-of": "5.1.0"
1023
+ },
1024
+ "dependencies": {
1025
+ "kind-of": {
1026
+ "version": "5.1.0",
1027
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
1028
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
1029
+ }
1030
+ }
1031
+ },
1032
+ "is-extendable": {
1033
+ "version": "0.1.1",
1034
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1035
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
1036
+ },
1037
+ "is-extglob": {
1038
+ "version": "2.1.1",
1039
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1040
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
1041
+ },
1042
+ "is-glob": {
1043
+ "version": "3.1.0",
1044
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1045
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1046
+ "requires": {
1047
+ "is-extglob": "2.1.1"
1048
+ }
1049
+ },
1050
+ "is-number": {
1051
+ "version": "3.0.0",
1052
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
1053
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
1054
+ "requires": {
1055
+ "kind-of": "3.2.2"
1056
+ },
1057
+ "dependencies": {
1058
+ "kind-of": {
1059
+ "version": "3.2.2",
1060
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1061
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1062
+ "requires": {
1063
+ "is-buffer": "1.1.6"
1064
+ }
1065
+ }
1066
+ }
1067
+ },
1068
+ "is-odd": {
1069
+ "version": "2.0.0",
1070
+ "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz",
1071
+ "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==",
1072
+ "requires": {
1073
+ "is-number": "4.0.0"
1074
+ },
1075
+ "dependencies": {
1076
+ "is-number": {
1077
+ "version": "4.0.0",
1078
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
1079
+ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
1080
+ }
1081
+ }
1082
+ },
1083
+ "is-path-cwd": {
1084
+ "version": "1.0.0",
1085
+ "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
1086
+ "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
1087
+ "dev": true
1088
+ },
1089
+ "is-path-in-cwd": {
1090
+ "version": "1.0.1",
1091
+ "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
1092
+ "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
1093
+ "dev": true,
1094
+ "requires": {
1095
+ "is-path-inside": "1.0.1"
1096
+ }
1097
+ },
1098
+ "is-path-inside": {
1099
+ "version": "1.0.1",
1100
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
1101
+ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
1102
+ "dev": true,
1103
+ "requires": {
1104
+ "path-is-inside": "1.0.2"
1105
+ }
1106
+ },
1107
+ "is-plain-object": {
1108
+ "version": "2.0.4",
1109
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
1110
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
1111
+ "requires": {
1112
+ "isobject": "3.0.1"
1113
+ }
1114
+ },
1115
+ "is-relative": {
1116
+ "version": "1.0.0",
1117
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
1118
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
1119
+ "requires": {
1120
+ "is-unc-path": "1.0.0"
1121
+ }
1122
+ },
1123
+ "is-unc-path": {
1124
+ "version": "1.0.0",
1125
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
1126
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
1127
+ "requires": {
1128
+ "unc-path-regex": "0.1.2"
1129
+ }
1130
+ },
1131
+ "is-utf8": {
1132
+ "version": "0.2.1",
1133
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
1134
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
1135
+ },
1136
+ "is-windows": {
1137
+ "version": "1.0.2",
1138
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
1139
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
1140
+ },
1141
+ "isarray": {
1142
+ "version": "0.0.1",
1143
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
1144
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
1145
+ },
1146
+ "isexe": {
1147
+ "version": "2.0.0",
1148
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1149
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
1150
+ },
1151
+ "isobject": {
1152
+ "version": "3.0.1",
1153
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
1154
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
1155
+ },
1156
+ "kind-of": {
1157
+ "version": "6.0.2",
1158
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
1159
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
1160
+ },
1161
+ "liftoff": {
1162
+ "version": "2.5.0",
1163
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
1164
+ "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
1165
+ "requires": {
1166
+ "extend": "3.0.1",
1167
+ "findup-sync": "2.0.0",
1168
+ "fined": "1.1.0",
1169
+ "flagged-respawn": "1.0.0",
1170
+ "is-plain-object": "2.0.4",
1171
+ "object.map": "1.0.1",
1172
+ "rechoir": "0.6.2",
1173
+ "resolve": "1.7.1"
1174
+ }
1175
+ },
1176
+ "lodash": {
1177
+ "version": "1.0.2",
1178
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz",
1179
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE="
1180
+ },
1181
+ "lodash._basecopy": {
1182
+ "version": "3.0.1",
1183
+ "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
1184
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY="
1185
+ },
1186
+ "lodash._basetostring": {
1187
+ "version": "3.0.1",
1188
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
1189
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U="
1190
+ },
1191
+ "lodash._basevalues": {
1192
+ "version": "3.0.0",
1193
+ "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
1194
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc="
1195
+ },
1196
+ "lodash._getnative": {
1197
+ "version": "3.9.1",
1198
+ "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
1199
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
1200
+ },
1201
+ "lodash._isiterateecall": {
1202
+ "version": "3.0.9",
1203
+ "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
1204
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw="
1205
+ },
1206
+ "lodash._reescape": {
1207
+ "version": "3.0.0",
1208
+ "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
1209
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo="
1210
+ },
1211
+ "lodash._reevaluate": {
1212
+ "version": "3.0.0",
1213
+ "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
1214
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0="
1215
+ },
1216
+ "lodash._reinterpolate": {
1217
+ "version": "3.0.0",
1218
+ "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
1219
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
1220
+ },
1221
+ "lodash._root": {
1222
+ "version": "3.0.1",
1223
+ "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
1224
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI="
1225
+ },
1226
+ "lodash.escape": {
1227
+ "version": "3.2.0",
1228
+ "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
1229
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
1230
+ "requires": {
1231
+ "lodash._root": "3.0.1"
1232
+ }
1233
+ },
1234
+ "lodash.isarguments": {
1235
+ "version": "3.1.0",
1236
+ "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
1237
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
1238
+ },
1239
+ "lodash.isarray": {
1240
+ "version": "3.0.4",
1241
+ "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
1242
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
1243
+ },
1244
+ "lodash.keys": {
1245
+ "version": "3.1.2",
1246
+ "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
1247
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
1248
+ "requires": {
1249
+ "lodash._getnative": "3.9.1",
1250
+ "lodash.isarguments": "3.1.0",
1251
+ "lodash.isarray": "3.0.4"
1252
+ }
1253
+ },
1254
+ "lodash.restparam": {
1255
+ "version": "3.6.1",
1256
+ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
1257
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
1258
+ },
1259
+ "lodash.template": {
1260
+ "version": "3.6.2",
1261
+ "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
1262
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
1263
+ "requires": {
1264
+ "lodash._basecopy": "3.0.1",
1265
+ "lodash._basetostring": "3.0.1",
1266
+ "lodash._basevalues": "3.0.0",
1267
+ "lodash._isiterateecall": "3.0.9",
1268
+ "lodash._reinterpolate": "3.0.0",
1269
+ "lodash.escape": "3.2.0",
1270
+ "lodash.keys": "3.1.2",
1271
+ "lodash.restparam": "3.6.1",
1272
+ "lodash.templatesettings": "3.1.1"
1273
+ }
1274
+ },
1275
+ "lodash.templatesettings": {
1276
+ "version": "3.1.1",
1277
+ "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
1278
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
1279
+ "requires": {
1280
+ "lodash._reinterpolate": "3.0.0",
1281
+ "lodash.escape": "3.2.0"
1282
+ }
1283
+ },
1284
+ "lru-cache": {
1285
+ "version": "2.7.3",
1286
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
1287
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
1288
+ },
1289
+ "make-iterator": {
1290
+ "version": "1.0.1",
1291
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
1292
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
1293
+ "requires": {
1294
+ "kind-of": "6.0.2"
1295
+ }
1296
+ },
1297
+ "map-cache": {
1298
+ "version": "0.2.2",
1299
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
1300
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
1301
+ },
1302
+ "map-visit": {
1303
+ "version": "1.0.0",
1304
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
1305
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
1306
+ "requires": {
1307
+ "object-visit": "1.0.1"
1308
+ }
1309
+ },
1310
+ "micromatch": {
1311
+ "version": "3.1.10",
1312
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
1313
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
1314
+ "requires": {
1315
+ "arr-diff": "4.0.0",
1316
+ "array-unique": "0.3.2",
1317
+ "braces": "2.3.2",
1318
+ "define-property": "2.0.2",
1319
+ "extend-shallow": "3.0.2",
1320
+ "extglob": "2.0.4",
1321
+ "fragment-cache": "0.2.1",
1322
+ "kind-of": "6.0.2",
1323
+ "nanomatch": "1.2.9",
1324
+ "object.pick": "1.3.0",
1325
+ "regex-not": "1.0.2",
1326
+ "snapdragon": "0.8.2",
1327
+ "to-regex": "3.0.2"
1328
+ }
1329
+ },
1330
+ "minimatch": {
1331
+ "version": "2.0.10",
1332
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
1333
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
1334
+ "requires": {
1335
+ "brace-expansion": "1.1.11"
1336
+ }
1337
+ },
1338
+ "minimist": {
1339
+ "version": "1.2.0",
1340
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
1341
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
1342
+ },
1343
+ "mixin-deep": {
1344
+ "version": "1.3.1",
1345
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
1346
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
1347
+ "requires": {
1348
+ "for-in": "1.0.2",
1349
+ "is-extendable": "1.0.1"
1350
+ },
1351
+ "dependencies": {
1352
+ "is-extendable": {
1353
+ "version": "1.0.1",
1354
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1355
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1356
+ "requires": {
1357
+ "is-plain-object": "2.0.4"
1358
+ }
1359
+ }
1360
+ }
1361
+ },
1362
+ "mkdirp": {
1363
+ "version": "0.5.1",
1364
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
1365
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
1366
+ "requires": {
1367
+ "minimist": "0.0.8"
1368
+ },
1369
+ "dependencies": {
1370
+ "minimist": {
1371
+ "version": "0.0.8",
1372
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
1373
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
1374
+ }
1375
+ }
1376
+ },
1377
+ "ms": {
1378
+ "version": "2.0.0",
1379
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1380
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1381
+ },
1382
+ "multipipe": {
1383
+ "version": "0.1.2",
1384
+ "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
1385
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
1386
+ "requires": {
1387
+ "duplexer2": "0.0.2"
1388
+ }
1389
+ },
1390
+ "nanomatch": {
1391
+ "version": "1.2.9",
1392
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz",
1393
+ "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==",
1394
+ "requires": {
1395
+ "arr-diff": "4.0.0",
1396
+ "array-unique": "0.3.2",
1397
+ "define-property": "2.0.2",
1398
+ "extend-shallow": "3.0.2",
1399
+ "fragment-cache": "0.2.1",
1400
+ "is-odd": "2.0.0",
1401
+ "is-windows": "1.0.2",
1402
+ "kind-of": "6.0.2",
1403
+ "object.pick": "1.3.0",
1404
+ "regex-not": "1.0.2",
1405
+ "snapdragon": "0.8.2",
1406
+ "to-regex": "3.0.2"
1407
+ }
1408
+ },
1409
+ "natives": {
1410
+ "version": "1.1.4",
1411
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.4.tgz",
1412
+ "integrity": "sha512-Q29yeg9aFKwhLVdkTAejM/HvYG0Y1Am1+HUkFQGn5k2j8GS+v60TVmZh6nujpEAj/qql+wGUrlryO8bF+b1jEg=="
1413
+ },
1414
+ "object-assign": {
1415
+ "version": "3.0.0",
1416
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
1417
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
1418
+ },
1419
+ "object-copy": {
1420
+ "version": "0.1.0",
1421
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
1422
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
1423
+ "requires": {
1424
+ "copy-descriptor": "0.1.1",
1425
+ "define-property": "0.2.5",
1426
+ "kind-of": "3.2.2"
1427
+ },
1428
+ "dependencies": {
1429
+ "define-property": {
1430
+ "version": "0.2.5",
1431
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1432
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1433
+ "requires": {
1434
+ "is-descriptor": "0.1.6"
1435
+ }
1436
+ },
1437
+ "kind-of": {
1438
+ "version": "3.2.2",
1439
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1440
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1441
+ "requires": {
1442
+ "is-buffer": "1.1.6"
1443
+ }
1444
+ }
1445
+ }
1446
+ },
1447
+ "object-visit": {
1448
+ "version": "1.0.1",
1449
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
1450
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
1451
+ "requires": {
1452
+ "isobject": "3.0.1"
1453
+ }
1454
+ },
1455
+ "object.defaults": {
1456
+ "version": "1.1.0",
1457
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
1458
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
1459
+ "requires": {
1460
+ "array-each": "1.0.1",
1461
+ "array-slice": "1.1.0",
1462
+ "for-own": "1.0.0",
1463
+ "isobject": "3.0.1"
1464
+ }
1465
+ },
1466
+ "object.map": {
1467
+ "version": "1.0.1",
1468
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
1469
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
1470
+ "requires": {
1471
+ "for-own": "1.0.0",
1472
+ "make-iterator": "1.0.1"
1473
+ }
1474
+ },
1475
+ "object.pick": {
1476
+ "version": "1.3.0",
1477
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
1478
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
1479
+ "requires": {
1480
+ "isobject": "3.0.1"
1481
+ }
1482
+ },
1483
+ "once": {
1484
+ "version": "1.3.3",
1485
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
1486
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
1487
+ "requires": {
1488
+ "wrappy": "1.0.2"
1489
+ }
1490
+ },
1491
+ "orchestrator": {
1492
+ "version": "0.3.8",
1493
+ "resolved": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz",
1494
+ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
1495
+ "requires": {
1496
+ "end-of-stream": "0.1.5",
1497
+ "sequencify": "0.0.7",
1498
+ "stream-consume": "0.1.1"
1499
+ }
1500
+ },
1501
+ "ordered-read-streams": {
1502
+ "version": "0.1.0",
1503
+ "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz",
1504
+ "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY="
1505
+ },
1506
+ "os-homedir": {
1507
+ "version": "1.0.2",
1508
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1509
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
1510
+ },
1511
+ "parse-filepath": {
1512
+ "version": "1.0.2",
1513
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
1514
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
1515
+ "requires": {
1516
+ "is-absolute": "1.0.0",
1517
+ "map-cache": "0.2.2",
1518
+ "path-root": "0.1.1"
1519
+ }
1520
+ },
1521
+ "parse-passwd": {
1522
+ "version": "1.0.0",
1523
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
1524
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY="
1525
+ },
1526
+ "pascalcase": {
1527
+ "version": "0.1.1",
1528
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
1529
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
1530
+ },
1531
+ "path-is-absolute": {
1532
+ "version": "1.0.1",
1533
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1534
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1535
+ "dev": true
1536
+ },
1537
+ "path-is-inside": {
1538
+ "version": "1.0.2",
1539
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1540
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
1541
+ "dev": true
1542
+ },
1543
+ "path-parse": {
1544
+ "version": "1.0.5",
1545
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
1546
+ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
1547
+ },
1548
+ "path-root": {
1549
+ "version": "0.1.1",
1550
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
1551
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
1552
+ "requires": {
1553
+ "path-root-regex": "0.1.2"
1554
+ }
1555
+ },
1556
+ "path-root-regex": {
1557
+ "version": "0.1.2",
1558
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
1559
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0="
1560
+ },
1561
+ "pify": {
1562
+ "version": "2.3.0",
1563
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1564
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
1565
+ "dev": true
1566
+ },
1567
+ "pinkie": {
1568
+ "version": "2.0.4",
1569
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
1570
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
1571
+ "dev": true
1572
+ },
1573
+ "pinkie-promise": {
1574
+ "version": "2.0.1",
1575
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
1576
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
1577
+ "dev": true,
1578
+ "requires": {
1579
+ "pinkie": "2.0.4"
1580
+ }
1581
+ },
1582
+ "posix-character-classes": {
1583
+ "version": "0.1.1",
1584
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
1585
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
1586
+ },
1587
+ "pretty-hrtime": {
1588
+ "version": "1.0.3",
1589
+ "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
1590
+ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE="
1591
+ },
1592
+ "process-nextick-args": {
1593
+ "version": "2.0.0",
1594
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
1595
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
1596
+ },
1597
+ "readable-stream": {
1598
+ "version": "1.1.14",
1599
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
1600
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
1601
+ "requires": {
1602
+ "core-util-is": "1.0.2",
1603
+ "inherits": "2.0.3",
1604
+ "isarray": "0.0.1",
1605
+ "string_decoder": "0.10.31"
1606
+ }
1607
+ },
1608
+ "rechoir": {
1609
+ "version": "0.6.2",
1610
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
1611
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
1612
+ "requires": {
1613
+ "resolve": "1.7.1"
1614
+ }
1615
+ },
1616
+ "regex-not": {
1617
+ "version": "1.0.2",
1618
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
1619
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
1620
+ "requires": {
1621
+ "extend-shallow": "3.0.2",
1622
+ "safe-regex": "1.1.0"
1623
+ }
1624
+ },
1625
+ "repeat-element": {
1626
+ "version": "1.1.2",
1627
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
1628
+ "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
1629
+ },
1630
+ "repeat-string": {
1631
+ "version": "1.6.1",
1632
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
1633
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
1634
+ },
1635
+ "replace-ext": {
1636
+ "version": "0.0.1",
1637
+ "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
1638
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ="
1639
+ },
1640
+ "replacestream": {
1641
+ "version": "4.0.3",
1642
+ "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz",
1643
+ "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==",
1644
+ "dev": true,
1645
+ "requires": {
1646
+ "escape-string-regexp": "1.0.5",
1647
+ "object-assign": "4.1.1",
1648
+ "readable-stream": "2.3.6"
1649
+ },
1650
+ "dependencies": {
1651
+ "isarray": {
1652
+ "version": "1.0.0",
1653
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1654
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1655
+ "dev": true
1656
+ },
1657
+ "object-assign": {
1658
+ "version": "4.1.1",
1659
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1660
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
1661
+ "dev": true
1662
+ },
1663
+ "readable-stream": {
1664
+ "version": "2.3.6",
1665
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
1666
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
1667
+ "dev": true,
1668
+ "requires": {
1669
+ "core-util-is": "1.0.2",
1670
+ "inherits": "2.0.3",
1671
+ "isarray": "1.0.0",
1672
+ "process-nextick-args": "2.0.0",
1673
+ "safe-buffer": "5.1.2",
1674
+ "string_decoder": "1.1.1",
1675
+ "util-deprecate": "1.0.2"
1676
+ }
1677
+ },
1678
+ "string_decoder": {
1679
+ "version": "1.1.1",
1680
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
1681
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
1682
+ "dev": true,
1683
+ "requires": {
1684
+ "safe-buffer": "5.1.2"
1685
+ }
1686
+ }
1687
+ }
1688
+ },
1689
+ "resolve": {
1690
+ "version": "1.7.1",
1691
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
1692
+ "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
1693
+ "requires": {
1694
+ "path-parse": "1.0.5"
1695
+ }
1696
+ },
1697
+ "resolve-dir": {
1698
+ "version": "1.0.1",
1699
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
1700
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
1701
+ "requires": {
1702
+ "expand-tilde": "2.0.2",
1703
+ "global-modules": "1.0.0"
1704
+ }
1705
+ },
1706
+ "resolve-url": {
1707
+ "version": "0.2.1",
1708
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
1709
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
1710
+ },
1711
+ "ret": {
1712
+ "version": "0.1.15",
1713
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
1714
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
1715
+ },
1716
+ "rimraf": {
1717
+ "version": "2.6.2",
1718
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
1719
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
1720
+ "dev": true,
1721
+ "requires": {
1722
+ "glob": "7.1.2"
1723
+ },
1724
+ "dependencies": {
1725
+ "glob": {
1726
+ "version": "7.1.2",
1727
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
1728
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
1729
+ "dev": true,
1730
+ "requires": {
1731
+ "fs.realpath": "1.0.0",
1732
+ "inflight": "1.0.6",
1733
+ "inherits": "2.0.3",
1734
+ "minimatch": "3.0.4",
1735
+ "once": "1.3.3",
1736
+ "path-is-absolute": "1.0.1"
1737
+ }
1738
+ },
1739
+ "minimatch": {
1740
+ "version": "3.0.4",
1741
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1742
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1743
+ "dev": true,
1744
+ "requires": {
1745
+ "brace-expansion": "1.1.11"
1746
+ }
1747
+ }
1748
+ }
1749
+ },
1750
+ "safe-buffer": {
1751
+ "version": "5.1.2",
1752
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1753
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1754
+ },
1755
+ "safe-regex": {
1756
+ "version": "1.1.0",
1757
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
1758
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
1759
+ "requires": {
1760
+ "ret": "0.1.15"
1761
+ }
1762
+ },
1763
+ "semver": {
1764
+ "version": "4.3.6",
1765
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
1766
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
1767
+ },
1768
+ "sequencify": {
1769
+ "version": "0.0.7",
1770
+ "resolved": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz",
1771
+ "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw="
1772
+ },
1773
+ "set-value": {
1774
+ "version": "2.0.0",
1775
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
1776
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
1777
+ "requires": {
1778
+ "extend-shallow": "2.0.1",
1779
+ "is-extendable": "0.1.1",
1780
+ "is-plain-object": "2.0.4",
1781
+ "split-string": "3.1.0"
1782
+ },
1783
+ "dependencies": {
1784
+ "extend-shallow": {
1785
+ "version": "2.0.1",
1786
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1787
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1788
+ "requires": {
1789
+ "is-extendable": "0.1.1"
1790
+ }
1791
+ }
1792
+ }
1793
+ },
1794
+ "sigmund": {
1795
+ "version": "1.0.1",
1796
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
1797
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
1798
+ },
1799
+ "snapdragon": {
1800
+ "version": "0.8.2",
1801
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
1802
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
1803
+ "requires": {
1804
+ "base": "0.11.2",
1805
+ "debug": "2.6.9",
1806
+ "define-property": "0.2.5",
1807
+ "extend-shallow": "2.0.1",
1808
+ "map-cache": "0.2.2",
1809
+ "source-map": "0.5.7",
1810
+ "source-map-resolve": "0.5.2",
1811
+ "use": "3.1.0"
1812
+ },
1813
+ "dependencies": {
1814
+ "define-property": {
1815
+ "version": "0.2.5",
1816
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1817
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1818
+ "requires": {
1819
+ "is-descriptor": "0.1.6"
1820
+ }
1821
+ },
1822
+ "extend-shallow": {
1823
+ "version": "2.0.1",
1824
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1825
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1826
+ "requires": {
1827
+ "is-extendable": "0.1.1"
1828
+ }
1829
+ }
1830
+ }
1831
+ },
1832
+ "snapdragon-node": {
1833
+ "version": "2.1.1",
1834
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
1835
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
1836
+ "requires": {
1837
+ "define-property": "1.0.0",
1838
+ "isobject": "3.0.1",
1839
+ "snapdragon-util": "3.0.1"
1840
+ },
1841
+ "dependencies": {
1842
+ "define-property": {
1843
+ "version": "1.0.0",
1844
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1845
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1846
+ "requires": {
1847
+ "is-descriptor": "1.0.2"
1848
+ }
1849
+ },
1850
+ "is-accessor-descriptor": {
1851
+ "version": "1.0.0",
1852
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1853
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1854
+ "requires": {
1855
+ "kind-of": "6.0.2"
1856
+ }
1857
+ },
1858
+ "is-data-descriptor": {
1859
+ "version": "1.0.0",
1860
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1861
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1862
+ "requires": {
1863
+ "kind-of": "6.0.2"
1864
+ }
1865
+ },
1866
+ "is-descriptor": {
1867
+ "version": "1.0.2",
1868
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1869
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1870
+ "requires": {
1871
+ "is-accessor-descriptor": "1.0.0",
1872
+ "is-data-descriptor": "1.0.0",
1873
+ "kind-of": "6.0.2"
1874
+ }
1875
+ }
1876
+ }
1877
+ },
1878
+ "snapdragon-util": {
1879
+ "version": "3.0.1",
1880
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
1881
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
1882
+ "requires": {
1883
+ "kind-of": "3.2.2"
1884
+ },
1885
+ "dependencies": {
1886
+ "kind-of": {
1887
+ "version": "3.2.2",
1888
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1889
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1890
+ "requires": {
1891
+ "is-buffer": "1.1.6"
1892
+ }
1893
+ }
1894
+ }
1895
+ },
1896
+ "source-map": {
1897
+ "version": "0.5.7",
1898
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
1899
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
1900
+ },
1901
+ "source-map-resolve": {
1902
+ "version": "0.5.2",
1903
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
1904
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
1905
+ "requires": {
1906
+ "atob": "2.1.1",
1907
+ "decode-uri-component": "0.2.0",
1908
+ "resolve-url": "0.2.1",
1909
+ "source-map-url": "0.4.0",
1910
+ "urix": "0.1.0"
1911
+ }
1912
+ },
1913
+ "source-map-url": {
1914
+ "version": "0.4.0",
1915
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
1916
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM="
1917
+ },
1918
+ "sparkles": {
1919
+ "version": "1.0.1",
1920
+ "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz",
1921
+ "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw=="
1922
+ },
1923
+ "split-string": {
1924
+ "version": "3.1.0",
1925
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
1926
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
1927
+ "requires": {
1928
+ "extend-shallow": "3.0.2"
1929
+ }
1930
+ },
1931
+ "static-extend": {
1932
+ "version": "0.1.2",
1933
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
1934
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
1935
+ "requires": {
1936
+ "define-property": "0.2.5",
1937
+ "object-copy": "0.1.0"
1938
+ },
1939
+ "dependencies": {
1940
+ "define-property": {
1941
+ "version": "0.2.5",
1942
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1943
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1944
+ "requires": {
1945
+ "is-descriptor": "0.1.6"
1946
+ }
1947
+ }
1948
+ }
1949
+ },
1950
+ "stream-consume": {
1951
+ "version": "0.1.1",
1952
+ "resolved": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.1.tgz",
1953
+ "integrity": "sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg=="
1954
+ },
1955
+ "string_decoder": {
1956
+ "version": "0.10.31",
1957
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
1958
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
1959
+ },
1960
+ "strip-ansi": {
1961
+ "version": "3.0.1",
1962
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1963
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1964
+ "requires": {
1965
+ "ansi-regex": "2.1.1"
1966
+ }
1967
+ },
1968
+ "strip-bom": {
1969
+ "version": "1.0.0",
1970
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz",
1971
+ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
1972
+ "requires": {
1973
+ "first-chunk-stream": "1.0.0",
1974
+ "is-utf8": "0.2.1"
1975
+ }
1976
+ },
1977
+ "supports-color": {
1978
+ "version": "2.0.0",
1979
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1980
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
1981
+ },
1982
+ "through2": {
1983
+ "version": "2.0.3",
1984
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
1985
+ "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
1986
+ "requires": {
1987
+ "readable-stream": "2.3.6",
1988
+ "xtend": "4.0.1"
1989
+ },
1990
+ "dependencies": {
1991
+ "isarray": {
1992
+ "version": "1.0.0",
1993
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1994
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
1995
+ },
1996
+ "readable-stream": {
1997
+ "version": "2.3.6",
1998
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
1999
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2000
+ "requires": {
2001
+ "core-util-is": "1.0.2",
2002
+ "inherits": "2.0.3",
2003
+ "isarray": "1.0.0",
2004
+ "process-nextick-args": "2.0.0",
2005
+ "safe-buffer": "5.1.2",
2006
+ "string_decoder": "1.1.1",
2007
+ "util-deprecate": "1.0.2"
2008
+ }
2009
+ },
2010
+ "string_decoder": {
2011
+ "version": "1.1.1",
2012
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2013
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2014
+ "requires": {
2015
+ "safe-buffer": "5.1.2"
2016
+ }
2017
+ }
2018
+ }
2019
+ },
2020
+ "tildify": {
2021
+ "version": "1.2.0",
2022
+ "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz",
2023
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
2024
+ "requires": {
2025
+ "os-homedir": "1.0.2"
2026
+ }
2027
+ },
2028
+ "time-stamp": {
2029
+ "version": "1.1.0",
2030
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz",
2031
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
2032
+ },
2033
+ "to-object-path": {
2034
+ "version": "0.3.0",
2035
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
2036
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
2037
+ "requires": {
2038
+ "kind-of": "3.2.2"
2039
+ },
2040
+ "dependencies": {
2041
+ "kind-of": {
2042
+ "version": "3.2.2",
2043
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2044
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2045
+ "requires": {
2046
+ "is-buffer": "1.1.6"
2047
+ }
2048
+ }
2049
+ }
2050
+ },
2051
+ "to-regex": {
2052
+ "version": "3.0.2",
2053
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
2054
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
2055
+ "requires": {
2056
+ "define-property": "2.0.2",
2057
+ "extend-shallow": "3.0.2",
2058
+ "regex-not": "1.0.2",
2059
+ "safe-regex": "1.1.0"
2060
+ }
2061
+ },
2062
+ "to-regex-range": {
2063
+ "version": "2.1.1",
2064
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
2065
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
2066
+ "requires": {
2067
+ "is-number": "3.0.0",
2068
+ "repeat-string": "1.6.1"
2069
+ }
2070
+ },
2071
+ "unc-path-regex": {
2072
+ "version": "0.1.2",
2073
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
2074
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo="
2075
+ },
2076
+ "union-value": {
2077
+ "version": "1.0.0",
2078
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
2079
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
2080
+ "requires": {
2081
+ "arr-union": "3.1.0",
2082
+ "get-value": "2.0.6",
2083
+ "is-extendable": "0.1.1",
2084
+ "set-value": "0.4.3"
2085
+ },
2086
+ "dependencies": {
2087
+ "extend-shallow": {
2088
+ "version": "2.0.1",
2089
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
2090
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
2091
+ "requires": {
2092
+ "is-extendable": "0.1.1"
2093
+ }
2094
+ },
2095
+ "set-value": {
2096
+ "version": "0.4.3",
2097
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
2098
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
2099
+ "requires": {
2100
+ "extend-shallow": "2.0.1",
2101
+ "is-extendable": "0.1.1",
2102
+ "is-plain-object": "2.0.4",
2103
+ "to-object-path": "0.3.0"
2104
+ }
2105
+ }
2106
+ }
2107
+ },
2108
+ "unique-stream": {
2109
+ "version": "1.0.0",
2110
+ "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz",
2111
+ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs="
2112
+ },
2113
+ "unset-value": {
2114
+ "version": "1.0.0",
2115
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
2116
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
2117
+ "requires": {
2118
+ "has-value": "0.3.1",
2119
+ "isobject": "3.0.1"
2120
+ },
2121
+ "dependencies": {
2122
+ "has-value": {
2123
+ "version": "0.3.1",
2124
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
2125
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
2126
+ "requires": {
2127
+ "get-value": "2.0.6",
2128
+ "has-values": "0.1.4",
2129
+ "isobject": "2.1.0"
2130
+ },
2131
+ "dependencies": {
2132
+ "isobject": {
2133
+ "version": "2.1.0",
2134
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
2135
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
2136
+ "requires": {
2137
+ "isarray": "1.0.0"
2138
+ }
2139
+ }
2140
+ }
2141
+ },
2142
+ "has-values": {
2143
+ "version": "0.1.4",
2144
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
2145
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
2146
+ },
2147
+ "isarray": {
2148
+ "version": "1.0.0",
2149
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2150
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
2151
+ }
2152
+ }
2153
+ },
2154
+ "urix": {
2155
+ "version": "0.1.0",
2156
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
2157
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
2158
+ },
2159
+ "use": {
2160
+ "version": "3.1.0",
2161
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
2162
+ "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
2163
+ "requires": {
2164
+ "kind-of": "6.0.2"
2165
+ }
2166
+ },
2167
+ "user-home": {
2168
+ "version": "1.1.1",
2169
+ "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
2170
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
2171
+ },
2172
+ "util-deprecate": {
2173
+ "version": "1.0.2",
2174
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2175
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
2176
+ },
2177
+ "v8flags": {
2178
+ "version": "2.1.1",
2179
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
2180
+ "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
2181
+ "requires": {
2182
+ "user-home": "1.1.1"
2183
+ }
2184
+ },
2185
+ "vinyl": {
2186
+ "version": "0.5.3",
2187
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
2188
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
2189
+ "requires": {
2190
+ "clone": "1.0.4",
2191
+ "clone-stats": "0.0.1",
2192
+ "replace-ext": "0.0.1"
2193
+ }
2194
+ },
2195
+ "vinyl-fs": {
2196
+ "version": "0.3.14",
2197
+ "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz",
2198
+ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
2199
+ "requires": {
2200
+ "defaults": "1.0.3",
2201
+ "glob-stream": "3.1.18",
2202
+ "glob-watcher": "0.0.6",
2203
+ "graceful-fs": "3.0.11",
2204
+ "mkdirp": "0.5.1",
2205
+ "strip-bom": "1.0.0",
2206
+ "through2": "0.6.5",
2207
+ "vinyl": "0.4.6"
2208
+ },
2209
+ "dependencies": {
2210
+ "clone": {
2211
+ "version": "0.2.0",
2212
+ "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz",
2213
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8="
2214
+ },
2215
+ "readable-stream": {
2216
+ "version": "1.0.34",
2217
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
2218
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
2219
+ "requires": {
2220
+ "core-util-is": "1.0.2",
2221
+ "inherits": "2.0.3",
2222
+ "isarray": "0.0.1",
2223
+ "string_decoder": "0.10.31"
2224
+ }
2225
+ },
2226
+ "through2": {
2227
+ "version": "0.6.5",
2228
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
2229
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
2230
+ "requires": {
2231
+ "readable-stream": "1.0.34",
2232
+ "xtend": "4.0.1"
2233
+ }
2234
+ },
2235
+ "vinyl": {
2236
+ "version": "0.4.6",
2237
+ "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz",
2238
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
2239
+ "requires": {
2240
+ "clone": "0.2.0",
2241
+ "clone-stats": "0.0.1"
2242
+ }
2243
+ }
2244
+ }
2245
+ },
2246
+ "which": {
2247
+ "version": "1.3.1",
2248
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
2249
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
2250
+ "requires": {
2251
+ "isexe": "2.0.0"
2252
+ }
2253
+ },
2254
+ "wrappy": {
2255
+ "version": "1.0.2",
2256
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2257
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
2258
+ },
2259
+ "xtend": {
2260
+ "version": "4.0.1",
2261
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
2262
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
2263
+ }
2264
+ }
2265
+ }
public/css/information.css CHANGED
File without changes
public/images/ajax-loader-overlay.gif CHANGED
File without changes
public/img/toolset-logo-no-margin.png CHANGED
File without changes
public/js/feedback-on-deactivation.js CHANGED
File without changes
public/js/information.js CHANGED
File without changes
public/js/notice-dismiss.js CHANGED
File without changes
public/js/settings.js CHANGED
File without changes
public/js/slug_conflict_checker.js CHANGED
File without changes
public/page/add_term.js CHANGED
File without changes
public/page/adjust_submenu_links.js CHANGED
File without changes
public/page/edit_post_type/main.js CHANGED
File without changes
public/page/edit_taxonomy/main.js CHANGED
File without changes
public/page/field_control/main.js CHANGED
File without changes
public/page/field_control/style.css CHANGED
File without changes
public/page/field_control/viewmodels/BulkChangeManagementStatusDialogViewModel.js CHANGED
File without changes
public/page/field_control/viewmodels/ChangeAssignDialogViewModel.js CHANGED
File without changes
public/page/field_control/viewmodels/ChangeFieldTypeDialogViewModel.js CHANGED
File without changes
public/page/field_control/viewmodels/DeleteDialogViewModel.js CHANGED
File without changes
public/page/field_control/viewmodels/FieldDefinitionViewModel.js CHANGED
File without changes
public/page/field_control/viewmodels/ListingViewModel.js CHANGED
File without changes
readme.txt CHANGED
@@ -1,46 +1,53 @@
1
  === Toolset Types - Custom Post Types, Custom Fields and Taxonomies ===
2
  Contributors: AmirHelzer, brucepearson, christianglingener, jadpm, zaantar, jmilczarek, kouratoras, displaynone
3
- Donate link: http://wp-types.com
4
  Tags: CMS, custom field, custom fields, custom post type, custom post types, field, fields post, post type, post types, taxonomies, taxonomy, toolset
5
  Text Domain: wpcf
6
  Domain Path: /embedded/locale
7
  License: GPLv2
8
  Requires at least: 3.7
 
9
  Tested up to: 4.9
10
- Stable tag: 2.2.23
11
-
12
  The complete and reliable plugin for managing custom post types, custom taxonomies and custom fields.
13
 
14
  == Description ==
15
 
16
  **Toolset Types let’s you add custom post types, custom fields and custom taxonomies to the WordPress admin. A convenient dashboard lets you control everything from one place.**
17
 
18
- [vimeo https://vimeo.com/176428571]
 
 
 
 
 
 
 
19
 
20
  = COMPLETE DOCUMENTATION, POWERFUL API, SIMPLE GUI FOR NON-CODERS =
21
- If you're an experienced PHP developer, you'll appreciate Types comprehensive [fields API](https://wp-types.com/documentation/customizing-sites-using-php/functions/).
22
 
23
- You will find detailed guides on [adding custom post types, fields and taxonomy to the front-end](https://wp-types.com/documentation/customizing-sites-using-php/), including:
24
 
25
- * [Creating templates for single custom posts](https://wp-types.com/documentation/customizing-sites-using-php/creating-templates-single-custom-posts/)
26
- * [Creating templates for custom post type archives](https://wp-types.com/documentation/customizing-sites-using-php/creating-templates-custom-post-type-archives/)
27
- * [Creating custom user profiles](https://wp-types.com/documentation/customizing-sites-using-php/creating-custom-user-profiles/)
28
- * [Create taxonomy term archives](https://wp-types.com/documentation/customizing-sites-using-php/creating-taxonomy-term-archives/)
29
 
30
- and [more](https://wp-types.com/documentation/customizing-sites-using-php/).
31
 
32
- **Too much technical stuff to learn?** The full [Toolset](http://wp-types.com) package lets you build complete WordPress sites from within the admin dashboard.
33
 
34
  = CUSTOM FIELDS FOR CONTENT, TAXONOMY TERMS AND USERS =
35
  Types lets you add custom fields for posts (meaning, WordPress posts, pages and custom content types), taxonomy terms and users. You can add any field types to different user profiles.
36
 
37
  = ACCESS CONTROL FOR FIELDS =
38
- Using [Access](https://wp-types.com/home/toolset-components/#access), you will be able to control what fields different users can edit and view. This way, you can make some field groups read-only for certain users, and fully-editable for other users.
39
 
40
  For example, when you build a membership site, the site admin will be able to change membership levels for everyone and users will see their membership fields as read-only.
41
 
42
  = RELIABLE SUPPORT =
43
- To get support for Types, please join our [technical support forum](http://wp-types.com/forums/). You will receive support directly from our developers, helping you deliver great sites on time and correctly.
44
 
45
  = CUSTOM FIELDS =
46
 
@@ -83,7 +90,7 @@ Types lets you define parent / child relationship between different post types.
83
 
84
  = MULTILINGUAL READY =
85
 
86
- Types is the only custom fields and post types plugin that's built multilingual-ready. It plays perfectly with [WPML](http://wpml.org). You'll be able to translate everything, including texts and labels in the WordPress admin and user-content for front-page.
87
 
88
  = BUILT FOR STABILITY =
89
 
@@ -104,10 +111,15 @@ By default, WordPress will either display your blog posts or a specific page on
104
  To display custom post types on the home-page, you have two options:
105
 
106
  1. If you're comfortable with PHP and WordPress API, edit the site's template files (probably index.php) and load the custom post types there. Different themes do this differently, so we can't really say what single approach works best. You should look at [get_posts](http://codex.wordpress.org/Template_Tags/get_posts), which is part of the WordPress Template Tags system.
107
- 2. If you want to build sites right away, without becoming an expert in WordPress API and try our [Toolset Views](http://wp-types.com/). You'll be able to load whatever content you need from the database and display it anywhere and in whatever way you choose.
 
108
 
109
  We're sorry, but we don't know of any third option which is both free and requires no coding.
110
 
 
 
 
 
111
  = Can I use Types without Views? =
112
 
113
  Sure you can! Types, by itself, replaces several other plugins that define custom types and fields. We believe that it does it much better, but it's up to you to decide.
@@ -158,6 +170,12 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
158
 
159
  == Changelog ==
160
 
 
 
 
 
 
 
161
  = 2.2.23 =
162
  * Fixed issue with Toolset registration
163
 
@@ -563,7 +581,7 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
563
  = 1.7.5 =
564
 
565
  * Release date: 2015-07-15
566
- * Fixed a problem with Custom Fields Group edit screen to allow (again) underscore in Custom Fields names. https://wp-types.com/forums/topic/underscores-in-custom-field-names-possible-bug/
567
 
568
  = 1.7.4 =
569
 
@@ -573,7 +591,7 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
573
  = 1.7.3 =
574
 
575
  * Release date: 2015-06-25
576
- * Fixed problem with "View All" in menu builder for Custom Post Types. https://wp-types.com/forums/topic/appearance-menu-php-errornotice/
577
 
578
  = 1.7.2 =
579
 
@@ -590,7 +608,7 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
590
  = 1.7 =
591
 
592
  * Release date: 2015-06-15
593
- * Added the word "mode" to the list of words reserved by WordPress. https://wp-types.com/forums/topic/when-types-is-activated-i-cant-filter-articles-by-category-in-the-wp-backend/
594
  * Added the feature that automatically creates a slug for the Custom Post Type and Custom Taxonomy.
595
  * Added bulk delete options to Custom Field Groups listing page.
596
  * Added bulk delete options to Custom Post Types listing page.
@@ -599,24 +617,24 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
599
  * Added the duplicate option for Custom Post Type and Custom Taxonomy.
600
  * Added the "Excerpt" field to the Child Posts table.
601
  * Added the "wpcf_field_image_max_width" filter which allows user to change image width on admin listing pages.
602
- * Added the option to specify the custom archive slug for the Custom Post Type http://wp-types.com/forums/topic/specify-cpt-archive-slug-as-string/
603
  * All custom fields on Custom Post Type listing pages are now sortable.
604
  * Changes to the Types fields GUI for easier support.
605
  * Fixed a problem with Custom Post Type, Custom Taxonomy and Custom Fields Group editing pages where forms would "freeze" after validation fails.
606
- * Fixed a problem with selecting an image for the Custom Image Field in the Child Posts table, after using the "Add New", "Save All" and "Save" buttons. https://wp-types.com/forums/topic/featured-image-cannot-be-changed-after-first-save/
607
- * Fixed a problem with multi-line field not being wrapped with P (paragraph) HTML tag https://wp-types.com/forums/topic/multi-line-text-fields-are-missing-paragraph-tags/
608
  * Fixed problem with fields being covered by colorbox on the Custom Post Type editing page.
609
  * Fixed an issue where a wrong message was displayed when minimum number of characters has not been reached.
610
 
611
  = 1.6.6.6 =
612
 
613
  * Release date: 2015-06-10
614
- * Fixed problem with "playlist" word. https://wp-types.com/forums/topic/front-end-warning-from-wysiwyg-php/
615
 
616
  = 1.6.6.5 =
617
 
618
  * Release date: 2015-05-20
619
- * Fixed problem with Uncaught ReferenceError: pagenow is not defined. http://wp-types.com/forums/topic/nextgen-gallery-broken-urgent/
620
 
621
  = 1.6.6.4 =
622
 
@@ -631,7 +649,7 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
631
  = 1.6.6.2 =
632
 
633
  * Release date: 2015-04-10
634
- * Fixed problem with File Field which do not work when edited from the Parent Post Type. https://wp-types.com/forums/topic/1-6-6-seems-to-break-child-fields-when-parent-has-an-image-field/
635
 
636
  = 1.6.6.1 =
637
 
@@ -641,16 +659,16 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
641
  = 1.6.6 =
642
 
643
  * Release date: 2015-04-02
644
- * Fixed problem with shortcode "playlist" used in WYSIWYG field. http://wp-types.com/forums/topic/media-play-list-not-outputting-from-custom-wysiwyg-field-js-error/
645
- * Fixed empty title problem for filter "wpt_field_options" on user edit/add screen https://wp-types.com/forums/topic/populate-select-field-in-wpcf-um-group/
646
- * Added ability to create CPT without title and editor. https://wp-types.com/forums/topic/inaccurate-warning-message-when-creatingediting-a-cpt/
647
  * Added Skype field validation.
648
  * Fixed problem with loading custom CSS when user meta group is inactive or not assign to certain user role.
649
  * Added ability to add to menu link to archive of post type.
650
- * Added ability to setup meta box callback function. https://wp-types.com/forums/topic/add-support-for-meta_box_cb-in-custom-taxonomy/
651
  * Added ability to add HTML5 placeholder attribute for custom post fields.
652
- * Fixed problem with CPT labels. https://wp-types.com/forums/topic/after-save-cpts-cutom-labels-always-revert-to-default-label/
653
- * Added a filters to the post title as option text in the select dropdown for post parents. wpcf_pr_belongs_items for array of options and wpcf_pr_belongs_item for one option. https://wp-types.com/forums/topic/help-to-distinguish-duplicate-titles-in-post-relationship/
654
  * Added ability to choose custom fields to display it on custom posts admin list.
655
  * Fixed problem with saving parent data into child data. On parent edit screen.
656
  * Added check group name for Custom Fields and User Fields.
@@ -660,57 +678,57 @@ Additionally, Types is the only plugin that lets you define parent/child relatio
660
 
661
  * Release date: 2015-02-24
662
  * Fixed Installer patch to plugins.
663
- * Fixed problem with "Access Control and User Roles" menu in Types, when Access is active http://wp-types.com/forums/topic/update-issues-fatal-error-require_once-failed-opening-required-wpcf_access_/
664
  * Changed utm_media used in links on "Getting Started" pages.
665
 
666
  = 1.6.5 =
667
 
668
  * Release date: 2015-02-10
669
  * Changed in relationships, now all posts are showed, even those which have show_ui to false.
670
- * Added ability to hide custom post types on post relationships list. https://wp-types.com/forums/topic/post-relationship-doesnt-show-post-type-events-created-by-events-espresso/ using filter add_filter('wpcf_show_ui_hide_in_relationships', '__return_false');
671
  * Fixed a problem with deleting last children on post relationships table.
672
- * Added filter to allow use "?" in image url. https://wp-types.com/forums/topic/image-custom-field-is-not-storing-image-path-with-parameters/
673
- * Added option for child table, when editing parent to allow show only list of children instead edit form. http://wp-types.com/forums/topic/miss-settings-for-post-relationship-child-options/
674
  * Fixed a problem with slug in custom fields, when field have special chars.
675
  * Fixed wrong display message about custom fields not manageable by Types.
676
- * Fixed a conflict with Formidable-Pro plugin https://wp-types.com/forums/topic/plugin-conflict/
677
  * Fixed creating new post in relationships. WP 4.1 need real title not faked by one space.
678
- * Fixed problem with validate fields on user create page. http://wp-types.com/forums/topic/custom-usermeta-bypassed-even-required-is-set/
679
  * Improved Edit CPT and Edit CT screens to be more compatible with WP Admin UI
680
- * Fixed problem with default label which contains single quote character (eg. French) https://wp-types.com/forums/topic/default-label-always-shown/
681
  * Improved display list of custom fields groups.
682
 
683
  = 1.6.4 =
684
 
685
  * Release date: 2014-11-17
686
  * Fixed an issue with dependency between custom taxonomies and custom posts when importing data from the "Custom Post Type UI" plugin.
687
- * Fixed an issue with editing checkboxes with the option "save 0 to the database" selected, created for Custom Posts. http://wp-types.com/forums/topic/checkbox-custom-field-doesnt-save-value-since-upgrade-to-version-1-6-2/ http://wp-types.com/forums/topic/types-checkbox-field-not-saving-after-save-0-to-the-database/
688
- * Fixed an issue with PHP notices being thrown when relative URLs to images were used. http://wp-types.com/forums/topic/php-notice-undefined-index-host-in-image-php/
689
  * Fixed the example file which adds the Google Map field to Types and allows users to enter coordinates to display a map on the front-end.
690
  * Added the "wpcf_delete_relation_meta" filter which allows deletion of all post relationships when deleting a custom post type.
691
- * Fixed an issue with the file name being changed when the file was uploaded. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/189560556/comments http://wp-types.com/forums/topic/types-1-6-update-breaks-layout-that-worked-in-types-1-5-7/
692
- * Fixed a problem with duplicate slugs on "Edit Group" screen. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/187118123/comments http://wp-types.com/forums/topic/cant-add-more-custom-fields/
693
  * Fixed a problem with default description not disappearing for non-English placeholders. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/189787190/comments
694
  * Fixed a problem with Custom Taxonomy metaboxes still appearing on the Custom Post editing page even after removing a Custom Taxonomy from a Custom Post Type.
695
  * Fixed embedding OTGS CSS for the admin area. https://wordpress.org/support/topic/four-stylesheets-being-loaded-at-frontend
696
- * Fixed a problem with Checkbox field value not being saved. https://wp-types.com/forums/topic/checkbox-value-not-saved/
697
- * Added the option to select posts with the "Private" post status as parents in a parent-child Custom Post Types relationships. http://wp-types.com/forums/topic/cred-child-form-not-working-with-private-ctp/
698
  * Fixed a problem with the date-picker. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/191190651/comments
699
  * Fixed a problem with label menu in wp-admin for child posts.
700
  * Fixed a problem with child table when edit parent post and children do not have title.
701
- * Prevent to chose repetitive field in child table on edit parent screen. http://wp-types.com/forums/topic/wp-types-select-child-fields-to-be-displayed-specific-fields-not-working/
702
- * Added a dynamic "posted x minutes/hours ago" for Types fields. https://wp-types.com/forums/topic/adding-a-dynamic-posted-x-minuteshours-ago-in-a-view/
703
- * Improved post relation table by using more precise labels. http://wp-types.com/forums/topic/displaying-the-best-names-of-cpts-in-applicable-contexts/
704
  * Fixed a problem with display checkbox value from database if checkbox is empty.
705
 
706
  = 1.6.3 =
707
 
708
  * Release date: 2014-10-23
709
  * Added the message to ask users to answer a short survey for feedback on their work using the Types plugin.
710
- * Fixed a problem where the custom field group’s description was missing from the post/page editing page. http://wp-types.com/forums/topic/custom-field-group-descriptions-no-longer-visible-in-cpt-add-newedit-screen/
711
- * Fixed a problem where the field descriptions weren’t displayed on the user profile editing page. http://wp-types.com/forums/topic/checkbox-description-fields-no-longer-display-in-types-1-6-2/
712
  * Fixed a problem where users weren’t able to untick the single and multiple checkbox fields on the user profile editing page.
713
- * Fixed a problem where the value of date field couldn’t be cleared and added new button which clears the date field value. http://wp-types.com/forums/topic/problem-2-after-update/
714
  * Replaced the deprecated like_escape function with the wpdb::esc_like function.
715
  * Fixed a problem where the parent-child relations between custom post types persisted after deleting and re-creating a custom post type.
716
  * Fixed a problem where date picker scripts were being enqueued in the front end. https://wordpress.org/support/topic/datepicker-css-enqueued-on-public
1
  === Toolset Types - Custom Post Types, Custom Fields and Taxonomies ===
2
  Contributors: AmirHelzer, brucepearson, christianglingener, jadpm, zaantar, jmilczarek, kouratoras, displaynone
3
+ Donate link: http://toolset.com
4
  Tags: CMS, custom field, custom fields, custom post type, custom post types, field, fields post, post type, post types, taxonomies, taxonomy, toolset
5
  Text Domain: wpcf
6
  Domain Path: /embedded/locale
7
  License: GPLv2
8
  Requires at least: 3.7
9
+ Requires PHP: 5.3
10
  Tested up to: 4.9
11
+ Stable tag: 2.3
 
12
  The complete and reliable plugin for managing custom post types, custom taxonomies and custom fields.
13
 
14
  == Description ==
15
 
16
  **Toolset Types let’s you add custom post types, custom fields and custom taxonomies to the WordPress admin. A convenient dashboard lets you control everything from one place.**
17
 
18
+ [youtube https://www.youtube.com/watch?v=Akzybh3uyXA]
19
+
20
+ = TYPES 3.0 AVAILABLE =
21
+ We have [released Types 3.0](https://toolset.com/2018/05/toolset-post-relationships-release/) with completely rewritten post relationships (many-to-many post relationships, repeatable field groups and much more).
22
+
23
+ However, Types since version 3.0 is a [part of the complete Toolset package](https://toolset.com/2017/11/types-plugin-is-moving-to-be-a-part-of-the-complete-toolset-package/) and it is available only with a [Toolset account](https://toolset.com).
24
+
25
+ We will keep supporting the free version of Types with security and compatibility updates and bug fixes through 2018.
26
 
27
  = COMPLETE DOCUMENTATION, POWERFUL API, SIMPLE GUI FOR NON-CODERS =
28
+ If you're an experienced PHP developer, you'll appreciate Types comprehensive [fields API](https://toolset.com/documentation/customizing-sites-using-php/functions/).
29
 
30
+ You will find detailed guides on [adding custom post types, fields and taxonomy to the front-end](https://toolset.com/documentation/customizing-sites-using-php/), including:
31
 
32
+ * [Creating templates for single custom posts](https://toolset.com/documentation/customizing-sites-using-php/creating-templates-single-custom-posts/)
33
+ * [Creating templates for custom post type archives](https://toolset.com/documentation/customizing-sites-using-php/creating-templates-custom-post-type-archives/)
34
+ * [Creating custom user profiles](https://toolset.com/documentation/customizing-sites-using-php/creating-custom-user-profiles/)
35
+ * [Create taxonomy term archives](https://toolset.com/documentation/customizing-sites-using-php/creating-taxonomy-term-archives/)
36
 
37
+ and [more](https://toolset.com/documentation/customizing-sites-using-php/).
38
 
39
+ **Too much technical stuff to learn?** The full [Toolset](https://toolset.com) package lets you build complete WordPress sites from within the admin dashboard.
40
 
41
  = CUSTOM FIELDS FOR CONTENT, TAXONOMY TERMS AND USERS =
42
  Types lets you add custom fields for posts (meaning, WordPress posts, pages and custom content types), taxonomy terms and users. You can add any field types to different user profiles.
43
 
44
  = ACCESS CONTROL FOR FIELDS =
45
+ Using [Access](https://toolset.com/home/toolset-components/#access), you will be able to control what fields different users can edit and view. This way, you can make some field groups read-only for certain users, and fully-editable for other users.
46
 
47
  For example, when you build a membership site, the site admin will be able to change membership levels for everyone and users will see their membership fields as read-only.
48
 
49
  = RELIABLE SUPPORT =
50
+ To get support for Types, please join our [technical support forum](https://toolset.com/forums/). You will receive support directly from our developers, helping you deliver great sites on time and correctly.
51
 
52
  = CUSTOM FIELDS =
53
 
90
 
91
  = MULTILINGUAL READY =
92
 
93
+ Types is the only custom fields and post types plugin that's built multilingual-ready. It plays perfectly with [WPML](http://wpml.org). You'll be able to translate everything, including texts and labels in the WordPress admin and user-content for front-page. See the [guide for translating Toolset](https://toolset.com/documentation/translating-sites-built-with-toolset/).
94
 
95
  = BUILT FOR STABILITY =
96
 
111
  To display custom post types on the home-page, you have two options:
112
 
113
  1. If you're comfortable with PHP and WordPress API, edit the site's template files (probably index.php) and load the custom post types there. Different themes do this differently, so we can't really say what single approach works best. You should look at [get_posts](http://codex.wordpress.org/Template_Tags/get_posts), which is part of the WordPress Template Tags system.
114
+
115
+ 2. If you want to build sites right away, without becoming an expert in WordPress API and try our [Toolset Views](https://toolset.com/home/views-create-elegant-displays-for-your-content/). You'll be able to load whatever content you need from the database and display it anywhere and in whatever way you choose.
116
 
117
  We're sorry, but we don't know of any third option which is both free and requires no coding.
118
 
119
+ = How can I create repeating field groups?=
120
+
121
+ The paid version of Types, available through [Toolset](https://toolset.com) Website lets you create infinitely nested groups of repeating fields.
122
+
123
  = Can I use Types without Views? =
124
 
125
  Sure you can! Types, by itself, replaces several other plugins that define custom types and fields. We believe that it does it much better, but it's up to you to decide.
170
 
171
  == Changelog ==
172
 
173
+ = 2.3 =
174
+ * Free Types version which will be available on wordpress.org only.
175
+ * Added a dismissable notice about what is going on with Types development.
176
+ * Removed the Installer dependency. Clients who buy Toolset will have to download Types 3.0+ manually for the first time.
177
+ * Users should no longer be asked to buy a subscription in order to upgrade (sorry about that).
178
+
179
  = 2.2.23 =
180
  * Fixed issue with Toolset registration
181
 
581
  = 1.7.5 =
582
 
583
  * Release date: 2015-07-15
584
+ * Fixed a problem with Custom Fields Group edit screen to allow (again) underscore in Custom Fields names. https://toolset.com/forums/topic/underscores-in-custom-field-names-possible-bug/
585
 
586
  = 1.7.4 =
587
 
591
  = 1.7.3 =
592
 
593
  * Release date: 2015-06-25
594
+ * Fixed problem with "View All" in menu builder for Custom Post Types. https://toolset.com/forums/topic/appearance-menu-php-errornotice/
595
 
596
  = 1.7.2 =
597
 
608
  = 1.7 =
609
 
610
  * Release date: 2015-06-15
611
+ * Added the word "mode" to the list of words reserved by WordPress. https://toolset.com/forums/topic/when-types-is-activated-i-cant-filter-articles-by-category-in-the-wp-backend/
612
  * Added the feature that automatically creates a slug for the Custom Post Type and Custom Taxonomy.
613
  * Added bulk delete options to Custom Field Groups listing page.
614
  * Added bulk delete options to Custom Post Types listing page.
617
  * Added the duplicate option for Custom Post Type and Custom Taxonomy.
618
  * Added the "Excerpt" field to the Child Posts table.
619
  * Added the "wpcf_field_image_max_width" filter which allows user to change image width on admin listing pages.
620
+ * Added the option to specify the custom archive slug for the Custom Post Type http://toolset.com/forums/topic/specify-cpt-archive-slug-as-string/
621
  * All custom fields on Custom Post Type listing pages are now sortable.
622
  * Changes to the Types fields GUI for easier support.
623
  * Fixed a problem with Custom Post Type, Custom Taxonomy and Custom Fields Group editing pages where forms would "freeze" after validation fails.
624
+ * Fixed a problem with selecting an image for the Custom Image Field in the Child Posts table, after using the "Add New", "Save All" and "Save" buttons. https://toolset.com/forums/topic/featured-image-cannot-be-changed-after-first-save/
625
+ * Fixed a problem with multi-line field not being wrapped with P (paragraph) HTML tag https://toolset.com/forums/topic/multi-line-text-fields-are-missing-paragraph-tags/
626
  * Fixed problem with fields being covered by colorbox on the Custom Post Type editing page.
627
  * Fixed an issue where a wrong message was displayed when minimum number of characters has not been reached.
628
 
629
  = 1.6.6.6 =
630
 
631
  * Release date: 2015-06-10
632
+ * Fixed problem with "playlist" word. https://toolset.com/forums/topic/front-end-warning-from-wysiwyg-php/
633
 
634
  = 1.6.6.5 =
635
 
636
  * Release date: 2015-05-20
637
+ * Fixed problem with Uncaught ReferenceError: pagenow is not defined. http://toolset.com/forums/topic/nextgen-gallery-broken-urgent/
638
 
639
  = 1.6.6.4 =
640
 
649
  = 1.6.6.2 =
650
 
651
  * Release date: 2015-04-10
652
+ * Fixed problem with File Field which do not work when edited from the Parent Post Type. https://toolset.com/forums/topic/1-6-6-seems-to-break-child-fields-when-parent-has-an-image-field/
653
 
654
  = 1.6.6.1 =
655
 
659
  = 1.6.6 =
660
 
661
  * Release date: 2015-04-02
662
+ * Fixed problem with shortcode "playlist" used in WYSIWYG field. http://toolset.com/forums/topic/media-play-list-not-outputting-from-custom-wysiwyg-field-js-error/
663
+ * Fixed empty title problem for filter "wpt_field_options" on user edit/add screen https://toolset.com/forums/topic/populate-select-field-in-wpcf-um-group/
664
+ * Added ability to create CPT without title and editor. https://toolset.com/forums/topic/inaccurate-warning-message-when-creatingediting-a-cpt/
665
  * Added Skype field validation.
666
  * Fixed problem with loading custom CSS when user meta group is inactive or not assign to certain user role.
667
  * Added ability to add to menu link to archive of post type.
668
+ * Added ability to setup meta box callback function. https://toolset.com/forums/topic/add-support-for-meta_box_cb-in-custom-taxonomy/
669
  * Added ability to add HTML5 placeholder attribute for custom post fields.
670
+ * Fixed problem with CPT labels. https://toolset.com/forums/topic/after-save-cpts-cutom-labels-always-revert-to-default-label/
671
+ * Added a filters to the post title as option text in the select dropdown for post parents. wpcf_pr_belongs_items for array of options and wpcf_pr_belongs_item for one option. https://toolset.com/forums/topic/help-to-distinguish-duplicate-titles-in-post-relationship/
672
  * Added ability to choose custom fields to display it on custom posts admin list.
673
  * Fixed problem with saving parent data into child data. On parent edit screen.
674
  * Added check group name for Custom Fields and User Fields.
678
 
679
  * Release date: 2015-02-24
680
  * Fixed Installer patch to plugins.
681
+ * Fixed problem with "Access Control and User Roles" menu in Types, when Access is active http://toolset.com/forums/topic/update-issues-fatal-error-require_once-failed-opening-required-wpcf_access_/
682
  * Changed utm_media used in links on "Getting Started" pages.
683
 
684
  = 1.6.5 =
685
 
686
  * Release date: 2015-02-10
687
  * Changed in relationships, now all posts are showed, even those which have show_ui to false.
688
+ * Added ability to hide custom post types on post relationships list. https://toolset.com/forums/topic/post-relationship-doesnt-show-post-type-events-created-by-events-espresso/ using filter add_filter('wpcf_show_ui_hide_in_relationships', '__return_false');
689
  * Fixed a problem with deleting last children on post relationships table.
690
+ * Added filter to allow use "?" in image url. https://toolset.com/forums/topic/image-custom-field-is-not-storing-image-path-with-parameters/
691
+ * Added option for child table, when editing parent to allow show only list of children instead edit form. http://toolset.com/forums/topic/miss-settings-for-post-relationship-child-options/
692
  * Fixed a problem with slug in custom fields, when field have special chars.
693
  * Fixed wrong display message about custom fields not manageable by Types.
694
+ * Fixed a conflict with Formidable-Pro plugin https://toolset.com/forums/topic/plugin-conflict/
695
  * Fixed creating new post in relationships. WP 4.1 need real title not faked by one space.
696
+ * Fixed problem with validate fields on user create page. http://toolset.com/forums/topic/custom-usermeta-bypassed-even-required-is-set/
697
  * Improved Edit CPT and Edit CT screens to be more compatible with WP Admin UI
698
+ * Fixed problem with default label which contains single quote character (eg. French) https://toolset.com/forums/topic/default-label-always-shown/
699
  * Improved display list of custom fields groups.
700
 
701
  = 1.6.4 =
702
 
703
  * Release date: 2014-11-17
704
  * Fixed an issue with dependency between custom taxonomies and custom posts when importing data from the "Custom Post Type UI" plugin.
705
+ * Fixed an issue with editing checkboxes with the option "save 0 to the database" selected, created for Custom Posts. http://toolset.com/forums/topic/checkbox-custom-field-doesnt-save-value-since-upgrade-to-version-1-6-2/ http://toolset.com/forums/topic/types-checkbox-field-not-saving-after-save-0-to-the-database/
706
+ * Fixed an issue with PHP notices being thrown when relative URLs to images were used. http://toolset.com/forums/topic/php-notice-undefined-index-host-in-image-php/
707
  * Fixed the example file which adds the Google Map field to Types and allows users to enter coordinates to display a map on the front-end.
708
  * Added the "wpcf_delete_relation_meta" filter which allows deletion of all post relationships when deleting a custom post type.
709
+ * Fixed an issue with the file name being changed when the file was uploaded. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/189560556/comments http://toolset.com/forums/topic/types-1-6-update-breaks-layout-that-worked-in-types-1-5-7/
710
+ * Fixed a problem with duplicate slugs on "Edit Group" screen. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/187118123/comments http://toolset.com/forums/topic/cant-add-more-custom-fields/
711
  * Fixed a problem with default description not disappearing for non-English placeholders. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/189787190/comments
712
  * Fixed a problem with Custom Taxonomy metaboxes still appearing on the Custom Post editing page even after removing a Custom Taxonomy from a Custom Post Type.
713
  * Fixed embedding OTGS CSS for the admin area. https://wordpress.org/support/topic/four-stylesheets-being-loaded-at-frontend
714
+ * Fixed a problem with Checkbox field value not being saved. https://toolset.com/forums/topic/checkbox-value-not-saved/
715
+ * Added the option to select posts with the "Private" post status as parents in a parent-child Custom Post Types relationships. http://toolset.com/forums/topic/cred-child-form-not-working-with-private-ctp/
716
  * Fixed a problem with the date-picker. https://icanlocalize.basecamphq.com/projects/7393061-toolset/todo_items/191190651/comments
717
  * Fixed a problem with label menu in wp-admin for child posts.
718
  * Fixed a problem with child table when edit parent post and children do not have title.
719
+ * Prevent to chose repetitive field in child table on edit parent screen. http://toolset.com/forums/topic/wp-types-select-child-fields-to-be-displayed-specific-fields-not-working/
720
+ * Added a dynamic "posted x minutes/hours ago" for Types fields. https://toolset.com/forums/topic/adding-a-dynamic-posted-x-minuteshours-ago-in-a-view/
721
+ * Improved post relation table by using more precise labels. http://toolset.com/forums/topic/displaying-the-best-names-of-cpts-in-applicable-contexts/
722
  * Fixed a problem with display checkbox value from database if checkbox is empty.
723
 
724
  = 1.6.3 =
725
 
726
  * Release date: 2014-10-23
727
  * Added the message to ask users to answer a short survey for feedback on their work using the Types plugin.
728
+ * Fixed a problem where the custom field group’s description was missing from the post/page editing page. http://toolset.com/forums/topic/custom-field-group-descriptions-no-longer-visible-in-cpt-add-newedit-screen/
729
+ * Fixed a problem where the field descriptions weren’t displayed on the user profile editing page. http://toolset.com/forums/topic/checkbox-description-fields-no-longer-display-in-types-1-6-2/
730
  * Fixed a problem where users weren’t able to untick the single and multiple checkbox fields on the user profile editing page.
731
+ * Fixed a problem where the value of date field couldn’t be cleared and added new button which clears the date field value. http://toolset.com/forums/topic/problem-2-after-update/
732
  * Replaced the deprecated like_escape function with the wpdb::esc_like function.
733
  * Fixed a problem where the parent-child relations between custom post types persisted after deleting and re-creating a custom post type.
734
  * Fixed a problem where date picker scripts were being enqueued in the front end. https://wordpress.org/support/topic/datepicker-css-enqueued-on-public
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitb4ac95941783ab1f27185069ef17cdb2::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitddd6f71ce3d43f91bd17c1a0b9e5f071::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -379,9 +379,9 @@ class ClassLoader
379
  $subPath = substr($subPath, 0, $lastPos);
380
  $search = $subPath.'\\';
381
  if (isset($this->prefixDirsPsr4[$search])) {
 
382
  foreach ($this->prefixDirsPsr4[$search] as $dir) {
383
- $length = $this->prefixLengthsPsr4[$first][$search];
384
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
385
  return $file;
386
  }
387
  }
379
  $subPath = substr($subPath, 0, $lastPos);
380
  $search = $subPath.'\\';
381
  if (isset($this->prefixDirsPsr4[$search])) {
382
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
  foreach ($this->prefixDirsPsr4[$search] as $dir) {
384
+ if (file_exists($file = $dir . $pathEnd)) {
 
385
  return $file;
386
  }
387
  }
vendor/composer/autoload_classmap.php CHANGED
@@ -96,7 +96,6 @@ return array(
96
  'FieldFactory' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.field_factory.php',
97
  'FormAbstract' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/abstract.form.php',
98
  'FormFactory' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.form_factory.php',
99
- 'IOTGS_Installer_Template_Service' => $vendorDir . '/otgs/installer/templates/template-service/interface-iotgs-installer-template-service.php',
100
  'IToolset_Association' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/interface.php',
101
  'IToolset_Association_Query_Condition' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/interface.php',
102
  'IToolset_Association_Query_Element_Selector' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/interface.php',
@@ -111,7 +110,6 @@ return array(
111
  'IToolset_Post_Type_From_Types' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_from_types.php',
112
  'IToolset_Post_Type_Registered' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_registered.php',
113
  'IToolset_Potential_Association_Query' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_interface.php',
114
- 'IToolset_Query' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/i_query.php',
115
  'IToolset_Query_Condition' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/interface.php',
116
  'IToolset_Relationship_Database_Issue' => $vendorDir . '/toolset/toolset-common/inc/m2m/database/issue/interface.php',
117
  'IToolset_Relationship_Definition' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/definition/interface.php',
@@ -121,22 +119,18 @@ return array(
121
  'IToolset_Relationship_Role' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/role/interface.php',
122
  'IToolset_Relationship_Role_Parent_Child' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/role/parent_child_interface.php',
123
  'IToolset_Upgrade_Command' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_interface.php',
124
- 'Installer_Dependencies' => $vendorDir . '/otgs/installer/includes/class-installer-dependencies.php',
125
- 'Installer_Theme_Class' => $vendorDir . '/otgs/installer/includes/class-installer-theme.php',
126
- 'Installer_Upgrader_Skins' => $vendorDir . '/otgs/installer/includes/class-installer-upgrader-skins.php',
127
- 'OTGS_Installer_Filename_Hooks' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-filename-hooks.php',
128
- 'OTGS_Installer_Icons' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-icons.php',
129
- 'OTGS_Installer_PHP_Functions' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-php-functions.php',
130
- 'OTGS_Installer_Plugins_Page_Notice' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-plugins-page-notice.php',
131
- 'OTGS_Installer_Twig_Template_Service' => $vendorDir . '/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service.php',
132
- 'OTGS_Installer_Twig_Template_Service_Loader' => $vendorDir . '/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service-loader.php',
133
- 'OTGS_Installer_WP_Components_Hooks' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-components-hooks.php',
134
- 'OTGS_Installer_WP_Components_Sender' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-components-sender.php',
135
- 'OTGS_Installer_WP_Components_Setting_Ajax' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-components-setting-ajax.php',
136
- 'OTGS_Installer_WP_Components_Setting_Resources' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-components-setting-resources.php',
137
- 'OTGS_Installer_WP_Components_Setting_Templates' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-components-setting-templates.php',
138
- 'OTGS_Installer_WP_Components_Storage' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-components-storage.php',
139
- 'OTGS_Installer_WP_Share_Local_Components_Setting' => $vendorDir . '/otgs/installer/includes/class-otgs-installer-wp-share-local-components-setting.php',
140
  'ReCaptchaResponse' => $vendorDir . '/toolset/toolset-common/toolset-forms/js/recaptcha-php-1.11/recaptchalib.php',
141
  'Toolset_Admin_Bar_Menu' => $vendorDir . '/toolset/toolset-common/inc/toolset.admin.bar.menu.class.php',
142
  'Toolset_Admin_Controller' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/admin.php',
@@ -160,6 +154,7 @@ return array(
160
  'Toolset_Ajax_Handler_Interface' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/interface.php',
161
  'Toolset_Ajax_Handler_Intermediary_Post_Cleanup' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/intermediary_post_cleanup.php',
162
  'Toolset_Ajax_Handler_Migrate_To_M2M' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/migrate_to_m2m.php',
 
163
  'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php',
164
  'Toolset_Ajax_Handler_Select2_Suggest_Terms' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_terms.php',
165
  'Toolset_Ajax_Handler_Select2_Suggest_Users' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_users.php',
@@ -173,6 +168,7 @@ return array(
173
  'Toolset_Association_Cleanup_Dangling_Intermediary_Posts' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/dangling_intermediary_posts.php',
174
  'Toolset_Association_Cleanup_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/factory.php',
175
  'Toolset_Association_Cleanup_Post' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/post.php',
 
176
  'Toolset_Association_Cleanup_Troubleshooting_Section' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/troubleshooting_section.php',
177
  'Toolset_Association_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/factory.php',
178
  'Toolset_Association_Intermediary_Post_Persistence' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/intermediary_post_persistence.php',
@@ -185,21 +181,26 @@ return array(
185
  'Toolset_Association_Query_Condition_Element_Status' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/element_status.php',
186
  'Toolset_Association_Query_Condition_Empty_Intermediary' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/empty_intermediary.php',
187
  'Toolset_Association_Query_Condition_Exclude_Element' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/exclude_element.php',
 
188
  'Toolset_Association_Query_Condition_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition_factory.php',
189
  'Toolset_Association_Query_Condition_Has_Active_Relationship' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_active_relationship.php',
190
  'Toolset_Association_Query_Condition_Has_Domain' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain.php',
191
  'Toolset_Association_Query_Condition_Has_Domain_And_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain_and_type.php',
 
192
  'Toolset_Association_Query_Condition_Has_Legacy_Relationship' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_legacy_relationship.php',
193
  'Toolset_Association_Query_Condition_Has_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_type.php',
 
194
  'Toolset_Association_Query_Condition_Postmeta' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/postmeta.php',
195
  'Toolset_Association_Query_Condition_Relationship_Flag' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_flag.php',
196
  'Toolset_Association_Query_Condition_Relationship_Id' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_id.php',
 
197
  'Toolset_Association_Query_Condition_Search' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/search.php',
198
  'Toolset_Association_Query_Condition_Wp_Query' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/wp_query.php',
199
  'Toolset_Association_Query_Element_Selector_Abstract' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/abstract.php',
200
  'Toolset_Association_Query_Element_Selector_Default' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/default.php',
201
  'Toolset_Association_Query_Element_Selector_Provider' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/provider.php',
202
  'Toolset_Association_Query_Element_Selector_Wpml' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/wpml.php',
 
203
  'Toolset_Association_Query_Orderby' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/orderby/abstract.php',
204
  'Toolset_Association_Query_Orderby_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/orderby_factory.php',
205
  'Toolset_Association_Query_Orderby_Nothing' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/orderby/nothing.php',
@@ -316,6 +317,7 @@ return array(
316
  'Toolset_Field_Renderer_Preview_Date' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/date.php',
317
  'Toolset_Field_Renderer_Preview_File' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/file.php',
318
  'Toolset_Field_Renderer_Preview_Image' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/image.php',
 
319
  'Toolset_Field_Renderer_Preview_Radio' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/radio.php',
320
  'Toolset_Field_Renderer_Preview_Skype' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/skype.php',
321
  'Toolset_Field_Renderer_Preview_Textfield' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/textfield.php',
@@ -358,17 +360,25 @@ return array(
358
  'Toolset_Post_Type_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/factory.php',
359
  'Toolset_Post_Type_From_Types' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/from_types.php',
360
  'Toolset_Post_Type_Labels' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/labels.php',
 
361
  'Toolset_Post_Type_Query' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/query.php',
362
  'Toolset_Post_Type_Query_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/query_factory.php',
363
  'Toolset_Post_Type_Registered' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/registered.php',
364
  'Toolset_Post_Type_Repository' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/repository.php',
 
 
 
365
  'Toolset_Potential_Association_Query_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_factory.php',
 
 
 
366
  'Toolset_Potential_Association_Query_Posts' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_posts.php',
367
  'Toolset_Promotion' => $vendorDir . '/toolset/toolset-common/inc/toolset.promotion.class.php',
368
  'Toolset_Public_API_Loader' => $vendorDir . '/toolset/toolset-common/inc/public_api/loader.php',
369
  'Toolset_Query_Comparison_Operator' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/comparison_operator.php',
370
  'Toolset_Query_Condition_And' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/and.php',
371
  'Toolset_Query_Condition_Contradiction' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/contradiction.php',
 
372
  'Toolset_Query_Condition_Operator' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/operator.php',
373
  'Toolset_Query_Condition_Or' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/or.php',
374
  'Toolset_Query_Condition_Tautology' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/tautology.php',
@@ -402,10 +412,13 @@ return array(
402
  'Toolset_Relationship_Query_Cardinality_Match_Operators' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/operators.php',
403
  'Toolset_Relationship_Query_Cardinality_Match_Single' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/single.php',
404
  'Toolset_Relationship_Query_Condition' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/abstract.php',
 
 
405
  'Toolset_Relationship_Query_Condition_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition_factory.php',
406
  'Toolset_Relationship_Query_Condition_Has_Active_Types' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_active_types.php',
407
  'Toolset_Relationship_Query_Condition_Has_Cardinality' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_cardinality.php',
408
  'Toolset_Relationship_Query_Condition_Has_Domain' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_domain.php',
 
409
  'Toolset_Relationship_Query_Condition_Is_Active' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_active.php',
410
  'Toolset_Relationship_Query_Condition_Is_Boolean_Flag' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_boolean_flag.php',
411
  'Toolset_Relationship_Query_Condition_Is_Legacy' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_legacy.php',
@@ -434,11 +447,18 @@ return array(
434
  'Toolset_Settings_Screen' => $vendorDir . '/toolset/toolset-common/inc/toolset.settings.screen.class.php',
435
  'Toolset_Shortcode_Attr_Field' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/field.php',
436
  'Toolset_Shortcode_Attr_Interface' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/interface.php',
 
 
 
 
 
 
437
  'Toolset_Shortcode_Attr_Item_Id' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/id.php',
438
  'Toolset_Shortcode_Attr_Item_Legacy' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/legacy.php',
439
  'Toolset_Shortcode_Attr_Item_M2M' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/m2m.php',
440
  'Toolset_Shortcode_Generator' => $vendorDir . '/toolset/toolset-common/inc/toolset.shortcode.generator.class.php',
441
  'Toolset_Shortcode_Transformer' => $vendorDir . '/toolset/toolset-common/inc/toolset.shortcode.transformer.class.php',
 
442
  'Toolset_Stack' => $vendorDir . '/toolset/toolset-common/expression-parser/parser.php',
443
  'Toolset_Style' => $vendorDir . '/toolset/toolset-common/inc/toolset.assets.manager.class.php',
444
  'Toolset_Template_Dialog_Box' => $vendorDir . '/toolset/toolset-common/utility/gui-base/template_dialog_box.php',
@@ -449,8 +469,10 @@ return array(
449
  'Toolset_Twig_Extensions' => $vendorDir . '/toolset/toolset-common/utility/gui-base/twig_extensions.php',
450
  'Toolset_Upgrade_Command_Definition' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition.php',
451
  'Toolset_Upgrade_Command_Definition_Repository' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition_repository.php',
 
452
  'Toolset_Upgrade_Command_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_factory.php',
453
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php',
 
454
  'Toolset_Upgrade_Controller' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/controller.php',
455
  'Toolset_Upgrade_Executed_Commands' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/executed_commands.php',
456
  'Toolset_User_Editors_Editor_Abstract' => $vendorDir . '/toolset/toolset-common/user-editors/editor/abstract.php',
@@ -496,7 +518,6 @@ return array(
496
  'Toolset_Wp_Query_Adjustments_Table_Join_Manager' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/table_join_manager.php',
497
  'Toolset_Wpdb_User' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/wpdb_user.php',
498
  'Toolset_Wpml_Utils' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/wpml_utils.php',
499
- 'Translation_Service_Info' => $vendorDir . '/otgs/installer/includes/class-translation-service-info.php',
500
  'Twig_Autoloader' => $vendorDir . '/twig/twig/lib/Twig/Autoloader.php',
501
  'Twig_BaseNodeVisitor' => $vendorDir . '/twig/twig/lib/Twig/BaseNodeVisitor.php',
502
  'Twig_CacheInterface' => $vendorDir . '/twig/twig/lib/Twig/CacheInterface.php',
@@ -696,6 +717,7 @@ return array(
696
  'Twig_Util_TemplateDirIterator' => $vendorDir . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php',
697
  'Types_Admin' => $baseDir . '/application/controllers/admin.php',
698
  'Types_Admin_Menu' => $baseDir . '/application/controllers/admin_menu.php',
 
699
  'Types_Ajax' => $baseDir . '/application/controllers/ajax.php',
700
  'Types_Ajax_Handler_Abstract' => $baseDir . '/application/controllers/ajax/handler/abstract.php',
701
  'Types_Ajax_Handler_Check_Slug_Conflicts' => $baseDir . '/application/controllers/ajax/handler/check_slug_conflicts.php',
@@ -848,14 +870,10 @@ return array(
848
  'WPToolset_Field_Wysiwyg' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.wysiwyg.php',
849
  'WPToolset_Forms_Bootstrap' => $vendorDir . '/toolset/toolset-common/toolset-forms/bootstrap.php',
850
  'WPToolset_Forms_Conditional' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
 
851
  'WPToolset_Forms_Repetitive' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.repetitive.php',
852
  'WPToolset_Forms_Validation' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.validation.php',
853
  'WPToolset_Types' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.types.php',
854
  'WPV_Handle_Users_Functions' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
855
  'WPV_wpcf_switch_post_from_attr_id' => $vendorDir . '/toolset/toolset-common/inc/toolset.object.relationship.class.php',
856
- 'WP_Installer' => $vendorDir . '/otgs/installer/includes/class-wp-installer.php',
857
- 'WP_Installer_API' => $vendorDir . '/otgs/installer/includes/class-wp-installer-api.php',
858
- 'WP_Installer_Channels' => $vendorDir . '/otgs/installer/includes/class-wp-installer-channels.php',
859
- 'xrstf\\Composer52\\AutoloadGenerator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
860
- 'xrstf\\Composer52\\Generator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
861
  );
96
  'FieldFactory' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.field_factory.php',
97
  'FormAbstract' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/abstract.form.php',
98
  'FormFactory' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.form_factory.php',
 
99
  'IToolset_Association' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/interface.php',
100
  'IToolset_Association_Query_Condition' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/interface.php',
101
  'IToolset_Association_Query_Element_Selector' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/interface.php',
110
  'IToolset_Post_Type_From_Types' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_from_types.php',
111
  'IToolset_Post_Type_Registered' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_registered.php',
112
  'IToolset_Potential_Association_Query' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_interface.php',
 
113
  'IToolset_Query_Condition' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/interface.php',
114
  'IToolset_Relationship_Database_Issue' => $vendorDir . '/toolset/toolset-common/inc/m2m/database/issue/interface.php',
115
  'IToolset_Relationship_Definition' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/definition/interface.php',
119
  'IToolset_Relationship_Role' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/role/interface.php',
120
  'IToolset_Relationship_Role_Parent_Child' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/role/parent_child_interface.php',
121
  'IToolset_Upgrade_Command' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_interface.php',
122
+ 'OTGS\\Toolset\\Common\\Condition\\Installer\\IsAvailable' => $vendorDir . '/toolset/toolset-common/utility/condition/plugin/installer/is_available.php',
123
+ 'OTGS\\Toolset\\Common\\Condition\\Installer\\IsToolsetSubscriptionValid' => $vendorDir . '/toolset/toolset-common/utility/condition/plugin/installer/is_toolset_subscription_valid.php',
124
+ 'OTGS\\Toolset\\Common\\Interop\\HandlerInterface' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/interop/handler_interface.php',
125
+ 'OTGS\\Toolset\\Common\\Interop\\Handler\\InstallerCompatibilityReporting' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/interop/handler/installer_compatibility_reporting.php',
126
+ 'OTGS\\Toolset\\Common\\Interop\\Mediator' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/interop/mediator.php',
127
+ 'OTGS\\Toolset\\Common\\M2M\\Association\\Repository' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/Repository.php',
128
+ 'OTGS\\Toolset\\Common\\M2M\\PotentialAssociation\\CardinalityPostQuery' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/cardinality_post_query.php',
129
+ 'OTGS\\Toolset\\Common\\M2M\\PotentialAssociation\\JoinManager' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/join_manager.php',
130
+ 'OTGS\\Toolset\\Common\\M2M\\PotentialAssociation\\WpQueryAdjustment' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/wp_query_adjustment.php',
131
+ 'OTGS\\Toolset\\Common\\M2M\\PublicApiService' => $vendorDir . '/toolset/toolset-common/inc/m2m/public_api_service.php',
132
+ 'OTGS\\Toolset\\Common\\MaintenanceMode\\Controller' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/maintenance_mode/controller.php',
133
+ 'OTGS\\Toolset\\Common\\Utility\\Admin\\Notices\\Builder' => $vendorDir . '/toolset/toolset-common/utility/admin/notices/Builder.php',
 
 
 
 
134
  'ReCaptchaResponse' => $vendorDir . '/toolset/toolset-common/toolset-forms/js/recaptcha-php-1.11/recaptchalib.php',
135
  'Toolset_Admin_Bar_Menu' => $vendorDir . '/toolset/toolset-common/inc/toolset.admin.bar.menu.class.php',
136
  'Toolset_Admin_Controller' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/admin.php',
154
  'Toolset_Ajax_Handler_Interface' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/interface.php',
155
  'Toolset_Ajax_Handler_Intermediary_Post_Cleanup' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/intermediary_post_cleanup.php',
156
  'Toolset_Ajax_Handler_Migrate_To_M2M' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/migrate_to_m2m.php',
157
+ 'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Post_Type' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_post_type.php',
158
  'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php',
159
  'Toolset_Ajax_Handler_Select2_Suggest_Terms' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_terms.php',
160
  'Toolset_Ajax_Handler_Select2_Suggest_Users' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_users.php',
168
  'Toolset_Association_Cleanup_Dangling_Intermediary_Posts' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/dangling_intermediary_posts.php',
169
  'Toolset_Association_Cleanup_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/factory.php',
170
  'Toolset_Association_Cleanup_Post' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/post.php',
171
+ 'Toolset_Association_Cleanup_Post_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/post_type.php',
172
  'Toolset_Association_Cleanup_Troubleshooting_Section' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/cleanup/troubleshooting_section.php',
173
  'Toolset_Association_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/factory.php',
174
  'Toolset_Association_Intermediary_Post_Persistence' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/intermediary_post_persistence.php',
181
  'Toolset_Association_Query_Condition_Element_Status' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/element_status.php',
182
  'Toolset_Association_Query_Condition_Empty_Intermediary' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/empty_intermediary.php',
183
  'Toolset_Association_Query_Condition_Exclude_Element' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/exclude_element.php',
184
+ 'Toolset_Association_Query_Condition_Exclude_Relationship' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/exclude_relationship.php',
185
  'Toolset_Association_Query_Condition_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition_factory.php',
186
  'Toolset_Association_Query_Condition_Has_Active_Relationship' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_active_relationship.php',
187
  'Toolset_Association_Query_Condition_Has_Domain' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain.php',
188
  'Toolset_Association_Query_Condition_Has_Domain_And_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain_and_type.php',
189
+ 'Toolset_Association_Query_Condition_Has_Intermediary_Id' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_intermediary_id.php',
190
  'Toolset_Association_Query_Condition_Has_Legacy_Relationship' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_legacy_relationship.php',
191
  'Toolset_Association_Query_Condition_Has_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/has_type.php',
192
+ 'Toolset_Association_Query_Condition_Intermediary_Id' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/intermediary_id.php',
193
  'Toolset_Association_Query_Condition_Postmeta' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/postmeta.php',
194
  'Toolset_Association_Query_Condition_Relationship_Flag' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_flag.php',
195
  'Toolset_Association_Query_Condition_Relationship_Id' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_id.php',
196
+ 'Toolset_Association_Query_Condition_Relationship_Origin' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_origin.php',
197
  'Toolset_Association_Query_Condition_Search' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/search.php',
198
  'Toolset_Association_Query_Condition_Wp_Query' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/condition/wp_query.php',
199
  'Toolset_Association_Query_Element_Selector_Abstract' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/abstract.php',
200
  'Toolset_Association_Query_Element_Selector_Default' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/default.php',
201
  'Toolset_Association_Query_Element_Selector_Provider' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/provider.php',
202
  'Toolset_Association_Query_Element_Selector_Wpml' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/wpml.php',
203
+ 'Toolset_Association_Query_Element_Selector_Wpml_Lang_All' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/element_selector/wpml_lang_all.php',
204
  'Toolset_Association_Query_Orderby' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/orderby/abstract.php',
205
  'Toolset_Association_Query_Orderby_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/orderby_factory.php',
206
  'Toolset_Association_Query_Orderby_Nothing' => $vendorDir . '/toolset/toolset-common/inc/m2m/association/query/orderby/nothing.php',
317
  'Toolset_Field_Renderer_Preview_Date' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/date.php',
318
  'Toolset_Field_Renderer_Preview_File' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/file.php',
319
  'Toolset_Field_Renderer_Preview_Image' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/image.php',
320
+ 'Toolset_Field_Renderer_Preview_Post' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/post.php',
321
  'Toolset_Field_Renderer_Preview_Radio' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/radio.php',
322
  'Toolset_Field_Renderer_Preview_Skype' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/skype.php',
323
  'Toolset_Field_Renderer_Preview_Textfield' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/textfield.php',
360
  'Toolset_Post_Type_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/factory.php',
361
  'Toolset_Post_Type_From_Types' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/from_types.php',
362
  'Toolset_Post_Type_Labels' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/labels.php',
363
+ 'Toolset_Post_Type_List' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/list.php',
364
  'Toolset_Post_Type_Query' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/query.php',
365
  'Toolset_Post_Type_Query_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/query_factory.php',
366
  'Toolset_Post_Type_Registered' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/registered.php',
367
  'Toolset_Post_Type_Repository' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/post_type/repository.php',
368
+ 'Toolset_Postmeta_Access_Loader' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/postmeta_access/loader.php',
369
+ 'Toolset_Postmeta_Access_M2m' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/postmeta_access/m2m.php',
370
+ 'Toolset_Potential_Association_Query_Arguments' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_arguments.php',
371
  'Toolset_Potential_Association_Query_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_factory.php',
372
+ 'Toolset_Potential_Association_Query_Filter_Interface' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/filters/interface.php',
373
+ 'Toolset_Potential_Association_Query_Filter_Posts_Author' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/filters/post/author.php',
374
+ 'Toolset_Potential_Association_Query_Filter_Search_String' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/filters/search_string.php',
375
  'Toolset_Potential_Association_Query_Posts' => $vendorDir . '/toolset/toolset-common/inc/m2m/potential_association/query_posts.php',
376
  'Toolset_Promotion' => $vendorDir . '/toolset/toolset-common/inc/toolset.promotion.class.php',
377
  'Toolset_Public_API_Loader' => $vendorDir . '/toolset/toolset-common/inc/public_api/loader.php',
378
  'Toolset_Query_Comparison_Operator' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/comparison_operator.php',
379
  'Toolset_Query_Condition_And' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/and.php',
380
  'Toolset_Query_Condition_Contradiction' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/contradiction.php',
381
+ 'Toolset_Query_Condition_Not' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/not.php',
382
  'Toolset_Query_Condition_Operator' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/operator.php',
383
  'Toolset_Query_Condition_Or' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/or.php',
384
  'Toolset_Query_Condition_Tautology' => $vendorDir . '/toolset/toolset-common/inc/m2m/query/condition/tautology.php',
412
  'Toolset_Relationship_Query_Cardinality_Match_Operators' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/operators.php',
413
  'Toolset_Relationship_Query_Cardinality_Match_Single' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/single.php',
414
  'Toolset_Relationship_Query_Condition' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/abstract.php',
415
+ 'Toolset_Relationship_Query_Condition_Exclude_Relationship' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/exclude_relationship.php',
416
+ 'Toolset_Relationship_Query_Condition_Exclude_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/exclude_type.php',
417
  'Toolset_Relationship_Query_Condition_Factory' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition_factory.php',
418
  'Toolset_Relationship_Query_Condition_Has_Active_Types' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_active_types.php',
419
  'Toolset_Relationship_Query_Condition_Has_Cardinality' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_cardinality.php',
420
  'Toolset_Relationship_Query_Condition_Has_Domain' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_domain.php',
421
+ 'Toolset_Relationship_Query_Condition_Intermediary_Type' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/intermediary_type.php',
422
  'Toolset_Relationship_Query_Condition_Is_Active' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_active.php',
423
  'Toolset_Relationship_Query_Condition_Is_Boolean_Flag' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_boolean_flag.php',
424
  'Toolset_Relationship_Query_Condition_Is_Legacy' => $vendorDir . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_legacy.php',
447
  'Toolset_Settings_Screen' => $vendorDir . '/toolset/toolset-common/inc/toolset.settings.screen.class.php',
448
  'Toolset_Shortcode_Attr_Field' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/field.php',
449
  'Toolset_Shortcode_Attr_Interface' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/interface.php',
450
+ 'Toolset_Shortcode_Attr_Item_Gui_Base' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/base.php',
451
+ 'Toolset_Shortcode_Attr_Item_Gui_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/factory.php',
452
+ 'Toolset_Shortcode_Attr_Item_Gui_M2m' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/m2m.php',
453
+ 'Toolset_Shortcode_Attr_Item_Gui_O2m' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2m.php',
454
+ 'Toolset_Shortcode_Attr_Item_Gui_O2o' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2o.php',
455
+ 'Toolset_Shortcode_Attr_Item_Gui_Option' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/option.php',
456
  'Toolset_Shortcode_Attr_Item_Id' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/id.php',
457
  'Toolset_Shortcode_Attr_Item_Legacy' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/legacy.php',
458
  'Toolset_Shortcode_Attr_Item_M2M' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/m2m.php',
459
  'Toolset_Shortcode_Generator' => $vendorDir . '/toolset/toolset-common/inc/toolset.shortcode.generator.class.php',
460
  'Toolset_Shortcode_Transformer' => $vendorDir . '/toolset/toolset-common/inc/toolset.shortcode.transformer.class.php',
461
+ 'Toolset_Singleton_Factory' => $vendorDir . '/toolset/toolset-common/utility/singleton_factory_pre_php_5_6.php',
462
  'Toolset_Stack' => $vendorDir . '/toolset/toolset-common/expression-parser/parser.php',
463
  'Toolset_Style' => $vendorDir . '/toolset/toolset-common/inc/toolset.assets.manager.class.php',
464
  'Toolset_Template_Dialog_Box' => $vendorDir . '/toolset/toolset-common/utility/gui-base/template_dialog_box.php',
469
  'Toolset_Twig_Extensions' => $vendorDir . '/toolset/toolset-common/utility/gui-base/twig_extensions.php',
470
  'Toolset_Upgrade_Command_Definition' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition.php',
471
  'Toolset_Upgrade_Command_Definition_Repository' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition_repository.php',
472
+ 'Toolset_Upgrade_Command_Delete_Obsolete_Upgrade_Options' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command/delete_obsolete_version_number_option.php',
473
  'Toolset_Upgrade_Command_Factory' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command_factory.php',
474
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php',
475
+ 'Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v2_database_structure_upgrade.php',
476
  'Toolset_Upgrade_Controller' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/controller.php',
477
  'Toolset_Upgrade_Executed_Commands' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/upgrade/executed_commands.php',
478
  'Toolset_User_Editors_Editor_Abstract' => $vendorDir . '/toolset/toolset-common/user-editors/editor/abstract.php',
518
  'Toolset_Wp_Query_Adjustments_Table_Join_Manager' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/table_join_manager.php',
519
  'Toolset_Wpdb_User' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/wpdb_user.php',
520
  'Toolset_Wpml_Utils' => $vendorDir . '/toolset/toolset-common/inc/autoloaded/wpml_utils.php',
 
521
  'Twig_Autoloader' => $vendorDir . '/twig/twig/lib/Twig/Autoloader.php',
522
  'Twig_BaseNodeVisitor' => $vendorDir . '/twig/twig/lib/Twig/BaseNodeVisitor.php',
523
  'Twig_CacheInterface' => $vendorDir . '/twig/twig/lib/Twig/CacheInterface.php',
717
  'Twig_Util_TemplateDirIterator' => $vendorDir . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php',
718
  'Types_Admin' => $baseDir . '/application/controllers/admin.php',
719
  'Types_Admin_Menu' => $baseDir . '/application/controllers/admin_menu.php',
720
+ 'Types_Admin_Notices_Free_Version' => $baseDir . '/application/controllers/admin_notice/free-version.php',
721
  'Types_Ajax' => $baseDir . '/application/controllers/ajax.php',
722
  'Types_Ajax_Handler_Abstract' => $baseDir . '/application/controllers/ajax/handler/abstract.php',
723
  'Types_Ajax_Handler_Check_Slug_Conflicts' => $baseDir . '/application/controllers/ajax/handler/check_slug_conflicts.php',
870
  'WPToolset_Field_Wysiwyg' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.wysiwyg.php',
871
  'WPToolset_Forms_Bootstrap' => $vendorDir . '/toolset/toolset-common/toolset-forms/bootstrap.php',
872
  'WPToolset_Forms_Conditional' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
873
+ 'WPToolset_Forms_Conditional_RFG' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.conditional.rfg.php',
874
  'WPToolset_Forms_Repetitive' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.repetitive.php',
875
  'WPToolset_Forms_Validation' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.validation.php',
876
  'WPToolset_Types' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.types.php',
877
  'WPV_Handle_Users_Functions' => $vendorDir . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
878
  'WPV_wpcf_switch_post_from_attr_id' => $vendorDir . '/toolset/toolset-common/inc/toolset.object.relationship.class.php',
 
 
 
 
 
879
  );
vendor/composer/autoload_namespaces.php CHANGED
@@ -6,6 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'xrstf\\Composer52' => array($vendorDir . '/xrstf/composer-php52/lib'),
10
  'Twig_' => array($vendorDir . '/twig/twig/lib'),
11
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  'Twig_' => array($vendorDir . '/twig/twig/lib'),
10
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitb4ac95941783ab1f27185069ef17cdb2
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitb4ac95941783ab1f27185069ef17cdb2
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitb4ac95941783ab1f27185069ef17cdb2', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitb4ac95941783ab1f27185069ef17cdb2', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
@@ -48,19 +48,19 @@ class ComposerAutoloaderInitb4ac95941783ab1f27185069ef17cdb2
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
- $includeFiles = Composer\Autoload\ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
- composerRequireb4ac95941783ab1f27185069ef17cdb2($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
- function composerRequireb4ac95941783ab1f27185069ef17cdb2($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitddd6f71ce3d43f91bd17c1a0b9e5f071
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitddd6f71ce3d43f91bd17c1a0b9e5f071', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitddd6f71ce3d43f91bd17c1a0b9e5f071', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
48
  $loader->register(true);
49
 
50
  if ($useStaticLoader) {
51
+ $includeFiles = Composer\Autoload\ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071::$files;
52
  } else {
53
  $includeFiles = require __DIR__ . '/autoload_files.php';
54
  }
55
  foreach ($includeFiles as $fileIdentifier => $file) {
56
+ composerRequireddd6f71ce3d43f91bd17c1a0b9e5f071($fileIdentifier, $file);
57
  }
58
 
59
  return $loader;
60
  }
61
  }
62
 
63
+ function composerRequireddd6f71ce3d43f91bd17c1a0b9e5f071($fileIdentifier, $file)
64
  {
65
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
66
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
8
  {
9
  public static $files = array (
10
  'a52c1eba913b4ecdd3571194b37baea9' => __DIR__ . '/../..' . '/application/functions.php',
@@ -25,13 +25,6 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
25
  );
26
 
27
  public static $prefixesPsr0 = array (
28
- 'x' =>
29
- array (
30
- 'xrstf\\Composer52' =>
31
- array (
32
- 0 => __DIR__ . '/..' . '/xrstf/composer-php52/lib',
33
- ),
34
- ),
35
  'T' =>
36
  array (
37
  'Twig_' =>
@@ -132,7 +125,6 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
132
  'FieldFactory' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.field_factory.php',
133
  'FormAbstract' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/abstract.form.php',
134
  'FormFactory' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.form_factory.php',
135
- 'IOTGS_Installer_Template_Service' => __DIR__ . '/..' . '/otgs/installer/templates/template-service/interface-iotgs-installer-template-service.php',
136
  'IToolset_Association' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/interface.php',
137
  'IToolset_Association_Query_Condition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/interface.php',
138
  'IToolset_Association_Query_Element_Selector' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/interface.php',
@@ -147,7 +139,6 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
147
  'IToolset_Post_Type_From_Types' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_from_types.php',
148
  'IToolset_Post_Type_Registered' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_registered.php',
149
  'IToolset_Potential_Association_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_interface.php',
150
- 'IToolset_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/i_query.php',
151
  'IToolset_Query_Condition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/interface.php',
152
  'IToolset_Relationship_Database_Issue' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/database/issue/interface.php',
153
  'IToolset_Relationship_Definition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/definition/interface.php',
@@ -157,22 +148,18 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
157
  'IToolset_Relationship_Role' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/role/interface.php',
158
  'IToolset_Relationship_Role_Parent_Child' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/role/parent_child_interface.php',
159
  'IToolset_Upgrade_Command' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_interface.php',
160
- 'Installer_Dependencies' => __DIR__ . '/..' . '/otgs/installer/includes/class-installer-dependencies.php',
161
- 'Installer_Theme_Class' => __DIR__ . '/..' . '/otgs/installer/includes/class-installer-theme.php',
162
- 'Installer_Upgrader_Skins' => __DIR__ . '/..' . '/otgs/installer/includes/class-installer-upgrader-skins.php',
163
- 'OTGS_Installer_Filename_Hooks' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-filename-hooks.php',
164
- 'OTGS_Installer_Icons' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-icons.php',
165
- 'OTGS_Installer_PHP_Functions' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-php-functions.php',
166
- 'OTGS_Installer_Plugins_Page_Notice' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-plugins-page-notice.php',
167
- 'OTGS_Installer_Twig_Template_Service' => __DIR__ . '/..' . '/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service.php',
168
- 'OTGS_Installer_Twig_Template_Service_Loader' => __DIR__ . '/..' . '/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service-loader.php',
169
- 'OTGS_Installer_WP_Components_Hooks' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-components-hooks.php',
170
- 'OTGS_Installer_WP_Components_Sender' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-components-sender.php',
171
- 'OTGS_Installer_WP_Components_Setting_Ajax' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-components-setting-ajax.php',
172
- 'OTGS_Installer_WP_Components_Setting_Resources' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-components-setting-resources.php',
173
- 'OTGS_Installer_WP_Components_Setting_Templates' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-components-setting-templates.php',
174
- 'OTGS_Installer_WP_Components_Storage' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-components-storage.php',
175
- 'OTGS_Installer_WP_Share_Local_Components_Setting' => __DIR__ . '/..' . '/otgs/installer/includes/class-otgs-installer-wp-share-local-components-setting.php',
176
  'ReCaptchaResponse' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/js/recaptcha-php-1.11/recaptchalib.php',
177
  'Toolset_Admin_Bar_Menu' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.admin.bar.menu.class.php',
178
  'Toolset_Admin_Controller' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/admin.php',
@@ -196,6 +183,7 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
196
  'Toolset_Ajax_Handler_Interface' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/interface.php',
197
  'Toolset_Ajax_Handler_Intermediary_Post_Cleanup' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/intermediary_post_cleanup.php',
198
  'Toolset_Ajax_Handler_Migrate_To_M2M' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/migrate_to_m2m.php',
 
199
  'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php',
200
  'Toolset_Ajax_Handler_Select2_Suggest_Terms' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_terms.php',
201
  'Toolset_Ajax_Handler_Select2_Suggest_Users' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_users.php',
@@ -209,6 +197,7 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
209
  'Toolset_Association_Cleanup_Dangling_Intermediary_Posts' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/dangling_intermediary_posts.php',
210
  'Toolset_Association_Cleanup_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/factory.php',
211
  'Toolset_Association_Cleanup_Post' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/post.php',
 
212
  'Toolset_Association_Cleanup_Troubleshooting_Section' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/troubleshooting_section.php',
213
  'Toolset_Association_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/factory.php',
214
  'Toolset_Association_Intermediary_Post_Persistence' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/intermediary_post_persistence.php',
@@ -221,21 +210,26 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
221
  'Toolset_Association_Query_Condition_Element_Status' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/element_status.php',
222
  'Toolset_Association_Query_Condition_Empty_Intermediary' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/empty_intermediary.php',
223
  'Toolset_Association_Query_Condition_Exclude_Element' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/exclude_element.php',
 
224
  'Toolset_Association_Query_Condition_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition_factory.php',
225
  'Toolset_Association_Query_Condition_Has_Active_Relationship' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_active_relationship.php',
226
  'Toolset_Association_Query_Condition_Has_Domain' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain.php',
227
  'Toolset_Association_Query_Condition_Has_Domain_And_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain_and_type.php',
 
228
  'Toolset_Association_Query_Condition_Has_Legacy_Relationship' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_legacy_relationship.php',
229
  'Toolset_Association_Query_Condition_Has_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_type.php',
 
230
  'Toolset_Association_Query_Condition_Postmeta' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/postmeta.php',
231
  'Toolset_Association_Query_Condition_Relationship_Flag' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_flag.php',
232
  'Toolset_Association_Query_Condition_Relationship_Id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_id.php',
 
233
  'Toolset_Association_Query_Condition_Search' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/search.php',
234
  'Toolset_Association_Query_Condition_Wp_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/wp_query.php',
235
  'Toolset_Association_Query_Element_Selector_Abstract' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/abstract.php',
236
  'Toolset_Association_Query_Element_Selector_Default' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/default.php',
237
  'Toolset_Association_Query_Element_Selector_Provider' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/provider.php',
238
  'Toolset_Association_Query_Element_Selector_Wpml' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/wpml.php',
 
239
  'Toolset_Association_Query_Orderby' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/orderby/abstract.php',
240
  'Toolset_Association_Query_Orderby_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/orderby_factory.php',
241
  'Toolset_Association_Query_Orderby_Nothing' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/orderby/nothing.php',
@@ -352,6 +346,7 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
352
  'Toolset_Field_Renderer_Preview_Date' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/date.php',
353
  'Toolset_Field_Renderer_Preview_File' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/file.php',
354
  'Toolset_Field_Renderer_Preview_Image' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/image.php',
 
355
  'Toolset_Field_Renderer_Preview_Radio' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/radio.php',
356
  'Toolset_Field_Renderer_Preview_Skype' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/skype.php',
357
  'Toolset_Field_Renderer_Preview_Textfield' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/textfield.php',
@@ -394,17 +389,25 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
394
  'Toolset_Post_Type_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/factory.php',
395
  'Toolset_Post_Type_From_Types' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/from_types.php',
396
  'Toolset_Post_Type_Labels' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/labels.php',
 
397
  'Toolset_Post_Type_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/query.php',
398
  'Toolset_Post_Type_Query_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/query_factory.php',
399
  'Toolset_Post_Type_Registered' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/registered.php',
400
  'Toolset_Post_Type_Repository' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/repository.php',
 
 
 
401
  'Toolset_Potential_Association_Query_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_factory.php',
 
 
 
402
  'Toolset_Potential_Association_Query_Posts' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_posts.php',
403
  'Toolset_Promotion' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.promotion.class.php',
404
  'Toolset_Public_API_Loader' => __DIR__ . '/..' . '/toolset/toolset-common/inc/public_api/loader.php',
405
  'Toolset_Query_Comparison_Operator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/comparison_operator.php',
406
  'Toolset_Query_Condition_And' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/and.php',
407
  'Toolset_Query_Condition_Contradiction' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/contradiction.php',
 
408
  'Toolset_Query_Condition_Operator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/operator.php',
409
  'Toolset_Query_Condition_Or' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/or.php',
410
  'Toolset_Query_Condition_Tautology' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/tautology.php',
@@ -438,10 +441,13 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
438
  'Toolset_Relationship_Query_Cardinality_Match_Operators' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/operators.php',
439
  'Toolset_Relationship_Query_Cardinality_Match_Single' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/single.php',
440
  'Toolset_Relationship_Query_Condition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/abstract.php',
 
 
441
  'Toolset_Relationship_Query_Condition_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition_factory.php',
442
  'Toolset_Relationship_Query_Condition_Has_Active_Types' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_active_types.php',
443
  'Toolset_Relationship_Query_Condition_Has_Cardinality' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_cardinality.php',
444
  'Toolset_Relationship_Query_Condition_Has_Domain' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_domain.php',
 
445
  'Toolset_Relationship_Query_Condition_Is_Active' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_active.php',
446
  'Toolset_Relationship_Query_Condition_Is_Boolean_Flag' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_boolean_flag.php',
447
  'Toolset_Relationship_Query_Condition_Is_Legacy' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_legacy.php',
@@ -470,11 +476,18 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
470
  'Toolset_Settings_Screen' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.settings.screen.class.php',
471
  'Toolset_Shortcode_Attr_Field' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/field.php',
472
  'Toolset_Shortcode_Attr_Interface' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/interface.php',
 
 
 
 
 
 
473
  'Toolset_Shortcode_Attr_Item_Id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/id.php',
474
  'Toolset_Shortcode_Attr_Item_Legacy' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/legacy.php',
475
  'Toolset_Shortcode_Attr_Item_M2M' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/m2m.php',
476
  'Toolset_Shortcode_Generator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.shortcode.generator.class.php',
477
  'Toolset_Shortcode_Transformer' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.shortcode.transformer.class.php',
 
478
  'Toolset_Stack' => __DIR__ . '/..' . '/toolset/toolset-common/expression-parser/parser.php',
479
  'Toolset_Style' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.assets.manager.class.php',
480
  'Toolset_Template_Dialog_Box' => __DIR__ . '/..' . '/toolset/toolset-common/utility/gui-base/template_dialog_box.php',
@@ -485,8 +498,10 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
485
  'Toolset_Twig_Extensions' => __DIR__ . '/..' . '/toolset/toolset-common/utility/gui-base/twig_extensions.php',
486
  'Toolset_Upgrade_Command_Definition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition.php',
487
  'Toolset_Upgrade_Command_Definition_Repository' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition_repository.php',
 
488
  'Toolset_Upgrade_Command_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_factory.php',
489
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php',
 
490
  'Toolset_Upgrade_Controller' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/controller.php',
491
  'Toolset_Upgrade_Executed_Commands' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/executed_commands.php',
492
  'Toolset_User_Editors_Editor_Abstract' => __DIR__ . '/..' . '/toolset/toolset-common/user-editors/editor/abstract.php',
@@ -532,7 +547,6 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
532
  'Toolset_Wp_Query_Adjustments_Table_Join_Manager' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/table_join_manager.php',
533
  'Toolset_Wpdb_User' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/wpdb_user.php',
534
  'Toolset_Wpml_Utils' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/wpml_utils.php',
535
- 'Translation_Service_Info' => __DIR__ . '/..' . '/otgs/installer/includes/class-translation-service-info.php',
536
  'Twig_Autoloader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Autoloader.php',
537
  'Twig_BaseNodeVisitor' => __DIR__ . '/..' . '/twig/twig/lib/Twig/BaseNodeVisitor.php',
538
  'Twig_CacheInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/CacheInterface.php',
@@ -732,6 +746,7 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
732
  'Twig_Util_TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php',
733
  'Types_Admin' => __DIR__ . '/../..' . '/application/controllers/admin.php',
734
  'Types_Admin_Menu' => __DIR__ . '/../..' . '/application/controllers/admin_menu.php',
 
735
  'Types_Ajax' => __DIR__ . '/../..' . '/application/controllers/ajax.php',
736
  'Types_Ajax_Handler_Abstract' => __DIR__ . '/../..' . '/application/controllers/ajax/handler/abstract.php',
737
  'Types_Ajax_Handler_Check_Slug_Conflicts' => __DIR__ . '/../..' . '/application/controllers/ajax/handler/check_slug_conflicts.php',
@@ -884,25 +899,21 @@ class ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2
884
  'WPToolset_Field_Wysiwyg' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.wysiwyg.php',
885
  'WPToolset_Forms_Bootstrap' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/bootstrap.php',
886
  'WPToolset_Forms_Conditional' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
 
887
  'WPToolset_Forms_Repetitive' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.repetitive.php',
888
  'WPToolset_Forms_Validation' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.validation.php',
889
  'WPToolset_Types' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.types.php',
890
  'WPV_Handle_Users_Functions' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
891
  'WPV_wpcf_switch_post_from_attr_id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.object.relationship.class.php',
892
- 'WP_Installer' => __DIR__ . '/..' . '/otgs/installer/includes/class-wp-installer.php',
893
- 'WP_Installer_API' => __DIR__ . '/..' . '/otgs/installer/includes/class-wp-installer-api.php',
894
- 'WP_Installer_Channels' => __DIR__ . '/..' . '/otgs/installer/includes/class-wp-installer-channels.php',
895
- 'xrstf\\Composer52\\AutoloadGenerator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
896
- 'xrstf\\Composer52\\Generator' => __DIR__ . '/..' . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
897
  );
898
 
899
  public static function getInitializer(ClassLoader $loader)
900
  {
901
  return \Closure::bind(function () use ($loader) {
902
- $loader->prefixLengthsPsr4 = ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2::$prefixLengthsPsr4;
903
- $loader->prefixDirsPsr4 = ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2::$prefixDirsPsr4;
904
- $loader->prefixesPsr0 = ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2::$prefixesPsr0;
905
- $loader->classMap = ComposerStaticInitb4ac95941783ab1f27185069ef17cdb2::$classMap;
906
 
907
  }, null, ClassLoader::class);
908
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071
8
  {
9
  public static $files = array (
10
  'a52c1eba913b4ecdd3571194b37baea9' => __DIR__ . '/../..' . '/application/functions.php',
25
  );
26
 
27
  public static $prefixesPsr0 = array (
 
 
 
 
 
 
 
28
  'T' =>
29
  array (
30
  'Twig_' =>
125
  'FieldFactory' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.field_factory.php',
126
  'FormAbstract' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/abstract.form.php',
127
  'FormFactory' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.form_factory.php',
 
128
  'IToolset_Association' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/interface.php',
129
  'IToolset_Association_Query_Condition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/interface.php',
130
  'IToolset_Association_Query_Element_Selector' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/interface.php',
139
  'IToolset_Post_Type_From_Types' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_from_types.php',
140
  'IToolset_Post_Type_Registered' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_registered.php',
141
  'IToolset_Potential_Association_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_interface.php',
 
142
  'IToolset_Query_Condition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/interface.php',
143
  'IToolset_Relationship_Database_Issue' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/database/issue/interface.php',
144
  'IToolset_Relationship_Definition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/definition/interface.php',
148
  'IToolset_Relationship_Role' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/role/interface.php',
149
  'IToolset_Relationship_Role_Parent_Child' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/role/parent_child_interface.php',
150
  'IToolset_Upgrade_Command' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_interface.php',
151
+ 'OTGS\\Toolset\\Common\\Condition\\Installer\\IsAvailable' => __DIR__ . '/..' . '/toolset/toolset-common/utility/condition/plugin/installer/is_available.php',
152
+ 'OTGS\\Toolset\\Common\\Condition\\Installer\\IsToolsetSubscriptionValid' => __DIR__ . '/..' . '/toolset/toolset-common/utility/condition/plugin/installer/is_toolset_subscription_valid.php',
153
+ 'OTGS\\Toolset\\Common\\Interop\\HandlerInterface' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/interop/handler_interface.php',
154
+ 'OTGS\\Toolset\\Common\\Interop\\Handler\\InstallerCompatibilityReporting' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/interop/handler/installer_compatibility_reporting.php',
155
+ 'OTGS\\Toolset\\Common\\Interop\\Mediator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/interop/mediator.php',
156
+ 'OTGS\\Toolset\\Common\\M2M\\Association\\Repository' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/Repository.php',
157
+ 'OTGS\\Toolset\\Common\\M2M\\PotentialAssociation\\CardinalityPostQuery' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/cardinality_post_query.php',
158
+ 'OTGS\\Toolset\\Common\\M2M\\PotentialAssociation\\JoinManager' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/join_manager.php',
159
+ 'OTGS\\Toolset\\Common\\M2M\\PotentialAssociation\\WpQueryAdjustment' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/wp_query_adjustment.php',
160
+ 'OTGS\\Toolset\\Common\\M2M\\PublicApiService' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/public_api_service.php',
161
+ 'OTGS\\Toolset\\Common\\MaintenanceMode\\Controller' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/maintenance_mode/controller.php',
162
+ 'OTGS\\Toolset\\Common\\Utility\\Admin\\Notices\\Builder' => __DIR__ . '/..' . '/toolset/toolset-common/utility/admin/notices/Builder.php',
 
 
 
 
163
  'ReCaptchaResponse' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/js/recaptcha-php-1.11/recaptchalib.php',
164
  'Toolset_Admin_Bar_Menu' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.admin.bar.menu.class.php',
165
  'Toolset_Admin_Controller' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/admin.php',
183
  'Toolset_Ajax_Handler_Interface' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/interface.php',
184
  'Toolset_Ajax_Handler_Intermediary_Post_Cleanup' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/intermediary_post_cleanup.php',
185
  'Toolset_Ajax_Handler_Migrate_To_M2M' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/migrate_to_m2m.php',
186
+ 'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Post_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_post_type.php',
187
  'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php',
188
  'Toolset_Ajax_Handler_Select2_Suggest_Terms' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_terms.php',
189
  'Toolset_Ajax_Handler_Select2_Suggest_Users' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_users.php',
197
  'Toolset_Association_Cleanup_Dangling_Intermediary_Posts' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/dangling_intermediary_posts.php',
198
  'Toolset_Association_Cleanup_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/factory.php',
199
  'Toolset_Association_Cleanup_Post' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/post.php',
200
+ 'Toolset_Association_Cleanup_Post_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/post_type.php',
201
  'Toolset_Association_Cleanup_Troubleshooting_Section' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/cleanup/troubleshooting_section.php',
202
  'Toolset_Association_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/factory.php',
203
  'Toolset_Association_Intermediary_Post_Persistence' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/intermediary_post_persistence.php',
210
  'Toolset_Association_Query_Condition_Element_Status' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/element_status.php',
211
  'Toolset_Association_Query_Condition_Empty_Intermediary' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/empty_intermediary.php',
212
  'Toolset_Association_Query_Condition_Exclude_Element' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/exclude_element.php',
213
+ 'Toolset_Association_Query_Condition_Exclude_Relationship' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/exclude_relationship.php',
214
  'Toolset_Association_Query_Condition_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition_factory.php',
215
  'Toolset_Association_Query_Condition_Has_Active_Relationship' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_active_relationship.php',
216
  'Toolset_Association_Query_Condition_Has_Domain' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain.php',
217
  'Toolset_Association_Query_Condition_Has_Domain_And_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_domain_and_type.php',
218
+ 'Toolset_Association_Query_Condition_Has_Intermediary_Id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_intermediary_id.php',
219
  'Toolset_Association_Query_Condition_Has_Legacy_Relationship' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_legacy_relationship.php',
220
  'Toolset_Association_Query_Condition_Has_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/has_type.php',
221
+ 'Toolset_Association_Query_Condition_Intermediary_Id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/intermediary_id.php',
222
  'Toolset_Association_Query_Condition_Postmeta' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/postmeta.php',
223
  'Toolset_Association_Query_Condition_Relationship_Flag' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_flag.php',
224
  'Toolset_Association_Query_Condition_Relationship_Id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_id.php',
225
+ 'Toolset_Association_Query_Condition_Relationship_Origin' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/relationship_origin.php',
226
  'Toolset_Association_Query_Condition_Search' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/search.php',
227
  'Toolset_Association_Query_Condition_Wp_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/condition/wp_query.php',
228
  'Toolset_Association_Query_Element_Selector_Abstract' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/abstract.php',
229
  'Toolset_Association_Query_Element_Selector_Default' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/default.php',
230
  'Toolset_Association_Query_Element_Selector_Provider' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/provider.php',
231
  'Toolset_Association_Query_Element_Selector_Wpml' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/wpml.php',
232
+ 'Toolset_Association_Query_Element_Selector_Wpml_Lang_All' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/element_selector/wpml_lang_all.php',
233
  'Toolset_Association_Query_Orderby' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/orderby/abstract.php',
234
  'Toolset_Association_Query_Orderby_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/orderby_factory.php',
235
  'Toolset_Association_Query_Orderby_Nothing' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/association/query/orderby/nothing.php',
346
  'Toolset_Field_Renderer_Preview_Date' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/date.php',
347
  'Toolset_Field_Renderer_Preview_File' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/file.php',
348
  'Toolset_Field_Renderer_Preview_Image' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/image.php',
349
+ 'Toolset_Field_Renderer_Preview_Post' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/post.php',
350
  'Toolset_Field_Renderer_Preview_Radio' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/radio.php',
351
  'Toolset_Field_Renderer_Preview_Skype' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/skype.php',
352
  'Toolset_Field_Renderer_Preview_Textfield' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/field/renderer/preview/textfield.php',
389
  'Toolset_Post_Type_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/factory.php',
390
  'Toolset_Post_Type_From_Types' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/from_types.php',
391
  'Toolset_Post_Type_Labels' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/labels.php',
392
+ 'Toolset_Post_Type_List' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/list.php',
393
  'Toolset_Post_Type_Query' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/query.php',
394
  'Toolset_Post_Type_Query_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/query_factory.php',
395
  'Toolset_Post_Type_Registered' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/registered.php',
396
  'Toolset_Post_Type_Repository' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/post_type/repository.php',
397
+ 'Toolset_Postmeta_Access_Loader' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/postmeta_access/loader.php',
398
+ 'Toolset_Postmeta_Access_M2m' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/postmeta_access/m2m.php',
399
+ 'Toolset_Potential_Association_Query_Arguments' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_arguments.php',
400
  'Toolset_Potential_Association_Query_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_factory.php',
401
+ 'Toolset_Potential_Association_Query_Filter_Interface' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/filters/interface.php',
402
+ 'Toolset_Potential_Association_Query_Filter_Posts_Author' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/filters/post/author.php',
403
+ 'Toolset_Potential_Association_Query_Filter_Search_String' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/filters/search_string.php',
404
  'Toolset_Potential_Association_Query_Posts' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/potential_association/query_posts.php',
405
  'Toolset_Promotion' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.promotion.class.php',
406
  'Toolset_Public_API_Loader' => __DIR__ . '/..' . '/toolset/toolset-common/inc/public_api/loader.php',
407
  'Toolset_Query_Comparison_Operator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/comparison_operator.php',
408
  'Toolset_Query_Condition_And' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/and.php',
409
  'Toolset_Query_Condition_Contradiction' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/contradiction.php',
410
+ 'Toolset_Query_Condition_Not' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/not.php',
411
  'Toolset_Query_Condition_Operator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/operator.php',
412
  'Toolset_Query_Condition_Or' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/or.php',
413
  'Toolset_Query_Condition_Tautology' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/query/condition/tautology.php',
441
  'Toolset_Relationship_Query_Cardinality_Match_Operators' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/operators.php',
442
  'Toolset_Relationship_Query_Cardinality_Match_Single' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/cardinality_match/single.php',
443
  'Toolset_Relationship_Query_Condition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/abstract.php',
444
+ 'Toolset_Relationship_Query_Condition_Exclude_Relationship' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/exclude_relationship.php',
445
+ 'Toolset_Relationship_Query_Condition_Exclude_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/exclude_type.php',
446
  'Toolset_Relationship_Query_Condition_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition_factory.php',
447
  'Toolset_Relationship_Query_Condition_Has_Active_Types' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_active_types.php',
448
  'Toolset_Relationship_Query_Condition_Has_Cardinality' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_cardinality.php',
449
  'Toolset_Relationship_Query_Condition_Has_Domain' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/has_domain.php',
450
+ 'Toolset_Relationship_Query_Condition_Intermediary_Type' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/intermediary_type.php',
451
  'Toolset_Relationship_Query_Condition_Is_Active' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_active.php',
452
  'Toolset_Relationship_Query_Condition_Is_Boolean_Flag' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_boolean_flag.php',
453
  'Toolset_Relationship_Query_Condition_Is_Legacy' => __DIR__ . '/..' . '/toolset/toolset-common/inc/m2m/relationship/query/condition/is_legacy.php',
476
  'Toolset_Settings_Screen' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.settings.screen.class.php',
477
  'Toolset_Shortcode_Attr_Field' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/field.php',
478
  'Toolset_Shortcode_Attr_Interface' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/interface.php',
479
+ 'Toolset_Shortcode_Attr_Item_Gui_Base' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/base.php',
480
+ 'Toolset_Shortcode_Attr_Item_Gui_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/factory.php',
481
+ 'Toolset_Shortcode_Attr_Item_Gui_M2m' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/m2m.php',
482
+ 'Toolset_Shortcode_Attr_Item_Gui_O2m' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2m.php',
483
+ 'Toolset_Shortcode_Attr_Item_Gui_O2o' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2o.php',
484
+ 'Toolset_Shortcode_Attr_Item_Gui_Option' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/option.php',
485
  'Toolset_Shortcode_Attr_Item_Id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/id.php',
486
  'Toolset_Shortcode_Attr_Item_Legacy' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/legacy.php',
487
  'Toolset_Shortcode_Attr_Item_M2M' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/m2m.php',
488
  'Toolset_Shortcode_Generator' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.shortcode.generator.class.php',
489
  'Toolset_Shortcode_Transformer' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.shortcode.transformer.class.php',
490
+ 'Toolset_Singleton_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/utility/singleton_factory_pre_php_5_6.php',
491
  'Toolset_Stack' => __DIR__ . '/..' . '/toolset/toolset-common/expression-parser/parser.php',
492
  'Toolset_Style' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.assets.manager.class.php',
493
  'Toolset_Template_Dialog_Box' => __DIR__ . '/..' . '/toolset/toolset-common/utility/gui-base/template_dialog_box.php',
498
  'Toolset_Twig_Extensions' => __DIR__ . '/..' . '/toolset/toolset-common/utility/gui-base/twig_extensions.php',
499
  'Toolset_Upgrade_Command_Definition' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition.php',
500
  'Toolset_Upgrade_Command_Definition_Repository' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_definition_repository.php',
501
+ 'Toolset_Upgrade_Command_Delete_Obsolete_Upgrade_Options' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command/delete_obsolete_version_number_option.php',
502
  'Toolset_Upgrade_Command_Factory' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command_factory.php',
503
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php',
504
+ 'Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v2_database_structure_upgrade.php',
505
  'Toolset_Upgrade_Controller' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/controller.php',
506
  'Toolset_Upgrade_Executed_Commands' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/upgrade/executed_commands.php',
507
  'Toolset_User_Editors_Editor_Abstract' => __DIR__ . '/..' . '/toolset/toolset-common/user-editors/editor/abstract.php',
547
  'Toolset_Wp_Query_Adjustments_Table_Join_Manager' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/table_join_manager.php',
548
  'Toolset_Wpdb_User' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/wpdb_user.php',
549
  'Toolset_Wpml_Utils' => __DIR__ . '/..' . '/toolset/toolset-common/inc/autoloaded/wpml_utils.php',
 
550
  'Twig_Autoloader' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Autoloader.php',
551
  'Twig_BaseNodeVisitor' => __DIR__ . '/..' . '/twig/twig/lib/Twig/BaseNodeVisitor.php',
552
  'Twig_CacheInterface' => __DIR__ . '/..' . '/twig/twig/lib/Twig/CacheInterface.php',
746
  'Twig_Util_TemplateDirIterator' => __DIR__ . '/..' . '/twig/twig/lib/Twig/Util/TemplateDirIterator.php',
747
  'Types_Admin' => __DIR__ . '/../..' . '/application/controllers/admin.php',
748
  'Types_Admin_Menu' => __DIR__ . '/../..' . '/application/controllers/admin_menu.php',
749
+ 'Types_Admin_Notices_Free_Version' => __DIR__ . '/../..' . '/application/controllers/admin_notice/free-version.php',
750
  'Types_Ajax' => __DIR__ . '/../..' . '/application/controllers/ajax.php',
751
  'Types_Ajax_Handler_Abstract' => __DIR__ . '/../..' . '/application/controllers/ajax/handler/abstract.php',
752
  'Types_Ajax_Handler_Check_Slug_Conflicts' => __DIR__ . '/../..' . '/application/controllers/ajax/handler/check_slug_conflicts.php',
899
  'WPToolset_Field_Wysiwyg' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.wysiwyg.php',
900
  'WPToolset_Forms_Bootstrap' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/bootstrap.php',
901
  'WPToolset_Forms_Conditional' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
902
+ 'WPToolset_Forms_Conditional_RFG' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.conditional.rfg.php',
903
  'WPToolset_Forms_Repetitive' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.repetitive.php',
904
  'WPToolset_Forms_Validation' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.validation.php',
905
  'WPToolset_Types' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.types.php',
906
  'WPV_Handle_Users_Functions' => __DIR__ . '/..' . '/toolset/toolset-common/toolset-forms/classes/class.conditional.php',
907
  'WPV_wpcf_switch_post_from_attr_id' => __DIR__ . '/..' . '/toolset/toolset-common/inc/toolset.object.relationship.class.php',
 
 
 
 
 
908
  );
909
 
910
  public static function getInitializer(ClassLoader $loader)
911
  {
912
  return \Closure::bind(function () use ($loader) {
913
+ $loader->prefixLengthsPsr4 = ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071::$prefixLengthsPsr4;
914
+ $loader->prefixDirsPsr4 = ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071::$prefixDirsPsr4;
915
+ $loader->prefixesPsr0 = ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071::$prefixesPsr0;
916
+ $loader->classMap = ComposerStaticInitddd6f71ce3d43f91bd17c1a0b9e5f071::$classMap;
917
 
918
  }, null, ClassLoader::class);
919
  }
vendor/composer/installed.json CHANGED
@@ -118,39 +118,6 @@
118
  "zikula"
119
  ]
120
  },
121
- {
122
- "name": "xrstf/composer-php52",
123
- "version": "v1.0.20",
124
- "version_normalized": "1.0.20.0",
125
- "source": {
126
- "type": "git",
127
- "url": "https://github.com/composer-php52/composer-php52.git",
128
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
129
- },
130
- "dist": {
131
- "type": "zip",
132
- "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
133
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
134
- "shasum": ""
135
- },
136
- "time": "2016-04-16T21:52:24+00:00",
137
- "type": "library",
138
- "extra": {
139
- "branch-alias": {
140
- "dev-default": "1.x-dev"
141
- }
142
- },
143
- "installation-source": "dist",
144
- "autoload": {
145
- "psr-0": {
146
- "xrstf\\Composer52": "lib/"
147
- }
148
- },
149
- "notification-url": "https://packagist.org/downloads/",
150
- "license": [
151
- "MIT"
152
- ]
153
- },
154
  {
155
  "name": "roave/security-advisories",
156
  "version": "dev-master",
@@ -291,96 +258,6 @@
291
  ],
292
  "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it"
293
  },
294
- {
295
- "name": "otgs/icons",
296
- "version": "dev-master",
297
- "version_normalized": "9999999-dev",
298
- "source": {
299
- "type": "git",
300
- "url": "https://git.onthegosystems.com/otgs-public/otgs-icons.git",
301
- "reference": "622ab3c0549b70c87fa20de1c302ffcc07ea8f9c"
302
- },
303
- "time": "2018-04-06T08:47:19+00:00",
304
- "type": "library",
305
- "installation-source": "source",
306
- "notification-url": "https://packagist.org/downloads/",
307
- "license": [
308
- "GPL-2.0"
309
- ],
310
- "description": "Toolset and WPML icons"
311
- },
312
- {
313
- "name": "otgs/installer",
314
- "version": "1.8.10",
315
- "version_normalized": "1.8.10.0",
316
- "source": {
317
- "type": "git",
318
- "url": "ssh://git@git.onthegosystems.com:10022/installer/installer.git",
319
- "reference": "28bcba8a8d54c28c8f4a51f095b438dfb3a3fdfd"
320
- },
321
- "require": {
322
- "composer/installers": "~1.0",
323
- "otgs/icons": "dev-master",
324
- "php": ">=5.2.0",
325
- "roave/security-advisories": "dev-master",
326
- "xrstf/composer-php52": "1.*"
327
- },
328
- "require-dev": {
329
- "otgs/build-tools": "~0.1",
330
- "otgs/build-tools-ci": "~0.7",
331
- "otgs/unit-tests-framework": "~1.2.0",
332
- "sebastian/phpcpd": "^3.0"
333
- },
334
- "time": "2018-04-06T09:28:44+00:00",
335
- "type": "library",
336
- "extra": {
337
- "branch-alias": {
338
- "dev-master": "1.8.x-dev",
339
- "dev-develop": "1.8.x-dev"
340
- }
341
- },
342
- "installation-source": "source",
343
- "autoload": {
344
- "classmap": [
345
- "includes/",
346
- "templates/"
347
- ]
348
- },
349
- "scripts": {
350
- "test": [
351
- "phpunit"
352
- ],
353
- "post-install-cmd": [
354
- "xrstf\\Composer52\\Generator::onPostInstallCmd",
355
- "OTGS\\Composer\\Scripts\\Install::PHPCSStandards"
356
- ],
357
- "post-update-cmd": [
358
- "xrstf\\Composer52\\Generator::onPostInstallCmd",
359
- "OTGS\\Composer\\Scripts\\Install::PHPCSStandards"
360
- ],
361
- "post-autoload-dump": [
362
- "xrstf\\Composer52\\Generator::onPostInstallCmd"
363
- ]
364
- },
365
- "license": [
366
- "GPL-2.0-or-later"
367
- ],
368
- "authors": [
369
- {
370
- "name": "Mihai Grigori",
371
- "email": "mihai@wpml.org",
372
- "homepage": "http://www.wp-types.com"
373
- }
374
- ],
375
- "description": "Installs and updates WPML and Toolset dependencies automatically",
376
- "homepage": "https://git.onthegosystems.com/installer/installer",
377
- "keywords": [
378
- "install",
379
- "plugins",
380
- "update",
381
- "utils"
382
- ]
383
- },
384
  {
385
  "name": "toolset/onthego-resources",
386
  "version": "dev-master",
@@ -431,12 +308,12 @@
431
  },
432
  {
433
  "name": "toolset/toolset-common",
434
- "version": "2.6.2",
435
- "version_normalized": "2.6.2.0",
436
  "source": {
437
  "type": "git",
438
  "url": "ssh://git@git.onthegosystems.com:10022/toolset/toolset-common.git",
439
- "reference": "f8084f2b13708b5589842bb8b1ab6a4c77a8e9ac"
440
  },
441
  "require": {
442
  "php": ">=5.2.0"
@@ -445,9 +322,10 @@
445
  "10up/wp_mock": "~0.2.0",
446
  "otgs/build-tools-ci": "~0.7.0",
447
  "otgs/unit-tests-framework": "~1.2.0",
448
- "phpunit/php-token-stream": "<2.0"
 
449
  },
450
- "time": "2018-03-01T14:00:14+00:00",
451
  "type": "library",
452
  "extra": {
453
  "branch-alias": {
@@ -490,8 +368,8 @@
490
  "authors": [
491
  {
492
  "name": "Bruce Pearson, Juan de Paco, Riccardo Strobbia, Francesco Livolsi, Jan Štětina, Christian Glingener",
493
- "email": "riccardo.s@icanlocalize.com",
494
- "homepage": "http://www.wp-types.com"
495
  }
496
  ],
497
  "description": "A set of libraries for Toolset Plugins",
118
  "zikula"
119
  ]
120
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  {
122
  "name": "roave/security-advisories",
123
  "version": "dev-master",
258
  ],
259
  "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it"
260
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  {
262
  "name": "toolset/onthego-resources",
263
  "version": "dev-master",
308
  },
309
  {
310
  "name": "toolset/toolset-common",
311
+ "version": "2.8",
312
+ "version_normalized": "2.8.0.0",
313
  "source": {
314
  "type": "git",
315
  "url": "ssh://git@git.onthegosystems.com:10022/toolset/toolset-common.git",
316
+ "reference": "289283b3a015b6ed5d16ad478ee3dde8604e5933"
317
  },
318
  "require": {
319
  "php": ">=5.2.0"
322
  "10up/wp_mock": "~0.2.0",
323
  "otgs/build-tools-ci": "~0.7.0",
324
  "otgs/unit-tests-framework": "~1.2.0",
325
+ "phpunit/php-token-stream": "<2.0",
326
+ "sebastian/phpcpd": "^3.0"
327
  },
328
+ "time": "2018-05-29T08:04:45+00:00",
329
  "type": "library",
330
  "extra": {
331
  "branch-alias": {
368
  "authors": [
369
  {
370
  "name": "Bruce Pearson, Juan de Paco, Riccardo Strobbia, Francesco Livolsi, Jan Štětina, Christian Glingener",
371
+ "email": "juan.d@onthegosystems.com",
372
+ "homepage": "https://toolset.com"
373
  }
374
  ],
375
  "description": "A set of libraries for Toolset Plugins",
vendor/otgs/icons/css/otgs-icons.css DELETED
@@ -1,196 +0,0 @@
1
- @charset "UTF-8";
2
-
3
- @font-face {
4
- font-family: "otgs-icons";
5
- src:url("fonts/otgs-icons.eot");
6
- src:url("fonts/otgs-icons.eot?#iefix") format("embedded-opentype"),
7
- url("fonts/otgs-icons.woff") format("woff"),
8
- url("fonts/otgs-icons.ttf") format("truetype"),
9
- url("fonts/otgs-icons.svg#otgs-icons") format("svg");
10
- font-weight: normal;
11
- font-style: normal;
12
-
13
- }
14
-
15
- [data-icon]:before {
16
- font-family: "otgs-icons" !important;
17
- content: attr(data-icon);
18
- font-style: normal !important;
19
- font-weight: normal !important;
20
- font-variant: normal !important;
21
- text-transform: none !important;
22
- speak: none;
23
- line-height: 1;
24
- -webkit-font-smoothing: antialiased;
25
- -moz-osx-font-smoothing: grayscale;
26
- }
27
-
28
- [class^="otgs-ico-"]:before,
29
- [class*=" otgs-ico-"]:before {
30
- font-family: "otgs-icons" !important;
31
- font-style: normal !important;
32
- font-weight: normal !important;
33
- font-variant: normal !important;
34
- text-transform: none !important;
35
- speak: none;
36
- line-height: 1;
37
- -webkit-font-smoothing: antialiased;
38
- -moz-osx-font-smoothing: grayscale;
39
- }
40
-
41
- .otgs-ico-note-add:before {
42
- content: "\61";
43
- }
44
- .otgs-ico-note-add-o:before {
45
- content: "\62";
46
- }
47
- .otgs-ico-translated:before {
48
- content: "\63";
49
- }
50
- .otgs-ico-yes:before {
51
- content: "\64";
52
- }
53
- .otgs-ico-in-progress:before {
54
- content: "\65";
55
- }
56
- .otgs-ico-copy:before {
57
- content: "\66";
58
- }
59
- .otgs-ico-copy-o:before {
60
- content: "\67";
61
- }
62
- .otgs-ico-note-edit:before {
63
- content: "\69";
64
- }
65
- .otgs-ico-note-edit-o:before {
66
- content: "\6a";
67
- }
68
- .otgs-ico-add:before {
69
- content: "\6b";
70
- }
71
- .otgs-ico-refresh:before {
72
- content: "\6c";
73
- }
74
- .otgs-ico-no:before {
75
- content: "\6e";
76
- }
77
- .otgs-ico-not-translated:before {
78
- content: "\6f";
79
- }
80
- .otgs-ico-delete:before {
81
- content: "\70";
82
- }
83
- .otgs-ico-waiting:before {
84
- content: "\71";
85
- }
86
- .otgs-ico-warning:before {
87
- content: "\73";
88
- }
89
- .otgs-ico-original:before {
90
- content: "\74";
91
- }
92
- .otgs-ico-needs-update:before {
93
- content: "\75";
94
- }
95
- .otgs-ico-cred:before {
96
- content: "\77";
97
- }
98
- .otgs-ico-layouts:before {
99
- content: "\78";
100
- }
101
- .otgs-ico-module-manager:before {
102
- content: "\79";
103
- }
104
- .otgs-ico-toolset:before {
105
- content: "\7a";
106
- }
107
- .otgs-ico-types:before {
108
- content: "\41";
109
- }
110
- .otgs-ico-views:before {
111
- content: "\42";
112
- }
113
- .otgs-ico-edit:before {
114
- content: "\68";
115
- }
116
- .otgs-ico-duplicate:before {
117
- content: "\6d";
118
- }
119
- .otgs-ico-basket:before {
120
- content: "\72";
121
- }
122
- .otgs-ico-discoverwp:before {
123
- content: "\43";
124
- }
125
- .otgs-ico-wpml:before {
126
- content: "\44";
127
- }
128
- .otgs-ico-otgs:before {
129
- content: "\45";
130
- }
131
- .otgs-ico-wrench:before {
132
- content: "\46";
133
- }
134
- .otgs-ico-link:before {
135
- content: "\47";
136
- }
137
- .otgs-ico-envelope-o:before {
138
- content: "\48";
139
- }
140
- .otgs-ico-user:before {
141
- content: "\49";
142
- }
143
- .otgs-ico-wpml-cms-nav:before {
144
- content: "\4a";
145
- }
146
- .otgs-ico-wpml-media:before {
147
- content: "\4b";
148
- }
149
- .otgs-ico-wpml-string-translation:before {
150
- content: "\4c";
151
- }
152
- .otgs-ico-wpml-translation-management:before {
153
- content: "\4d";
154
- }
155
- .otgs-ico-picture:before {
156
- content: "\4e";
157
- }
158
- .otgs-ico-toolset-training:before {
159
- content: "\4f";
160
- }
161
- .otgs-ico-access-title:before {
162
- content: "\50";
163
- }
164
- .otgs-ico-views-title:before {
165
- content: "\51";
166
- }
167
- .otgs-ico-cred-title:before {
168
- content: "\52";
169
- }
170
- .otgs-ico-layouts-title:before {
171
- content: "\53";
172
- }
173
- .otgs-ico-types-title:before {
174
- content: "\54";
175
- }
176
- .otgs-ico-module-manager-title:before {
177
- content: "\55";
178
- }
179
- .otgs-ico-access:before {
180
- content: "\76";
181
- }
182
- .otgs-ico-bullhorn:before {
183
- content: "\56";
184
- }
185
- .otgs-ico-comment:before {
186
- content: "\57";
187
- }
188
- .otgs-ico-quote:before {
189
- content: "\58";
190
- }
191
- .otgs-ico-thumbsup:before {
192
- content: "\59";
193
- }
194
- .otgs-ico-star:before {
195
- content: "\5a";
196
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/fonts/otgs-icons.eot DELETED
Binary file
vendor/otgs/icons/fonts/otgs-icons.svg DELETED
@@ -1,62 +0,0 @@
1
- <?xml version="1.0" standalone="no"?>
2
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg xmlns="http://www.w3.org/2000/svg">
4
- <metadata>Generated by Fontastic.me</metadata>
5
- <defs>
6
- <font id="otgs-icons" horiz-adv-x="512">
7
- <font-face font-family="otgs-icons" units-per-em="512" ascent="480" descent="-32"/>
8
- <missing-glyph horiz-adv-x="512" />
9
-
10
- <glyph glyph-name="note-add" unicode="&#97;" d="M394 304c-49 0-89 39-89 89l0 59-180 0c-36 0-65-29-65-65l0-261c0-70 66-66 66-66l261 0c36 0 65 29 65 65l0 179z m-92-91l-29 0 0-29c0-15-12-27-27-27-16 0-28 12-28 27l0 29-30 0c-16 0-28 12-28 28 0 15 12 27 28 27l29 0 0 29c0 15 12 27 27 27 15 0 27-12 27-27l0-29 29 0c16 0 28-12 28-27 1-14-11-28-26-28z m97 132l52 0-110 109 0-51c2-33 28-58 58-58z"/>
11
- <glyph glyph-name="note-add-o" unicode="&#98;" d="M242 324c16 0 28-12 28-27l0-29 29 0c15 0 27-12 27-27 0-16-12-28-27-28l-29 0 0-29c0-15-12-27-28-27-15 0-27 12-27 27l0 29-29 0c-15 0-27 12-27 28 0 15 12 27 27 27l29 0 0 29c0 14 12 27 27 27z m77 140l-196 0c-44 0-80-36-80-80l0-258c0-65 51-82 80-82l259 0c45 0 81 36 81 81l0 194z m0-48l97-99-25 0c-39 0-72 33-72 72z m111-293c0-26-20-46-46-46l-259 0c-14 0-48 5-48 49l0 258c0 26 20 46 46 46l162 0 0-41c0-58 48-104 104-104l41 0z"/>
12
- <glyph glyph-name="translated" unicode="&#99;" d="M439 384c-19 19-50 19-70 0l-156-154-70 70c-18 19-49 19-70 0-18-18-18-49 0-70l104-104c19-18 52-18 70 0l190 188c20 21 20 51 2 70z"/>
13
- <glyph glyph-name="yes" unicode="&#100;" d="M111 44c-7 0-36 2-58 23-15 15-24 35-24 61l0 256c0 44 36 80 80 80l179 0 0-34-177 0c-26 0-46-20-46-46l0-258c0-15 5-29 12-36 13-13 34-11 36-11l259 0c26 0 46 20 46 46l0 179 34 0 0-179c0-45-36-81-80-81l-259 0c0 0-2 0-2 0z m123 108c-9 0-17 3-24 10l-91 89c-13 14-13 34 0 48 14 13 35 13 48 0l60-60 140 213c10 16 31 21 48 11 15-11 20-31 10-48l-164-249c-5-9-15-14-25-16 0 2 0 2-2 2z"/>
14
- <glyph glyph-name="in-progress" unicode="&#101;" d="M329 203l0-15c-1-9-8-16-17-17l-17 0c-1 0-3 0-5-2-2 0-3-2-5-3-7-7-7-16-2-23l4-3 7-7 3-3c5-7 5-17 0-24l-12-12c-7-5-17-5-24 0l-5 3-7 7-3 4c0 0-2 0-2 1-2 2-5 2-7 2 0 0 0 0-1 0-2 0-4 0-6 0 0 0-1 0-1-2 0 0 0 0-2 0-2 0-2-1-3-3-2-2-4-5-4-9l0-17c-2-8-8-15-17-17l-15 0c-9 2-16 9-17 17l0 17c0 4-2 7-5 11-4 3-9 5-14 5 0 0 0 0-2 0 0 0-2 0-2 0 0 0-1 0-1 0 0 0-2 0-2 0 0 0 0 0-2 0 0 0 0 0-1-2l-9-9-3-3c-7-5-17-5-24 0l-12 12c-5 7-5 17 0 24l3 3 7 7 4 3c1 4 3 7 3 11 0 7-5 13-12 15 0 0 0 0-2 0 0 0-1 0-1 0l-19 0c-9 2-16 9-17 17l0 16c1 8 8 17 17 17l17 0c3 0 7 1 10 5 4 3 5 8 5 13 0 0 0 2 0 2 0 0 0 2 0 2 0 0 0 0 0 1 0 0 0 0 0 2l-12 7-3 3c-5 7-5 17 0 24l12 12c7 5 17 5 24 0l3-3 7-7 3-3c4-2 7-4 11-4 3 0 8 2 10 4 2 1 3 3 3 5 0 0 0 1 0 1 0 0 0 2 0 2 0 0 0 2 0 2 0 0 0 2 0 2l0 18c2 9 9 16 17 17l16 0c8-1 15-8 17-17l0-17c0-3 1-7 5-10 2-2 3-3 5-3 5-2 12-2 17 1l12 12c7 5 17 5 24 0l12-12c5-7 5-17 0-24l0-3-10-10c-2-2-2-4-4-5 0-2-2-4-2-5 0-6 4-11 7-14 2-2 5-2 7-4l22 0c9 0 16-6 17-15z m-134 31c-21 0-38-17-38-38 0-20 17-37 38-37 20 0 37 17 37 37 2 21-17 38-37 38z m257 94l-5-11c-3-5-10-8-17-6l-3 1-7 2-4 2c-1 0-1 0-3 0-2 0-3 0-5-2-5-2-9-9-7-15l2-2 5-10c2-7-2-14-7-17l-10-5c-7-2-14 0-17 6l-2 4-2 7-1 3c0 0 0 0 0 2-2 1-2 3-4 3-1 0-1 0-3 0 0 0-2 0-2 0-2 0-2 0-3-2-2-1-4-3-5-5l-2-1-2-7-5-2c-3-5-10-8-17-7l-10 5c-5 4-9 11-7 17l2 4 1 5 2 3c0 2 0 5 0 9-2 3-3 5-7 7 0 0 0 0-2 0 0 0 0 0-1 0 0 0 0 0-2 0 0 0 0 0-2 0 0 0 0 0-1 0l-9-5-3-2c-7-2-14 2-17 7l-5 10c-2 7 1 14 6 17l11 5 3 2c2 2 3 3 5 5 2 5 0 10-3 14 0 0 0 0-2 0l-9 3-3 2c-5 3-8 10-7 17l5 10c4 5 11 9 17 7l2-2 7-2 3-1c2 0 5 0 9 0 3 1 7 5 7 8 0 0 0 0 0 2 0 0 0 0 0 2l-5 12-2 3c-2 7 2 14 7 17l10 5c7 2 14-1 17-7l2-3 1-7 2-3c2-2 4-4 7-5 2 0 5 0 7 0 2 0 3 1 3 1 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 1l2 2 2 7 1 3c4 6 11 9 17 7l11-5c5-3 8-10 6-17l-1-3-2-7-2-4c0-1 0-5 0-8 0-2 2-4 2-4 3-3 9-5 12-3l14 7 3 2c7 1 14-2 17-7l5-10c2-7 0-14-7-18l-3-1-7-2-3-2c-2 0-2-1-4-3-1-2-1-2-1-3-2-4-2-9 1-12 2-2 2-4 4-4l8-3 4-2c7-3 10-10 8-15z m-83 56c-14 5-31-2-36-15-5-14 2-31 15-36 14-5 31 2 36 15 5 14 0 31-15 36z"/>
15
- <glyph glyph-name="copy" unicode="&#102;" d="M420 398l41 0-86 87 0-41c0-26 21-46 45-46z m-4-33c-39 0-71 33-71 70l0 48-144 0c-29 0-51-22-51-51l0-277c0-56 53-53 53-53l208 0c29 0 52 23 52 52l0 211z m-10-106l-51-51c-5-5-12-1-12 5l0 23-113 0c-10 0-18 8-18 18l0 22c0 11 8 19 18 19l113 0 0 22c0 7 9 11 12 6l51-52c0 0 4-3 0 0 4-5 4-8 0-12z m0 11c4-4 0 0 0 0z m-281-132l0 222-17 0c-24 0-52-25-52-49l0-241c0-48 53-51 53-51l181 0c24 0 39 25 39 49l0 2-145 0c-24 0-59 15-59 68z"/>
16
- <glyph glyph-name="copy-o" unicode="&#103;" d="M387 271l-47 48c-5 5-12 2-12-5l0-20-108 0c-10 0-17-9-17-18l0-20c0-10 7-17 17-17l108 0 0-21c0-5 7-8 12-5l47 48c2 4 2 9 0 10 0 0 2-1 0 0z m-44 221l-145 0c-29 0-53-21-60-48l-27 0c-32 0-60-28-60-60l0-290c0-19 5-34 17-45 16-15 36-15 43-15 0 0 2 0 2 0l189 0c29 0 53 21 58 48l31 0c32 0 60 27 60 60l0 240z m0-36l72-74-19 0c-29 0-53 24-53 53z m-41-398l-191 0c0 0-15 0-26 9-6 5-8 15-8 27l0 290c0 19 15 34 34 34l26 0 0-276c0-48 37-62 59-62l137 0c-4-13-16-22-31-22z m125 82c0-19-16-34-34-34l-193 0c-11 0-36 3-36 36l0 290c0 19 15 34 34 34l121 0 0-31c0-42 34-78 79-78l29 0z"/>
17
- <glyph glyph-name="note-edit" unicode="&#105;" d="M399 345l52 0-110 109 0-51c2-33 28-58 58-58z m-5-41c-49 0-89 39-89 89l0 59-180 0c-36 0-65-29-65-65l0-261c0-70 66-66 66-66l261 0c36 0 65 29 65 65l0 179z m-133-128l-107 107c-7 7-7 19 0 26l29 29c6 7 18 7 25 0l108-108c7-6 7-18 0-25l-29-29c-5-9-17-9-26 0z m31-22l44 44 21-65z"/>
18
- <glyph glyph-name="note-edit-o" unicode="&#106;" d="M333 189l-43-42 62-22z m-14 275l-196 0c-44 0-80-36-80-80l0-258c0-65 51-82 80-82l259 0c45 0 81 36 81 81l0 194z m0-48l97-99-25 0c-39 0-72 33-72 72z m111-293c0-26-20-46-46-46l-259 0c-14 0-48 5-48 49l0 258c0 26 20 46 46 46l162 0 0-41c0-58 48-104 104-104l41 0z m-171 46l-105 106c-7 7-7 19 0 25l29 29c6 7 18 7 25 0l106-105c7-7 7-19 0-26l-29-29c-7-7-19-7-26 0z"/>
19
- <glyph glyph-name="add" unicode="&#107;" d="M297 215l123 0c19 0 32 15 32 32l0 18c0 18-15 32-32 32l-123 0 0 123c0 19-15 32-32 32l-18 0c-18 0-32-15-32-32l0-123-123 0c-19 0-32-15-32-32l0-18c0-18 15-32 32-32l123 0 0-123c0-19 15-32 32-32l18 0c18 0 32 15 32 32z"/>
20
- <glyph glyph-name="refresh" unicode="&#108;" d="M258 437c-103 0-185-82-185-184l-30 0c-9 0-12-6-5-12l27-28 27-25c7-7 17-7 24 0l55 54c6 7 3 12-5 12l-33 0c0 69 56 125 125 125 34 0 66-14 88-36l41 41c-34 32-78 53-129 53z m-4-362c101 0 185 82 185 184l30 0c9 0 12 6 5 12l-27 28-27 25c-7 7-17 7-24 0l-55-54c-6-7-5-12 5-12l33 0c0-69-56-125-125-125-34 0-66 14-88 36l-41-41c34-32 78-53 129-53z"/>
21
- <glyph glyph-name="no" unicode="&#110;" d="M464 384c0 44-36 80-80 80l-261 0c-44 0-80-36-80-80l0-258c0-25 8-46 24-61 20-21 49-22 58-22 1 0 1 0 1 0l258 0c44 0 80 36 80 80z m-34-261c0-26-20-46-46-46l-259 0c0 0-21 0-36 12-9 8-12 20-12 36l0 259c0 26 20 46 46 46l261 0c26 0 46-20 46-46z"/>
22
- <glyph glyph-name="not-translated" unicode="&#111;" d="M329 256l111 111c16 15 16 43 0 60l-15 15c-15 17-43 17-60 0l-109-113-111 111c-15 16-43 16-58 0l-15-15c-16-15-16-43 0-58l111-111-111-111c-16-15-16-43 0-60l15-15c15-15 43-15 60 0l111 111 111-111c15-15 42-15 59 0l16 15c15 16 15 43 0 60z"/>
23
- <glyph glyph-name="delete" unicode="&#112;" d="M403 428l-99 0c0 14-10 24-24 24l-50 0c-13 0-23-10-23-24l-98 0c-13 0-24-10-24-24 0-13 11-23 24-23l295 0c14 0 24 10 24 23 0 14-12 24-25 24z m-295-71l0-243c0-30 25-56 56-56l186 0c31 0 56 26 56 56l0 243z m83-226c0-8-7-15-15-15-9 0-16 7-16 15l0 151c0 8 7 15 16 15 8 0 15-7 15-15z m80 0c0-8-6-15-15-15-9 0-15 7-15 15l0 151c0 8 6 15 15 15 9 0 15-7 15-15z m82 0c0-8-7-15-15-15-9 0-15 7-15 15l0 151c0 8 6 15 15 15 8 0 15-7 15-15z"/>
24
- <glyph glyph-name="waiting" unicode="&#113;" d="M439 90c-2 0-4 4-4 6-2 6-2 12-3 18-17 70-62 115-130 135-3 2-5 4-5 7 0 3 2 5 5 7 72 19 123 78 133 152 0 3 2 7 7 7 9 1 12 10 10 17-1 8-8 13-19 13-100 0-201 0-302 0-18 0-35 0-54 0-10 0-17-5-19-13-2-9 3-14 14-17l3-4c4-8 4-15 7-22 19-68 61-113 130-133 3-2 5-4 5-7 0-3 0-5-5-7-72-19-123-78-133-152 0-3-2-7-7-7-9-1-14-15-11-23 2-7 9-16 18-16 59 0 117 0 177 0 60 0 118 0 177 0 11 0 18 10 19 19 2 7-5 19-13 20z m-33 328c-3-10-12-34-15-43l-270 0c-3 6-5 11-7 16-3 7-3 19-6 27m122-196c14 0 41 2 57 0 24-5 46-15 65-33 12-10 22-22 30-35l-252 0c22 34 59 61 100 68z"/>
25
- <glyph glyph-name="warning" unicode="&#115;" d="M447 126l-165 285c-14 24-36 24-52 0l-165-285c-14-24-2-44 25-44l330 0c29 0 41 20 27 44z m-165 14l-48 0 0 31 48 0z m-6 51l-39 0-5 126 50 0z"/>
26
- <glyph glyph-name="original" unicode="&#116;" d="M256 452c-108 0-196-88-196-196 0-108 88-196 196-196 108 0 196 88 196 196 0 108-88 196-196 196z m138-112l4-5c10-19 17-40 20-62l0-7-73 0 0 7c0 17-2 32-5 48l-2 7 7 1c15 4 30 6 44 11z m-65 59c16-8 29-17 41-29 0 0 2-1 2-1l9-9-11-3c-8-2-18-4-29-5l-5 0-1 5c-4 12-7 25-12 36l-7 17z m-13-131l-125 0 0 7c0 15 2 30 5 44l2 5 5 0c17-1 36-1 55-1 18 0 37 0 54 1l5 0 2-5c2-14 4-29 5-44l0-7z m7-24l0-7c0-15-2-30-6-44l-1-5-5 0c-17 1-36 1-55 1-19 0-38 0-55-1l-5 0-1 5c-2 14-4 29-6 44l0 7z m-120 111c4 10 7 20 10 29 5 12 12 22 17 29l2 2 2 0c7 1 13 1 20 1 7 0 14 0 22-1l2 0 2-2c7-7 12-17 17-29 3-9 7-19 10-29l2-7-9 0c-15-2-30-2-47-2-17 0-33 0-48 2l-7 0z m-63 14c0 0 2 1 2 1 12 12 25 23 41 29l15 9-7-17c-5-10-8-22-12-36l-2-5-5 2c-10 1-20 3-29 5l-12 3z m-44-94c1 22 8 42 20 61l2 5 5-1c14-4 27-7 44-11l7-1-2-7c-3-16-5-31-5-48l0-7-71 0z m22-103l-2 5c-10 19-17 40-20 62l0 7 73 0 0-7c0-17 2-32 5-48l2-7-7-1c-15-4-31-6-44-11z m65-59c-16 8-29 17-41 29 0 0-2 1-2 1l-7 9 10 3c9 2 19 4 29 5l5 2 2-5c4-14 7-26 12-36l7-15z m126 44c-4-10-7-20-10-29-5-12-12-22-17-29l-2-2-2 0c-7-1-13-1-22-1-7 0-14 0-20 1l-2 0-2 2c-7 7-12 17-17 29-3 9-7 19-10 29l-2 7 7 0c15 2 31 2 48 2 17 0 32 0 47-2l9 0z m63-12c0 0-2-2-2-2-12-12-25-22-41-29l-15-8 7 15c5 10 8 22 12 36l2 5 5-2c10-1 20-3 29-5l10-3z m44 92c-1-22-8-42-20-61l-3-5-6 1c-13 4-27 7-44 11l-7 1 2 7c2 16 3 31 5 48l0 7 73 0z"/>
27
- <glyph glyph-name="needs-update" unicode="&#117;" d="M258 437c-103 0-185-82-185-184l-30 0c-9 0-12-6-5-12l27-28 27-25c7-7 17-7 24 0l55 54c6 7 3 12-5 12l-33 0c0 69 56 125 125 125 34 0 66-14 88-36l41 41c-34 32-78 53-129 53z m-4-362c101 0 185 82 185 184l30 0c9 0 12 6 5 12l-27 28-27 25c-7 7-17 7-24 0l-55-54c-6-7-5-12 5-12l33 0c0-69-56-125-125-125-34 0-66 14-88 36l-41-41c34-32 78-53 129-53z m19 260l-5-115-36 0-5 115z m0-163l-44 0 0 29 44 0z"/>
28
- <glyph glyph-name="cred" unicode="&#119;" d="M384 427l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-32-329c0-1 0-2-1-3 0 0 0-1 0-2-1-1-1-1-2-2-1-1-1-1-1-2-1-1-2-2-2-2-1-1-2-2-3-2l-1 0c-1-1-2-2-4-3-1 0-2-2-4-2 0-1-2-1-3-2l0 0c-1-1-2-1-2-1l-2 0c-2-1-3-2-6-2l0 0c-2-1-5-2-7-2l0 0c-3-1-5-2-8-3l-1 0c-3 0-5-1-8-1l-1 0c-2-1-4-1-7-1l-2 0c-2 0-5 0-7 0l-1 0c-3 0-6-1-9-1l-1 0c-2 0-5 0-7 0l-1 0c-1 0-3 0-4 0-1 0-2 0-3 0l-1 0c-2 0-4 0-6 0l-2 0c-2 0-3 0-5 1l-2 0c-2 0-3 0-5 0l-1 0c-2 0-3 1-5 1l-2 0c-2 0-3 1-5 1-2 0-4 0-6 1l-1 0c-3 1-5 1-6 2l-1 0c-3 0-5 1-7 2l-1 0c0 0-1 0-2 0l-2 1c-1 0-1 1-2 1l-1 1 0 0-6 2-2 1-2-3-10 5-2 2-1 1-2 1 0 1-2 2 0 1 0 3-1 1 0 1-1 1 0 3c0 1 0 2 0 2l-1 56c0-1 0-2 0-2l0-4 1-1 6-5 1-1 2-2 5-3 2-5 5-3 2 0 6-3c0 0 1-1 2-1l1-1c1 0 2 0 3 0l1-1c3-1 5-2 7-2l1 0c2-1 3-1 5-2l2 0c1 0 3 0 5-1l1 0c2 0 4-1 6-1l1 0c2 0 3-1 5-1l2 0c2 0 3 0 5 0l2 0c1 0 2 0 5-1l1 0c2 0 4 0 6 0 2 0 3 0 5 0 1 0 3 0 4 0 2 0 5 0 7 0l2 0c2 0 5 0 8 1l1 0c3 0 5 0 8 0l1 0c2 0 5 1 7 1l1 0c3 1 6 1 8 2l1 0c3 0 5 1 8 2l1 0c2 0 4 1 6 2l1 0c2 1 3 1 5 2l1 1c1 0 2 0 2 0l2 1c0 1 2 1 3 2 1 0 3 2 4 2 2 1 3 2 4 3l1 0c0 1 2 2 3 2 0 1 1 2 2 3l0 0c1 1 2 2 2 2 1 1 1 2 1 2l0 1c0 1 1 2 1 2 0 1 0 2 1 3l0 2 0-56z m0 80c0-2 0-2-1-3 0-1 0-1 0-2-1-1-1-2-2-2-1-1-1-2-1-2-1-1-2-2-2-3-1 0-2-1-3-2l-1 0c-1 0-2-1-4-2-1-1-2-2-4-3 0 0-2 0-3-1l-1-1c-1-1-1-1-2-1l-2 0c-2 0-3-1-5-2l-1 0c-2 0-4-1-6-2l-1 0c-2-1-5-1-8-2l-1 0c-2-1-5-1-7-1l-2 0c-2-1-4-1-7-1l-1 0c-3 0-5-1-8-1l-1 0c-3 0-6-1-8-1l-2 0c-2 0-5 0-7 0l-1 0c-1 0-3 0-3 0-2 0-3 0-4 0l-1 0c-2 0-4 0-6 0l-2 0c-2 0-3 0-4 1l-2 0c-3 0-4 1-6 1l-1 0c-1 0-3 1-5 1l-1 0c-2 0-4 0-6 0-2 0-4 1-6 2l-1 0c-2 0-4 0-6 1l-1 0c-2 1-4 2-7 2l0 0c-1 0-2 1-3 1l-2 1c0 0-1 0-2 0l0 1-1 0-4 2-3-3-11 6 0 2-3 3-1 1-1 1-3 2 0 2 0 1-1 1 0 1-1 1 0 3c0 1 0 1 0 2l-1 56c0-1 0-2 0-3l0-3 7-7 1 0 2-2 12-7 2-1 6-2c0 0 1-1 2-1l1-1c1 0 2-1 3-1l1 0c3-1 5-2 7-2l1 0c2-1 3-1 5-2l2 0c1 0 3 0 5-1l1 0c2 0 4-1 6-1l1 0c2 0 3-1 5-1l2 0c2 0 3 0 5 0l2 0c1 0 2 0 5-1l1 0c2 0 4 0 6 0 2 0 3 0 5 0 1 0 3 0 4 0 2 0 5 0 7 0l2 0c2 0 5 0 8 1l1 0c3 0 5 0 8 0l1 0c2 0 5 1 7 1l1 0c3 1 6 1 8 2l1 0c3 0 5 1 8 2l1 0c2 0 4 1 6 2l1 0c2 0 3 1 5 2l1 1c1 0 2 0 2 0l2 1c0 1 2 1 3 1 1 1 3 3 4 3 2 1 3 2 4 2l1 1c0 1 2 2 3 2 0 1 1 2 2 2l0 1c1 1 2 2 2 2 1 1 1 2 1 2l0 1c0 1 1 2 1 2 0 1 1 2 1 3l0 2 0-56z m0 79c0-2 0-2-1-3 0-1 0-2 0-2-1-1-1-2-2-2-1-1-1-2-1-3-1 0-2-1-2-2-1 0-2-1-3-2l-1 0c-1-1-2-1-4-2-1-1-2-2-4-3 0 0-2 0-3-1l-1-1c-1-1-1-1-2-1l-2 0c-2 0-3-1-5-2l-1 0c-2 0-4-1-6-2l-1-3c-2-1-5-2-8-3l-1 0c-2 0-5-1-7-1l-2 0c-2-1-4-1-7-1l-1 0c-3 0-5 0-8 0l-1 0c-3 0-6-1-8-1l-2 0c-2 0-5 0-7 0l-1 0c-1 0-3 0-3 0-2 0-3 0-4 0l-1 0c-2 0-4 0-6 0l-2 0c-2 0-3 0-4 1l-2 0c-3 0-4 0-6 0l-1 0c-1 0-3 1-5 1l-1 0c-2 0-4 1-6 1-2 0-4 0-6 1l-1 0c-2 1-4 1-6 2l0 0c-3 0-5 1-7 2l-1 0c0 0-1 0-2 0l-2 1c-1 0-1 1-2 1l-1 1 0 0-2 0-2 2-3 1-1 1-7 3-2 2-3 1-2 3-1 1-2 2-2 2 0 1 0 1-1 2 0 0-1 1 0 3c0 1 0 1 0 2l-1 48c0 0 0 0 0 1 0 0 0 0 0 1l0 6c0-1 0-1 0-2l0-1c5 19 45 34 95 34 50-1 91-17 95-37 0 0 0 1 0 2l0 1 1-55z"/>
29
- <glyph glyph-name="layouts" unicode="&#120;" d="M384 427l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-208-370l-79 0 0 193 79 0z m236 0l-216 0 0 193 216 0z m0 214l-315 0 0 83 315 0z"/>
30
- <glyph glyph-name="module-manager" unicode="&#121;" d="M384 427l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-142-381l-130 76 0 138 130-78c0 0 0-136 0-136z m156 76l-130-76 0 132 130 78z m0 165l-140-84-144 85 141 82z"/>
31
- <glyph glyph-name="toolset" unicode="&#122;" d="M410 410l0 102-103 0 0-102-102 0 0 102-103 0 0-102-68 0 0-410 444 0 0 410z m-315-232c0-4-1-7-4-9-3-2-6-3-11-3l-3 0-3-14-6 0 8 36 8 0c3 0 6-1 8-3 2-1 3-4 3-7z m-17-7l2 0c3 0 5 0 7 1 2 2 2 3 2 6 0 2 0 3-1 4 0 1-2 1-4 1l-3 0z m23-19l-5 0 8 38 5 0z m19 27l-3-15c0-2 0-4 0-4 0-2 1-4 2-4 2 0 3 1 4 2 1 1 2 2 3 4 1 1 1 3 2 6l2 11 6 0-6-27-4 0 0 6c-1-2-3-4-4-4-1-1-3-2-4-2-3 0-4 1-5 2-1 1-2 3-2 5 0 1 0 3 1 3 0 1 0 2 0 3l3 14z m44 0l-1-3-4-1c0-1 0-2 0-3 0-3-1-6-3-8-1-1-4-2-8-2 0 0-1 0-2 0-2-1-3-2-3-3 0 0 0-1 1-1 0 0 1 0 2 0l3-1c3-1 5-1 6-2 1-1 2-3 2-5 0-3-1-6-3-7-3-2-6-3-11-3-3 0-5 1-7 2-2 1-3 2-3 5 0 1 1 3 2 4 1 1 3 3 5 3-1 1-2 2-2 3 0 1 1 2 1 3 1 0 2 2 4 2-2 1-4 4-4 6 0 4 2 6 3 8 2 1 5 3 8 3 1 0 3 0 4-1l10 0z m-20-26c-2-1-3-1-4-2-1 0-2-1-2-3 0-1 1-2 1-2 2-1 3-2 4-2 3 0 5 1 7 2 1 1 2 2 2 4 0 0-1 1-1 1-1 1-3 1-4 1z m7 23c-1 0-2-1-3-1-1-1-1-2-2-3 0-1 0-2 0-3 0-1 0-2 1-3 0 0 1-1 2-1 1 0 2 1 3 1 0 1 1 2 2 3 0 1 0 2 0 3 0 3-1 4-3 4z m17-24l-5 0 5 27 6 0z m2 34c0 1 0 2 1 3 0 0 1 1 3 1 1 0 1 0 2-1 0 0 0-1 0-1 0-1 0-3-1-3 0-1-1-1-2-1-1 0-2 0-2 0-1 0-1 1-1 2z m22-34l3 17c1 2 1 2 1 3 0 3-1 4-3 4-1 0-2-1-4-1-1-1-2-3-2-4-2-2-2-4-3-6l-2-11-6 0 6 26 5 0-1-5c1 2 3 4 4 4 1 1 3 1 5 1 2 0 4 0 5-1 1-2 1-3 1-5 0-2 0-3 0-5l-4-16z m30 9c0-3-1-5-2-6-2-2-5-3-8-3-3 0-6 1-8 2l0 5c2-1 5-2 7-2 2 0 3 1 4 1 1 1 2 2 2 3 0 1 0 2-1 2 0 1-2 1-3 3-3 1-4 2-5 3 0 1-1 2-1 4 0 2 1 4 3 6 2 1 4 2 7 2 3 0 5-1 8-2l-1-4c-3 1-5 1-7 1-1 0-2 0-3 0 0-1-1-1-1-2 0-1 0-2 1-2 0-1 2-1 3-2 2-2 3-2 4-3 0 0 1-1 1-2 0-2 0-3 0-4z m14-20c-2 0-3 0-4 0l0 5c1-1 2-1 3-1 2 0 3 2 5 5l5 25-5 0 1 2 4 2 1 2c0 4 1 6 3 7 2 1 4 3 6 3 2 0 4-1 6-2l-2-4c-1 1-2 1-4 1-1 0-2-1-2-1-1-1-2-2-2-4l-1-2 6 0-1-4-6 0-5-26c-1-3-2-5-3-7-1 0-3-1-5-1z m44 29c0-4-1-7-2-10-1-2-3-4-5-6-2-2-4-2-7-2-3 0-5 1-7 3-2 1-3 4-3 7 0 4 1 6 2 9 1 3 3 5 5 6 2 2 4 3 7 3 4 0 6-1 8-3 1-2 2-5 2-7z m-6 0c0 1 0 2-1 4-1 1-2 1-3 1-2 0-3 0-4-1-1-2-3-3-3-5-1-2-1-4-1-6 0-2 0-4 1-4 0-1 2-2 3-2 2 0 3 1 4 2 1 1 2 3 3 4 1 2 1 4 1 7z m27 10c1 0 2 0 3-1l-1-5c-1 0-2 1-3 1-2 0-4-1-5-3-2-2-3-4-4-8l-2-12-6 0 6 27 5 0-1-5c1 2 3 3 4 4 1 1 3 2 4 2z m-203-90l-6 0-1 21 0 7c-1-3-2-5-3-7l-9-21-6 0-1 36 5 0 1-21c0-2 0-5-1-8 2 3 3 6 4 8l9 21 6 0 0-21 0-8c1 1 1 3 2 4 0 2 1 3 2 4l8 20 6 0z m37 18c0-4 0-7-1-10-1-2-3-4-5-6-3-2-5-2-7-2-3 0-6 1-8 3-1 1-2 4-2 7 0 4 0 6 1 9 1 3 3 5 5 6 3 2 5 3 8 3 3 0 5-1 7-3 2-2 2-5 2-7z m-5 0c0 1-1 2-1 4-1 1-2 1-4 1-2 0-3 0-4-1-1-2-2-3-3-5 0-2-1-4-1-6 0-2 1-4 1-4 1-1 2-2 4-2 1 0 3 1 4 2 1 1 2 3 3 4 0 2 1 4 1 7z m26 10c2 0 2 0 3-1l-1-5c-1 0-2 1-2 1-2 0-4-1-6-3-2-2-3-4-3-8l-3-12-6 0 6 27 4 0 0-5c1 2 3 3 4 4 2 1 3 2 4 2z m16 0c3 0 5-2 6-5 0 2 1 5 1 6l2 9 6 0-8-38-5 0 1 4c-1-1-3-2-4-3-1-1-3-1-4-1-3 0-4 0-6 2-1 2-2 4-2 7 0 3 1 6 2 9 1 3 3 5 5 7 1 2 4 3 6 3z m-3-23c1 0 3 1 4 2 1 1 2 3 3 5 0 3 1 5 1 7 0 1-1 3-1 3-1 1-2 1-4 1-1 0-2 0-4-1-1-2-2-3-2-6-1-2-2-4-2-6 1-3 2-5 5-5z m45 21c0-4-1-7-4-9-3-2-6-3-11-3l-3 0-3-14-6 0 8 36 8 0c3 0 6-1 8-3 2-1 3-4 3-7z m-17-7l2 0c3 0 5 0 7 1 2 2 2 3 2 6 0 2 0 3-1 4 0 1-2 1-4 1l-3 0z m36 9c1 0 1 0 3-1l-2-5c-1 0-1 1-2 1-2 0-4-1-6-3-1-2-2-4-3-8l-3-12-6 0 6 27 5 0-1-5c1 2 3 3 4 4 2 1 3 2 5 2z m12-28c-3 0-5 2-7 3-2 2-3 5-3 8 0 3 1 6 2 9 1 3 3 5 5 6 2 2 4 2 7 2 3 0 5 0 6-1 2-2 3-3 3-5 0-3-1-6-4-7-3-2-7-3-12-3l-1 0 0-1c0-1 1-3 1-4 1-1 3-1 4-1 1 0 3 0 4 0 1 1 2 1 4 2l0-5c-2 0-3-1-5-1 0-2-2-2-4-2z m4 24c-2 0-3-1-4-2-2-2-3-4-3-6l0 0c3 0 5 0 7 1 2 1 3 2 3 3 0 1 0 2-1 2 0 1-1 2-2 2z m28-15c0-3-1-5-3-6-2-2-4-3-8-3-3 0-5 1-8 2l0 5c3-2 5-3 8-3 1 0 3 1 4 2 1 0 1 1 1 2 0 1 0 2 0 3-1 0-2 1-4 2-2 1-3 2-4 3-1 2-1 3-1 4 0 3 1 5 3 6 1 1 4 2 6 2 4 0 6 0 9-2l-2-4c-2 1-4 2-6 2-1 0-2 0-3-1 0 0-1-1-1-2 0-1 0-1 1-2 0 0 1-1 3-2 2-1 3-2 3-2 1-1 1-1 2-3 0-1 0-2 0-3z m22 0c0-3-1-5-3-6-1-2-4-3-8-3-2 0-5 1-8 2l0 5c3-2 6-3 8-3 2 0 3 1 4 2 1 0 2 1 2 2 0 1-1 2-1 3-1 0-2 1-3 2-3 1-4 2-5 3-1 2-1 3-1 4 0 3 1 5 3 6 1 1 4 2 7 2 3 0 5 0 8-2l-2-4c-2 1-4 2-6 2-1 0-2 0-3-1 0 0-1-1-1-2 0-1 0-1 1-2 0 0 1-1 3-2 2-1 3-2 4-2 0-1 1-1 1-3 0-1 0-2 0-3z m-201-48c0-5 0-8-2-12-2-3-4-5-7-7-3-2-7-3-10-3l-10 0 7 35 9 0c5 0 8-1 11-3 1-2 2-6 2-10z m-19-17c2 0 5 0 7 2 2 1 4 3 5 6 1 2 2 5 2 8 0 3-1 5-3 7-1 2-3 2-6 2l-3 0-6-25z m33-6c-4 0-6 2-8 3-2 2-3 5-3 8 0 3 1 6 2 9 1 3 3 5 5 6 2 2 5 2 7 2 3 0 5 0 7-1 1-2 2-3 2-6 0-2-1-5-4-6-3-2-6-3-11-3l-1 0 0-1c0-1 0-3 1-4 1-1 2-1 4-1 1 0 2 0 3 0 1 1 2 1 4 2l0-5c-2 0-3-1-5-1 0-2-2-2-3-2z m3 24c-1 0-2-1-4-3-1-1-2-3-3-5l1 0c3 0 5 0 6 1 2 1 3 2 3 3 0 1 0 2 0 2-1 1-1 2-3 2z m15-23l-3 27 6 0 1-14c0-3 0-6 0-8 1 1 1 2 2 4 1 2 1 2 2 4l7 14 6 0-14-27c0 0-7 0-7 0z m31-1c-3 0-6 2-7 3-2 2-3 5-3 8 0 3 0 6 1 9 2 3 3 5 6 6 2 2 4 2 7 2 3 0 5 0 6-1 2-2 3-3 3-6 0-2-2-5-4-6-3-2-7-3-12-3l-1 0 0-1c0-1 1-3 1-4 1-1 2-1 4-1 1 0 2 0 4 0 1 1 2 1 4 2l0-5c-2 0-3-1-5-1-1-2-3-2-4-2z m3 24c-1 0-2-1-4-3-1-1-2-3-3-5l1 0c2 0 5 0 6 1 2 1 3 2 3 3 0 1 0 2 0 2-1 1-1 2-3 2z m17-23l-6 0 8 38 6 0z m32 17c0-4-1-7-2-10-1-2-3-4-5-6-2-2-5-2-7-2-3 0-6 1-7 3-2 1-3 4-3 7 0 4 0 6 2 9 1 3 2 5 5 6 2 2 4 3 7 3 4 0 6-1 7-3 2-2 3-4 3-7z m-6 0c0 1 0 2-1 3-1 2-2 2-3 2-2 0-3 0-4-2-2-1-3-2-3-4-1-2-1-4-1-6 0-2 0-4 1-4 0-1 1-2 3-2 2 0 3 1 4 2 1 1 2 3 3 4 1 3 1 4 1 7z m22-18c-3 0-5 2-7 4 0-1 0-2 0-4l-2-12-6 0 8 39 4 0 0-4c2 3 5 5 8 5 3 0 4-1 6-3 1-1 2-4 2-6 0-4-1-7-2-9-1-3-3-6-4-7-2-2-5-3-7-3z m3 23c-1 0-3 0-4-2-1-1-2-2-3-5-1-2-1-4-1-6 0-2 0-3 1-3 0-1 1-1 3-1 2 0 3 0 4 1 1 1 2 3 3 5 1 3 1 5 1 7 0 3-2 4-4 4z m31 5c3 0 6-1 6-5 1 1 3 3 4 4 2 1 3 1 5 1 2 0 4 0 5-1 1-2 1-3 1-6 0-1 0-2 0-4l-4-16-5 0 3 17c1 1 1 2 1 3 0 2-1 3-3 3-2 0-4-1-5-3-2-2-3-5-4-8l-2-11-6 0 4 16c0 1 0 2 0 3 0 2-1 3-2 3-2 0-4-1-6-3-1-2-2-4-3-7l-2-12-6 0 6 27 4 0 0-5c3 2 5 4 9 4z m36-28c-3 0-5 2-7 3-2 2-3 5-3 8 0 3 1 6 2 9 1 3 3 5 5 6 2 2 4 2 7 2 3 0 5 0 6-1 2-2 3-3 3-6 0-2-1-5-4-6-3-2-6-3-12-3l-1 0 0-1c0-1 1-3 1-4 2-1 3-1 4-1 2 0 3 0 4 0 1 1 2 1 4 2l0-5c-2 0-3-1-5-1-1-2-2-2-4-2z m4 24c-2 0-3-1-5-3-1-1-2-3-3-5l1 0c3 0 5 0 7 1 1 1 2 2 2 3 0 1 0 2-1 2 1 1 0 2-1 2z m26-23l4 17c0 1 0 2 0 3 0 2-1 3-2 3-2 0-3 0-4-1-1 0-2-2-3-4-1-1-1-3-2-5l-2-12-6 0 6 27 4 0 0-5c1 1 3 3 4 4 1 1 3 1 4 1 3 0 4-1 5-2 1-1 2-3 2-5 0-1 0-3-1-4l-3-16z m23 4c1 0 2 0 4 1l0-5c-1 0-2-1-3-1-1 0-1 0-3 0-4 0-6 2-6 6 0 1 0 1 0 3l3 14-4 0 1 2 4 3 3 5 3 0-1-5 7 0-1-5-7 0-3-13c0-2 0-2 0-3 0 0 0-1 0-1 1-1 2-1 3-1z m-256 218l-22 0 13 63-18 0 4 18 57 0-4-18-18 0z m52-1c-7 0-13 3-17 7-4 4-6 10-6 17 0 8 1 15 4 21 3 7 7 11 13 14 5 4 11 6 18 6 7 0 14-3 17-7 4-4 7-10 7-17 0-8-2-15-5-21-3-7-7-11-12-15-5-3-12-5-19-5z m9 49c-3 0-6-3-8-8-2-5-3-11-3-17 0-5 1-8 4-8 3 0 6 3 8 8 2 5 4 10 4 17 0 3-1 4-2 6-1 1-2 2-3 2z m56-49c-8 0-14 3-18 7-4 4-6 10-6 17 0 8 2 15 4 21 3 7 7 11 13 14 5 4 11 6 18 6 8 0 14-3 18-7 4-4 6-10 6-17 0-8-2-15-5-21-2-7-6-11-12-15-5-3-11-5-18-5z m8 49c-3 0-5-3-8-8-2-5-3-11-3-17 0-5 2-8 4-8 3 0 6 3 8 8 3 5 4 10 4 17 0 3-1 4-1 6-1 1-2 2-4 2z m50-48l-21 0 19 86 21 0z m60 22c0-7-2-13-7-16-5-4-12-6-21-6-8 0-15 1-19 3l0 17c3-1 6-2 9-4 3 0 6-1 9-1 2 0 4 1 5 1 1 1 2 2 2 3 0 1-1 2-1 4-1 1-4 2-8 4-4 2-6 5-8 8-2 2-3 6-3 10 0 6 2 11 7 15 4 3 11 5 19 5 4 0 8-1 11-1 3-2 7-3 10-5l-7-14c-2 2-5 3-8 4-2 2-4 2-6 2-3 0-4-2-4-4 0-2 0-3 1-3 1-1 3-2 6-3 9-5 13-12 13-19z m33-23c-8 0-14 3-18 7-5 4-6 10-6 18 0 8 1 15 4 21 3 6 8 11 13 14 5 3 11 5 18 5 7 0 12-2 16-5 4-3 6-7 6-12 0-8-3-14-8-18-6-4-15-5-25-5l-4 0 0-1c0-5 3-8 9-8 3 0 6 0 9 1 3 1 5 2 9 4l0-15c-4-2-8-3-11-5-3 0-7-1-12-1z m9 50c-3 0-5-1-7-4-1-2-2-5-3-8l2 0c4 0 6 0 9 2 2 2 3 4 3 6 0 2 0 3-1 3-1 1-2 1-3 1z m54-33c3 0 6 1 10 3l0-16c-5-2-11-3-18-3-5 0-10 1-13 3-3 3-4 7-4 12 0 3 1 6 1 10l5 22-9 0 3 10 12 5 7 13 14 0-3-13 16 0-3-15-16 0-5-22c0-2-1-4-1-5 1-2 2-4 4-4z"/>
32
- <glyph glyph-name="types" unicode="&#65;" d="M384 427l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-292-141c0 4 3 8 5 10 1 1 6 3 10 3l9 0c6 0 11-1 12 0 2 2 4 5 5 10l1 6c2 4 3 8 5 9 3 2 7 3 12 3l52 0c6 0 9-2 11-3 1-1 3-4 4-9l2-7c1-6 3-8 5-9 2 0 8 0 16 0l97 0c8 0 10-6 10-13l0-16-162 0c-10 0-17 1-20 0-2-2-7-6-12-15l-62-117z m335-48l-63-124-252 0 64 124c2 4 5 7 7 9 2 1 5 2 11 2l227 0c6 0 9-2 9-3 0-1-1-4-3-8z"/>
33
- <glyph glyph-name="views" unicode="&#66;" d="M384 427l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-279-214c0 0 137 187 307 0-1 0-138-192-307 0z m152 56c-32 0-57-26-57-58 0-32 25-57 57-57 32 0 58 25 58 57 1 32-26 58-58 58z m0-95c-21 0-38 17-38 38 0 21 17 38 38 38 22 0 39-17 39-38 0-21-17-38-39-38z"/>
34
- <glyph glyph-name="edit" unicode="&#104;" d="M273 140l-198 200c-14 13-14 35 0 49l55 55c13 13 36 13 47 0l198-202c14-13 14-35 0-47l-54-55c-12-12-34-12-48 0z m138 41l-80-80 116-41z"/>
35
- <glyph glyph-name="duplicate" unicode="&#109;" d="M90 49c-5 0-27 2-42 16-12 10-17 25-17 44l0 290c0 33 27 60 59 60l64 0 0-26-64 0c-18 0-34-15-34-34l0-290c0-12 4-20 9-27 10-10 25-9 25-9l55 0 0-25-55 1c2 0 0 0 0 0z m388 304l-108 108-1-2-142 0c-32 0-60-27-60-60l0-290c0-48 38-61 60-61l191 0c33 0 60 27 60 60z m-34-1l-21 0c-29 0-53 23-53 52l0 21z m8-244c0-19-15-35-34-35l-191 0 0-12 0 12c-10 0-34 4-34 36l0 290c0 19 15 34 34 34l119 0 0-30c0-43 35-77 77-77l31 0 0-218z"/>
36
- <glyph glyph-name="basket" unicode="&#114;" d="M184 413l-75-99 50 0 58 77c-16 2-28 10-33 22z m41-10c2 0 2 0 4 0 13 3 22 15 22 27 0 0 0 0 0 2 0 1 0 3 0 5-4 14-14 22-27 22-2 0-4 0-7 0-14-3-24-17-21-31 0 0 0-1 0-1 4-14 14-23 28-23-2-1 0-1 1-1z m178-89l-75 99c-5-12-17-22-31-24l58-77 48 0z m-120 89c2 0 2 0 4 0 1 0 1 0 3 0 12 0 24 8 27 22 0 0 0 2 0 2 2 13-6 27-20 30-2 0-5 0-7 0-12 0-24-8-27-22 0-2 0-3 0-5 0 0 0 0 0-2 0-10 8-22 20-25z m128-101l-351 0 51-249 288 0 52 249z"/>
37
- <glyph glyph-name="discoverwp" unicode="&#67;" d="M319 333c-7 8-15 17-25 22-11 5-23 9-35 9-8 0-15 0-22 0-5 0-12 0-17 0 0-2 0-6 0-12 0-7 0-14-2-21l0-24-1-19-4-70-1-20-2-24c0-7 0-14 0-20 0-7 0-11 0-12 3 0 8-2 14-2 5 0 12-2 18-2 28-1 52 7 69 26 17 19 27 49 29 89 0 15 0 30-4 44-3 15-10 27-17 36z m-61 150c-125 0-226-102-226-227 0-125 101-225 226-225 124 0 225 100 225 225 0 125-101 227-225 227z m140-230c-2-23-5-41-12-58-7-18-17-31-29-43-12-12-26-21-43-26-15-5-32-8-49-7-19 2-35 2-48 4-14 2-24 2-34 2-7 0-12 0-17 1-6 0-11 0-14 0 2 16 3 33 5 50 2 17 2 36 3 58l2 53c0 18 2 37 2 54 0 4 0 5 0 9-7-2-12-4-17-5 0 0-4-4-5-5l-11-12c-13-16-15-23-22-29 0 0 9 58 16 105 0 4 1 6 1 7 5-8 12-24 17-34 28 5 55 9 84 9 9 0 19 0 31-2 20-2 41-3 58-9 17-5 32-11 44-22 12-10 21-24 27-41 9-15 12-36 11-59z"/>
38
- <glyph glyph-name="wpml" unicode="&#68;" d="M305 227c4-39 36-68 74-68 49 0 70 46 77 82 29 153-89 269-227 252-77-8-186-92-171-227 14-119 150-213 295-150 63 27 91-89 19-92-14 8-12 31-17 46-2 5-5 10-9 14-3 3-6 5-11 6-11 0-21-10-21-25 0-10 3-21 9-26 1-1 3-3 5-5 15-17 49-22 68-15 46 15 41 97-15 106-36 5-52-14-74-19-145-33-230 102-213 208 10 70 72 128 135 140 70 14 150-10 155-63 9-72-84-91-79-164z"/>
39
- <glyph glyph-name="otgs" unicode="&#69;" d="M123 265c0-29 5-53 15-72 10-21 26-34 46-45 21-10 43-15 65-15 36 0 67 12 91 38 24 24 35 56 35 92 0 37-11 68-35 92-17 17-40 29-64 34l0 89-59 0 0-91c-12-3-24-6-34-13-21-10-35-26-46-46-9-21-14-41-14-63z m85 52c4 4 7 7 12 11l0-103 60 0 0 104c5-3 10-6 15-12 12-13 17-32 17-56 0-25-5-44-17-56-12-14-25-19-42-19-17 0-31 7-43 19-12 13-17 32-17 56-4 24 3 43 15 56z m183 123l-39-49c41-29 66-77 66-132 0-90-73-162-162-162-89 0-162 74-162 162 0 52 22 96 60 125l-40 51c-51-41-83-104-83-174 0-126 100-227 225-227 125 0 225 101 225 225 0 76-36 140-90 181z"/>
40
- <glyph glyph-name="wrench" unicode="&#70;" d="M63 365l50-49c20-21 56-19 78 3 22 22 24 58 4 79l-50 49c10 4 21 4 31 4 65 0 118-53 118-118 0-19-4-36-12-50l158-157c14-13 14-37-1-53-16-15-40-17-53-1l-159 157c-15-7-32-12-50-12-64 0-117 53-117 118 0 10 1 20 3 30z m330-264c0-11 8-21 20-21 10 0 20 9 20 21 0 10-8 20-20 20-12 0-20-10-20-20z"/>
41
- <glyph glyph-name="link" unicode="&#71;" d="M299 398l-60-58c-12-12-12-29 0-41l10-11 63 64 38-38-63-63 10-10c12-12 29-12 41 0l60 59c12 12 12 29 0 41l-60 60c-10 9-29 9-39-3z m-69-193c-6-7-18-7-27 0-7 7-7 19 0 27l80 80c7 7 19 7 28 0 6-7 6-18 0-27z m-17-91l60 60c12 12 12 29 0 41l-10 10-63-63-38 38 63 63-12 10c-12 12-29 12-41 0l-59-60c-12-12-12-29 0-41l59-59c12-11 31-11 41 1z"/>
42
- <glyph glyph-name="envelope-o" unicode="&#72;" d="M413 365l-328 0 0-218 342 0 0 218z m-14-13l-131-132c-7-7-17-7-22 0l-133 132z m-300-6l89-88-89-89z m10-186l87 87 38-37c5-5 13-9 20-9 7 0 16 4 21 9l37 37 87-87z m304 9l-89 89 89 88z"/>
43
- <glyph glyph-name="user" unicode="&#73;" d="M386 121l-258-2c0 0-2 14-2 28 0 13 14 17 14 17 17 8 70 29 73 31l0 13 7 2c0 0 2 22 2 26 0 0-9 18-12 29 0 0-7 0-9 6-1 9 0 14-1 19-2 5 3 12 7 10 0 0-9 41 0 53 5 12 8 33 49 40 0 0 24-4 24-7 0 0 20-14 27-34 4-14 2-41 0-48 0 0 7 1 5-7-1-12-1-36-10-31 0 0 0-25-8-30 0 0-2-21 1-21l5 0c0 0 2-17 7-20 0 0 67-23 75-33 7-12 4-41 4-41z"/>
44
- <glyph glyph-name="wpml-cms-nav" unicode="&#74;" d="M232 104l-152 152 152 152m48-304l152 152-152 152"/>
45
- <glyph glyph-name="wpml-media" unicode="&#75;" d="M335 425l46 0 0-340-46 0z m-103-67l46 0 0-271-46 0z m-101-68l46 0 0-203-46 0z"/>
46
- <glyph glyph-name="wpml-string-translation" unicode="&#76;" d="M294 131c-18 0-35 4-52 11-41 17-80 37-117 58-19 10-40 20-58 30-9 4-11 14-7 23 3 8 13 12 22 6 19-10 37-20 58-30 37-21 77-41 116-57 31-13 63-10 89 7 29 19 44 50 44 87 0 46-37 84-84 84-35 0-63-29-63-63 0-26 23-48 48-48 19 0 34 15 34 34 0 14-12 26-25 26-9 0-16 6-16 15 0 9 7 15 16 15 30 0 56-25 56-56 0-37-31-66-67-66-44 0-80 35-80 80 0 53 43 95 96 95 63 0 116-51 116-116 0-46-22-89-58-112-21-16-45-23-68-23z"/>
47
- <glyph glyph-name="wpml-translation-management" unicode="&#77;" d="M381 292c-12 0-24-7-29-19l-135 0c-4 15-12 27-24 36l51 22c0 0 0-2 0-2 3-17 21-29 38-25 17 3 29 20 25 37-3 17-20 29-37 26-11-2-17-9-23-15l-76-33c-4 2-9 2-14 2-34 0-60-27-60-60 0-32 28-60 60-60 9 0 17 2 24 6l118-45c5-7 12-14 20-15 17-4 34 8 38 25 3 17-9 35-26 38-17 3-34-9-37-26 0-1 0-1 0-3l-96 36c10 10 17 24 19 41l129 0c2-16 16-29 33-29 17 0 32 13 32 32 0 19-12 31-30 31z"/>
48
- <glyph glyph-name="picture" unicode="&#78;" d="M427 116l-342 0 0 280 342 0z m-311 31l282 0 0 218-282 0z m150 25c33 0 79 0 96 0l0 38-65 92-63-89-41 40-53-50 0-29c34-2 104-2 126-2"/>
49
- <glyph glyph-name="toolset-training" unicode="&#79;" d="M384 427l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-33-284c0-19-17-29-38-39 0 0-29-14-58-14-28 0-57 14-57 14-24 11-39 19-39 39l0 51 66-23c9-3 20-5 30-5 11 0 22 2 30 5l66 23z m33-3l6 21c0 3 2 5 5 5 3 0 5-2 5-5l6-21z m22 103l0-60c0-6-5-10-11-10-5 0-10 4-10 10l0 52-106-36c-13-6-35-6-48 0l-153 55 28 11 125 53c13 6 35 6 48 0l125-53 30-12z"/>
50
- <glyph glyph-name="access-title" unicode="&#80;" d="M155 101l-19 0-5-12-16 0 30 60 20 0 5-60-15 0z m-13 12l12 0 0 17 0 4c0 2 0 4 0 6-1-3-2-5-3-7z m55-25c-6 0-10 2-13 6-2 3-4 7-4 14 0 5 1 10 3 14 2 5 5 8 9 11 3 2 8 3 13 3 5 0 10-1 15-3l-5-12c-4 2-7 3-10 3-2 0-3-1-4-2-2-1-3-3-4-6-1-3-2-5-2-8 0-2 1-4 2-5 1-1 2-2 4-2 1 0 3 0 5 1 2 0 4 1 6 3l0-13c-2-1-4-2-7-3-2 0-5-1-8-1z m42 0c-6 0-10 2-13 6-3 3-4 7-4 14 0 5 0 10 3 14 2 5 5 8 9 11 3 2 8 3 13 3 5 0 10-1 15-3l-6-12c-3 2-6 3-9 3-2 0-3-1-4-2-2-1-3-3-4-6-1-3-2-5-2-8 0-2 1-4 2-5 1-1 2-2 4-2 1 0 3 0 5 1 2 0 4 1 6 3l0-13c-2-1-5-2-7-3-2 0-5-1-8-1z m43 0c-6 0-10 2-13 5-4 3-5 8-5 14 0 5 1 11 3 15 3 5 6 8 9 11 5 2 9 3 14 3 6 0 10-1 13-3 2-3 4-6 4-10 0-5-2-9-6-12-5-3-11-4-19-4l-2 0 0-1c0-4 2-6 6-6 3 0 4 1 7 1 2 0 4 2 7 3l0-11c-4-1-6-3-9-3-2-1-5-2-9-2z m7 38c-2 0-4-1-5-3-1-2-2-4-3-7l2 0c2 0 5 1 7 2 1 1 2 3 2 5 0 1-1 1-1 2-1 1-1 1-2 1z m56-21c0-5-1-10-5-12-3-3-9-5-15-5-6 0-11 1-15 3l0 13c3-2 5-3 7-3 3 0 5-1 7-1 2 0 3 1 4 1 1 0 2 1 2 2 0 1-1 2-1 3-1 1-3 2-6 3-2 1-5 3-6 5-1 3-2 5-2 8 0 5 2 8 5 11 3 2 8 3 14 3 3 0 6 0 9-1 2 0 5-1 7-3l-5-10c-2 1-4 2-6 3-2 0-3 1-5 1-2 0-3-1-3-3 0-1 0-2 1-2 1 0 3-1 5-2 5-4 8-8 8-14z m42 0c0-5-2-10-5-12-3-3-9-5-15-5-6 0-11 1-15 3l0 13c3-2 5-3 7-3 3 0 5-1 7-1 2 0 3 1 4 1 1 0 1 1 1 2 0 1 0 2 0 3-1 1-3 2-6 3-2 1-5 3-6 5-2 3-2 5-2 8 0 5 2 8 5 11 3 2 8 3 14 3 3 0 6 0 8-1 3 0 6-1 8-3l-5-10c-2 1-4 2-6 3-2 0-4 1-5 1-2 0-3-1-3-3 0-1 0-2 1-2 1 0 3-1 4-2 6-4 9-8 9-14z m-132 286c-13 0-25-11-25-25l0-16 50 0 0 16c0 14-11 25-25 25z m82 65l0 56-56 0 0-56-56 0 0 56-56 0 0-56-55 0 0-279 279 0 0 279z m-20-220c0-7-5-12-12-12l-101 0c-7 0-13 5-13 12l0 101c0 7 6 13 13 13l7 0 0 16c0 25 20 45 44 45 24 0 44-20 44-45l0-16 5 0c7 0 13-6 13-13z"/>
51
- <glyph glyph-name="views-title" unicode="&#81;" d="M178 149l17 0-30-60-18 0-4 60 16 0 1-33 0-2c0-3 0-7-1-10l1 0c0 2 1 4 2 7 0 2 1 4 2 6z m27-60l-16 0 10 46 16 0z m-4 57c0 2 1 5 2 6 2 2 4 3 7 3 3 0 5-1 6-2 1-1 2-2 2-4 0-3-1-5-2-7-2-1-4-2-7-2-5 0-8 1-8 6z m36-58c-5 0-10 2-13 5-3 3-5 8-5 14 0 5 1 11 3 15 3 5 6 8 10 11 4 2 8 3 14 3 5 0 9-1 12-3 3-3 5-6 5-10 0-5-3-9-7-12-4-3-10-4-19-4l-2 0 0-1c0-4 2-6 7-6 2 0 4 1 6 1 2 0 5 2 7 3l0-11c-3-1-6-3-8-3-3-2-6-2-10-2z m7 38c-2 0-3-1-5-3-1-2-2-4-3-7l2 0c3 0 5 1 7 2 2 1 2 3 2 5 0 1 0 1-1 2 0 1-1 1-2 1z m54-37l1 18c0 2 0 5 1 8 0 4 0 7 1 9l-1 0c-2-6-3-11-5-16l-8-20-17 0-2 47 15 0 0-21c0-5 0-8-1-11l1 0c1 5 2 9 3 12l7 20 18 0-1-20c0-3 0-7-1-12l0 0c0 1 1 2 1 2 0 1 0 3 1 6 1 3 5 11 10 24l16 0-22-47-17 0z m72 16c0-5-2-10-6-12-3-3-8-5-15-5-6 0-11 1-14 3l0 12c2-1 4-2 7-2 2-1 4-1 6-1 2 0 3 0 4 1 1 0 2 1 2 2 0 1-1 2-1 2-1 1-3 2-5 3-3 2-5 4-7 6-1 2-2 5-2 7 0 5 2 9 5 11 4 3 8 4 14 4 4 0 6-1 9-1 2 0 5-2 7-3l-5-11c-2 2-4 3-5 3-2 1-4 1-6 1-1 0-3-1-3-3 0-1 1-1 2-1 0-1 2-2 4-3 6-3 9-7 9-13z m-30 351l0 56-56 0 0-56-56 0 0 56-56 0 0-56-56 0 0-279 280 0 0 279z m-183-140c0 0 90 122 201 0-1 0-90-126-201 0z m100 37c-21 0-38-17-38-38 0-21 17-38 38-38 21 0 38 17 38 38 0 21-17 38-38 38z m0-63c-14 0-25 12-25 26 0 14 11 25 25 25 14 0 25-11 25-25 0-14-11-26-25-26z"/>
52
- <glyph glyph-name="cred-title" unicode="&#82;" d="M340 456l0 56-56 0 0-56-56 0 0 56-56 0 0-56-56 0 0-279 280 0 0 279z m-21-215c0-1 0-1-1-2 0 0 0-1 0-1-1-1-1-1-1-2 0 0 0 0-1-1 0 0-1-1-1-1-1-1-1-1-2-2l-1 0c0 0-1-1-2-1-1-1-2-2-3-2 0 0-1 0-2-1l0 0c-1-1-1-1-2-1l0 0c-2 0-3-1-4-1l-1 0c-1-1-2-1-4-2l0 0c-2 0-4-1-5-1l-1 0c-2-1-3-1-5-1l-1 0c-1 0-3 0-5 0l-1 0c-1 0-3-1-4-1l-1 0c-2 0-4 0-6 0l-1 0c-1 0-3 0-4 0l-1 0c-1 0-2 0-2 0-1 0-2 0-2 0l-1 0c-1 0-3 0-4 0l-1 0c-1 0-2 0-3 0l-2 0c-1 0-2 1-3 1l-1 0c-1 0-2 0-3 0l-1 0c-1 0-2 0-4 0-1 0-2 1-3 1l-1 0c-2 1-3 1-4 1l-1 0c-1 1-3 1-4 2l-1 0c0 0-1 0-2 0l0 1c-1 0-1 0-2 0l0 1-1 0-1 0-2 1-1 0-1 1-1 1-2 1-1 0-3 2-4 4-1 1 0 0-1 1 0 1 0 1 0 1c0 1 0 1 0 2l0 36c0 0 0-1 0-1l0-3 0 0 1-1 1-1 1-1 0 0 1-1 1-1 1-1 1 0 1-1 1-1 1 0 1 0 1-1 2-1 1 0 1-1 2-1 1 0c0 0 1-1 1-1l1 0c0 0 1-1 2-1l1 0c1 0 3-1 4-1l0 0c2-1 3-1 4-1l1 0c1-1 2-1 4-1l0 0c2 0 3-1 4-1l1 0c1 0 2 0 3 0l1 0c2 0 2-1 4-1l1 0c1 0 2 0 3 0l1 0c1 0 3 0 4 0 1 0 2 0 3 0 1 0 2 0 3 0 1 0 3 0 4 0l1 0c2 0 4 0 6 0l1 0c1 0 3 1 4 1l1 0c2 0 4 0 5 0l1 0c1 1 3 1 5 1l1 0c1 1 3 1 5 2l0 0c2 0 3 1 4 1l1 0c1 0 2 1 4 1l0 1c0 0 1 0 1 0l1 1c1 0 2 0 2 1 1 0 3 1 3 2 1 0 2 0 3 1l0 0c1 1 2 1 2 2 1 0 1 1 2 1l0 1c0 0 1 1 1 1 0 1 0 1 1 1l0 1c0 0 0 1 0 1 0 1 0 1 1 2l0 1 0-36z m0 52c0-1 0-1-1-2 0 0 0-1 0-1-1 0-1-1-1-1 0-1 0-1-1-2 0 0-1-1-1-1-1-1-1-1-2-2l-1 0c0 0-1-1-2-1-1 0-2-1-3-2 0 0-1 0-2-1l-1 0c0-1-1-1-1-1l-1 0c-1 0-2-1-4-1l0 0c-2-1-3-1-4-2l-1 0c-1 0-3 0-5-1l0 0c-2 0-4-1-5-1l-1 0c-2 0-3 0-5 0l-1 0c-1 0-3-1-5-1l-1 0c-1 0-3 0-5 0l-1 0c-1 0-3 0-5 0l0 0c-1 0-2 0-3 0 0 0-1 0-2 0l0 0c-2 0-3 0-5 0l-1 0c-1 0-2 0-3 0l-1 0c-1 0-2 1-4 1l0 0c-1 0-2 0-4 0l0 0c-2 0-3 1-4 1-2 0-3 0-4 1l-1 0c-1 0-3 0-4 0l-1 0c-1 1-2 1-4 2l0 0c-1 0-1 0-2 0l-1 1c0 0-1 0-1 0l-1 1 0 0-3 1-1 1-2 1-1 0-2 1-1 0-1 1-1 1-2 1 0 1-1 0 0 1-2 1 0 1-1 0 0 1 0 1 0 1 0 2c0 0 0 0 0 1l-1 36c0 0 0-1 0-1l0-2 3-4 1 0 0-1 2-2 1 0 1 0 2-1 1-1 2-1 1 0 1-1 1-1 2-1 1 0c1 0 1 0 2 0l1-1c0 0 0 0 1 0l1-1c2 0 3-1 4-1l1 0c1-1 2-1 4-1l1 0c1-1 2-1 3-1l1 0c1 0 2-1 4-1l0 0c1 0 2 0 4 0l1 0c1 0 2-1 3-1l1 0c1 0 2 0 4 0l0 0c2 0 3 0 5 0 1 0 2 0 2 0 1 0 2 0 3 0 2 0 4 0 5 0l1 0c2 0 4 0 5 0l1 0c2 0 4 1 5 1l1 0c1 0 3 0 5 0l0 0c2 1 4 1 6 1l0 0c2 1 3 1 5 2l1 0c1 0 2 1 4 1l0 0c2 1 3 1 4 2l1 0c0 0 0 0 1 0l1 1c0 0 1 0 2 1 1 0 2 1 3 2 1 0 1 1 2 1l1 1c0 0 1 0 2 1 0 0 1 1 1 1l1 1c0 0 0 1 0 1 1 1 1 1 1 2l0 0c0 1 1 1 1 1 0 1 0 1 0 2l0 1 1-36z m0 52c0-1 0-1-1-2 0 0 0-1 0-1-1-1-1-1-1-2 0 0 0-1-1-1 0-1-1-1-1-2-1 0-1 0-2-1l-1 0c0 0-1-1-2-1-1-1-2-2-3-2 0-1-1-1-2-1l-1-1c0 0-1 0-1 0l-1 0c-1-1-2-1-4-1l0 0c-2-1-3-1-4-2l-1 0c-1 0-3-1-5-1l0 0c-2-1-4-1-5-1l-1 0c-2-1-3-1-5-1l-1 0c-1 0-3 0-5 0l-1 0c-1 0-3-1-5-1l-1 0c-1 0-3 0-5 0l0 0c-1 0-2 0-3 0 0 0-1 0-2 0l0 0c-2 0-3 0-5 0l-1 0c-1 0-2 0-3 1l-1 0c-1 0-2 0-4 0l0 0c-1 0-2 1-4 1l0 0c-2 0-3 0-4 0-2 0-3 1-4 1l-1 0c-1 1-3 1-4 1l-1 0c-1 1-2 1-4 2l0 0c-1 0-1 0-2 0l-1 0c0 0-1 1-1 1l-1 0 0 0-1 1-1 0-1 1-1 0-2 1-1 1-1 0-1 1-1 0-1 1-1 0-1 1-2 2 0 0-1 1 0 0-1 1 0 1-1 0 0 1 0 0 0 1 0 2c0 1 0 1 0 2l-1 31c0 0 0 0 0 1 0 0 0 0 0 0l0 4c0 0 0-1 0-1l0-1c3 13 29 23 62 22 33 0 60-11 62-24 0 1 0 1 0 2l0 1 1-37z m-134-209c-3 0-5-1-8-3-2-2-4-5-5-9-2-3-2-8-2-12 0-4 1-6 2-8 2-2 4-3 7-3 2 0 4 0 7 1 2 0 5 1 8 3l0-13c-5-3-12-4-18-4-7 0-13 2-16 6-4 4-6 10-6 17 0 8 1 14 4 20 3 6 7 11 11 14 5 3 11 4 17 4 7 0 14-1 19-5l-6-13c-2 2-4 3-7 4-3 1-4 1-7 1z m39-25l-5-22-16 0 13 59 16 0c7 0 12-1 16-4 3-3 5-7 5-12 0-4-1-8-3-11-1-3-4-6-8-7l9-21 2-4-17 0-8 22z m2 12l2 0c3 0 5 1 6 2 2 2 2 4 2 6 0 2 0 3-1 4-1 1-2 1-4 1l-2 0z m67-34l-35 0 12 59 36 0-3-13-20 0-1-9 18 0-3-13-18 0-3-11 20 0z m65 37c0-7-1-14-4-20-3-5-7-10-12-13-5-3-11-5-18-5l-19 0 12 60 18 0c7 0 13-2 17-6 4-3 6-8 6-16z m-32-24c3 0 6 1 8 3 3 2 4 5 6 9 1 3 2 7 2 12 0 3-1 6-3 8-1 1-3 2-6 2l-3 0-7-33 3 0z"/>
53
- <glyph glyph-name="layouts-title" unicode="&#83;" d="M95 89l13 59 16 0-10-46 20 0-3-13z m83 0l-12 0 0 5 0 0c-2-2-4-4-5-5-2-1-4-1-6-1-5 0-8 1-10 5-3 3-3 7-3 13 0 4 0 9 2 15 2 5 5 8 8 11 3 3 6 4 10 4 2 0 4-1 6-1 2-1 3-3 5-6l0 0 2 6 13 0z m-16 12c1 0 2 1 3 2 2 2 3 4 3 7 0 3 1 5 1 8 0 2-1 3-1 4 0 1-1 1-2 1-2 0-4-2-6-5-2-3-2-7-2-11 0-4 1-6 4-6z m30 34l16 0 2-22 0-6 0 0c1 3 2 6 2 7 1 0 4 8 10 22l17 0-27-52c-3-5-6-9-10-11-3-2-7-3-12-3-2 0-5 0-7 0l0 13c2-1 3-1 5-1 2 0 4 1 6 2 1 1 3 2 4 4l1 2z m64-47c-6 0-10 1-13 5-3 3-5 7-5 13 0 5 1 10 4 15 2 5 5 8 9 11 4 2 8 3 14 3 5 0 10-1 13-4 3-3 5-8 5-13 0-6-1-11-4-16-2-4-5-8-9-10-4-3-9-4-14-4z m7 36c-3 0-5-2-6-5-1-4-2-9-2-13 0-4 1-6 3-6 2 0 4 2 5 6 2 3 3 8 3 13 0 2-1 3-1 4-1 1-2 1-2 1z m42-20c0-1 1-2 1-3 1 0 2 0 3 0 1 0 3 0 4 3 1 2 2 5 3 9l5 22 16 0-10-47-13 0 1 7-1 0c-1-2-3-4-5-6-2-1-5-1-7-1-4 0-7 0-9 3-3 3-3 6-3 10 0 3 0 6 0 9l6 25 15 0-5-25c0-2-1-4-1-6z m56-3c2 0 4 0 7 2l0-12c-4-2-8-3-14-3-4 0-7 1-9 3-2 2-3 4-3 8 0 2 0 5 1 8l3 16-7 0 2 8 9 4 6 10 10 0-2-10 12 0-3-12-11 0-4-15c0-3 0-4 0-5 0-1 1-2 3-2z m51 4c0-5-1-10-5-12-3-3-9-5-15-5-6 0-11 1-15 3l0 13c3-2 5-3 7-3 3 0 5-1 7-1 2 0 3 1 4 1 1 0 2 1 2 2 0 1-1 2-1 3-1 1-3 2-5 3-3 1-6 3-7 5-1 3-2 5-2 8 0 5 2 8 5 11 4 2 8 3 14 3 3 0 6 0 9-1 2 0 5-1 7-3l-5-10c-2 1-4 2-6 3-2 0-3 1-5 1-2 0-3-1-3-3 0-1 0-2 1-2 1 0 3-1 5-2 5-4 8-8 8-14z m-72 351l0 56-56 0 0-56-56 0 0 56-56 0 0-56-56 0 0-279 280 0 0 279z m-137-242l-51 0 0 127 51 0z m155 0l-142 0 0 127 142 0z m0 140l-206 0 0 54 206 0z"/>
54
- <glyph glyph-name="types-title" unicode="&#84;" d="M165 89l-16 0 10 46-13 0 2 13 42 0-2-13-13 0z m24 46l16 0 2-22 0-6 0 0c1 3 2 6 2 7 0 0 4 8 10 22l17 0-27-52c-3-5-6-9-10-11-4-2-8-3-12-3-3 0-5 0-7 0l0 12c2-1 3-1 5-1 2 0 4 1 6 2 1 1 3 2 4 5l1 1z m68-47c-3 0-7 2-9 6l0 0c-1-5-1-10-3-15l-2-11-15 0 14 67 12 0 0-5 0 0c3 4 6 6 11 6 4 0 7-1 10-5 2-3 4-7 4-12 0-6-1-11-3-16-2-5-5-9-7-11-3-3-8-4-12-4z m2 35c-2 0-3-1-4-2-1-1-2-4-3-7 0-2-1-5-1-7 0-2 1-4 1-5 1-1 2-1 3-1 1 0 3 1 4 2 1 2 2 4 3 6 0 3 1 5 1 8-1 4-2 6-4 6z m44-35c-5 0-10 1-13 5-3 3-5 8-5 13 0 6 1 11 4 15 2 5 5 8 9 11 4 3 8 4 14 4 5 0 9-1 12-4 3-2 5-5 5-9 0-6-3-10-7-13-4-2-10-4-19-4l-2 0 0 0c0-5 2-6 7-6 2 0 4 0 6 1 2 0 5 1 7 3l0-11c-3-2-6-3-8-4-3-1-6-1-10-1z m7 38c-2 0-3-1-5-3-1-2-2-4-2-7l1 0c3 0 5 1 7 2 2 1 2 3 2 5 0 1 0 1-1 2 0 1-1 1-2 1z m57-21c0-5-2-10-5-12-4-3-9-5-16-5-6 0-10 1-14 3l0 13c2-2 5-3 7-3 2 0 4-1 6-1 2 0 4 1 5 1 0 0 1 1 1 2 0 1-1 2-1 3-1 1-2 2-5 3-3 1-5 3-7 5-1 3-1 5-1 8 0 5 1 8 5 11 3 2 8 3 14 3 3 0 6 0 8-1 2 0 5-1 7-3l-5-10c-2 1-3 2-5 3-2 0-4 1-5 1-2 0-4-1-4-3 0-1 1-2 2-2 1 0 2-1 4-2 6-4 9-8 9-14z m-27 351l0 56-56 0 0-56-56 0 0 56-56 0 0-56-56 0 0-279 280 0 0 279z m-191-92c0 3 1 6 3 6 1 1 4 2 7 2l5 0c4 0 7 0 8 1 2 1 3 3 3 6l1 4c1 3 2 5 4 6 1 1 4 2 8 2l34 0c3 0 5-1 7-2 0-1 1-3 2-6l1-5c1-3 2-5 4-5 1-1 5-1 10-1l64 0c5 0 7-3 7-8l0-10-107 0c-7 0-11 0-13-1-1-1-5-3-8-9l-40-77z m219-31l-41-82-165 0 42 82c2 3 3 4 5 5 1 1 3 2 7 2l148 0c4 0 6-1 6-2 0-1-1-2-2-5z"/>
55
- <glyph glyph-name="module-manager-title" unicode="&#85;" d="M127 89l0 43 0 0c-2-11-3-18-4-21l-5-22-14 0 12 60 22 0 0-42 0 0 20 42 21 0-13-60-14 0 4 23c2 6 3 12 5 17l0 3 0 0-20-43z m74-1c-6 0-11 2-13 5-3 3-5 8-5 13 0 6 1 11 3 15 3 5 5 9 9 11 5 3 9 4 14 4 6 0 11-1 13-5 3-3 5-7 5-13 0-5-1-10-3-15-2-5-5-9-9-11-5-2-9-4-14-4z m6 37c-2 0-4-2-5-6-2-4-3-8-3-13 0-4 1-5 3-5 3 0 5 1 6 5 1 4 2 8 2 13 0 2 0 3-1 4 0 1-1 2-2 2z m47 11c2 0 4 0 5-1 2-1 3-2 5-5l0 0 0 1c0 4 1 7 1 9l3 12 15 0-13-64-13 0 1 6-1 0c-1-3-3-4-5-5-2-1-3-1-6-1-4 0-7 1-10 4-2 3-3 8-3 13 0 5 1 10 3 15 2 5 5 9 7 12 3 3 7 4 11 4z m-1-35c2 0 3 1 4 3 1 1 2 4 3 6 0 3 1 5 1 8 0 4-1 6-4 6-1 0-2-1-3-2-1-1-3-4-4-7-1-2-1-5-1-7 1-5 2-7 4-7z m48 4c0-2 0-2 1-3 0-1 1-1 2-1 1 0 3 1 4 3 2 3 2 5 3 9l5 22 16 0-10-46-12 0 0 6 0 0c-2-2-4-4-6-5-1-1-4-2-7-2-4 0-7 1-9 4-2 2-3 5-3 9 0 3 0 7 1 10l5 24 16 0-5-25c-1-2-1-4-1-5z m49-16l-16 0 13 64 16 0z m32-1c-5 0-10 2-13 5-4 3-5 8-5 14 0 5 1 11 3 15 3 5 6 8 10 11 4 2 8 3 14 3 5 0 9-1 12-3 2-3 4-6 4-10 0-5-2-9-6-12-4-3-10-4-19-4l-2 0 0-1c0-4 2-6 6-6 3 0 5 1 7 1 2 0 5 2 7 3l0-11c-3-1-6-3-9-3-2-1-6-2-9-2z m7 38c-2 0-4-1-5-3-1-2-2-4-3-7l2 0c2 0 5 1 7 2 1 1 2 3 2 5 0 1-1 1-1 2 0 1-1 1-2 1z m-290-102l0 43-1 0c-2-11-3-18-4-21l-4-22-15 0 13 60 21 0 0-43 1 0 19 43 22 0-13-60-15 0 5 23c1 6 3 12 4 17l1 3-1 0-19-43z m92 0l-12 0 0 5 0 0c-2-2-4-3-5-4-2-1-4-2-6-2-5 0-8 2-10 5-3 3-3 7-3 13 0 5 0 10 2 15 2 5 5 9 8 11 3 3 6 4 10 4 2 0 4 0 6-1 2-1 3-3 5-5l0 0 3 5 12 0z m-17 12c1 0 3 1 4 3 1 1 2 3 3 6 0 3 1 5 1 8 0 2-1 3-1 4-1 1-2 2-3 2-2 0-3-2-5-5-2-4-3-8-3-12 1-4 2-6 4-6z m60 19c0 2 0 2-1 3 0 1-1 1-2 1-2 0-3-1-4-3-2-2-3-5-4-9l-4-23-16 0 10 47 12 0 0-7 0 0c2 3 4 5 5 6 2 1 5 2 8 2 4 0 7-2 9-4 2-2 3-6 3-10 0-3-1-6-1-9l-5-25-16 0 5 25c1 3 1 5 1 6z m60-31l-12 0 0 5 0 0c-2-2-4-3-6-4-1-1-3-2-6-2-4 0-7 2-9 5-3 3-4 7-4 13 0 5 1 10 3 15 2 5 5 9 8 11 2 3 6 4 10 4 2 0 4 0 6-1 2-1 3-3 5-5l0 0 2 5 13 0z m-17 12c1 0 3 1 4 3 1 1 2 3 2 6 1 3 1 5 1 8 0 2 0 3-1 4 0 1-1 2-2 2-2 0-4-2-5-5-2-4-3-8-3-12 1-4 2-6 4-6z m78 35l-2-9-6-2c0-1 0-2 0-4 0-5-2-9-5-12-4-4-8-5-14-5-2 0-4 0-5 1 0-1-1-1-1-1-1-1-1-1-1-2 0-1 2-2 5-2l5-1c5 0 9-2 11-4 2-2 3-4 3-8 0-6-2-10-7-13-5-3-11-5-20-5-5 0-10 1-14 3-3 3-5 6-5 9 0 3 1 5 3 7 2 2 5 4 9 4-1 1-2 2-2 3-1 1-1 2-1 3 0 2 0 4 2 5 1 2 3 3 6 4-4 3-6 7-6 12 0 5 2 10 6 13 3 2 8 4 14 4 2 0 3 0 5 0 1-1 2-1 3-1l17 0z m-42-53c0-2 2-4 7-4 3 0 6 1 8 2 2 1 2 2 2 3 0 1 0 2-1 2-1 1-2 1-5 1l-4 1c-3-1-4-1-5-2-2-1-2-2-2-3z m12 35c0-3 1-4 3-4 2 0 3 1 4 3 1 2 1 4 1 6 0 3-1 4-2 4-1 0-2-1-3-1-1-1-1-3-2-4 0-2-1-3-1-4z m48-30c-5 0-10 2-13 5-3 3-5 8-5 13 0 6 1 12 3 16 3 4 6 8 10 10 4 3 8 4 14 4 5 0 9-1 12-4 3-2 4-5 4-9 0-5-2-10-6-12-4-3-10-5-19-5l-2 0 0 0c0-4 2-6 6-6 3 0 5 0 7 1 2 0 5 2 7 3l0-11c-3-1-6-3-8-3-3-1-6-2-10-2z m7 38c-2 0-3-1-5-3-1-2-2-4-3-7l2 0c3 0 5 1 7 2 2 1 2 3 2 5 0 1 0 1-1 2 0 1-1 1-2 1z m57 10c1 0 3 0 3 0l-3-16c-1 0-3 1-5 1-3 0-5-1-7-3-1-2-2-5-3-9l-4-20-16 0 9 46 13 0-1-8 1 0c1 4 3 5 5 7 2 1 5 2 8 2z m-97 385l0 56-56 0 0-56-56 0 0 56-56 0 0-56-56 0 0-279 280 0 0 279z m-93-249l-85 49 0 91 85-51z m102 49l-85-48 0 86 85 51z m0 108l-92-54-94 55 93 54z"/>
56
- <glyph glyph-name="access" unicode="&#118;" d="M259 327c-21 0-38-17-38-38l0-24 76 0 0 24c0 21-18 38-38 38z m125 100l0 85-85 0 0-85-86 0 0 85-85 0 0-85-85 0 0-427 426 0 0 427z m-30-336c0-11-8-19-19-19l-154 0c-11 0-20 8-20 19l0 154c0 11 9 20 20 20l10 0 0 24c0 37 31 68 68 68 37 0 67-31 67-68l0-24 8 0c11 0 19-9 19-20l0-154z"/>
57
- <glyph glyph-name="bullhorn" unicode="&#86;" d="M401 316c-32 73-83 130-109 119-44-18 26-103-189-191-19-8-24-38-16-56 8-18 33-36 52-29 3 2 15 6 15 6 13-18 27-8 32-19l23-53c5-10 15-20 22-17l41 16c7 2 12 9 10 16-1 1-1 2-1 2-3 7-16 9-20 18-3 8-15 34-18 43-5 11 5 21 19 22 98 10 117-50 150-37 26 11 21 86-11 160z m-11-120c-6-3-45 28-69 85-25 58-22 110-16 113 6 2 43-35 68-92 25-58 23-104 17-106z"/>
58
- <glyph glyph-name="comment" unicode="&#87;" d="M79 58l0 24c1 35 27 65 63 69 1 0 2 0 3-1 34-24 80-24 114 0 1 1 2 1 4 1 35-4 62-34 62-69l0-24m-196 171c0 41 33 73 73 73 40 0 73-32 73-73 0-40-33-72-73-72-40 0-73 32-73 72z m296 213l-144 0c-10 0-18-8-18-18l0-84c0-10 8-18 18-18l0 0 0-42c0-2 2-4 4-4 1 0 2 0 2 1l41 44 3 1 94 0c10 0 18 8 18 18l0 84c0 10-8 18-18 18z"/>
59
- <glyph glyph-name="quote" unicode="&#88;" d="M395 290c0 77-62 139-139 139-77 0-139-62-139-139 0-66 47-122 109-135l0-63c0-5 4-9 9-9 3 0 5 1 7 3l109 102c0 0 0 0-1 0 28 26 45 62 45 102z m-121 4l0 48 47 0 0-41c0-7-1-14-2-20-2-6-5-12-8-17-7-10-15-19-24-26l-13 11c14 11 24 27 26 44l-26 0z m-59-56c0 0 0 0 0 0l-13 11c14 11 24 27 26 44l-26 0 0 49 47 0 0-41c0-7-1-14-3-20-1-6-4-12-7-18-7-9-15-18-24-25z"/>
60
- <glyph glyph-name="thumbsup" unicode="&#89;" d="M321 267c-6 8-58 90-60 97-1 19 0 38 1 57 0 12-37 29-46 7-6-12-25-57-23-69 2-13 6-44 11-67l-108 0c-14 1-26-10-27-24 0 0 0 0 0 0-1-14 5-26 16-33-6-6-9-14-8-22 1-10 7-20 17-26-6-5-9-13-9-21 1-11 8-21 17-27-5-5-7-12-6-20 2-19 19-33 38-31l170 0c9 0 16 4 23 9 5 3 10 7 16 10l83 1c4 0 8 4 8 8l0 124c0 4-2 7-6 7-14 1-94 4-107 20z"/>
61
- <glyph glyph-name="star" unicode="&#90;" d="M262 433l45-108 118-10c5-1 9-5 8-11 0-2-1-4-3-6l-89-77 27-115c1-5-2-9-7-11-3 0-5 0-7 2l-101 60-101-60c-4-3-10-2-12 3-2 2-2 4-2 7l27 114-89 77c-4 4-4 10-1 13 2 2 4 3 6 4l118 10 46 108c1 5 7 7 12 5 2-1 4-3 5-5z"/>
62
- </font></defs></svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/fonts/otgs-icons.ttf DELETED
Binary file
vendor/otgs/icons/fonts/otgs-icons.woff DELETED
Binary file
vendor/otgs/icons/icons-overview.html DELETED
@@ -1,456 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
- <meta name="viewport" content="width=device-width,initial-scale=1">
7
- <title>Font Reference - otgs-icons</title>
8
- <link href="http://fonts.googleapis.com/css?family=Dosis:400,500,700" rel="stylesheet" type="text/css">
9
- <link rel="stylesheet" href="styles.css">
10
- <style type="text/css">html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-weight:inherit;font-style:inherit;font-family:inherit;font-size:100%;vertical-align:baseline}body{line-height:1;color:#000;background:#fff}ol,ul{list-style:none}table{border-collapse:separate;border-spacing:0;vertical-align:middle}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}a img{border:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{font-family:'Dosis','Tahoma',sans-serif}.container{margin:15px auto;width:80%}h1{margin:40px 0 20px;font-weight:700;font-size:38px;line-height:32px;color:#fb565e}h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercase;font-weight:500}.small{font-size:14px;color:#a5adb4;}.small a{color:#a5adb4;}.small a:hover{color:#fb565e}.glyphs.character-mapping{margin:0 0 20px 0;padding:20px 0 20px 30px;color:rgba(0,0,0,0.5);border:1px solid #d8e0e5;-webkit-border-radius:3px;border-radius:3px;}.glyphs.character-mapping li{margin:0 30px 20px 0;display:inline-block;width:90px}.glyphs.character-mapping .icon{margin:10px 0 10px 15px;padding:15px;position:relative;width:55px;height:55px;color:#162a36 !important;overflow:hidden;-webkit-border-radius:3px;border-radius:3px;font-size:32px;}.glyphs.character-mapping .icon svg{fill:#000}.glyphs.character-mapping input{margin:0;padding:5px 0;line-height:12px;font-size:12px;display:block;width:100%;border:1px solid #d8e0e5;-webkit-border-radius:5px;border-radius:5px;text-align:center;outline:0;}.glyphs.character-mapping input:focus{border:1px solid #fbde4a;-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}.glyphs.character-mapping input:hover{-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}.glyphs.css-mapping{margin:0 0 60px 0;padding:30px 0 20px 30px;color:rgba(0,0,0,0.5);border:1px solid #d8e0e5;-webkit-border-radius:3px;border-radius:3px;}.glyphs.css-mapping li{margin:0 30px 20px 0;padding:0;display:inline-block;overflow:hidden}.glyphs.css-mapping .icon{margin:0;margin-right:10px;padding:13px;height:50px;width:50px;color:#162a36 !important;overflow:hidden;float:left;font-size:24px}.glyphs.css-mapping input{margin:0;margin-top:5px;padding:8px;line-height:16px;font-size:16px;display:block;width:150px;height:40px;border:1px solid #d8e0e5;-webkit-border-radius:5px;border-radius:5px;background:#fff;outline:0;float:right;}.glyphs.css-mapping input:focus{border:1px solid #fbde4a;-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}.glyphs.css-mapping input:hover{-webkit-box-shadow:inset 0 0 3px #fbde4a;box-shadow:inset 0 0 3px #fbde4a}</style>
11
- </head>
12
- <body>
13
- <div class="container">
14
- <h1>otgs-icons</h1>
15
- <p class="small">This font was created with<a href="http://fontastic.me/">Fontastic</a></p>
16
- <h2>CSS mapping</h2>
17
- <ul class="glyphs css-mapping">
18
- <li>
19
- <div class="icon otgs-ico-note-add"></div>
20
- <input type="text" readonly="readonly" value="note-add">
21
- </li>
22
- <li>
23
- <div class="icon otgs-ico-note-add-o"></div>
24
- <input type="text" readonly="readonly" value="note-add-o">
25
- </li>
26
- <li>
27
- <div class="icon otgs-ico-translated"></div>
28
- <input type="text" readonly="readonly" value="translated">
29
- </li>
30
- <li>
31
- <div class="icon otgs-ico-yes"></div>
32
- <input type="text" readonly="readonly" value="yes">
33
- </li>
34
- <li>
35
- <div class="icon otgs-ico-in-progress"></div>
36
- <input type="text" readonly="readonly" value="in-progress">
37
- </li>
38
- <li>
39
- <div class="icon otgs-ico-copy"></div>
40
- <input type="text" readonly="readonly" value="copy">
41
- </li>
42
- <li>
43
- <div class="icon otgs-ico-copy-o"></div>
44
- <input type="text" readonly="readonly" value="copy-o">
45
- </li>
46
- <li>
47
- <div class="icon otgs-ico-note-edit"></div>
48
- <input type="text" readonly="readonly" value="note-edit">
49
- </li>
50
- <li>
51
- <div class="icon otgs-ico-note-edit-o"></div>
52
- <input type="text" readonly="readonly" value="note-edit-o">
53
- </li>
54
- <li>
55
- <div class="icon otgs-ico-add"></div>
56
- <input type="text" readonly="readonly" value="add">
57
- </li>
58
- <li>
59
- <div class="icon otgs-ico-refresh"></div>
60
- <input type="text" readonly="readonly" value="refresh">
61
- </li>
62
- <li>
63
- <div class="icon otgs-ico-no"></div>
64
- <input type="text" readonly="readonly" value="no">
65
- </li>
66
- <li>
67
- <div class="icon otgs-ico-not-translated"></div>
68
- <input type="text" readonly="readonly" value="not-translated">
69
- </li>
70
- <li>
71
- <div class="icon otgs-ico-delete"></div>
72
- <input type="text" readonly="readonly" value="delete">
73
- </li>
74
- <li>
75
- <div class="icon otgs-ico-waiting"></div>
76
- <input type="text" readonly="readonly" value="waiting">
77
- </li>
78
- <li>
79
- <div class="icon otgs-ico-warning"></div>
80
- <input type="text" readonly="readonly" value="warning">
81
- </li>
82
- <li>
83
- <div class="icon otgs-ico-original"></div>
84
- <input type="text" readonly="readonly" value="original">
85
- </li>
86
- <li>
87
- <div class="icon otgs-ico-needs-update"></div>
88
- <input type="text" readonly="readonly" value="needs-update">
89
- </li>
90
- <li>
91
- <div class="icon otgs-ico-cred"></div>
92
- <input type="text" readonly="readonly" value="cred">
93
- </li>
94
- <li>
95
- <div class="icon otgs-ico-layouts"></div>
96
- <input type="text" readonly="readonly" value="layouts">
97
- </li>
98
- <li>
99
- <div class="icon otgs-ico-module-manager"></div>
100
- <input type="text" readonly="readonly" value="module-manager">
101
- </li>
102
- <li>
103
- <div class="icon otgs-ico-toolset"></div>
104
- <input type="text" readonly="readonly" value="toolset">
105
- </li>
106
- <li>
107
- <div class="icon otgs-ico-types"></div>
108
- <input type="text" readonly="readonly" value="types">
109
- </li>
110
- <li>
111
- <div class="icon otgs-ico-views"></div>
112
- <input type="text" readonly="readonly" value="views">
113
- </li>
114
- <li>
115
- <div class="icon otgs-ico-edit"></div>
116
- <input type="text" readonly="readonly" value="edit">
117
- </li>
118
- <li>
119
- <div class="icon otgs-ico-duplicate"></div>
120
- <input type="text" readonly="readonly" value="duplicate">
121
- </li>
122
- <li>
123
- <div class="icon otgs-ico-basket"></div>
124
- <input type="text" readonly="readonly" value="basket">
125
- </li>
126
- <li>
127
- <div class="icon otgs-ico-discoverwp"></div>
128
- <input type="text" readonly="readonly" value="discoverwp">
129
- </li>
130
- <li>
131
- <div class="icon otgs-ico-wpml"></div>
132
- <input type="text" readonly="readonly" value="wpml">
133
- </li>
134
- <li>
135
- <div class="icon otgs-ico-otgs"></div>
136
- <input type="text" readonly="readonly" value="otgs">
137
- </li>
138
- <li>
139
- <div class="icon otgs-ico-wrench"></div>
140
- <input type="text" readonly="readonly" value="wrench">
141
- </li>
142
- <li>
143
- <div class="icon otgs-ico-link"></div>
144
- <input type="text" readonly="readonly" value="link">
145
- </li>
146
- <li>
147
- <div class="icon otgs-ico-envelope-o"></div>
148
- <input type="text" readonly="readonly" value="envelope-o">
149
- </li>
150
- <li>
151
- <div class="icon otgs-ico-user"></div>
152
- <input type="text" readonly="readonly" value="user">
153
- </li>
154
- <li>
155
- <div class="icon otgs-ico-wpml-cms-nav"></div>
156
- <input type="text" readonly="readonly" value="wpml-cms-nav">
157
- </li>
158
- <li>
159
- <div class="icon otgs-ico-wpml-media"></div>
160
- <input type="text" readonly="readonly" value="wpml-media">
161
- </li>
162
- <li>
163
- <div class="icon otgs-ico-wpml-string-translation"></div>
164
- <input type="text" readonly="readonly" value="wpml-string-translation">
165
- </li>
166
- <li>
167
- <div class="icon otgs-ico-wpml-translation-management"></div>
168
- <input type="text" readonly="readonly" value="wpml-translation-management">
169
- </li>
170
- <li>
171
- <div class="icon otgs-ico-picture"></div>
172
- <input type="text" readonly="readonly" value="picture">
173
- </li>
174
- <li>
175
- <div class="icon otgs-ico-toolset-training"></div>
176
- <input type="text" readonly="readonly" value="toolset-training">
177
- </li>
178
- <li>
179
- <div class="icon otgs-ico-access-title"></div>
180
- <input type="text" readonly="readonly" value="access-title">
181
- </li>
182
- <li>
183
- <div class="icon otgs-ico-views-title"></div>
184
- <input type="text" readonly="readonly" value="views-title">
185
- </li>
186
- <li>
187
- <div class="icon otgs-ico-cred-title"></div>
188
- <input type="text" readonly="readonly" value="cred-title">
189
- </li>
190
- <li>
191
- <div class="icon otgs-ico-layouts-title"></div>
192
- <input type="text" readonly="readonly" value="layouts-title">
193
- </li>
194
- <li>
195
- <div class="icon otgs-ico-types-title"></div>
196
- <input type="text" readonly="readonly" value="types-title">
197
- </li>
198
- <li>
199
- <div class="icon otgs-ico-module-manager-title"></div>
200
- <input type="text" readonly="readonly" value="module-manager-title">
201
- </li>
202
- <li>
203
- <div class="icon otgs-ico-access"></div>
204
- <input type="text" readonly="readonly" value="access">
205
- </li>
206
- <li>
207
- <div class="icon otgs-ico-bullhorn"></div>
208
- <input type="text" readonly="readonly" value="bullhorn">
209
- </li>
210
- <li>
211
- <div class="icon otgs-ico-comment"></div>
212
- <input type="text" readonly="readonly" value="comment">
213
- </li>
214
- <li>
215
- <div class="icon otgs-ico-quote"></div>
216
- <input type="text" readonly="readonly" value="quote">
217
- </li>
218
- <li>
219
- <div class="icon otgs-ico-thumbsup"></div>
220
- <input type="text" readonly="readonly" value="thumbsup">
221
- </li>
222
- <li>
223
- <div class="icon otgs-ico-star"></div>
224
- <input type="text" readonly="readonly" value="star">
225
- </li>
226
- </ul>
227
- <h2>Character mapping</h2>
228
- <ul class="glyphs character-mapping">
229
- <li>
230
- <div data-icon="a" class="icon"></div>
231
- <input type="text" readonly="readonly" value="a">
232
- </li>
233
- <li>
234
- <div data-icon="b" class="icon"></div>
235
- <input type="text" readonly="readonly" value="b">
236
- </li>
237
- <li>
238
- <div data-icon="c" class="icon"></div>
239
- <input type="text" readonly="readonly" value="c">
240
- </li>
241
- <li>
242
- <div data-icon="d" class="icon"></div>
243
- <input type="text" readonly="readonly" value="d">
244
- </li>
245
- <li>
246
- <div data-icon="e" class="icon"></div>
247
- <input type="text" readonly="readonly" value="e">
248
- </li>
249
- <li>
250
- <div data-icon="f" class="icon"></div>
251
- <input type="text" readonly="readonly" value="f">
252
- </li>
253
- <li>
254
- <div data-icon="g" class="icon"></div>
255
- <input type="text" readonly="readonly" value="g">
256
- </li>
257
- <li>
258
- <div data-icon="i" class="icon"></div>
259
- <input type="text" readonly="readonly" value="i">
260
- </li>
261
- <li>
262
- <div data-icon="j" class="icon"></div>
263
- <input type="text" readonly="readonly" value="j">
264
- </li>
265
- <li>
266
- <div data-icon="k" class="icon"></div>
267
- <input type="text" readonly="readonly" value="k">
268
- </li>
269
- <li>
270
- <div data-icon="l" class="icon"></div>
271
- <input type="text" readonly="readonly" value="l">
272
- </li>
273
- <li>
274
- <div data-icon="n" class="icon"></div>
275
- <input type="text" readonly="readonly" value="n">
276
- </li>
277
- <li>
278
- <div data-icon="o" class="icon"></div>
279
- <input type="text" readonly="readonly" value="o">
280
- </li>
281
- <li>
282
- <div data-icon="p" class="icon"></div>
283
- <input type="text" readonly="readonly" value="p">
284
- </li>
285
- <li>
286
- <div data-icon="q" class="icon"></div>
287
- <input type="text" readonly="readonly" value="q">
288
- </li>
289
- <li>
290
- <div data-icon="s" class="icon"></div>
291
- <input type="text" readonly="readonly" value="s">
292
- </li>
293
- <li>
294
- <div data-icon="t" class="icon"></div>
295
- <input type="text" readonly="readonly" value="t">
296
- </li>
297
- <li>
298
- <div data-icon="u" class="icon"></div>
299
- <input type="text" readonly="readonly" value="u">
300
- </li>
301
- <li>
302
- <div data-icon="w" class="icon"></div>
303
- <input type="text" readonly="readonly" value="w">
304
- </li>
305
- <li>
306
- <div data-icon="x" class="icon"></div>
307
- <input type="text" readonly="readonly" value="x">
308
- </li>
309
- <li>
310
- <div data-icon="y" class="icon"></div>
311
- <input type="text" readonly="readonly" value="y">
312
- </li>
313
- <li>
314
- <div data-icon="z" class="icon"></div>
315
- <input type="text" readonly="readonly" value="z">
316
- </li>
317
- <li>
318
- <div data-icon="A" class="icon"></div>
319
- <input type="text" readonly="readonly" value="A">
320
- </li>
321
- <li>
322
- <div data-icon="B" class="icon"></div>
323
- <input type="text" readonly="readonly" value="B">
324
- </li>
325
- <li>
326
- <div data-icon="h" class="icon"></div>
327
- <input type="text" readonly="readonly" value="h">
328
- </li>
329
- <li>
330
- <div data-icon="m" class="icon"></div>
331
- <input type="text" readonly="readonly" value="m">
332
- </li>
333
- <li>
334
- <div data-icon="r" class="icon"></div>
335
- <input type="text" readonly="readonly" value="r">
336
- </li>
337
- <li>
338
- <div data-icon="C" class="icon"></div>
339
- <input type="text" readonly="readonly" value="C">
340
- </li>
341
- <li>
342
- <div data-icon="D" class="icon"></div>
343
- <input type="text" readonly="readonly" value="D">
344
- </li>
345
- <li>
346
- <div data-icon="E" class="icon"></div>
347
- <input type="text" readonly="readonly" value="E">
348
- </li>
349
- <li>
350
- <div data-icon="F" class="icon"></div>
351
- <input type="text" readonly="readonly" value="F">
352
- </li>
353
- <li>
354
- <div data-icon="G" class="icon"></div>
355
- <input type="text" readonly="readonly" value="G">
356
- </li>
357
- <li>
358
- <div data-icon="H" class="icon"></div>
359
- <input type="text" readonly="readonly" value="H">
360
- </li>
361
- <li>
362
- <div data-icon="I" class="icon"></div>
363
- <input type="text" readonly="readonly" value="I">
364
- </li>
365
- <li>
366
- <div data-icon="J" class="icon"></div>
367
- <input type="text" readonly="readonly" value="J">
368
- </li>
369
- <li>
370
- <div data-icon="K" class="icon"></div>
371
- <input type="text" readonly="readonly" value="K">
372
- </li>
373
- <li>
374
- <div data-icon="L" class="icon"></div>
375
- <input type="text" readonly="readonly" value="L">
376
- </li>
377
- <li>
378
- <div data-icon="M" class="icon"></div>
379
- <input type="text" readonly="readonly" value="M">
380
- </li>
381
- <li>
382
- <div data-icon="N" class="icon"></div>
383
- <input type="text" readonly="readonly" value="N">
384
- </li>
385
- <li>
386
- <div data-icon="O" class="icon"></div>
387
- <input type="text" readonly="readonly" value="O">
388
- </li>
389
- <li>
390
- <div data-icon="P" class="icon"></div>
391
- <input type="text" readonly="readonly" value="P">
392
- </li>
393
- <li>
394
- <div data-icon="Q" class="icon"></div>
395
- <input type="text" readonly="readonly" value="Q">
396
- </li>
397
- <li>
398
- <div data-icon="R" class="icon"></div>
399
- <input type="text" readonly="readonly" value="R">
400
- </li>
401
- <li>
402
- <div data-icon="S" class="icon"></div>
403
- <input type="text" readonly="readonly" value="S">
404
- </li>
405
- <li>
406
- <div data-icon="T" class="icon"></div>
407
- <input type="text" readonly="readonly" value="T">
408
- </li>
409
- <li>
410
- <div data-icon="U" class="icon"></div>
411
- <input type="text" readonly="readonly" value="U">
412
- </li>
413
- <li>
414
- <div data-icon="v" class="icon"></div>
415
- <input type="text" readonly="readonly" value="v">
416
- </li>
417
- <li>
418
- <div data-icon="V" class="icon"></div>
419
- <input type="text" readonly="readonly" value="V">
420
- </li>
421
- <li>
422
- <div data-icon="W" class="icon"></div>
423
- <input type="text" readonly="readonly" value="W">
424
- </li>
425
- <li>
426
- <div data-icon="X" class="icon"></div>
427
- <input type="text" readonly="readonly" value="X">
428
- </li>
429
- <li>
430
- <div data-icon="Y" class="icon"></div>
431
- <input type="text" readonly="readonly" value="Y">
432
- </li>
433
- <li>
434
- <div data-icon="Z" class="icon"></div>
435
- <input type="text" readonly="readonly" value="Z">
436
- </li>
437
- </ul>
438
- </div>
439
- <script>(function() {
440
- var glyphs, i, len, ref;
441
-
442
- ref = document.getElementsByClassName('glyphs');
443
- for (i = 0, len = ref.length; i < len; i++) {
444
- glyphs = ref[i];
445
- glyphs.addEventListener('click', function(event) {
446
- if (event.target.tagName === 'INPUT') {
447
- return event.target.select();
448
- }
449
- });
450
- }
451
-
452
- }).call(this);
453
-
454
- </script>
455
- </body>
456
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/otgs-icons.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
- /**
3
- * Include this file to use OTGS-Icons
4
- */
5
-
6
- if( !defined( 'OTGS_ICONS_ROOT_URL' ) )
7
- return;
8
-
9
- if( !defined( 'OTGS_ICONS_VERSION' ) )
10
- define( 'OTGS_ICONS_VERSION', '1.0' );
11
-
12
- if( ! has_action( 'wp_enqueue_scripts', 'otgs_icons' ) )
13
- add_action( 'wp_enqueue_scripts', 'otgs_icons' );
14
-
15
- if( ! function_exists( 'otgs_icons' ) ) {
16
- function otgs_icons() {
17
- wp_register_style( 'otgs-icons', OTGS_ICONS_ROOT_URL . '/css/otgs-icons.css', array(), OTGS_ICONS_VERSION );
18
- wp_enqueue_style( 'otgs-icons' );
19
- }
20
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/access/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/access/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/access/icon.svg DELETED
@@ -1,25 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g fill="#FFD059">
22
- <path d="M268.7 44.5c-2.9 0-5.3 2.4-5.3 5.3v3.5H274v-3.5c-.1-2.9-2.4-5.3-5.3-5.3z"/>
23
- <path d="M286.3 30.5v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zM282 77.7c0 1.5-1.2 2.7-2.7 2.7h-21.6c-1.5 0-2.7-1.2-2.7-2.7V56c0-1.5 1.2-2.7 2.7-2.7h1.5v-3.5c0-5.2 4.3-9.5 9.5-9.5s9.5 4.3 9.5 9.5v3.5h1.1c1.5 0 2.7 1.2 2.7 2.7v21.7z"/>
24
- </g>
25
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/bootstrap/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/bootstrap/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/bootstrap/icon.svg DELETED
@@ -1,25 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g fill="#FFD059">
22
- <path d="M278.1 57.9h-18.9v-2.5l-4.7 4.7 4.7 4.7v-2.5h18.9v2.5l4.7-4.7-4.7-4.7z"/>
23
- <path d="M286.3 30.5v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm2.7 42c0 1.8-1.4 3.2-3.2 3.2H271c.2 1.2 1.2 4.5 6.1 4.5v1.6h-17.5v-1.6c4.9 0 5.9-3.3 6.1-4.5h-15.2c-1.8 0-3.2-1.4-3.2-3.2V47.9c0-1.8 1.4-3.2 3.2-3.2h35.2c1.8 0 3.2 1.4 3.2 3.2v24.6h.1z"/>
24
- </g>
25
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/cred/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/cred/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/cred/icon.svg DELETED
@@ -1,24 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g>
22
- <path fill="#FFD059" d="M286.3 30.3v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-4.4 46.3c0 .2 0 .3-.1.4 0 .1-.1.2-.1.3-.1.1-.1.2-.2.3-.1.1-.1.2-.2.3l-.3.3c-.1.1-.2.2-.4.3h-.1c-.1.1-.3.2-.5.3-.2.1-.4.3-.6.4-.1.1-.3.1-.4.2l-.1.1c-.1.1-.2.1-.3.1h-.2c-.3.1-.5.2-.8.3h-.1l-.9.3h-.1c-.3.1-.7.2-1.1.3h-.1c-.4.1-.7.2-1.1.2h-.2c-.3.1-.6.1-1 .1h-.2c-.3 0-.7.1-1 .1h-.2c-.4 0-.8.1-1.2.1h-3.7c-.2 0-.4 0-.6-.1H265.8c-.3 0-.5-.1-.8-.1h-.1c-.2 0-.4-.1-.7-.1h-.2c-.3 0-.5-.1-.8-.1-.3 0-.5-.1-.8-.2h-.2c-.3-.1-.6-.1-.8-.2h-.2l-.9-.3h-.1c-.1 0-.2-.1-.4-.1l-.2-.1c-.1 0-.2-.1-.3-.1l-.1-.1h-.1l-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.1-.1-.1-.1-.1-.1-.2.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.2-.1-.1-.1-.2v-.1l-.1-.2v-.4-.3l-.1-7.8v.8l.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1c.1 0 .2.1.3.1l.2.1c.1 0 .2.1.4.1l.2.1.9.3h.1c.3.1.5.1.8.2h.2c.3.1.5.1.8.2h.1c.3 0 .5.1.8.1h.2c.2 0 .4.1.7.1h.2c.3 0 .5.1.8.1h.2c.2 0 .4 0 .7.1H270.2c.4 0 .8 0 1.2-.1h.2c.3 0 .7-.1 1-.1h.2c.3 0 .7-.1 1-.1h.1c.4-.1.8-.1 1.2-.2h.1c.4-.1.7-.2 1.1-.3h.1l.9-.3h.1c.3-.1.5-.2.8-.3l.1-.1c.1 0 .2-.1.3-.1l.2-.1c.1-.1.3-.1.4-.2.2-.1.5-.3.7-.4.2-.1.3-.2.5-.3l.1-.1c.1-.1.3-.2.4-.3l.3-.3.1-.1c.1-.1.2-.2.2-.3.1-.1.1-.2.2-.3v-.1c0-.1.1-.2.1-.3 0-.1 0-.2.1-.4v-.2l.1 7.8-.1.6zm0-11.2c0 .2 0 .3-.1.4 0 .1-.1.2-.1.3-.1.1-.1.2-.2.3-.1.1-.1.2-.2.3l-.3.3c-.1.1-.2.2-.4.3h-.1c-.1.1-.3.2-.5.3-.2.1-.4.3-.6.4-.1.1-.3.1-.4.2l-.1.1c-.1.1-.2.1-.3.1h-.2c-.3.1-.5.2-.8.3h-.1l-.9.3h-.1c-.3.1-.7.2-1.1.3h-.1c-.4.1-.7.2-1.1.2h-.2c-.3.1-.6.1-1 .1h-.2c-.3 0-.7.1-1 .1h-.2c-.4 0-.8.1-1.2.1h-3.7c-.2 0-.4 0-.6-.1h-.2c-.3 0-.5-.1-.8-.1h-.1c-.2 0-.4-.1-.7-.1h-.2c-.3 0-.5-.1-.8-.1-.3 0-.5-.1-.8-.2h-.2c-.3-.1-.6-.1-.8-.2h-.2l-.9-.3h-.1c-.1 0-.2-.1-.4-.1l-.2-.1c-.1 0-.2-.1-.3-.1l-.1-.1h-.1l-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.2-.1-.1-.1-.2v-.1l-.1-.2v-.4-.3L255 57v.8l.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1c.1 0 .2.1.3.1l.2.1c.1 0 .2.1.4.1l.2.1.9.3h.1c.3.1.5.1.8.2h.2c.3.1.5.1.8.2h.1c.3 0 .5.1.8.1h.2c.2 0 .4.1.7.1h.2c.3 0 .5.1.8.1h.2c.2 0 .4 0 .7.1H270.2c.4 0 .8 0 1.2-.1h.2c.3 0 .7-.1 1-.1h.2c.3 0 .7-.1 1-.1h.1c.4-.1.8-.1 1.2-.2h.1c.4-.1.7-.2 1.1-.3h.1l.9-.3h.1c.3-.1.5-.2.8-.3l.1-.1c.1 0 .2-.1.3-.1l.2-.1c.1-.1.3-.1.4-.2.2-.1.5-.3.7-.4.2-.1.3-.2.5-.3l.1-.1c.1-.1.3-.2.4-.3l.3-.3.1-.1c.1-.1.2-.2.2-.3.1-.1.1-.2.2-.3v-.1c0-.1.1-.2.1-.3 0-.1 0-.2.1-.4V57l.1 7.8-.1.6zm0-11.2c0 .2 0 .3-.1.4 0 .1-.1.2-.1.3-.1.1-.1.2-.2.3-.1.1-.1.2-.2.3l-.3.3c-.1.1-.2.2-.4.3h-.1c-.1.1-.3.2-.5.3-.2.1-.4.3-.6.4-.1.1-.3.1-.4.2l-.1.1c-.1.1-.2.1-.3.1h-.2c-.3.1-.5.2-.8.3h-.1l-.9.3h-.1c-.3.1-.7.2-1.1.3h-.1c-.4.1-.7.2-1.1.2h-.2c-.3.1-.6.1-1 .1h-.2c-.3 0-.7.1-1 .1h-.2c-.4 0-.8.1-1.2.1h-3.6c-.2 0-.4 0-.6-.1h-.2c-.3 0-.5-.1-.8-.1h-.1c-.2 0-.4-.1-.7-.1h-.2c-.3 0-.5-.1-.8-.1-.3 0-.5-.1-.8-.2h-.2c-.3-.1-.6-.1-.8-.2h-.2l-.9-.3h-.1c-.1 0-.2-.1-.4-.1l-.2-.1c-.1 0-.2-.1-.3-.1l-.1-.1h-.1l-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.2-.1-.1-.1-.2v-.1l-.1-.2v-.4-.3l-.1-6.8v-.1-1 .5c.6-2.8 6.3-4.9 13.3-4.8 7 .1 12.8 2.4 13.4 5.2v-.5l.1 7.8-.2.5z"/>
23
- </g>
24
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/layouts/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/layouts/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/layouts/icon.svg DELETED
@@ -1,24 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g>
22
- <path fill="#FFD059" d="M286 30.2v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-29.3 52h-11V55h11v27.2zm33.3 0h-30.5V55H290v27.2zm0-30h-44.3V40.5H290v11.7z"/>
23
- </g>
24
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/module-manager/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/module-manager/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/module-manager/icon.svg DELETED
@@ -1,24 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g>
22
- <path fill="#FFD059" d="M286 30.3v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-19.9 53.5l-18.4-10.6V53.9l18.4 10.9v19zM288 73.2l-18.3 10.6V65.2l18.3-11v19zm0-23.2l-19.7 11.8-20.3-12 19.8-11.5L288 50z"/>
23
- </g>
24
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/packager/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/packager/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/packager/icon.svg DELETED
@@ -1,26 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g fill="#FFD059">
22
- <path d="M254.4 69.6h8.3v7.3h10.8v-7.3h8.3l-13.6-11z"/>
23
- <path d="M286.7 30.5V18.2h-12.3v12.3H262V18.2h-12.3v12.3h-12.3v61.7H299V30.5h-12.3zm1.9 49.5c.1 1.2-.9 2.3-2.2 2.3h-36.7c-1.2 0-2.3-1-2.3-2.3V53.9l7.9-7.9h25.3l7.9 7.9c.1 0 .1 26.1.1 26.1z"/>
24
- <path d="M256.8 49.9l-3.5 3.5h29.8l-3.4-3.5z"/>
25
- </g>
26
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/ref-sites/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/ref-sites/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/ref-sites/icon.svg DELETED
@@ -1,25 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g fill="#FFD059">
22
- <path d="M287.1 29.6V17.1h-12.5v12.5h-12.5V17.1h-12.5v12.5H237v62.7h62.7V29.6h-12.6zm-17.4 55.5l-10.9-14.3h5.4v-6.1h10.9v6.1h5.3l-10.7 14.3zm5.4-24.4v2.7h-10.9v-2.7h10.9zm-10.8-1.4v-2.7h10.9v2.7h-10.9zm28.4 17.4c0 1.4-1.2 2.6-2.6 2.6h-7.8v-3h7.5V46.6h-41.6v29.7h8.4v3h-8.8c-1.4 0-2.6-1.2-2.6-2.6V43.3c0-1.4 1.2-2.6 2.6-2.6h42.4c1.4 0 2.6 1.2 2.6 2.6v33.4z"/>
23
- <path d="M277.8 42.5h11.9v2.2h-11.9zM248.1 42.5h2.4v2.2h-2.4z"/>
24
- </g>
25
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/support/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/support/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/support/icon.svg DELETED
@@ -1,24 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g>
22
- <path fill="#FFD059" d="M286.9 28.5V16h-12.5v12.5h-12.5V16h-12.5v12.5h-12.5v62.6h62.6V28.5h-12.6zm1.3 38.1c-.2.2-.5.6-.5.9-.6 4.4-2.5 8.2-5.8 11.2-1.6 1.5-3.5 2.3-5.7 2-.8-.1-1.3.1-1.7.9-1.9 3-7.2 3-9.2 0-1.4-2.1-.6-4.7 1.9-5.9 2.8-1.4 6-.5 7.7 2.2.1.2.4.3.6.3h2.4c.3 0 .6-.1.8-.2 3.6-2.3 5.5-5.7 6.4-9.9h-.7c-1.5 0-2.2-.6-2.2-2.2V54.7c0-1 .2-1.9 1.2-2.4-1.5-4.5-6.8-10.5-15-10.6-7.4-.1-13.3 4.8-15.5 10.6 1.2.5 1.3 1.5 1.3 2.6v10.9c0 1.7-.8 2.4-2.5 2.3-3.1-.3-5.5-2.5-6.1-5.9-.6-3.5 0-6.6 3.1-8.9.2-.2.4-.6.5-.9 2-5.6 5.5-9.8 10.9-12.4 8.6-4 18.8-1.2 24.3 6.5 1.3 1.9 2.4 3.9 3.1 6.1.1.3.3.6.6.8 3.8 3 4 10 .1 13.2z"/>
23
- </g>
24
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/toolset-core/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/toolset-core/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/toolset-core/icon.svg DELETED
@@ -1,62 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#SVGID_3_)}.st2{opacity:.3}.st3{fill:#f5944c}.st4{fill:#ef6e44}.st5{opacity:.6;fill:#ffd059}.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#fff;stroke:#fff;stroke-miterlimit:10}.st7{display:none}.st8{display:inline}.st10,.st9{fill:#ffd059}.st10{display:inline}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <linearGradient id="SVGID_3_" x1="160.009" x2="160.009" y1="332.14" y2="-6.196" gradientUnits="userSpaceOnUse">
13
- <stop offset="0" stop-color="#d63900"/>
14
- <stop offset="1" stop-color="#f05a29"/>
15
- </linearGradient>
16
- <path d="M-9.2-6.2h338.3v338.3H-9.2z" class="st1"/>
17
- <g class="st2">
18
- <path d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z" class="st3"/>
19
- <path d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z" class="st4"/>
20
- <path d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5" class="st5"/>
21
- </g>
22
- </g>
23
- <path d="M286.3 185.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V139h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V144h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z" class="st6"/>
24
- <g id="view" class="st7">
25
- <g class="st8">
26
- <path d="M286 30.3v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-39.3 30.2s19.4-26.3 43.2 0c-.1 0-19.4 27-43.2 0z" class="st9"/>
27
- <path d="M268.2 52.5c-4.5 0-8.1 3.6-8.1 8.1s3.6 8.1 8.1 8.1 8.1-3.6 8.1-8.1c.1-4.5-3.6-8.1-8.1-8.1zm0 13.5c-3 0-5.4-2.4-5.4-5.4 0-3 2.4-5.4 5.4-5.4 3 0 5.4 2.4 5.4 5.4 0 3-2.4 5.4-5.4 5.4z" class="st9"/>
28
- </g>
29
- </g>
30
- <g id="access" class="st7">
31
- <path d="M268.7 44.5c-2.9 0-5.3 2.4-5.3 5.3v3.5H274v-3.5c-.1-2.9-2.4-5.3-5.3-5.3z" class="st10"/>
32
- <path d="M286.3 30.5v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zM282 77.7c0 1.5-1.2 2.7-2.7 2.7h-21.6c-1.5 0-2.7-1.2-2.7-2.7V56c0-1.5 1.2-2.7 2.7-2.7h1.5v-3.5c0-5.2 4.3-9.5 9.5-9.5s9.5 4.3 9.5 9.5v3.5h1.1c1.5 0 2.7 1.2 2.7 2.7v21.7z" class="st10"/>
33
- </g>
34
- <g id="btstrp" class="st7">
35
- <path d="M278.1 57.9h-18.9v-2.5l-4.7 4.7 4.7 4.7v-2.5h18.9v2.5l4.7-4.7-4.7-4.7z" class="st10"/>
36
- <path d="M286.3 30.5v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm2.7 42c0 1.8-1.4 3.2-3.2 3.2H271c.2 1.2 1.2 4.5 6.1 4.5v1.6h-17.5v-1.6c4.9 0 5.9-3.3 6.1-4.5h-15.2c-1.8 0-3.2-1.4-3.2-3.2V47.9c0-1.8 1.4-3.2 3.2-3.2h35.2c1.8 0 3.2 1.4 3.2 3.2v24.6h.1z" class="st10"/>
37
- </g>
38
- <g id="cred" class="st7">
39
- <path d="M286.3 30.3v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-4.4 46.3c0 .2 0 .3-.1.4 0 .1-.1.2-.1.3-.1.1-.1.2-.2.3-.1.1-.1.2-.2.3l-.3.3c-.1.1-.2.2-.4.3h-.1c-.1.1-.3.2-.5.3-.2.1-.4.3-.6.4-.1.1-.3.1-.4.2l-.1.1c-.1.1-.2.1-.3.1h-.2c-.3.1-.5.2-.8.3h-.1l-.9.3h-.1c-.3.1-.7.2-1.1.3h-.1c-.4.1-.7.2-1.1.2h-.2c-.3.1-.6.1-1 .1h-.2c-.3 0-.7.1-1 .1h-.2c-.4 0-.8.1-1.2.1h-3.7c-.2 0-.4 0-.6-.1h-.3c-.3 0-.5-.1-.8-.1h-.1c-.2 0-.4-.1-.7-.1h-.2c-.3 0-.5-.1-.8-.1-.3 0-.5-.1-.8-.2h-.2c-.3-.1-.6-.1-.8-.2h-.2l-.9-.3h-.1c-.1 0-.2-.1-.4-.1l-.2-.1c-.1 0-.2-.1-.3-.1l-.1-.1h-.1l-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.1-.1-.1-.1-.1-.1-.2.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.2-.1-.1-.1-.2v-.1l-.1-.2V76l-.1-7.8v.8l.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1c.1 0 .2.1.3.1l.2.1c.1 0 .2.1.4.1l.2.1.9.3h.1c.3.1.5.1.8.2h.2c.3.1.5.1.8.2h.1c.3 0 .5.1.8.1h.2c.2 0 .4.1.7.1h.2c.3 0 .5.1.8.1h.2c.2 0 .4 0 .7.1h3.5c.4 0 .8 0 1.2-.1h.2c.3 0 .7-.1 1-.1h.2c.3 0 .7-.1 1-.1h.1c.4-.1.8-.1 1.2-.2h.1c.4-.1.7-.2 1.1-.3h.1l.9-.3h.1c.3-.1.5-.2.8-.3l.1-.1c.1 0 .2-.1.3-.1l.2-.1c.1-.1.3-.1.4-.2.2-.1.5-.3.7-.4.2-.1.3-.2.5-.3l.1-.1c.1-.1.3-.2.4-.3l.3-.3.1-.1c.1-.1.2-.2.2-.3.1-.1.1-.2.2-.3v-.1c0-.1.1-.2.1-.3 0-.1 0-.2.1-.4v-.2l.1 7.8-.1.6zm0-11.2c0 .2 0 .3-.1.4 0 .1-.1.2-.1.3-.1.1-.1.2-.2.3-.1.1-.1.2-.2.3l-.3.3c-.1.1-.2.2-.4.3h-.1c-.1.1-.3.2-.5.3-.2.1-.4.3-.6.4-.1.1-.3.1-.4.2l-.1.1c-.1.1-.2.1-.3.1h-.2c-.3.1-.5.2-.8.3h-.1l-.9.3h-.1c-.3.1-.7.2-1.1.3h-.1c-.4.1-.7.2-1.1.2h-.2c-.3.1-.6.1-1 .1h-.2c-.3 0-.7.1-1 .1h-.2c-.4 0-.8.1-1.2.1h-3.7c-.2 0-.4 0-.6-.1h-.2c-.3 0-.5-.1-.8-.1h-.1c-.2 0-.4-.1-.7-.1h-.2c-.3 0-.5-.1-.8-.1-.3 0-.5-.1-.8-.2h-.2c-.3-.1-.6-.1-.8-.2h-.2l-.9-.3h-.1c-.1 0-.2-.1-.4-.1l-.2-.1c-.1 0-.2-.1-.3-.1l-.1-.1h-.1l-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.2-.1-.1-.1-.2v-.1l-.1-.2v-.7L255 57v.8l.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1c.1 0 .2.1.3.1l.2.1c.1 0 .2.1.4.1l.2.1.9.3h.1c.3.1.5.1.8.2h.2c.3.1.5.1.8.2h.1c.3 0 .5.1.8.1h.2c.2 0 .4.1.7.1h.2c.3 0 .5.1.8.1h.2c.2 0 .4 0 .7.1h3.5c.4 0 .8 0 1.2-.1h.2c.3 0 .7-.1 1-.1h.2c.3 0 .7-.1 1-.1h.1c.4-.1.8-.1 1.2-.2h.1c.4-.1.7-.2 1.1-.3h.1l.9-.3h.1c.3-.1.5-.2.8-.3l.1-.1c.1 0 .2-.1.3-.1l.2-.1c.1-.1.3-.1.4-.2.2-.1.5-.3.7-.4.2-.1.3-.2.5-.3l.1-.1c.1-.1.3-.2.4-.3l.3-.3.1-.1c.1-.1.2-.2.2-.3.1-.1.1-.2.2-.3v-.1c0-.1.1-.2.1-.3 0-.1 0-.2.1-.4V57l.1 7.8-.1.6zm0-11.2c0 .2 0 .3-.1.4 0 .1-.1.2-.1.3-.1.1-.1.2-.2.3-.1.1-.1.2-.2.3l-.3.3c-.1.1-.2.2-.4.3h-.1c-.1.1-.3.2-.5.3-.2.1-.4.3-.6.4-.1.1-.3.1-.4.2l-.1.1c-.1.1-.2.1-.3.1h-.2c-.3.1-.5.2-.8.3h-.1l-.9.3h-.1c-.3.1-.7.2-1.1.3h-.1c-.4.1-.7.2-1.1.2h-.2c-.3.1-.6.1-1 .1h-.2c-.3 0-.7.1-1 .1h-.2c-.4 0-.8.1-1.2.1h-3.6c-.2 0-.4 0-.6-.1h-.2c-.3 0-.5-.1-.8-.1h-.1c-.2 0-.4-.1-.7-.1h-.2c-.3 0-.5-.1-.8-.1-.3 0-.5-.1-.8-.2h-.2c-.3-.1-.6-.1-.8-.2h-.2l-.9-.3h-.1c-.1 0-.2-.1-.4-.1l-.2-.1c-.1 0-.2-.1-.3-.1l-.1-.1h-.1l-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.2-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.2-.1-.1-.1-.2v-.1l-.1-.2v-.7l-.1-6.8v-1.1.5c.6-2.8 6.3-4.9 13.3-4.8 7 .1 12.8 2.4 13.4 5.2v-.5l.1 7.8-.2.5z" class="st10"/>
40
- </g>
41
- <g id="layout" class="st7">
42
- <path d="M286 30.2v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-29.3 52h-11V55h11v27.2zm33.3 0h-30.5V55H290v27.2zm0-30h-44.3V40.5H290v11.7z" class="st10"/>
43
- </g>
44
- <g id="module" class="st7">
45
- <path d="M286 30.3v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-19.9 53.5l-18.4-10.6V53.9l18.4 10.9v19zM288 73.2l-18.3 10.6V65.2l18.3-11v19zm0-23.2l-19.7 11.8-20.3-12 19.8-11.5L288 50z" class="st10"/>
46
- </g>
47
- <g id="Packager" class="st7">
48
- <path d="M254.4 69.6h8.3v7.3h10.8v-7.3h8.3l-13.6-11z" class="st10"/>
49
- <path d="M286.7 30.5V18.2h-12.3v12.3H262V18.2h-12.3v12.3h-12.3v61.7H299V30.5h-12.3zm1.9 49.5c.1 1.2-.9 2.3-2.2 2.3h-36.7c-1.2 0-2.3-1-2.3-2.3V53.9l7.9-7.9h25.3l7.9 7.9.1 26.1z" class="st10"/>
50
- <path d="M256.8 49.9l-3.5 3.5h29.8l-3.4-3.5z" class="st10"/>
51
- </g>
52
- <g id="Toolset_refsite" class="st7">
53
- <path d="M287.1 29.6V17.1h-12.5v12.5h-12.5V17.1h-12.5v12.5H237v62.7h62.7V29.6h-12.6zm-17.4 55.5l-10.9-14.3h5.4v-6.1h10.9v6.1h5.3l-10.7 14.3zm5.4-24.4v2.7h-10.9v-2.7h10.9zm-10.8-1.4v-2.7h10.9v2.7h-10.9zm28.4 17.4c0 1.4-1.2 2.6-2.6 2.6h-7.8v-3h7.5V46.6h-41.6v29.7h8.4v3h-8.8c-1.4 0-2.6-1.2-2.6-2.6V43.3c0-1.4 1.2-2.6 2.6-2.6h42.4c1.4 0 2.6 1.2 2.6 2.6v33.4z" class="st10"/>
54
- <path d="M277.8 42.5h11.9v2.2h-11.9zm-29.7 0h2.4v2.2h-2.4z" class="st10"/>
55
- </g>
56
- <g id="Toolset_support" class="st7">
57
- <path d="M286.9 28.5V16h-12.5v12.5h-12.5V16h-12.5v12.5h-12.5v62.6h62.6V28.5h-12.6zm1.3 38.1c-.2.2-.5.6-.5.9-.6 4.4-2.5 8.2-5.8 11.2-1.6 1.5-3.5 2.3-5.7 2-.8-.1-1.3.1-1.7.9-1.9 3-7.2 3-9.2 0-1.4-2.1-.6-4.7 1.9-5.9 2.8-1.4 6-.5 7.7 2.2.1.2.4.3.6.3h2.4c.3 0 .6-.1.8-.2 3.6-2.3 5.5-5.7 6.4-9.9h-.7c-1.5 0-2.2-.6-2.2-2.2V54.7c0-1 .2-1.9 1.2-2.4-1.5-4.5-6.8-10.5-15-10.6-7.4-.1-13.3 4.8-15.5 10.6 1.2.5 1.3 1.5 1.3 2.6v10.9c0 1.7-.8 2.4-2.5 2.3-3.1-.3-5.5-2.5-6.1-5.9-.6-3.5 0-6.6 3.1-8.9.2-.2.4-.6.5-.9 2-5.6 5.5-9.8 10.9-12.4 8.6-4 18.8-1.2 24.3 6.5 1.3 1.9 2.4 3.9 3.1 6.1.1.3.3.6.6.8 3.8 3 4 10 .1 13.2z" class="st10"/>
58
- </g>
59
- <g id="Types_logo" class="st7">
60
- <path d="M286.9 28.9V16.3h-12.5v12.5h-12.5V16.3h-12.5v12.5h-12.5v62.6h62.6V28.9h-12.6zm-42.8 20.6c0-.6.4-1.2.6-1.4.2-.2.9-.4 1.6-.4h1.3c.9 0 1.5.1 1.8-.1.3-.2.5-.6.7-1.4l.2-.9c.2-.6.4-1.2.7-1.3.3-.2.9-.4 1.8-.4h7.6c.8 0 1.3.3 1.5.4.2.2.4.7.6 1.3l.2 1c.2.8.4 1.1.7 1.3.3.2 1.1.1 2.4.1h14.3c1 0 1.4.8 1.4 1.9v2.3h-23.9c-1.5 0-2.4-.1-2.8.2-.4.2-1.1.9-1.8 2.1l-9.1 17.2V49.5zm49.1 7.1l-9.1 18.2h-36.9l9.4-18.3c.3-.6.6-1.1.9-1.2.3-.2.9-.3 1.7-.3h33.3c.8 0 1.2.2 1.3.5-.1 0-.3.4-.6 1.1z" class="st10"/>
61
- </g>
62
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/types/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/types/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/types/icon.svg DELETED
@@ -1,24 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g>
22
- <path fill="#FFD059" d="M286.9 28.9V16.3h-12.5v12.5h-12.5V16.3h-12.5v12.5h-12.5v62.6h62.6V28.9h-12.6zm-42.8 20.6c0-.6.4-1.2.6-1.4.2-.2.9-.4 1.6-.4h1.3c.9 0 1.5.1 1.8-.1.3-.2.5-.6.7-1.4l.2-.9c.2-.6.4-1.2.7-1.3.3-.2.9-.4 1.8-.4h7.6c.8 0 1.3.3 1.5.4.2.2.4.7.6 1.3l.2 1c.2.8.4 1.1.7 1.3.3.2 1.1.1 2.4.1h14.3c1 0 1.4.8 1.4 1.9v2.3h-23.9c-1.5 0-2.4-.1-2.8.2-.4.2-1.1.9-1.8 2.1l-9.1 17.2V49.5zm49.1 7.1l-9.1 18.2h-36.9l9.4-18.3c.3-.6.6-1.1.9-1.2.3-.2.9-.3 1.7-.3h33.3c.8 0 1.2.2 1.3.5-.1 0-.3.4-.6 1.1z"/>
23
- </g>
24
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/toolset/views/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/views/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/toolset/views/icon.svg DELETED
@@ -1,27 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 320 320">
2
- <defs>
3
- <path id="a" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
4
- </defs>
5
- <clipPath id="b">
6
- <use xlink:href="#a" overflow="visible"/>
7
- </clipPath>
8
- <g clip-path="url(#b)">
9
- <linearGradient id="c" gradientUnits="userSpaceOnUse" x1="160.009" y1="332.14" x2="160.009" y2="-6.196">
10
- <stop offset="0" stop-color="#d63900"/>
11
- <stop offset="1" stop-color="#f05a29"/>
12
- </linearGradient>
13
- <path fill="url(#c)" d="M-9.2-6.2h338.3v338.3H-9.2z"/>
14
- <g opacity=".3">
15
- <path fill="#F5944C" d="M-9.2 262.6c0-88.2 0-176.5-.1-264.7 0-3.5.7-4.2 4.2-4.2 91.8.1 183.5.1 275.3.1 1.1 2.1 2.1 4.3 3.2 6.4 8.2 15.5 14.6 31.6 20.2 48.2-1.4 1.5-3.8 3.1-5 4.7-8.3 10.8-18.2 20-27.5 29.9-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.6 2.9-13.1 6.2-20.2 7.7z"/>
16
- <path fill="#EF6E44" d="M293.8 51c-.1-.3-.1-2.5-.3-2.7-1.3 1.2-4 3.4-5.1 4.8-6.6 8.5-18.2 20-27.4 29.8-15.4 16.4-32.2 31.3-49.8 45.4-32.4 26-67.5 48-102.4 70.4-14.6 9.4-29.6 18.2-44.4 27.3-17.3 10.6-35.2 20.2-53.5 28.8-6.4 3-12.9 6.3-20 7.8 0 22.7.1 45.3-.1 68 0 .9.1 1.5.3 2h96.3c5.1-4 10.9-6.7 16.4-10 34.9-20.8 65.9-46.9 97.9-71.8 33.7-32.4 68.1-65 85.7-108.8 5.6-13.9 8.8-28.4 10.1-43.5 1.3-16.6-.5-31.5-3.7-47.5z"/>
17
- <path opacity=".6" fill="#FFD059" d="M329.2-6.2h-59c1.1 2.1 2.1 4.3 3.2 6.4 7.8 14.9 14.8 32.3 20.2 48.2 1.3-2 2.1-3.5 3.3-5 4-4.9 7.8-10 11.7-15 7.6-9.7 13.9-20.3 20.7-30.5"/>
18
- </g>
19
- </g>
20
- <path fill-rule="evenodd" clip-rule="evenodd" fill="#FFF" stroke="#FFF" stroke-miterlimit="10" d="M286.3 191.7c1 0 2-.1 3-.2.9-.1 1.7-.3 2.3-.5v4.4c-.6.3-1.5.6-2.8.7-1.2.2-2.3.3-3.3.3-7.4 0-11-3.9-11-11.6v-22.6H269v-2.8l5.5-2.4 2.4-8.1h3.3v8.8h11v4.5h-11v22.4c0 2.3.5 4.1 1.6 5.3 1.1 1.2 2.6 1.8 4.5 1.8m-35.6-29.9c-3.1 0-5.5 1-7.3 3-1.8 2-2.9 4.7-3.2 8.3h19.9c0-3.6-.8-6.4-2.4-8.4-1.6-1.9-3.9-2.9-7-2.9zm1.6 34.7c-5.6 0-10.1-1.7-13.3-5.1-3.3-3.4-4.9-8.2-4.9-14.3 0-6.1 1.5-11 4.5-14.6 3-3.6 7.1-5.4 12.2-5.4 4.8 0 8.5 1.6 11.3 4.7 2.8 3.1 4.2 7.3 4.2 12.4v3.6h-26.2c.1 4.5 1.2 7.9 3.4 10.2 2.1 2.3 5.2 3.5 9 3.5 4.1 0 8.1-.9 12.2-2.6v5.1c-2 .9-4 1.5-5.8 1.9-1.8.4-4 .6-6.6.6zm-21.6-11.1c0 3.5-1.3 6.3-4 8.2-2.6 1.9-6.3 2.9-11.1 2.9-5 0-9-.8-11.8-2.4v-5.3c1.8.9 3.8 1.7 5.9 2.2 2.1.5 4.1.8 6.1.8 3 0 5.3-.5 6.9-1.4 1.6-1 2.4-2.4 2.4-4.4 0-1.5-.6-2.8-1.9-3.8-1.3-1.1-3.8-2.3-7.5-3.7-3.5-1.3-6.1-2.5-7.6-3.5s-2.6-2.1-3.3-3.4c-.7-1.3-1.1-2.7-1.1-4.5 0-3.1 1.3-5.5 3.8-7.3 2.5-1.8 6-2.7 10.4-2.7 4.1 0 8.1.8 12 2.5l-2 4.7c-3.8-1.6-7.3-2.4-10.4-2.4-2.7 0-4.8.4-6.2 1.3-1.4.9-2.1 2-2.1 3.5 0 1 .3 1.9.8 2.6.5.7 1.4 1.4 2.5 2 1.2.6 3.4 1.6 6.7 2.8 4.5 1.6 7.6 3.3 9.2 5 1.5 1.7 2.3 3.8 2.3 6.3zm-33 10.4H192v-54h5.8v54zm-39.3-19.1c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-1.9 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-68.1 0c0 4.9 1 8.6 2.9 11.1s4.8 3.8 8.6 3.8 6.6-1.3 8.6-3.8 2.9-6.2 2.9-11.1c0-4.8-1-8.5-2.9-11-2-2.5-4.8-3.8-8.7-3.8-3.8 0-6.6 1.2-8.5 3.7-2 2.5-2.9 6.2-2.9 11.1zm29 0c0 6.2-1.6 11.1-4.7 14.5-3.1 3.5-7.4 5.2-13 5.2-3.4 0-6.4-.8-9.1-2.4-2.6-1.6-4.7-3.9-6.1-6.9-1.4-3-2.2-6.5-2.2-10.5 0-6.2 1.6-11 4.7-14.5s7.4-5.2 12.9-5.2c5.3 0 9.6 1.8 12.7 5.3 3.2 3.7 4.8 8.5 4.8 14.5zm-50.2 19.1h-5.9v-45.5H84V145h30.2v5.2H98.1v45.6zm-14.7-.5H28.5v-50.6h9.1v-9.1h15.9v9.1h7.4v-9.1h15.9V150h-5.1v-9.3H66v9.1H48.4v-9.1h-5.7v9.1h-9.1v40.4h49.8v5.1z"/>
21
- <g>
22
- <g fill="#FFD059">
23
- <path d="M286 30.3v-12h-12v12h-12v-12h-12v12h-12v60h60v-60h-12zm-39.3 30.2s19.4-26.3 43.2 0c-.1 0-19.4 27-43.2 0z"/>
24
- <path d="M268.2 52.5c-4.5 0-8.1 3.6-8.1 8.1s3.6 8.1 8.1 8.1 8.1-3.6 8.1-8.1c.1-4.5-3.6-8.1-8.1-8.1zm0 13.5c-3 0-5.4-2.4-5.4-5.4 0-3 2.4-5.4 5.4-5.4 3 0 5.4 2.4 5.4 5.4 0 3-2.4 5.4-5.4 5.4z"/>
25
- </g>
26
- </g>
27
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/acfml/icon-128.x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/acfml/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/acfml/icon.svg DELETED
@@ -1,43 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#29a8e0}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.1" y2="161.1" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".29" stop-color="#3389a1" stop-opacity=".82"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".69"/>
18
- <stop offset=".72" stop-color="#2f96bb" stop-opacity=".57"/>
19
- <stop offset=".91" stop-color="#2ba1d2" stop-opacity=".45"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g>
24
- <g id="earth" class="st2">
25
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
26
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zM163.8 318.1l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zM91.3 78.1L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zM125.7 172.4c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zM66.3 181.3l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zM113.7 176.2l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zM51.5 227.9c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8a56.8 56.8 0 0 1-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zM142 300.2l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zM135.7 320.1l9.9-15.2-37.4 15.2zM212.4 250.1l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zM18.9 100.2c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zM163.5 320.1l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1M124.8 179.1c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zM191.6 185.3l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zM140.3 121.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4a6.69 6.69 0 0 1-3.2-5.1zM84.7 120.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zM225.2 320.1l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
27
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5a6.33 6.33 0 0 0 4.6-8.9c-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9a6.2 6.2 0 0 0-7.6-1.8c-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47a6.5 6.5 0 0 0 4.6 7.8c.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7a6.55 6.55 0 0 0-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1a7.3 7.3 0 0 0-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
28
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zM53.8 167.6c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zM59 252.5c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
29
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
30
- </g>
31
- </g>
32
- </g>
33
- </g>
34
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1a1 1 0 0 0-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7a1 1 0 0 0-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3a1 1 0 0 1-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5a3 3 0 0 0 1.4-1.1c.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8l4.2 15c.3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4a1 1 0 0 1-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5a3 3 0 0 0 1.4-1.1c.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236a1 1 0 0 1 0-2c.5 0 1-.1 1.7-.2 1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
35
- </g>
36
- <g class="st0">
37
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
38
- </g>
39
- <g id="ACF">
40
- <path d="M227.9 65.5c.7-1.9 1.3-3.7 1.9-5.5 3.1-8.8 6.3-17.6 9.4-26.4.1-.6.6-1 1.2-.9h6.4c.4-.1.9.2 1 .7 3.5 9.7 6.9 19.4 10.4 29.1.3.9.6 1.9.9 2.9h-6.8c-.3 0-.7-.4-.8-.7l-1.2-3.3c-.1-.4-.5-.8-.9-.7h-11.7c-.5-.1-1 .3-1.1.8-.4 1.2-.8 2.4-1.2 3.5-.1.2-.3.4-.6.5h-6.9zm19.8-11.6l-4.1-11.3h-.2l-4 11.3h8.3zM279.1 36.2c-3.3-2.7-7.6-3.9-11.9-3.4-5.3.6-9.3 3.3-12.2 7.8a3.9 3.9 0 0 0-.3 3.9c2.2 6 4.4 12 6.5 18.1.2.6.6 1.1 1.2 1.4 2.8 1.3 6 1.7 9.1 1.2 4.8-.7 9-3.5 11.4-7.6-1.4-1.4-2.8-2.7-4.2-4.1-.3-.3-.5-.7-.7-1.1-2.8 5.9-8.2 6.9-11.6 5.9a9.6 9.6 0 0 1-6.7-11.8 9.6 9.6 0 0 1 18.2-1l4.9-5.1c.1 0-2.5-3.4-3.7-4.2z" class="st4"/>
41
- <path d="M283 54.1c-.3-.3-.5-.8-.5-1.2 0-2.2-.1-4.4 0-6.6 0-.5.3-1 .6-1.4l3-3c.5-.4.7-1.1.3-1.6 0 0 0-.1-.1-.1l-3.8-5c-.1-.8-.1-1.7 0-2.5h21.8v6.6h-15.1v7.4h14.5v6.7h-14.6v11.8h-6.7c-.2 0 0-1.6 0-1.7.2-.7 4.3-5.6 4.2-5.7l-3.6-3.7z" class="st4"/>
42
- </g>
43
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/bpml/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/bpml/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/bpml/icon.svg DELETED
@@ -1,40 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#f2bd2e}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M280.7 21.3c4.6.8 8.7 4.4 10.3 9.1.4 1.3.5 1.8.6 3.8.1 1.9 0 2.5-.3 3.7-1 4.2-3.9 7.7-7.9 9.4-1.1.5-2.3.8-2.3.7l.6-1.2c4.1-8.1.9-18-7.2-22.1-.8-.4-1.5-.7-2.4-1-.5-.2-1.1-.3-1.2-.4-.4-.1 1.3-.9 3-1.5 2.2-.8 4.5-.9 6.8-.5z" class="st4"/>
38
- <path d="M270.3 26.1c5.2 1.3 9.1 5.6 10.1 10.8.3 2.1.2 4.2-.3 6.2-1.1 3.8-3.9 6.9-7.5 8.5-1.8.8-3.7 1.3-5.7 1.2-6 0-11-3.7-13-9.5-.5-1.4-.5-1.8-.5-3.9 0-2 .1-2.6.4-3.7 1.5-5.1 5.7-9 11-9.9 1.8-.1 3.7 0 5.5.3zm21.2 23.3c5.1 1.6 8.2 5.5 9.6 12 .4 1.7.8 6.6.6 7-.1.2-.5.3-3.1.3-1 0-2 0-3-.1-.2-1.8-.5-3.6-1-5.3-1.7-5.7-5.3-9.9-9.6-11.2-.4-.1-.7-.3-.7-.4.4-.5.8-1.1 1.2-1.5l1.2-1.4 1.8.1c1 .1 2 .2 3 .5z" class="st4"/>
39
- <path d="M262.7 58l4.4 4.3 1.6-1.5c.9-.8 3.1-3 5-4.8l3.4-3.3 1.3.2c3.5.4 6.7 1.9 9.3 4.3 2.9 2.7 4.5 6.1 5.2 10.7.3 1.7.4 6.7.2 7.7l-.1.5h-26c-18.2 0-25.7-.1-25.8-.2-.2-.4-.3-5-.1-6.9 1-9.5 6.2-15.2 14.7-16.1 1.6-.3.9-.8 6.9 5.1z" class="st4"/>
40
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/gfml/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/gfml/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/gfml/icon.svg DELETED
@@ -1,39 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#29a8e0}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M300.1 51.6v10.5c0 4-1.7 7.3-5.1 9.3-6.3 3.8-12.8 7.5-19.3 11.1-3.5 1.9-7.2 1.9-10.6-.1-6.4-3.6-12.7-7.2-18.9-10.9-3.4-2-5.2-5.2-5.2-9.3-.1-7.2 0-14.3 0-21.5 0-4.1 1.8-7.3 5.3-9.4 6.3-3.7 12.6-7.4 18.9-10.9 3.5-2 7.2-2 10.6-.1 6.5 3.6 12.9 7.3 19.3 11.1 3.3 2 5 5.2 5.1 9.1 0 3.8-.1 7.5-.1 11.1zm-56.1-.2v10.7c-.1 2.9 1.5 5.6 4.1 7 6.1 3.5 12.1 7.1 18.2 10.5 2.5 1.5 5.6 1.5 8.1 0 6.2-3.5 12.3-7 18.4-10.6 2.5-1.4 4.1-4 4-6.9.1-7.1.1-14.2 0-21.3.1-2.9-1.5-5.6-4.1-7-6-3.5-12-6.9-18.1-10.4-2.8-1.6-5.7-1.7-8.5-.1-6 3.4-12.1 6.9-18.1 10.4-2.8 1.6-4.2 4-4.2 7.2.2 3.6.2 7 .2 10.5z" class="st4"/>
38
- <path d="M289.8 39.1V46h-26.7c-4.3 0-4.9 1.2-6.2 3.8-.9 1.9-.7 3.8-.8 6h26.7v-3.4h6.9v10.2h-40c-.5-7.1-.6-14 4.4-19.9 2.3-2.7 5.4-3.7 8.7-3.7 8.8-.1 17.6 0 26.4 0 .1-.1.4 0 .6.1z" class="st4"/>
39
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wcml/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wcml/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wcml/icon.svg DELETED
@@ -1,38 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#29a8e0}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M257.3 61.2H291c3.8 0 6.9-3.1 7-7V38.9s0-.1-.1-.1l-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1c-.1-.1-.1 0-.1-.1h-.1s-.1 0-.1-.1l-.2-.1h-.6L253.4 32v-6.7s0-.1-.1-.1v-.1s0-.1-.1-.1v-.2s0-.1-.1-.1l-.1-.1-.1-.1h-.1s-.1 0-.1-.1c0 0-.1 0-.1-.1-.1 0-.1-.1-.2-.1l-9.3-3.9c-.9-.4-1.9 0-2.2.9-.4.9 0 1.9.9 2.2l8.2 3.5v37.3c0 3.5 2.6 6.4 6.1 6.9-2 3.3-.9 7.5 2.4 9.4 3.3 2 7.5.9 9.4-2.4.6-1.1 1-2.3 1-3.5 0-1.2-.3-2.4-.9-3.5h15.3c-.6 1-.9 2.2-.9 3.5 0 3.8 3.1 6.9 6.9 6.9 3.8 0 6.9-3.1 6.9-6.9s-3.1-6.9-6.9-6.9h-32.1c-2 0-3.6-1.6-3.6-3.6v-4.6c1.2 1.4 2.4 1.7 3.7 1.7zm8.4 14.1c0 1.9-1.6 3.5-3.5 3.5s-3.5-1.6-3.5-3.5 1.6-3.5 3.5-3.5c2 0 3.5 1.6 3.5 3.5zm27.2 0c0 1.9-1.6 3.5-3.5 3.5s-3.5-1.6-3.5-3.5 1.6-3.5 3.5-3.5 3.5 1.6 3.5 3.5zM291 57.8h-33.8c-2 0-3.6-1.6-3.6-3.6V35.9l40.9 5.6v12.7c.1 2-1.5 3.6-3.5 3.6z" class="st5"/>
38
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-all-import/icon-128.x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-all-import/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-all-import/icon.svg DELETED
@@ -1,39 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#29a8e0}.st7{fill:#fff;stroke:#fff;stroke-miterlimit:10}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M296.4 46.8c-.9 0-1.6.7-1.6 1.6v14.9c0 4-3.3 7.3-7.3 7.3h-35.8c-4 0-7.3-3.3-7.3-7.3V48.2c0-.9-.7-1.6-1.6-1.6-.9 0-1.6.7-1.6 1.6v15.1c0 5.8 4.7 10.6 10.6 10.6h35.8c5.8 0 10.6-4.7 10.6-10.6V48.5c-.2-.9-.9-1.7-1.8-1.7z" class="st7"/>
38
- <path d="M268.3 60.9c.3.3.7.5 1.1.5.4 0 .8-.2 1.1-.5L281 50.6c.6-.6.6-1.7 0-2.3-.6-.6-1.7-.6-2.3 0l-7.6 7.6V22.7c0-.9-.7-1.6-1.6-1.6-.9 0-1.6.7-1.6 1.6v33.1l-7.6-7.6c-.6-.6-1.7-.7-2.3 0-.6.6-.7 1.7 0 2.3l10.3 10.4z" class="st7"/>
39
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-cms-nav/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-cms-nav/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-cms-nav/icon.svg DELETED
@@ -1,38 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#29a8e0}.st7{fill:none;stroke:#fff;stroke-width:5;stroke-linecap:round;stroke-miterlimit:10}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M275.4 27.4L299 51l-23.6 23.6m-16.8-47.2L235 51l23.6 23.6" class="st7"/>
38
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-core/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-core/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-core/icon.svg DELETED
@@ -1,34 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M78.9 202.2c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1V169c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.2-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H188c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.3c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H163c.6 0 1 .5 1 1l.2.9zM294 179.1l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zM255.8 192H238c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L213 153.7h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-media/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-media/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-media/icon.svg DELETED
@@ -1,39 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#29a8e0}.st7{fill:#fff;stroke:#fff;stroke-miterlimit:10}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M246.1 70.2c0 3 2.4 5.4 5.4 5.4h40.2c3 0 5.4-2.4 5.4-5.4V29.9c0-3-2.4-5.4-5.4-5.4h-40.2c-3 0-5.4 2.4-5.4 5.4v40.3zm45.6 2.8h-40.2c-1.6 0-2.8-1.3-2.8-2.8v-6.7l9.7-9.7 8.3 8.3c.5.5 1.3.5 1.8 0l14.9-14.9 11.2 11.2v11.8c0 1.5-1.3 2.8-2.9 2.8zm-40.2-45.9h40.2c1.6 0 2.8 1.3 2.8 2.8v24.8l-10.3-10.3c-.5-.5-1.3-.5-1.8 0l-14.9 14.9-8.3-8.3c-.5-.5-1.3-.5-1.8 0l-8.8 8.8V29.9c.1-1.5 1.4-2.8 2.9-2.8z" class="st7"/>
38
- <path d="M261.9 45c3.6 0 6.5-2.9 6.5-6.5s-2.9-6.5-6.5-6.5-6.5 2.9-6.5 6.5c.1 3.6 3 6.5 6.5 6.5zm0-10.4c2.2 0 3.9 1.8 3.9 3.9 0 2.2-1.8 3.9-3.9 3.9-2.2 0-3.9-1.8-3.9-3.9 0-2.2 1.8-3.9 3.9-3.9z" class="st7"/>
39
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-sl/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-sl/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-sl/icon.svg DELETED
@@ -1,39 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#f2bd2e}.st7{fill:#fff;stroke:#fff;stroke-width:.5;stroke-miterlimit:10}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M298.3 22c-5.8-5.8-15.2-5.8-21.1 0l-10.5 10.5c-.9.9-.9 2.3 0 3.2.9.9 2.3.9 3.2 0l10.5-10.5c4-4 10.6-4 14.6 0s4 10.6 0 14.6l-13.8 13.8c-4 4-10.6 4-14.6 0-.9-.9-2.3-.9-3.2 0-.9.9-.9 2.3 0 3.2 5.8 5.8 15.2 5.8 21.1 0L298.3 43c5.8-5.8 5.8-15.2 0-21z" class="st7"/>
38
- <path d="M270.8 64.1l-8.9 8.9c-4 4-10.6 4-14.6 0s-4-10.6 0-14.6l13-13c4-4 10.5-4 14.6 0 .9.9 2.3.9 3.2 0 .9-.9.9-2.3 0-3.2-5.8-5.8-15.2-5.8-21.1 0l-13 13c-5.8 5.8-5.8 15.2 0 21.1s15.2 5.8 21.1 0l8.9-8.9c.9-.9.9-2.3 0-3.2-.9-1-2.3-1-3.2-.1z" class="st7"/>
39
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-st/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-st/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-st/icon.svg DELETED
@@ -1,39 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#f2bd2e}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M259.5 63.9c1.1.5 2.4-.1 2.8-1.2l2.9-6.9H276l2.9 6.9c.4 1.1 1.7 1.7 2.8 1.2 1.1-.4 1.7-1.7 1.2-2.8 0 0 0-.1-.1-.1l-3.5-8.2-6.9-16.2c-.3-.8-1.1-1.3-2-1.3-.9 0-1.6.5-2 1.3l-6.7 16.2-3.4 8.2c-.4 1.1.1 2.4 1.2 2.9zm11-20.9l3.6 8.5H267l3.5-8.5z" class="st5"/>
38
- <path d="M270.6 17.9c-1.2 0-2.2 1-2.1 2.2s1 2.2 2.2 2.1c7.3-.1 14.3 2.8 19.4 8 5 5 7.7 11.9 7.5 18.9-.2 8.9-4.3 16.9-11.3 21.9l-.2.2-.3.2c-.1.1-.2.1-.3.2l-20.3 13.9v-8.2c0-1-.7-1.8-1.6-2.1-14.4-3.8-22.9-18.6-19.1-32.9 1.8-6.7 6.1-12.5 12.1-16.1 1-.6 1.3-1.9.7-3s-1.9-1.3-3-.7c-14.7 8.9-19.4 28.1-10.5 42.9 3.9 6.4 9.9 11.2 17 13.5v10.7c0 1.2 1 2.2 2.2 2.2.4 0 .9-.1 1.2-.4l23.6-16.2c.1-.1.2-.1.3-.2l.6-.4.3-.3c7.9-5.8 12.6-15 12.8-25.1.2-8.2-3-16.2-8.7-22-5.9-6.1-14-9.4-22.5-9.3z" class="st5"/>
39
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/icons/plugin-icons/wpml/wpml-tm/icon-128x128.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-tm/icon-256x256.png DELETED
Binary file
vendor/otgs/icons/plugin-icons/wpml/wpml-tm/icon.svg DELETED
@@ -1,39 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="icon" viewBox="0 0 320 320">
2
- <style>
3
- .st0{clip-path:url(#SVGID_2_)}.st1{fill:url(#bg_2_)}.st2{opacity:.15}.st3{fill:none}.st4,.st5{fill:#fff}.st5{stroke:#fff;stroke-width:.75;stroke-miterlimit:10}.st6{fill:#f2bd2e}.st7{fill:#fff;stroke:#fff;stroke-miterlimit:10}
4
- </style>
5
- <defs>
6
- <path id="SVGID_1_" d="M312.5 317.5H7.5c-2.8 0-5-2.2-5-5V7.5c0-2.8 2.2-5 5-5h305c2.8 0 5 2.2 5 5v305c0 2.8-2.2 5-5 5z"/>
7
- </defs>
8
- <clipPath id="SVGID_2_">
9
- <use overflow="visible" xlink:href="#SVGID_1_"/>
10
- </clipPath>
11
- <g class="st0">
12
- <g id="bg_1_">
13
- <g id="mask">
14
- <linearGradient id="bg_2_" x1="321" x2="-1" y1="161.097" y2="161.097" gradientTransform="matrix(1 0 0 -1 0 321)" gradientUnits="userSpaceOnUse">
15
- <stop offset="0" stop-color="#33879e"/>
16
- <stop offset=".295" stop-color="#3389a1" stop-opacity=".823"/>
17
- <stop offset=".52" stop-color="#318dab" stop-opacity=".688"/>
18
- <stop offset=".722" stop-color="#2f96bb" stop-opacity=".567"/>
19
- <stop offset=".909" stop-color="#2ba1d2" stop-opacity=".455"/>
20
- <stop offset="1" stop-color="#29a8e0" stop-opacity=".4"/>
21
- </linearGradient>
22
- <path id="bg" d="M-1-.3h322v320.5H-1V-.3z" class="st1"/>
23
- <g id="earth" class="st2">
24
- <path d="M18 299.1c-9.1 10.7-9.1 10.7 3.7 20.9v.1h84.5l39.6-16.1-73.4-52.6c0 .6-.3 1.5-1 2.7.3.9 1 1.7 1.1 2.7 0 .2-.1.5-.2.6-.7 1.2-1.7 2.2-2.4 3.4-.3.5-.2 1.1-.5 1.7-.1.1-.1.2-.2.2-1.1 1.1-2.2 1-3.7.8-.7-.1-1.9-.2-2.8.1.3 0 .7 0 1.1.3.4.3.6.8.9 1.5.5 1.4.4 3.1-.8 3.3-1.3.2-4.3-3.5-4.6-4.6v-.1c-.5-1.6.3-2.9 1-4.1.6-1.1.8-1.8.3-3.6-.4-1.5-1.2-3.1-1.6-3.9-.5-1-.9-1.6-.9-2 0-.1.1-.2.1-.4.4-.2.9-.2 3.7 1.1 2.7 1.1 9 3.8 9.6 2.9-.2-.7-.7-2.8.2-3.3L57 240.4c.7.7 1.4 1.3 2 2 1.1 1.2.9 1.8.9 2-.2.8-.8.4-1.9-.2-.7-.4-.9-.3-1.1 0-.3.7.3 1.4 0 2-1.6-1.2-5.4-7.3-8.2-11.9l-3.3-2.4-.2-.1-2.4 1.7c.7 1.6 1.4 3.2 1.6 4.7.4 1.9 1.9 10.9-.8 21.9-.2 1.1-.6 2.3-1 3.4-1.5 4.7-7.8 2.2-9.6 6.4-.7 1.6-1 3.3-1.1 5.1-.2 2-.3 4.2-.9 6.1l5.5 10.7c2.5 2 4.9 4.2 5.5 7.8.2 1.3.3 2.3.1 3-.6 1.9-2.8 2.8-8 5-2.8-4.2-1.6-10.2-5.9-13.7-.7.1-1.5.2-2.2.4-.1 0-.2 0-.2.1-3-2-1.5-7.3-5.9-8.3-1.5-.3-1.5-.3-8.5 5.1l-1.1-.6c-.5-2.4-.3-4.9-.6-7.3l-.3 13.1c2.9-.4 7.1-.7 8.6 2.7zm31.1 7.8c1.4-2.4 1.9-3.3 3.8-5.9 2-2.7 5.6-1.6 8-3.3 3.4-2.4-.7-6.1 1.5-8.6 3.3 1.6 3.3 1.6 4.2-.2 0-.1 2.1-4.7-.5-11.4-1-2.4-1.5-3.9-1.8-5.1-.3-1.4-.2-2.2.2-3.3 2.2-1.1 4.1.6 5.6 2.8 2.2 3.3 3.5 7.9 3.5 8 1.9 10.4 2.6 14.5 2.8 16.2.1 1.1 0 1.2-.2 1.4-.1 0-.2 0-.2-.1-.5-.2-.9-.4-1.6-1.2-.6 1.1-.4 2.7-1.7 3.4-1.6 1-4 .5-5 2.5-.7 1.5-.7 3.3-2 4.5-.1.1-1.2.7-2.3-.3-1.2-1.1-1.1-5.2-3.1-3.9-.2 1.7 1.1 2.9 1.4 4.6-1.3 1.4-3.2 2.1-4 3.9-5.2-1.1-.8-4.9.6-6.1-6.1 2-6.7 2.8-6.9 3.3 1 2.5 3 4.5 4 7.1.3 1 .3 2.5-.2 3.4-1.5 2.5-3.1 1.9-4.3.6-.8-.9-1.3-2-1.6-3.1l-1.1-2v.2c-.4-.4-.8-1-.9-2 0-1.3.3-2.8 1.8-5.4zm16.5-21.7c.2 0 .5.2.5.5s-.2.5-.3.6c-.5-.4-.6-.7-.2-1.1zM52.2 184.4c-1-2.1-1.9-4.2-2.7-6.4-1.1-2.9-2.3-5.8-3.4-8.6-3.2-7.9-6.7-15.7-12.3-22.1-.4.1-.9.2-1.2.2 1.9 3.2 3.7 4.2 4.4 4.7 1.3 5.6 1.3 5.6.5 7.2-2-.8-2.4-3.7-4.7-4.2-.9-.2-2.8 1.1-3.5 3.7-.8 2.9.1 7.2 6.2 12.5 0 .1-.7 2.4-3.2 5-6.4-2.9-6.4-2.9-7-2.8-.4.7-.6 1.8-.5 2.6-.2.2-.5.2-.7.4-10 5.3-10.1 5.4-10.3 6-1.3 3.7-1.2 7.3-.9 11l39.3-9.2z" class="st3"/>
25
- <path d="M62.8 263.8c-.1 0-.2.1-.2.1 0-.1.1-.1.2-.1zM18.1 103.7c.1 0 .2 0 .2.1l-.2-.2v.1zm145.7 214.4l-9.3-24.8c-1.2.3-2.4.3-3.6 0l-1.2 3.4-2.5 7.1 9.5 8.1 7.1 6.2zm-72.5-240L37 52.1l103.4 64.7zM84 121.3L43.8 67 33.6 53.2c-.3.3-.6.6-1.1.8l33.3 126.2L84 121.3zm41.7 51.1c.5 1 .7 2 .6 3.1l2.3.3 62.5 8.6-41-57.8c-.2.2-.5.2-.7.4-1.7.7-3.5.7-5.1.1L123 169.6c1.2.6 2.2 1.5 2.7 2.8zm-59.4 8.9l47.3-5.9c-.1-2.1.8-4.2 2.5-5.5l-31.5-47.7-18.3 59.1zm47.4-5.1l-47.2 5.9L149 282c.3-.2.7-.5 1.1-.7.2-.1.3-.2.5-.2l-29.3-100c-2.8.7-5.9-.7-7.2-3.5-.2-.4-.3-.9-.4-1.4zm-62.2 51.7c.2.2.4.5.6.7.1.4.2.6 0 1.2l95.3 54c.2-.4.6-.8 1-1.1L129.8 260l-61-74.1c.5.9 1 1.9 1.3 2.9-.2.3-.4.7-.6 1-.1.1-.1.2-.2.2 4.4 14.4 5.5 18.4 5.7 19.7.1.5 0 .7-.1.9-6.1-3-10.6-7.1-14.3-11.8-2.7-3.4-4.9-7.2-6.7-11L17.5 205c.7 1.6.6 3.3-.1 4.9.9.4 1.9.8 2.7 1.4.2-.3.6-.7.8-1l1.3 2.1c2.2-.6 2.9-3.8 5.9-3 1.9.6 3.2 1.8 4.3 3.1l.7-1.8c-.4-1.3-.8-2.6-1.3-3.8.7.3 1.2.7 2.3 1.6 2.2 1.9 6.6 6.5 17.4 19.4zM77 239.2c.2-.1.6 0 .7.5.1.5-.4 2.5-.8 2.3-.5-.2-.7-2.4.1-2.8zm65 61l4.6 3.3 3.7-10.3c-1.4-.6-2.5-1.7-3.3-3.2-.8-1.8-.7-3.8.1-5.4l-3-1.7L75.6 244v.1c.1.3-.1 1-.3 1.8-.4 1.1-1 2.3-1.4 3.4 0-.2-.1-.2-.1-.4-.3-1.6-.5-2.5-.3-3.4.2-1.3.9-1.6 1.2-1.7.2 0 .2-.1.4-.1l-23.2-13.1c-.6 3-.2 4.2 1.3 6l88.8 63.6zm-6.3 19.9l9.9-15.2-37.4 15.2zm76.7-70l-54.2 34.1c.1.1.2.2.2.4 1.5 3.2.1 6.9-3.1 8.4l9.6 25.6 48.7-67.3c-.5-.3-.9-.7-1.2-1.2zM9.1 296.9l.3-14.4c-.2 0-.6.1-.7.2-2.4 1.3-5.3 4.9-6.6 8.3l1.6 6.9c1 .5 2.4.7 4.2.7-.1-.3-.2-.8-.2-1.2.2-.1.7-.3 1.4-.5zm9.8-196.7c6.3 2.8 14.3 11.2 14.4 11.3.1.2-.1.5 0 .7-.3.1-.8.2-1.2.3l-.7.8c-.8-.1-2-.6-2.7-1-.1.8-.6 1.8-1.1 2.4-.8-.4-1.9-.8-2.7-1.1 3.3 4 8.8 6.1 10 11.8 12.8 5.1 13.7 6.9 15 9.5-4.1 3.1-2.1 6.7.2 10.4 1.8 2.8 3.8 5.5 3.7 8.4-1.4.1-2.8-.2-4.2-.1-.4 1.4 0 2.9-.6 4.2-.3-.1-.8-.1-1.1-.2l-.1.6c.7 5.5 3.5 9.5 7 13.1 3.3 3.3 7.2 6.3 10.2 9.8L31.7 54.5c-.7.3-1.5.5-2.2.5l-3.4 14.5-7.2 30.7zm34.9 67.4c-2-1-2.4-4.3-1.5-4.5.1 0 .3 0 .6.7.6 1.2 1.1 3.7 1.1 4 0-.1-.1-.2-.2-.2zm109.7 152.5l.7-.6-17.4-14.8-10.1 15.4zM17.3 103.5l.2-.7c-.8-.8-1.6-1.6-2.2-2.4.3-.2.7-.7 1.1-.9.6.1 1.2.2 1.8.5L22 83.3 28.7 55c-3.5-.3-6.1-3.4-5.8-6.9 0-.3.1-.6.2-1m101.7 132c-.6.7-1.3 1.3-2.2 1.7-.2.1-.3.2-.5.2l29.3 100c2.4-.6 5 .4 6.5 2.4l54.2-34.1c-.1-.1-.2-.2-.2-.4-.9-2-.7-4.3.4-6l-87.5-63.8zm66.8 6.2l-65.5-9.1c-.2.7-.4 1.5-.8 2.1l73.5 53.7 14 10.2c.6-.7 1.2-1.2 2-1.6l-23.2-55.3zM17 204.2l36.3-17.1c-.3-.7-.6-1.2-.9-1.9l-39.5 9.1c.2 2.4.6 4.7.6 7 1.6.5 2.8 1.5 3.5 2.9zm123.3-82.6H85.2l31.6 47.8.5-.2c1.7-.7 3.5-.7 5.1-.1l21.1-42.4c-1.1-.7-2-1.6-2.6-2.9-.3-.6-.5-1.4-.6-2.2zm-55.6-.8h55.7c.1-.9.3-1.8.7-2.6L34.8 51.7c-.2.3-.4.7-.6 1l18.3 24.6 32.2 43.5zm140.5 199.3l-7.4-67.4c-1.3.1-2.6-.3-3.7-1l-17.6 24.4-31.2 43.2 2 .8h57.9z" class="st3"/>
26
- <path d="M18.3 299c-1.5-3.4-5.7-3.1-8.4-2.4l.3-13.1c.2 2.4.1 4.9.6 7.3l1.1.6c7-5.5 7-5.5 8.5-5.1 4.5 1 2.9 6.3 5.9 8.3.1 0 .2 0 .2-.1.6-.2 1.5-.3 2.2-.4 4.3 3.5 3.2 9.5 5.9 13.7 5.2-2.2 7.4-3.1 8-5 .2-.8.2-1.7-.1-3-.7-3.5-3-5.7-5.5-7.8l-5.5-10.7c.5-2 .6-4.1.9-6.1.2-1.8.5-3.5 1.1-5.1 1.8-4.2 8.1-1.7 9.6-6.4.4-1.1.6-2.3 1-3.4 2.7-11 1.1-20.1.8-21.9-.3-1.6-.9-3.1-1.6-4.7l2.4-1.7.2.1 3.3 2.4c2.8 4.6 6.6 10.7 8.2 11.9.2-.7-.4-1.4 0-2 .2-.3.3-.4 1.1 0 1.1.6 1.7 1 1.9.2.1-.2.2-.8-.9-2-.6-.7-1.3-1.4-2-2L72.1 251c-.8.5-.4 2.5-.2 3.3.6-1.2.9-2.1 1-2.7l73.4 52.6-39.8 16.2h1.9l37.4-15.2-9.9 15.2h1l10.1-15.5 17.4 14.9-.6.6h3.9l-2-.8 31.2-43.2 17.6-24.4c1.1.7 2.4 1.1 3.7 1l7.4 67.4h.9l-7.4-67.5c3.4-.6 5.7-3.9 5.1-7.3-.1-.5-.3-1.1-.5-1.6-1.4-3-4.7-4.4-7.8-3.3l-23.2-55.6v-.1l-41.6-58.6c2.7-2.2 3.2-6.1 1.1-8.9-1.8-2.3-5-3.1-7.6-1.8-.8.4-1.5.9-2.1 1.6L91.7 77.5l-56.3-27c.4-1.5.3-3-.3-4.5 1.3-3.3-.3-7-3.5-8.3-3.2-1.3-6.9.3-8.2 3.5-.7 1.6-.6 3.5.1 5.1l-24-6.5v.7L23.1 47c-.8 3.4 1.2 6.9 4.6 7.8.3.1.6.1 1 .2L22 83.3l-3.9 16.6c-.7-.2-1.2-.4-1.8-.5-.3.2-.7.7-1.1.9.7.9 1.5 1.6 2.2 2.4l-.2.7c-10.8-2.3-13.6-2.8-17.8-1.7v-.1c.2 72.8.6 145.6.8 218.4m8.9-23.1c-.7.2-1.2.4-1.4.5.1.3.2.8.2 1.2-1.9.1-3.3-.2-4.2-.7L2.1 291c1.3-3.4 4.2-7 6.5-8.3.2-.1.5-.2.7-.2l-.2 14.4zm4.5-114.4c.4-.7.5-.8 10.3-6 .2-.2.5-.2.7-.4-.1-.8.1-2 .5-2.6.7-.1.7-.1 7 2.8 2.4-2.5 3.2-4.9 3.2-5-6.1-5.2-7-9.6-6.2-12.5.7-2.5 2.7-3.8 3.5-3.7 2.4.6 2.6 3.3 4.7 4.2.8-1.6.8-1.6-.5-7.2-.7-.4-2.5-1.5-4.4-4.7.4-.1.9-.2 1.2-.2 5.6 6.4 9.1 14.1 12.3 22.1 1.1 2.9 2.3 5.8 3.4 8.6.9 2.2 1.8 4.3 2.7 6.4l-39.3 9.1c-.3-3.6-.4-7.3.9-10.9zm.1 18.8c-.2-2.4-.4-4.7-.7-7l39.6-9.1c.3.7.6 1.3.9 1.9l-36.4 17.1c-.8-1.4-2-2.4-3.4-2.9zm32.5 30.2l.6-.5c.3.5.7 1.1 1 1.7l-1.6-1.2zM34 208.3c-1.1-.9-1.6-1.2-2.3-1.6.5 1.2.9 2.5 1.3 3.8l-.7 1.8c-1.1-1.4-2.4-2.6-4.3-3.1-2.9-.8-3.7 2.4-5.9 3l-1.3-2.1c-.2.3-.6.7-.8 1-.8-.6-1.7-1-2.7-1.4.6-1.5.7-3.3.1-4.9l36.3-17.1c2 3.9 4.1 7.7 6.7 11 3.7 4.8 8.3 8.9 14.4 11.9.1-.2.2-.4.1-.9-.2-1.4-1.4-5.3-5.7-19.7.1-.1.1-.2.2-.2.2-.3.4-.7.6-1-.3-1-.8-2-1.3-2.9l61 74.1 18.6 22.6c-.4.3-.6.7-1 1.1l-95.3-54c.2-.7.1-.8 0-1.2-.2-.2-.4-.5-.7-.7-10.7-13-15.1-17.6-17.3-19.5zM211.8 249c.1.2.2.2.2.4l-54.2 34.1c-1.5-2-4.1-3-6.5-2.4l-29.3-100c.2-.1.3-.1.5-.2.9-.4 1.6-1 2.2-1.7l87.4 63.9c-1 1.7-1.2 4-.3 5.9zm-61.2 32.2c-.2.1-.3.1-.5.2-.4.2-.7.4-1.1.7L66.5 182l47.2-5.9c.1.5.2 1 .5 1.5 1.3 2.8 4.3 4.2 7.2 3.6l29.2 100zm-37-105.8l-47.3 5.9 18.3-59.1 31.5 47.7c-1.7 1.3-2.6 3.4-2.5 5.5zm32.8 127.9l-4.6-3.3-88.7-63.5c-1.5-1.8-2-3-1.3-6L75 243.7c-.1 0-.2.1-.4.1-.3.1-1.1.4-1.3 1.6-.1.9 0 1.9.4 3.4 0 .2.1.2.1.4.4-1.1 1-2.3 1.4-3.4.2-.8.4-1.5.3-1.8v-.1l68.5 38.8 3 1.7c-.8 1.6-.9 3.6-.1 5.4.6 1.5 1.9 2.6 3.3 3.2l-3.8 10.3zm10.2 8.8l-9.5-8.1 2.6-7.2 1.2-3.4c1.1.3 2.4.3 3.6 0l9.3 24.8-7.2-6.1zm8.3 6.5l-9.6-25.5c3.2-1.5 4.6-5.2 3.1-8.4-.1-.2-.2-.2-.2-.4l54.2-34.1c.3.4.6.8 1.1 1.1l-48.6 67.3zm49.9-77.9c-.8.4-1.5 1-2 1.6l-14-10.2-73.5-53.7c.4-.7.7-1.4.8-2.1l65.5 9.1 23.2 55.3zm-70.6-113.6c1.5.7 3.4.7 5.1-.1.2-.1.5-.2.7-.4l41 57.8-62.5-8.6-2.3-.3c.1-1.1-.1-2.1-.6-3.1-.6-1.2-1.5-2.2-2.6-2.9l21.2-42.4zm-.7-.3l-21.1 42.4c-1.6-.7-3.5-.7-5.1.1l-.5.2-31.5-47.8h55.2c.1.7.2 1.6.6 2.2.4 1.2 1.3 2.2 2.4 2.9zM91.3 78.1l49.2 38.8L37 52.1l54.3 26zM34.8 51.7l106.4 66.6c-.4.8-.7 1.7-.7 2.6H84.7L52.4 77.4 34.2 52.7c.2-.4.4-.7.6-1zm-1.2 1.5L43.8 67 84 121.3l-18.3 58.9L32.4 54.1c.5-.3.9-.5 1.2-.9zm-4.1 1.7c.7 0 1.5-.2 2.2-.5L65.1 181c-3.1-3.4-7-6.4-10.2-9.8-3.4-3.5-6.3-7.5-7-13.1l.1-.6c.4.1.8.1 1.1.2.6-1.4.2-2.9.6-4.2 1.4-.2 2.8.2 4.2.1.1-2.8-2-5.6-3.7-8.4-2.4-3.7-4.4-7.3-.2-10.4-1.3-2.5-2.3-4.3-15-9.5-1.1-5.8-6.7-7.9-10-11.8.8.3 1.9.7 2.7 1.1.5-.6 1-1.6 1.1-2.4.7.4 1.8.8 2.7 1l.7-.8c.3-.1.8-.2 1.2-.3 0-.2.1-.5 0-.7-.1-.1-8-8.6-14.4-11.3l7-30.5 3.5-14.7z" class="st4"/>
27
- <path d="M18.1 103.7v-.2l.2.2h-.2zM48.3 314v-.2l1.1 2c.2.9.8 2.2 1.6 3.1 1.2 1.4 2.8 2 4.3-.6.5-.9.5-2.4.2-3.4-.9-2.6-2.9-4.6-4-7.1.3-.5.8-1.3 6.9-3.3-1.5 1.1-5.9 5-.7 6.1.8-1.8 2.7-2.5 4-3.9-.2-1.6-1.6-2.8-1.4-4.6 2-1.3 1.9 2.8 3.1 3.9 1.1 1 2.1.5 2.3.3 1.2-1.2 1.2-3 2-4.5 1.1-2 3.4-1.6 5-2.5 1.3-.7 1.1-2.3 1.7-3.4.7.8 1.1 1.1 1.6 1.2.1 0 .2.1.2.1.2-.2.3-.3.2-1.4-.2-1.7-.9-5.8-2.8-16.2 0-.1-1.3-4.7-3.5-8-1.5-2.2-3.4-3.8-5.6-2.8-.4 1.1-.5 2.2-.2 3.3.2 1.1.8 2.7 1.8 5.1 2.6 6.7.5 11.3.5 11.4-.9 1.7-.9 1.7-4.2.2-2.2 2.6 1.9 6.4-1.5 8.6-2.4 1.7-6 .6-8 3.3-2 2.5-2.4 3.5-3.8 5.9-1.5 2.5-1.8 4.2-1.7 5.2.1 1.3.6 1.8.9 2.2zm5.5-146.4c.1 0 .1.1.2.1 0-.3-.5-2.8-1.1-4-.2-.6-.5-.6-.6-.6-.8.3-.5 3.6 1.5 4.5zm5.2 84.9c.4.7 1.2 2.4 1.6 3.9.5 1.8.2 2.6-.3 3.6-.6 1.1-1.4 2.4-1 4.1v.1c.3 1.1 3.3 4.8 4.6 4.6 1.2-.2 1.3-2 .8-3.3-.2-.6-.5-1.1-.9-1.5s-.7-.3-1.1-.3c1-.3 2.2-.2 2.8-.1 1.5.2 2.5.3 3.7-.8.1-.1.1-.2.2-.2.3-.5.2-1.1.5-1.7.7-1.2 1.8-2.2 2.4-3.4.1-.1.2-.3.2-.6-.1-1-.7-1.8-1.1-2.7-.7.8-6.9-1.7-9.6-2.9-2.8-1.2-3.3-1.2-3.7-1.1-.1.1-.2.2-.1.4.1.3.5.9 1 1.9z" class="st4"/>
28
- <path d="M62.6 263.9c.1 0 .2-.1.2-.1-.1 0-.2 0-.2.1z" class="st4"/>
29
- </g>
30
- </g>
31
- </g>
32
- <path id="logo" d="M76.9 207.1c.9 1.8.8 4.6 1.7 6.4.6.3 1.3.6 1.8.9 7.6-1.1 7.8-10.2 3.9-14.6-1.8-1.7-4.5-2.5-7.8-1-16.8 7.2-32.9 2.6-42.6-7.5-5.3-5.3-8.8-12.1-9.8-19.5-2.6-23.5 16.6-38.4 29.8-40.1 11.8-1.4 23 2.8 30.5 10.4 8.1 8.1 12.5 20.3 9.9 34.4-1.1 6.4-4.9 14.5-13.5 14.5-3.4 0-6.8-1.5-9.2-4.1-2.3-2.2-3.7-5.2-3.9-8.4-.8-12.7 15.5-16.3 14.5-29-.1-2.3-1.1-4.2-2.8-6-4.9-4.7-14.9-6.5-23.9-4.7-11.2 2.3-21.9 12.5-23.9 24.8-1.6 10 2 21.2 9.3 28.9 6.5 6.5 16 10.1 27.5 7.3 3.8-.8 6.7-4.4 12.7-3.4 2.2.3 4 1.4 5.3 2.8 4.9 4.6 4.1 14.2-2.3 16.5-3.3 1.1-9.3.2-11.9-2.6l-.1-.1c-.3-.1-.6-.5-.9-.8-1-.8-1.7-2.5-1.6-4.4.1-2.6 1.8-4.7 3.8-4.5.8.1 1.5.5 2 1 .7.9 1.3 1.7 1.5 2.8m112.9-35.5c.7-.9 1-2 1.4-3.1.5-2.1.5-4.4-.1-6.4-.2-1.1-.7-2.3-1.4-3.1-.7-1-1.7-1.7-2.9-2.2-1.1-.6-2.5-.8-4.2-.8h-3.1c-.6 0-1 .5-1 1v16.9c0 .6.5 1 1 1h2c2.2 0 4-.3 5.3-1 1.1-.2 2.3-1.1 3-2.3m9.2-7.3c0 2.3-.5 4.2-1.4 6-.8 1.7-2.1 3.1-3.7 4.2-1.6 1-3.1 2-5.1 2.5-2 .6-3.9.8-5.9.8h-3.7c-.6 0-1 .5-1 1v11.9c0 .7.1 1.4.5 1.8.2.6.7.9 1.5 1.3.5.1 1 .2 2 .5.6.1 1 .1 1.6.2.6 0 1 .5 1 1s-.5 1-1 1h-16.3c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-31c0-.7-.1-1.4-.3-2-.2-.6-.7-1-1.4-1.3-.8-.2-1.6-.5-2.3-.6-.3 0-.7-.1-.9-.1-.6-.1-.9-.6-.9-1v-.1c0-.6.5-1 1-1H186c3.9 0 7.1.9 9.6 2.9l.1.1c2 2 3.3 4.6 3.3 7.7zm-36.8-8.4c-.6 0-1 .1-1.7.5-.7.2-1.1.5-1.7.8l-.1.1c-.7.5-1.1.9-1.7 1.5-.5.6-.7 1.4-1.1 2.4v.1c-1.4 4.7-3.1 10.1-4.9 16.4-1.7 6.1-3.8 12.4-5.9 19.3-.1.5-.6.8-1 .8h-1.3c-.5 0-.9-.3-1-.8l-9.5-29.4c-.1-.6-.8-.9-1.4-.7-.3.1-.6.3-.7.7l-10 29.4c-.1.5-.6.7-1 .7h-1c-.5 0-.9-.3-1-.8-2-6.9-3.9-13.9-6-21.3-2.2-7.7-3.6-12.7-4.2-15.4-.1-.6-.5-1-.7-1.6 0-.1-.1-.2-.1-.2-.8-1-2-1.7-3.2-2-.3-.1-.7-.1-.9-.2-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h15.4c.6 0 1 .5 1 1v.1c0 .6-.5 1-1 1-1.1.1-2.1.2-2.9.5-1 .2-1.6.6-1.6 1 0 .1 0 .5.1.8.1.2.1.6.1.8.5 1.8 1.4 4.7 2.5 8.8 1 3.6 2.4 8.6 4.2 15 .3 1 1.7 1 2.1 0l9.3-27.9c.1-.5.6-.7 1-.7h1.4c.5 0 .9.3 1 .8l9.4 28.6c.3 1 1.8 1 2.1 0l2.8-9.9c1-3.8 2-6.9 2.5-9.6.5-1.8.8-3.2.9-3.9.1-.7.1-1.3.1-1.8 0-.7-.5-1.3-1.4-1.7-.8-.5-2-.7-3.6-.8-.6-.1-1-.6-1-1 0-.6.5-1 1-1H161c.6 0 1 .5 1 1l.2.8zM292 184l-.8 11.8c0 .6-.5 1-1 1h-31.4c-.6 0-1-.5-1-1v-.1c0-.6.5-1 .9-1 .3 0 .7-.1 1.1-.1.9-.1 1.6-.2 2-.5.6-.2 1-.6 1.4-1.1.2-.6.5-1.1.5-2v-30.8c0-.7-.1-1.3-.5-1.8-.3-.6-.7-.9-1.4-1.3-.5-.2-1-.5-2-.7l-1.3-.3c-.5-.1-.9-.6-.9-1v-.2c0-.6.5-1 1-1h16c.6 0 1 .5 1 1v.1c0 .6-.3 1-.9 1-.3.1-.8.1-1.3.2-.9.1-1.6.5-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.3-.5 1.8v28.9c0 1.4.1 2.3.1 3.1.1.7.5 1.4.9 1.7.5.5 1.1.6 2.1.7s2.2.1 3.8.1c.8 0 1.6 0 2.3-.1.7 0 1.5-.1 2.3-.2h.1c.7-.1 1.3-.3 1.8-.5.6-.2.9-.5 1.3-.7.1 0 .1-.1.2-.2.8-.9 1.7-2.3 2.9-4.1.9-1.5 1.5-2.9 2-3.9.1-.5.6-.7 1-.7h1.6l.1.1zm-38.2 12.9H236c-.6 0-1-.5-1-1 0-.6.5-1 1-1s1-.1 1.7-.2c1-.1 1.8-.3 2.2-.6.6-.5 1-.8 1.4-1.4.3-.5.5-1 .5-1.8v-31.3h-.5l-14.6 35.9c-.1.5-.6.7-1 .7-.5 0-.9-.2-1-.7L211 158.6h-.5v25.7c0 2.5.1 4.4.5 5.6.3 1.3.8 2.2 1.5 2.9.5.5 1.4.8 2.8 1.3.8.2 1.4.3 1.8.5.5.1.9.6.9 1v.1c0 .6-.5 1-1 1h-14.8c-.7 0-1.3-.7-1-1.4v-.1c.1-.3.5-.7.8-.7.5-.1.8-.2 1.5-.5 1-.2 1.8-.6 2.3-1 .7-.6 1.1-1.4 1.5-2.6.2-1.1.5-3.1.5-5.9v-22.2c0-1.3-.1-2.3-.5-3.1-.3-.8-.7-1.5-1.4-2-.6-.6-1.4-.9-2.2-1.3h-.1l-1.7-.3c-.6-.1-.9-.6-.9-1.1v-.1c0-.6.5-1 1-1h12.7c.5 0 .8.2 1 .7l11 28.9c.3.9 1.7.9 2.1 0l9.4-24.3c.5-1 .7-2 1-3.1v-.1l.3-1.3c.1-.5.6-.8 1-.8h12.1c.6 0 1 .5 1 1v.1c0 .6-.5 1-.9 1-.3 0-.8.1-1.1.2-.8.1-1.5.3-2 .5-.7.2-1.1.6-1.4 1.3-.2.6-.5 1.1-.5 1.8v31.1c0 .7.1 1.4.5 1.8.2.5.7.9 1.4 1.3.5.2 1 .5 2 .6.5.1.9.1 1.3.2.6.1.9.6.9 1v1.6z" class="st5"/>
33
- </g>
34
- <g class="st0">
35
- <path d="M146.2 2.5h-.1l171.4 171.4.5-.5V2.5z" class="st6"/>
36
- </g>
37
- <path d="M303.6 34.3c0-.4-.2-.9-.6-1.1-.2-.1-.4-.2-.6-.2L281 25.1c-.7-.3-1.5.1-1.7.8l-.1.2c-.3.7.1 1.5.8 1.7l14.5 5.3c.7.3 1.1 1 .8 1.7-.1.4-.4.7-.8.8l-23.6 8.6c-.3.1-.6.1-.9 0l-23.7-8.7c-.7-.3-1.1-1-.8-1.7.1-.4.4-.7.8-.8l14.6-5.2c.7-.2 1.1-1 .8-1.7-.2-.7-1-1.1-1.7-.8l-21.5 7.6c-.2 0-.5.1-.6.2-.1.1-.2.2-.2.3-.2.2-.3.5-.3.9v35.1c0 .6.4 1.1 1 1.3L269.6 82c.2.1.4.2.6.2h.6c.2-.1.4-.1.6-.2l31.3-11.4c.6-.2 1-.7 1-1.3V34.4c-.1 0-.1-.1-.1-.1zm-61.7 2.6l26.2 9.6c.5.2.9.7.9 1.3V77c0 .7-.6 1.3-1.3 1.3-.2 0-.3 0-.5-.1L241 68.7c-.5-.2-.9-.7-.9-1.3V38.2c0-.7.6-1.3 1.3-1.3.2-.1.4-.1.5 0zm58 31.8l-26.2 9.6c-.7.3-1.5-.1-1.7-.8-.1-.1-.1-.3-.1-.5V47.8c0-.6.4-1.1.9-1.3l26.2-9.6c.7-.3 1.5.1 1.7.8.1.1.1.3.1.5v29.3c0 .5-.4 1-.9 1.2z" class="st7"/>
38
- <path d="M259.9 32c-.3.7 0 1.5.7 1.8l9.3 4.4c.2.1.4.2.6.1.1 0 .4-.1.6-.1l9.3-4.4c.7-.3 1-1.1.7-1.8-.3-.7-1.1-1-1.8-.7l-5.3 2.5c-.7.3-1.5 0-1.8-.7-.1-.2-.1-.4-.1-.6V18.9c0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4v13.7c0 .8-.6 1.4-1.4 1.4-.2 0-.4 0-.6-.1l-5.3-2.5c-1-.4-1.8-.1-2.1.6z" class="st7"/>
39
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/README.md DELETED
@@ -1,63 +0,0 @@
1
- # OTGS WP Installer
2
-
3
- OTGS WP Installer is a library that allows you to install and upgrade plugins and themes developed by OnTheGoSystems.
4
-
5
- ## Installation
6
-
7
- First, add OTGS WP Installer as a dependency with [Composer](http://getcomposer.org):
8
-
9
- ```bash
10
- composer require --dev otgs/installer:dev-master
11
- ```
12
-
13
- Make sure that your bootstrap file is loading the composer autoloader:
14
-
15
- ```php
16
- require_once 'vendor/autoload.php';
17
- ```
18
-
19
- Then, load the OTGS WP Installer bootstrap. Before the `plugins_loaded` action add:
20
-
21
- ```php
22
- include 'vendor/otgs/installer/loader.php';
23
- ```
24
-
25
- If you're not using composer to install this library, just unpack the archive anywhere inside the plugin or theme folder and then include the bootstrap file and mentioned in the paragraph above.
26
-
27
- Optionally, you can specify parameters to configure showing a dedicated UI under `Plugins -> Install New` or to load specific repositories.
28
- By default, all repositories configrede in `repositories.xml` will be loaded:
29
- * wpml - [WPML.org](http://wpml.org)
30
- * toolset - [WP-Types.com](http://wp-types.com)
31
-
32
- ```php
33
- WP_Installer_Setup( $wp_installer_instance,
34
- array(
35
- 'plugins_install_tab' => '1', // optional, default value: 0
36
- 'repositories_include' => array( 'wpml' ) // optional, default to empty (show all)
37
- )
38
- );
39
- ```
40
-
41
- After `init`, configure display the OTGS WP Installer UI like in the example below:
42
-
43
- ```php
44
- WP_Installer_Show_Products(
45
- array(
46
- 'template' => 'compact', //required
47
- 'product_name' => 'WPML',
48
- 'box_title' => 'Multilingual Avada',
49
- 'name' => 'Avada', //name of theme/plugin
50
- 'box_description' => 'Avada theme is fully compatible with WPML - the WordPress Multilingual plugin. WPML lets
51
- you add languages to your existing sites and includes advanced translation management.',
52
- 'repository' => 'wpml', // required
53
- 'package' => 'multilingual-cms', // required
54
- 'product' => 'multilingual-cms' // required
55
- )
56
- );
57
- ```
58
-
59
- * `template` two options available: default and compact. Default will be the same GUI as on the Plugins -> Install new page while compact is a smaller version that can be fit in a different already existing screen
60
- * `repository` only one product of a specific product package from a specific repository can be shown
61
- * `package` only one product of a specific product package from a specific repository can be shown
62
- * `product` only one product of a specific product package from a specific repository can be shown
63
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/changelog.txt DELETED
@@ -1,188 +0,0 @@
1
- = 1.8.10 =
2
- * Removed wrongly added dependencies and repositories
3
-
4
- = 1.8.8 =
5
- * Fixed some conflicts
6
-
7
- = 1.8.7 =
8
- * Updated version numbers to all files
9
-
10
- = 1.8.6 =
11
- * Bug fix: When Windows file paths were longer than 256 chars updating of plugins wasn't possible
12
- * Bug fix: PHP 7.2 warnings
13
-
14
- = 1.8.2 =
15
- * Bug fix: registration warning was shown for free plugins
16
-
17
- = 1.8.1 =
18
- * Fixed a bug potentially making the downloads list under the Commercial not display correctly
19
-
20
- = 1.8 =
21
- * Added support for update channels (beta, developement and production)
22
-
23
- = 1.7.17 =
24
- * Fixed some warnings and notices
25
-
26
- = 1.7.16 =
27
- * Fixed a bug with plugins list showing twice for the Toolset repository
28
- * Replaced get_locale() with get_user_locale()
29
- * Added WP_Installer_API::get_registering_user_id()
30
-
31
- = 1.7.15 =
32
- * Bug fix: New search, results not visible with WordPress 4.6 when searching from installer page
33
- * Bug fix: A js error was showing on the admin pages: `pagenow` is undefined
34
- * Added support for equivalent subscriptions
35
-
36
- = 1.7.14 =
37
- * Refactoring for compliance with Envato market
38
-
39
- = 1.7.13 =
40
- * Added sanitization for some inputs
41
- * Fixed PHP notice being logged when installing a plugin from the WP plugins directory
42
-
43
- = 1.7.12 =
44
- * Allow to set the site keys in PHP (as constants)
45
- * Fixed an issue with unregistered sites gets wrong info (or error) when clicking "View version x.y.x details" link
46
-
47
- = 1.7.11 =
48
- * Fixed styling for 'must-register' warnings on the plugins page
49
-
50
- = 1.7.10 =
51
- * Fixed a notice that was appearing when the site key registration failed
52
-
53
- = 1.7.9 =
54
- * Save the client_id value from the site_key_validation API call response and make it available via WP_Installer_API::get_ts_client_id API call
55
-
56
- = 1.7.8 =
57
- * Small fix for hiding the WPML registration notice
58
-
59
- = 1.7.7 =
60
- * Fixed js error showing up during registration
61
- * Styles update for unified WPML messages
62
-
63
- = 1.7.6 =
64
- * Updated error messages when validating site keys and stopped removing site keys in case of communication errors
65
- * Added a note for users who renewed or purchased new subscriptions and who need to revalidate their subscription from their websites
66
- * Fixed a problem with the registrations for multi-site setups when WordPress was installed in a separate folder
67
-
68
- = 1.7.5 =
69
- * Fixed a bug causing registration to not be recognized for the entire network in the multi-site mode
70
-
71
- = 1.7.4 =
72
- * Use https for wp-types API
73
-
74
- = 1.7.3 =
75
- * Added a dependencies class and check for the windows paths length exception
76
- * Bug fix: all downloads showed up twice on the plugins list whe upgrading from WPML 3.3
77
-
78
- = 1.7.2 =
79
- * Added an exception to handle the case when Types embedded is installer from Toolset Installer and its included Installer version overrides the one running the Toolset setup wizard
80
-
81
- = 1.7.1 =
82
- * Added an exception for the case of Types 1.8.9 (Installer 1.7.0) together with older WPML (older Installer)
83
-
84
- = 1.7.0 =
85
- * New format for the products data file.
86
- * Other fixes
87
-
88
- = 1.6.8 =
89
- * Sanitized an input that was a potential security issue
90
-
91
- = 1.6.7 =
92
- * Fixed a bug causing repeated calls to the Toolset api to validate the user subscription
93
- * Use https for API urls
94
-
95
- = 1.6.6 =
96
- * Fixed the 'Call to undefined function get_plugins()' issue
97
-
98
- = 1.6.5 =
99
- * Added configuration file for composer
100
- * Updated how free plugins are shown on the plugins list (commercial tab)
101
- * API calls for manipulating translation service preferences
102
- * Support for hosting custom Installer packages on wpml.org
103
- * Fixed a warning that was showing when using the OTGS_DISABLE_AUTO_UPDATES constant before any product data was downloaded
104
- * Changed the frequency with which product updates are checked automatically (24 hours)
105
- * Improved reporting for version numbers
106
-
107
- = 1.6.4 =
108
- * Enabled the OTGS_DISABLE_AUTO_UPDATES constant for theme update checks
109
- * Fixed a bug that was causing Register links to show for all installed plugins
110
-
111
- = 1.6.3 =
112
- * Fixed performance issue related to themes upgrade logic
113
-
114
- = 1.6 =
115
- * Improved the way plugins are matched: not just by the folder name (slug) but also by name
116
- * Added support for installing and upgrading themes from repositories (currently: Toolset themes)
117
- * Added support for 'alias' plugins on the toolset and wpml repositories (currently: Types)
118
- * Enhanced the progress animation during plugins downloading
119
-
120
- = 1.5.6 =
121
- * Updated the translations
122
- * Fix for WPML 3.2 conditional upgrade logic
123
-
124
- = 1.5.5 =
125
- * Fixed the logic for the high_priority parameter
126
- * Fixed js bug causing a conflict with NextGen
127
- * Fixed bug preventing users to install and upgrade Types when they didn't have a Toolset subscription
128
- * Fixed bug preventing users to upgrade from the embedded Types to the full version
129
-
130
- = 1.5.4 =
131
- * Option to disable auto-updates
132
- * Escaped urls generated with add_query_arg
133
-
134
- = 1.5.3 =
135
- * Fixed bug in WP_Installer::custom_plugins_api_call (filter for plugins_api) causing conflicts with other filters for plugins_api
136
-
137
- = 1.5.2 =
138
- * More meaningful errors when plugin downloads fail
139
- * WordPress 4.2 compatibility
140
- * Performance improvements (will not load in places where it's not needed and not make unnecessary requests to the CDN)
141
- * Support putting deps.xml config file in the theme folder (root)
142
- * Included code for importing data for toolset plugins
143
- * Use CloudFront urls for products list files
144
-
145
- = 1.5.1 =
146
- * Fix for allowing embedded plugins to be updated
147
- * Logic for the migration from embedded plugins to full plugins
148
-
149
- = 1.5 =
150
- * Support for embedded plugins
151
- * Bug fix: When user registers site key with trailing slash, downloads might not work
152
- * Tweak: Set a higher timeout limit for the http requests to CDN and API
153
- * API function: link to specific repository
154
- * API function: get product price
155
- * New method for defining affiliate info (with backwards compatibility)
156
-
157
- = 1.4 =
158
- * Show explicit error in case of connectivity issues while validating a key.
159
- * Bug fix: Downloading plugins in bulk was broken by plugin that had a redirect after activation
160
- * Display friendly error message when WordPress does not have permissions to write to the plugins folder
161
- * Added support for configuration files to auto-download required plugins and theme keys
162
- * Changed the "Update this info" button to "Check for updates" (it refreshes the subscription info and checks for updates)
163
- * Support for high_priority parameter that allows setting priority for an Installer instance when more with the same version number exist.
164
- * Config files from different instances are combined (define repositories in different instances)
165
- * Updated support for conditional updates display for ICL users
166
- * More friendly error reporting and handling when using an invalid site key or the plugins archives are not valid.
167
-
168
-
169
- = 1.3.1 =
170
- * Support for conditional release notification (ICanLocalize)
171
-
172
- = 1.3 =
173
- * Added a new repository: Toolset
174
- * The product packages can be displayed hierarchically and ordered
175
- * The link to automatically create site keys will follow through login on the account site (e.g. wpml.org, wp-types.com)
176
- * Fixed animation issues (not showing in most browsers) when downloading plugins.
177
- * Created an admin screen on the repository end (icl-mpp) to sho registration stats (site keys, site keys usage, components usage etc..).
178
- * Bug fix: Renew and Upgrade buttons were not entirely clickable
179
- * Bug fix: Action buttons (buy, renew, upgrade) were not displayed correctly when WPML was not active (Installer embedded in theme)
180
- * Support for site-wide registration. Products can be registered on the network instead of on each site separately.
181
- * Users are able to add either http or https version for any site urls. There will be one site key that will work with both http and https versions.
182
-
183
- = 1.2 =
184
- * Added pagination for site keys list of Account -> My Sites
185
- * Reversed the order in which the site keys are displayed.
186
- * Fixed problem with WPML registration information (site key) not being saved when the option_value field in the wp_options table used a different charset than the default WordPress charset defined in wp-config.php
187
- * Allow registering new sites by clicking a link in the WordPress admin instead of copying and pasting the site url in the Account -> My Sites section
188
- * Display more detailed debug information related to connectivity issues with the WPML repository
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-installer-dependencies.php DELETED
@@ -1,291 +0,0 @@
1
- <?php
2
-
3
- class Installer_Dependencies {
4
-
5
- private $uploading_allowed = null;
6
- private $is_win_paths_exception = array();
7
-
8
-
9
- function __construct() {
10
-
11
- add_action( 'admin_init', array( $this, 'prevent_plugins_update_on_plugins_page' ), 100 );
12
-
13
-
14
- global $pagenow;
15
- if ( $pagenow == 'update.php' ) {
16
- if ( isset( $_GET['action'] ) && $_GET['action'] == 'update-selected' ) {
17
- add_action( 'admin_head', array(
18
- $this,
19
- 'prevent_plugins_update_on_updates_screen'
20
- ) ); //iframe/bulk
21
- } else {
22
- add_action( 'all_admin_notices', array(
23
- $this,
24
- 'prevent_plugins_update_on_updates_screen'
25
- ) ); //regular/singular
26
- }
27
- }
28
- add_action( 'wp_ajax_update-plugin', array(
29
- $this,
30
- 'prevent_plugins_update_on_updates_screen'
31
- ), 0 ); // high priority, before WP
32
-
33
- }
34
-
35
- public function is_win_paths_exception( $repository_id ) {
36
-
37
- if ( ! isset( $this->is_win_paths_exception[ $repository_id ] ) ) {
38
-
39
- $this->is_win_paths_exception[ $repository_id ] = false;
40
-
41
- if ( strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN' ) {
42
-
43
- $windows_max_path_length = 256;
44
- $longest_path['wpml'] = 109;
45
- $longest_path['toolset'] = 99;
46
-
47
- $margin = 15;
48
-
49
- $upgrade_path_length = strlen( WP_CONTENT_DIR . '/upgrade' );
50
-
51
- $installer_settings = WP_Installer()->settings;
52
-
53
- if ( isset($installer_settings['repositories'][$repository_id]['data']) && is_array( $installer_settings['repositories'][$repository_id]['data']['downloads']['plugins'] ) ) {
54
- $a_plugin = current( $installer_settings['repositories'][$repository_id]['data']['downloads']['plugins'] );
55
- $url = WP_Installer()->append_site_key_to_download_url( $a_plugin['url'], 'xxxxxx', $repository_id );
56
- $tmpfname = wp_tempnam( $url );
57
-
58
- $tmpname_length = strlen( basename( $tmpfname ) ) - 4; // -.tmp
59
-
60
- if ( $upgrade_path_length + $tmpname_length + $longest_path[ $repository_id ] + $margin > $windows_max_path_length ) {
61
-
62
- $this->is_win_paths_exception[ $repository_id ] = true;
63
-
64
- }
65
-
66
- }
67
-
68
-
69
- }
70
-
71
- }
72
-
73
- return $this->is_win_paths_exception[ $repository_id ];
74
-
75
- }
76
-
77
- public function is_uploading_allowed() {
78
-
79
- if ( ! isset( $this->uploading_allowed ) ) {
80
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
81
- require_once WP_Installer()->plugin_path() . '/includes/class-installer-upgrader-skins.php';
82
-
83
- $upgrader_skins = new Installer_Upgrader_Skins(); //use our custom (mute) Skin
84
- $upgrader = new Plugin_Upgrader( $upgrader_skins );
85
-
86
- ob_start();
87
- $res = $upgrader->fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) );
88
- ob_end_clean();
89
-
90
- if ( ! $res || is_wp_error( $res ) ) {
91
- $this->uploading_allowed = false;
92
- } else {
93
- $this->uploading_allowed = true;
94
- }
95
- }
96
-
97
- return $this->uploading_allowed;
98
-
99
- }
100
-
101
- public function cant_download( $repository_id ) {
102
-
103
- return ! $this->is_uploading_allowed() || $this->is_win_paths_exception( $repository_id );
104
-
105
- }
106
-
107
- public function win_paths_exception_message() {
108
- return __( 'Downloading is not possible. WordPress cannot create required folders because of the
109
- 256 characters limitation of the current Windows environment.', 'installer' );
110
- }
111
-
112
- public function prevent_plugins_update_on_plugins_page() {
113
-
114
- $plugins = get_site_transient( 'update_plugins' );
115
- if ( isset( $plugins->response ) && is_array( $plugins->response ) ) {
116
- $plugins_with_updates = array_keys( $plugins->response );
117
- }
118
-
119
- if ( ! empty( $plugins_with_updates ) ) {
120
-
121
- $plugins = get_plugins();
122
-
123
- $installer_settings = WP_Installer()->settings;
124
- if ( isset( $installer_settings['repositories'] ) ) {
125
- foreach ( $installer_settings['repositories'] as $repository_id => $repository ) {
126
-
127
- if ( $this->is_win_paths_exception( $repository_id ) ) {
128
-
129
- $repositories_plugins = array();
130
- foreach ( $repository['data']['packages'] as $package ) {
131
- foreach ( $package['products'] as $product ) {
132
- foreach ( $product['plugins'] as $plugin_slug ) {
133
- $download = $installer_settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
134
- if ( empty( $download['free-on-wporg'] ) ) {
135
- $repositories_plugins[ $download['slug'] ] = $download['name'];
136
- }
137
- }
138
- }
139
- }
140
-
141
- foreach ( $plugins as $plugin_id => $plugin ) {
142
-
143
- if ( in_array( $plugin_id, $plugins_with_updates ) ) {
144
-
145
- $wp_plugin_slug = dirname( $plugin_id );
146
- if ( empty( $wp_plugin_slug ) ) {
147
- $wp_plugin_slug = basename( $plugin_id, '.php' );
148
- }
149
-
150
- foreach ( $repositories_plugins as $slug => $name ) {
151
- if ( $wp_plugin_slug == $slug || $name == $plugin['Name'] || $name == $plugin['Title'] ) { //match order: slug, name, title
152
-
153
- remove_action( "after_plugin_row_$plugin_id", 'wp_plugin_update_row', 10, 2 );
154
- add_action( "after_plugin_row_$plugin_id", array(
155
- $this,
156
- 'wp_plugin_update_row_win_exception',
157
- ), 10, 2 );
158
-
159
- }
160
- }
161
-
162
- }
163
-
164
- }
165
-
166
- }
167
-
168
-
169
- }
170
- }
171
-
172
- }
173
-
174
- }
175
-
176
- public function wp_plugin_update_row_win_exception() {
177
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
178
- echo '<tr class="plugin-update-tr">';
179
- echo '<td class="plugin-update colspanchange" colspan="' . esc_attr( $wp_list_table->get_column_count() ) .
180
- '"><div class="update-message">' . $this->win_paths_exception_message() . '</div></td>';
181
- echo '</tr>';
182
- }
183
-
184
- public function prevent_plugins_update_on_updates_screen() {
185
-
186
- if ( isset( $_REQUEST['action'] ) ) {
187
-
188
- $action = isset( $_REQUEST['action'] ) ? sanitize_text_field( $_REQUEST['action'] ) : '';
189
-
190
- $installer_settings = WP_Installer()->settings;
191
-
192
- //bulk mode
193
- if ( 'update-selected' == $action ) {
194
-
195
- global $plugins;
196
-
197
- if ( isset( $plugins ) && is_array( $plugins ) ) {
198
-
199
- foreach ( $plugins as $k => $plugin ) {
200
-
201
- $wp_plugin_slug = dirname( $plugin );
202
-
203
- foreach ( $installer_settings['repositories'] as $repository_id => $repository ) {
204
-
205
- if ( $this->is_win_paths_exception( $repository_id ) ) {
206
-
207
- foreach ( $repository['data']['packages'] as $package ) {
208
-
209
- foreach ( $package['products'] as $product ) {
210
-
211
- foreach ( $product['plugins'] as $plugin_slug ) {
212
-
213
- $download = $installer_settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
214
-
215
- if ( $download['slug'] == $wp_plugin_slug && empty( $download['free-on-wporg'] ) ) {
216
-
217
- echo '<div class="updated error"><p>' . $this->win_paths_exception_message() .
218
- ' <strong>(' . $download['name'] . ')</strong>' . '</p></div>';
219
- unset( $plugins[ $k ] );
220
-
221
- break( 3 );
222
-
223
- }
224
-
225
- }
226
-
227
- }
228
-
229
- }
230
-
231
-
232
- }
233
-
234
- }
235
-
236
- }
237
-
238
- }
239
-
240
- }
241
-
242
-
243
- if ( 'upgrade-plugin' == $action || 'update-plugin' == $action ) {
244
-
245
- $plugin = isset( $_REQUEST['plugin'] ) ? trim( sanitize_text_field( $_REQUEST['plugin'] ) ) : '';
246
-
247
- $wp_plugin_slug = dirname( $plugin );
248
-
249
- foreach ( $installer_settings['repositories'] as $repository_id => $repository ) {
250
-
251
- if ( $this->is_win_paths_exception( $repository_id ) ) {
252
- foreach ( $repository['data']['packages'] as $package ) {
253
-
254
- foreach ( $package['products'] as $product ) {
255
-
256
- foreach ( $product['plugins'] as $plugin_slug ) {
257
- $download = $installer_settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
258
-
259
- //match by folder, will change to match by name and folder
260
- if ( $download['slug'] == $wp_plugin_slug && empty ( $download['free-on-wporg'] ) ) {
261
-
262
- echo '<div class="updated error"><p>' . $this->win_paths_exception_message() . '</p></div>';
263
-
264
- echo '<div class="wrap">';
265
- echo '<h2>' . __( 'Update Plugin' ) . '</h2>';
266
- echo '<a href="' . admin_url( 'update-core.php' ) . '">' . __( 'Return to the updates page', 'installer' ) . '</a>';
267
- echo '</div>';
268
- require_once( ABSPATH . 'wp-admin/admin-footer.php' );
269
- exit;
270
-
271
- }
272
-
273
- }
274
-
275
- }
276
-
277
- }
278
- }
279
-
280
- }
281
-
282
- }
283
- }
284
-
285
- }
286
-
287
-
288
- }
289
-
290
-
291
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-installer-theme.php DELETED
@@ -1,979 +0,0 @@
1
- <?php
2
- /**
3
- * Installer Class for Theme Support
4
- *
5
- * Supports automatic updates and installation of Toolset/WPML Themes
6
- *
7
- * @class Installer_Theme_Class
8
- * @version 1.6
9
- * @category Class
10
- * @author OnTheGoSystems
11
- */
12
-
13
- if ( !defined( 'ABSPATH' ) ) {
14
- exit;
15
- }
16
-
17
- /**
18
- * Installer_Theme_Class
19
- */
20
- class Installer_Theme_Class {
21
-
22
- /** Theme Repository */
23
- private $theme_repo;
24
-
25
- /** Repository API */
26
- private $repository_api;
27
-
28
- /** Repository Theme Products */
29
- private $repository_theme_products;
30
-
31
- /** Site URL */
32
- private $installer_site_url;
33
-
34
- /** Site Key */
35
- private $installer_site_key;
36
-
37
- /** The Themes Option */
38
- protected $installer_themes_option;
39
-
40
- /** Update settings */
41
- protected $installer_themes_available_updates;
42
-
43
- /** The Themes */
44
- protected $installer_themes = array();
45
-
46
- /** Repository with themes */
47
- protected $installer_repo_with_themes;
48
-
49
- /** Active tab */
50
- protected $installer_theme_active_tab;
51
-
52
- /** Theme user registration */
53
- protected $theme_user_registration;
54
-
55
- /** Client active subscription */
56
- protected $installer_theme_subscription_type;
57
-
58
- public function __construct() {
59
-
60
- /** Properties */
61
-
62
- //Get installer repositories
63
- $installer_repositories = WP_Installer()->get_repositories();
64
-
65
- //Get repos with themes
66
- $repos_with_themes = $this->installer_theme_reposities_that_has_themes( $installer_repositories );
67
-
68
- if ( is_array( $repos_with_themes ) ) {
69
- //Assign to property
70
- $this->installer_repo_with_themes = $repos_with_themes;
71
-
72
- //Let's looped through repos with themes
73
- foreach ( $repos_with_themes as $k => $repo ) {
74
-
75
- //$repo could be 'toolset' or 'wpml'
76
- //Assign each repo with theme to property
77
- $this->theme_repo[] = $repo;
78
-
79
- if ( (isset($installer_repositories[$repo]['api-url'])) && (isset($installer_repositories[$repo]['products'])) ) {
80
-
81
- //Define the rest of the properties based on the given repo
82
- $this->repository_api[$repo] = $installer_repositories[$repo]['api-url'];
83
- $this->repository_theme_products[$repo] = $installer_repositories[$repo]['products'];
84
- $this->installer_site_url[$repo] = WP_Installer()->get_installer_site_url( $repo );
85
- $this->installer_site_key[$repo] = WP_Installer()->get_site_key( $repo );
86
- $this->theme_user_registration[$repo] = false;
87
-
88
- if ( WP_Installer()->repository_has_valid_subscription( $repo ) ) {
89
-
90
- $this->installer_theme_subscription_type = WP_Installer()->get_subscription_type_for_repository( $repo );
91
- $this->installer_themes_option[$repo] = 'wp_installer_' . $repo . '_themes';
92
- $this->installer_themes_available_updates[$repo] = 'wp_installer_' . $repo . '_updated_themes';
93
- $this->installer_theme_active_tab = '';
94
-
95
- //We only set themes available to this validated subscription
96
- $this->installer_theme_available( $repo, $this->installer_theme_subscription_type );
97
-
98
- add_action( 'installer_themes_support_set_up', array($this, 'installer_theme_sets_active_tab_on_init'), 10 );
99
- $this->theme_user_registration[$repo] = true;
100
- }
101
-
102
- /** We are ready.. let's initialize .... */
103
- $this->init();
104
- }
105
- }
106
- add_action( 'installer_themes_support_set_up', array($this, 'installer_theme_loaded_hooks') );
107
- }
108
- }
109
-
110
- /** Init */
111
- public function init() {
112
- add_action( 'admin_enqueue_scripts', array($this, 'installer_theme_enqueue_scripts') );
113
- add_filter( 'themes_api', array($this, 'installer_theme_api_override'), 10, 3 );
114
- add_filter( 'themes_api_result', array($this, 'installer_theme_api_override_response'), 10, 3 );
115
- add_filter( 'site_transient_update_themes', array($this, 'installer_theme_upgrade_check'), 10, 1 );
116
- add_action( 'http_api_debug', array($this, 'installer_theme_sync_native_wp_api'), 10, 5 );
117
- add_filter( 'installer_theme_hook_response_theme', array($this, 'installer_theme_add_num_ratings'), 10, 1 );
118
- add_filter( 'themes_update_check_locales', array($this, 'installer_theme_sync_call_wp_theme_api'), 10, 1 );
119
- add_filter( 'admin_url', array($this, 'installer_theme_add_query_arg_tab'), 10, 3 );
120
- add_filter( 'network_admin_url', array($this, 'installer_theme_add_query_arg_tab'), 10, 2 );
121
- add_action( 'wp_ajax_installer_theme_frontend_selected_tab', array($this, 'installer_theme_frontend_selected_tab'), 0 );
122
- add_action( 'wp_loaded', array($this, 'installer_themes_support_set_up_func') );
123
- }
124
-
125
- /** Enqueue scripts */
126
- public function installer_theme_enqueue_scripts() {
127
- $current_screen = $this->installer_theme_current_screen();
128
- $commercial_plugin_screen = $this->installer_theme_is_commercial_plugin_screen( $current_screen );
129
- if ( ('theme-install' == $current_screen) || ($commercial_plugin_screen) || ('theme-install-network' == $current_screen) ) {
130
- $repo_with_themes = $this->installer_repo_with_themes;
131
- $js_array = array();
132
- if ( is_array( $repo_with_themes ) ) {
133
- foreach ( $repo_with_themes as $k => $v ) {
134
-
135
- //Hyperlink text
136
- $theme_repo_name = $this->installer_theme_get_repo_product_name( $v );
137
- $the_hyperlink_text = esc_js( $theme_repo_name );
138
-
139
- if ( is_multisite() ) {
140
- $admin_url_passed = network_admin_url();
141
- } else {
142
- $admin_url_passed = admin_url();
143
- }
144
-
145
- //Define
146
- $js_array[$v] = array(
147
- 'the_hyperlink_text' => $the_hyperlink_text,
148
- 'registration_status' => $this->theme_user_registration[$v],
149
- 'is_commercial_plugin_tab' => $commercial_plugin_screen,
150
- 'registration_url' => $admin_url_passed . 'plugin-install.php?tab=commercial#installer_repo_' . $v
151
- );
152
-
153
- }
154
- }
155
-
156
- if ( !(empty($js_array)) ) {
157
- wp_enqueue_script( 'installer-theme-install', WP_Installer()->res_url() . '/res/js/installer_theme_install.js', array('jquery', 'installer-admin'), WP_Installer()->version() );
158
- $installer_ajax_url = admin_url( 'admin-ajax.php' );
159
-
160
- if ( is_ssl() ) {
161
- $installer_ajax_url = str_replace( 'http://', 'https://', $installer_ajax_url );
162
- } else {
163
- $installer_ajax_url = str_replace( 'https://', 'http://', $installer_ajax_url );
164
- }
165
-
166
- //Case where user is subscribed to a subscription that does not have themes
167
- $subscription_js_check = $this->installer_theme_subscription_does_not_have_theme( $js_array );
168
-
169
- wp_localize_script( 'installer-theme-install', 'installer_theme_install_localize',
170
- array(
171
- 'js_array_installer' => $js_array,
172
- 'ajaxurl' => $installer_ajax_url,
173
- 'no_associated_themes' => $subscription_js_check,
174
- 'installer_theme_frontend_selected_tab_nonce' => wp_create_nonce( 'installer_theme_frontend_selected_tab' )
175
- )
176
- );
177
- }
178
- }
179
- }
180
-
181
- /** Case where user is subscribed to a subscription that does not have themes */
182
- protected function installer_theme_subscription_does_not_have_theme( $js_array ) {
183
-
184
- $any_subscription_has_theme = array();
185
- $number_of_registrations = array();
186
-
187
- //Step1, we looped through JS array
188
- foreach ( $js_array as $repo_slug => $js_details ) {
189
-
190
- //Step2, checked if user is registered
191
- if ( isset($this->theme_user_registration[$repo_slug]) ) {
192
- $registration_status = $this->theme_user_registration[$repo_slug];
193
- if ( $registration_status ) {
194
-
195
- //Registered
196
- $number_of_registrations[] = $repo_slug;
197
-
198
- //Step3, we checked if the $repo_slug has available theme
199
- $themes_available = false;
200
- if ( isset($this->installer_themes[$repo_slug]) ) {
201
- $themes_available = $this->installer_themes[$repo_slug];
202
- if ( !(empty($themes_available)) ) {
203
- //This subscription has theme
204
- $themes_available = true;
205
- }
206
- }
207
-
208
- if ( $themes_available ) {
209
- $any_subscription_has_theme[] = $repo_slug;
210
- }
211
- }
212
- }
213
-
214
- }
215
-
216
- //Step4, we are done looping, check if there are any repos that have themes
217
- if ( empty($registration_status) ) {
218
-
219
- //No registration on any repos
220
- return FALSE;
221
-
222
- } elseif ( !(empty($registration_status)) ) {
223
-
224
- //Has some registration on some repos
225
- //We then checked if this user has any active subscriptions
226
- if ( empty($any_subscription_has_theme) ) {
227
- //No subscription
228
- return TRUE;
229
- } else {
230
- //Has subscription found
231
- return FALSE;
232
- }
233
- }
234
- }
235
-
236
- /** Check if its the commercial plugin screen */
237
- private function installer_theme_is_commercial_plugin_screen( $current_screen ) {
238
- $commercial = false;
239
- if ( ('plugin-install' == $current_screen) || ('plugin-install-network' == $current_screen) ) {
240
- if ( isset($_GET['tab']) ) {
241
- $tab = sanitize_text_field( $_GET['tab'] );
242
- if ( 'commercial' == $tab ) {
243
- $commercial = true;
244
- }
245
- }
246
- }
247
- return $commercial;
248
- }
249
-
250
- /** Current screen */
251
- private function installer_theme_current_screen() {
252
-
253
- $current_screen_loaded = false;
254
-
255
- if ( function_exists( 'get_current_screen' ) ) {
256
-
257
- $screen_output = get_current_screen();
258
- $current_screen_loaded = $screen_output->id;
259
-
260
- }
261
-
262
- return $current_screen_loaded;
263
-
264
- }
265
-
266
- /** Override WordPress Themes API */
267
- public function installer_theme_api_override( $api_boolean, $action, $args ) {
268
-
269
- //Let's checked if user is browsing our themes
270
- if ( isset($args->browse) ) {
271
- $browse = $args->browse;
272
- if ( in_array( $browse, $this->theme_repo ) ) {
273
- //Uniquely validated for our Themes
274
- if ( 'query_themes' == $action ) {
275
- //User is querying or asking information about our themes, let's override
276
- $api_boolean = true;
277
- }
278
- }
279
- } elseif ( isset($args->slug) ) {
280
- //We are installing our themes
281
- $theme_to_install = $args->slug;
282
-
283
- //Lets uniquely validate if this belongs to us
284
- //Check if this is OTGS theme
285
- $validate_check = $this->installer_themes_belong_to_us( $theme_to_install );
286
- if ( $validate_check ) {
287
- //Belongs to us
288
- if ( !(empty($theme_to_install)) ) {
289
- $api_boolean = true;
290
- }
291
- }
292
- }
293
-
294
- return $api_boolean;
295
- }
296
-
297
- /** Override WordPress Themes API response with our own themes API*/
298
- public function installer_theme_api_override_response( $res, $action, $args ) {
299
-
300
- if ( true === $res ) {
301
- if ( isset($args->browse) ) {
302
- $browse = $args->browse;
303
- if ( in_array( $browse, $this->theme_repo ) ) {
304
- //Uniquely validated for our themes
305
- if ( 'query_themes' == $action ) {
306
- //Client querying OTGS themes
307
- //Check for registration status
308
- if ( isset($this->theme_user_registration[$browse]) ) {
309
- //Set
310
- if ( !($this->theme_user_registration[$browse]) ) {
311
- //Not registered yet
312
- $res = new stdClass();
313
- $res->info = array();
314
- $res->themes = array();
315
- return $res;
316
- } else {
317
- //Registered
318
- $themes = $this->installer_theme_get_themes( '', $browse );
319
- $res = $this->installer_theme_format_response( $themes, $action );
320
- }
321
- }
322
- }
323
- }
324
- } elseif ( isset($args->slug) ) {
325
- //We are installing theme
326
- //Lets uniquely validate if this belongs to our theme
327
- $theme_to_install = $args->slug;
328
-
329
- //Lets uniquely validate if this belongs to us
330
- //Check if this is OTGS theme
331
- $validate_check = $this->installer_themes_belong_to_us( $theme_to_install );
332
- if ( $validate_check ) {
333
- //Belongs to us
334
- if ( ($res) && ('theme_information' == $action) ) {
335
- $themes = $this->installer_theme_get_themes( '', $this->installer_theme_active_tab );
336
- $res = $this->installer_theme_format_response( $themes, $action, $args->slug );
337
- }
338
- }
339
- }
340
- return $res;
341
- } else {
342
- //Default WP Themes here
343
- $client_side_active_tab = get_option( 'wp_installer_clientside_active_tab' );
344
- if ( $client_side_active_tab ) {
345
- if ( !(in_array( $client_side_active_tab, $this->theme_repo )) ) {
346
- //Not OTGS tab
347
- return $res;
348
- }
349
- }
350
-
351
- }
352
- }
353
-
354
- /** Get Themes */
355
- private function installer_theme_get_themes( $product_url = '', $repo_source = '' ) {
356
-
357
- //Query API
358
- if ( empty($product_url) ) {
359
- //Not set
360
- if ( isset($this->repository_theme_products[$this->installer_theme_active_tab]) ) {
361
- $query_remote_url = $this->repository_theme_products[$this->installer_theme_active_tab];
362
- }
363
-
364
- } else {
365
- $query_remote_url = $product_url;
366
- }
367
-
368
- //Let's retrieved current installer settings so we won't be querying all the time
369
- $current_installer_settings = WP_Installer()->get_settings();
370
-
371
- //Set $themes to FALSE by default
372
- $themes = false;
373
-
374
- if ( (is_array( $current_installer_settings )) && (!(empty($current_installer_settings))) ) {
375
-
376
- //Set and already defined, retrieved $products
377
- if ( isset($current_installer_settings['repositories'][$repo_source]['data']) ) {
378
- $products = $current_installer_settings['repositories'][$repo_source]['data'];
379
- if ( isset($products['downloads']['themes']) ) {
380
- $themes = $products['downloads']['themes'];
381
- }
382
- }
383
-
384
- } else {
385
-
386
- //Call API
387
- $response = wp_remote_get( $query_remote_url );
388
-
389
- if ( is_wp_error( $response ) ) {
390
- //Error detected: http fallback
391
- $query_remote_url = preg_replace( "@^https://@", 'http://', $query_remote_url );
392
- $response = wp_remote_get( $query_remote_url );
393
- }
394
-
395
- if ( !(is_wp_error( $response )) ) {
396
- //Not WP error
397
- //Evaluate response
398
- if ( $response && isset($response['response']['code']) && $response['response']['code'] == 200 ) {
399
- //In this case, response is set and defined, proceed...
400
- $body = wp_remote_retrieve_body( $response );
401
- if ( $body ) {
402
- $products = json_decode( $body, true );
403
- if ( isset($products['downloads']['themes']) ) {
404
- $themes = $products['downloads']['themes'];
405
- }
406
- }
407
-
408
- }
409
- }
410
- }
411
-
412
- //Return themes, can be filtered by user subscription type
413
- return apply_filters( 'installer_theme_get_themes', $themes, $this->installer_theme_active_tab );
414
- }
415
-
416
- /** Format response in compatibility with WordPress Theme API response */
417
- private function installer_theme_format_response( $themes, $action, $slug = '' ) {
418
-
419
- //Let's append download link only when retrieving theme information for installation
420
- if ( ('theme_information' == $action) && (!(empty($slug))) ) {
421
-
422
- //Only return one result -> the theme to be installed
423
- foreach ( $themes as $k => $theme ) {
424
- if ( $slug == $theme['basename'] ) {
425
- $theme['download_link'] = WP_Installer()->append_site_key_to_download_url( $theme['url'], $this->installer_site_key[$this->installer_theme_active_tab], $this->installer_theme_active_tab );
426
- $theme = json_decode( json_encode( $theme ), FALSE );
427
- return $theme;
428
- }
429
- }
430
-
431
- } else {
432
-
433
- $res = new stdClass();
434
- $res->info = array();
435
- $res->themes = array();
436
-
437
- //Define info
438
- $res->info['page'] = 1;
439
- $res->info['pages'] = 10;
440
-
441
- //Let's count available themes ;
442
- $res->info['results'] = count( $themes );
443
-
444
- //Let's saved themes for easy access later on
445
- $this->installer_theme_savethemes_by_slug( $themes );
446
-
447
- //Let's defined available themes
448
- if ( isset($this->installer_theme_subscription_type) ) {
449
- //Has subscription type defined, let's saved what is associated with this subscription
450
- $this->installer_theme_available( $this->installer_theme_active_tab, $this->installer_theme_subscription_type );
451
- } else {
452
- $this->installer_theme_available( $this->installer_theme_active_tab );
453
- }
454
-
455
- //Let's add themes to the overriden WordPress API Theme response
456
- /** Installer 1.7.6: Update to compatible data format response from WP Theme API */
457
- $theme_compatible_array=array();
458
- if ((is_array($themes))) {
459
- foreach ($themes as $k=>$v) {
460
- $theme_compatible_array[]=(object)($v);
461
- }
462
- }
463
- $res->themes = $theme_compatible_array;
464
- $res->themes = apply_filters( 'installer_theme_hook_response_theme', $res->themes );
465
- return $res;
466
- }
467
- }
468
-
469
- /** Let's save all available themes by its slug after any latest API query */
470
- private function installer_theme_savethemes_by_slug( $themes, $doing_query = false ) {
471
-
472
- if ( !($doing_query) ) {
473
- $this->installer_themes[$this->installer_theme_active_tab] = array();
474
- }
475
-
476
- if ( !(empty($themes)) ) {
477
- $themes_for_saving = array();
478
- foreach ( $themes as $k => $theme ) {
479
- if ( !($doing_query) ) {
480
- if ( isset($theme['slug']) ) {
481
- $theme_slug = $theme['slug'];
482
- if ( !(empty($theme_slug)) ) {
483
- $themes_for_saving[] = $theme_slug;
484
- }
485
- }
486
- } else {
487
-
488
- if ( ((isset($theme['slug'])) && (isset($theme['version'])) &&
489
- (isset($theme['theme_page_url']))) && (isset($theme['url']))
490
- ) {
491
- $theme_slug = $theme['slug'];
492
- $theme_version = $theme['version'];
493
- $theme_page_url = $theme['theme_page_url'];
494
- $theme_url = $theme['url'];
495
- if ( (!(empty($theme_slug))) && (!(empty($theme_version))) &&
496
- (!(empty($theme_page_url))) && (!(empty($theme_url)))
497
- ) {
498
- //$theme_slug is unique for every theme
499
- $themes_for_saving[$theme_slug] = array(
500
- 'version' => $theme_version,
501
- 'theme_page_url' => $theme_page_url,
502
- 'url' => $theme_url
503
- );
504
-
505
- }
506
- }
507
- }
508
-
509
- }
510
-
511
- if ( !(empty($themes_for_saving)) ) {
512
- //Has themes for saving
513
- if ( !($doing_query) ) {
514
- //Not doing query
515
- $existing_themes = get_option( $this->installer_themes_option[$this->installer_theme_active_tab] );
516
- if ( !($existing_themes) ) {
517
- //Does not yet exists
518
- delete_option( $this->installer_themes_option[$this->installer_theme_active_tab] );
519
- update_option( $this->installer_themes_option[$this->installer_theme_active_tab], $themes_for_saving );
520
- } else {
521
- //exists, check if we need to update
522
- if ( $existing_themes == $themes_for_saving ) {
523
- //Equal, no need to update here
524
- } else {
525
- //Update
526
- delete_option( $this->installer_themes_option[$this->installer_theme_active_tab] );
527
- update_option( $this->installer_themes_option[$this->installer_theme_active_tab], $themes_for_saving );
528
- }
529
- }
530
- } else {
531
- //Used for query purposes only, don't save anything
532
- return $themes_for_saving;
533
- }
534
- }
535
- }
536
- }
537
-
538
- /** Available themes */
539
- private function installer_theme_available( $repo, $subscription_type = '' ) {
540
-
541
- $subscription_type = intval( $subscription_type );
542
- if ( $subscription_type > 0 ) {
543
-
544
- //Here we have a case of validated subscription
545
- //We need to set themes that is available to this subscription
546
- $themes_associated_with_subscription = $this->installer_themes[$repo] = $this->installer_theme_get_themes_by_subscription( $subscription_type, $repo );
547
- if ( !(empty($themes_associated_with_subscription)) ) {
548
- //Has themes
549
- $this->installer_themes[$repo] = $themes_associated_with_subscription;
550
- }
551
- } else {
552
-
553
- //Get themes
554
- $this->installer_themes[$repo] = get_option( $this->installer_themes_option[$repo] );
555
- }
556
- }
557
-
558
- /** Theme upgrade check */
559
- public function installer_theme_upgrade_check( $the_value ) {
560
-
561
- //Step1: Let's looped through repos with themes and check if we have updates available for them.
562
- if ( (is_array( $this->installer_repo_with_themes )) && (!(empty($this->installer_repo_with_themes))) ) {
563
- foreach ( $this->installer_repo_with_themes as $k => $repo_slug ) {
564
- //Step2: Let's checked if we have update for this theme
565
- $update_available = get_option( $this->installer_themes_available_updates[$repo_slug] );
566
- if ( $update_available ) {
567
- if ( (is_array( $update_available )) && (!(empty($update_available))) ) {
568
- //Has updates available coming from this specific theme repo
569
- //Let's loop through the themes that needs update
570
- foreach ( $update_available as $theme_slug => $v ) {
571
- //Add to response API
572
- $the_value->response [$theme_slug] = array(
573
- 'theme' => $theme_slug,
574
- 'new_version' => $v['new_version'],
575
- 'url' => $v['url'],
576
- 'package' => $v['package']
577
- );
578
- }
579
- }
580
- }
581
- }
582
- }
583
- //Return
584
- return $the_value;
585
- }
586
-
587
- /** Return repositories that has themes */
588
- private function installer_theme_reposities_that_has_themes( $repositories, $ret_value = true, $doing_api_query = false ) {
589
-
590
- $repositories_with_themes = array();
591
-
592
- if ( (is_array( $repositories )) && (!(empty($repositories))) ) {
593
-
594
- //Let's checked if we have something before
595
- $themes = get_option( 'installer_repositories_with_theme' );
596
-
597
- if ( (!($themes)) || ($doing_api_query) ) {
598
- //Not yet defined
599
- //Loop through each repositories and check whether they have themes
600
- foreach ( $repositories as $k => $v ) {
601
- if ( isset($v['products']) ) {
602
- $products_url = $v['products'];
603
- $themes = $this->installer_theme_get_themes( $products_url, $k );
604
- if ( (is_array( $themes )) && (!(empty($themes))) ) {
605
- //Repo has themes
606
- $repositories_with_themes[] = $k;
607
- }
608
- }
609
- }
610
- } else {
611
- //Already set
612
- $repositories_with_themes = $themes;
613
- }
614
-
615
- if ( (((is_array( $repositories_with_themes )) && (!(empty($repositories_with_themes)))) && (!($themes))) || ($doing_api_query) ) {
616
- //Save to db
617
- update_option( 'installer_repositories_with_theme', $repositories_with_themes );
618
- }
619
- }
620
-
621
- if ( $ret_value ) {
622
- return $repositories_with_themes;
623
- }
624
-
625
- }
626
-
627
- /** When WordPress queries its own Themes API, we sync with our own */
628
- public function installer_theme_sync_native_wp_api( $response, $responsetext, $class, $args, $url ) {
629
-
630
- $api_native_string = 'api.wordpress.org/themes/';
631
- if ( (strpos( $url, $api_native_string ) !== false) ) {
632
- //WordPress is querying its own themes API
633
- $installer_repositories = WP_Installer()->get_repositories();
634
-
635
- //Query our own API and update repository values too
636
- $this->installer_theme_reposities_that_has_themes( $installer_repositories, false, true );
637
- }
638
- }
639
-
640
- /** Returns product name by theme repo slug */
641
- private function installer_theme_get_repo_product_name( $theme_repo ) {
642
-
643
- $theme_repo_name = false;
644
-
645
- if ( isset(WP_Installer()->settings['repositories'][$theme_repo]['data']['product-name']) ) {
646
- //Set
647
- $prod_name = WP_Installer()->settings['repositories'][$theme_repo]['data']['product-name'];
648
- if ( !(empty($prod_name)) ) {
649
- $theme_repo_name = $prod_name;
650
- }
651
- } else {
652
- //Not yet
653
- if ( $theme_repo == $this->theme_repo ) {
654
- $result = $this->installer_theme_general_api_query();
655
- if ( isset($result['product-name']) ) {
656
- $product_name = $result['product-name'];
657
- if ( !(empty($product_name)) ) {
658
- $theme_repo_name = $product_name;
659
- }
660
- }
661
- }
662
- }
663
-
664
- return $theme_repo_name;
665
- }
666
-
667
- /** General query API method, returns $products */
668
- private function installer_theme_general_api_query() {
669
- $products = false;
670
- $response = wp_remote_get( $this->repository_theme_products );
671
- if ( !(is_wp_error( $response )) ) {
672
- //Not WP error
673
- //Evaluate response
674
- if ( $response && isset($response['response']['code']) && $response['response']['code'] == 200 ) {
675
- //In this case, response is set and defined, proceed...
676
- $body = wp_remote_retrieve_body( $response );
677
- if ( $body ) {
678
- $result = json_decode( $body, true );
679
- if ( (is_array( $result )) && (!(empty($result))) ) {
680
- $products = $result;
681
- }
682
- }
683
-
684
- }
685
- }
686
-
687
- return $products;
688
- }
689
-
690
- /** General method to check if themes are OTGS themes based on its slug*/
691
- private function installer_themes_belong_to_us( $theme_slug ) {
692
-
693
- $found = false;
694
- $theme_slug = trim( $theme_slug );
695
-
696
- foreach ( $this->installer_themes as $repo_with_theme => $themes ) {
697
- foreach ( $themes as $k => $otgs_theme_slug ) {
698
- if ( $theme_slug == $otgs_theme_slug ) {
699
- //match found! Theme belongs to otgs
700
- return true;
701
- }
702
- }
703
- }
704
- return $found;
705
-
706
- }
707
-
708
- /** Sets active tab on init */
709
- public function installer_theme_sets_active_tab_on_init() {
710
-
711
- if ( isset ($_SERVER ['REQUEST_URI']) ) {
712
- $request_uri = $_SERVER ['REQUEST_URI'];
713
- if ( isset ($_GET ['browse']) ) {
714
- $active_tab = sanitize_text_field( $_GET['browse'] );
715
- $this->installer_theme_active_tab = $active_tab;
716
- } elseif ( isset ($_POST ['request'] ['browse']) ) {
717
- $active_tab = sanitize_text_field ( $_POST['request']['browse'] );
718
- $this->installer_theme_active_tab = $active_tab;
719
- } elseif ( (isset ($_GET ['theme_repo'])) && (isset ($_GET ['action'])) ) {
720
- $theme_repo = sanitize_text_field( $_GET['theme_repo'] );
721
- $the_action = sanitize_text_field( $_GET['action'] );
722
- if ( ('install-theme' == $the_action) && (!(empty($theme_repo))) ) {
723
- $this->installer_theme_active_tab = $theme_repo;
724
- }
725
- } elseif ( wp_get_referer() ) {
726
- $referer = wp_get_referer();
727
- $parts = parse_url( $referer );
728
- if ( isset($parts['query']) ) {
729
- parse_str( $parts['query'], $query );
730
- if ( isset($query['browse']) ) {
731
- $this->installer_theme_active_tab = $query['browse'];
732
- }
733
- }
734
- }
735
- }
736
- }
737
-
738
- /** WP Theme API compatibility- added num ratings */
739
- /** Installer 1.7.6+ Added updated 'rating' field */
740
- public function installer_theme_add_num_ratings( $themes ) {
741
-
742
- if ( (is_array( $themes )) && (!(empty($themes))) ) {
743
- foreach ( $themes as $k => $v ) {
744
- if ( !(isset($v->num_ratings)) ) {
745
- $themes[$k]->num_ratings = 100;
746
- }
747
- if ( !(isset($v->rating)) ) {
748
- $themes[$k]->rating = 100;
749
- }
750
- }
751
- }
752
-
753
- return $themes;
754
- }
755
-
756
- /** When WordPress.org makes a call to its repository, let's run our own upgrade checks too */
757
- public function installer_theme_sync_call_wp_theme_api( $locales ) {
758
-
759
- $this->installer_theme_upgrade_theme_check();
760
-
761
- return $locales;
762
- }
763
-
764
- /** Upgrade theme check */
765
- private function installer_theme_upgrade_theme_check() {
766
-
767
- // Step1-> we get all installed themes in clients local themes directory
768
- $installed_themes = wp_get_themes();
769
-
770
- // Step2: We need to loop through each repository with themes
771
- foreach ( $this->installer_repo_with_themes as $k => $repo_slug ) {
772
-
773
- // We then need to retrieved the products URL for each of this repo
774
- $products_url = $this->repository_theme_products [$repo_slug];
775
-
776
- // Step3-> we get all available themes in our repository via API based on this URL
777
- $available_themes = $this->installer_theme_get_themes( $products_url, $repo_slug );
778
-
779
- if ( !($available_themes) ) {
780
-
781
- // API is not available as of the moment, return..
782
- return;
783
- } else {
784
-
785
- // We have available themes here...
786
- // Step4->let's simplify available themes data by slugs
787
- $simplified_available_themes = $this->installer_theme_savethemes_by_slug( $available_themes, true );
788
-
789
- // Step5->Let's loop through installed themes
790
- if ( (is_array( $installed_themes )) && (!(empty ($installed_themes))) ) {
791
- $otgs_theme_updates_available = array();
792
- foreach ( $installed_themes as $theme_slug => $theme_object ) {
793
- if ( array_key_exists( $theme_slug, $simplified_available_themes ) ) {
794
-
795
- // This is our theme
796
- // Step6->Let's get version of the local theme installed
797
- $local_version = $theme_object->get( 'Version' );
798
-
799
- // Step7->Let's get the latest version of this theme, page URL and download URL from our repository
800
- $repository_version = $simplified_available_themes [$theme_slug] ['version'];
801
- $theme_page_url = $simplified_available_themes [$theme_slug] ['theme_page_url'];
802
- $theme_download_url = $simplified_available_themes [$theme_slug] ['url'];
803
-
804
- // Step8->Let's compare the version
805
- if ( version_compare( $repository_version, $local_version, '>' ) ) {
806
-
807
- // Update available for this theme
808
- // Step9-> Define download URL with site key
809
- $package_url = WP_Installer()->append_site_key_to_download_url( $theme_download_url, $this->installer_site_key [$repo_slug], $repo_slug );
810
-
811
- //Step10-> Assign to updates array for later accessing.
812
- $otgs_theme_updates_available[$theme_slug] = array(
813
- 'theme' => $theme_slug,
814
- 'new_version' => $repository_version,
815
- 'url' => $theme_page_url,
816
- 'package' => $package_url
817
- );
818
- }
819
- }
820
- }
821
- //Exited the upgrade loop for this specific theme repository
822
- if ( !(empty($otgs_theme_updates_available)) ) {
823
- //Has updates
824
- update_option( $this->installer_themes_available_updates[$repo_slug], $otgs_theme_updates_available );
825
- } else {
826
- //No updates
827
- delete_option( $this->installer_themes_available_updates[$repo_slug] );
828
- }
829
-
830
- }
831
- }
832
- }
833
- }
834
-
835
- /** When the user is on Themes install page OTG themes repository, let's the currently selected tab */
836
- public function installer_theme_add_query_arg_tab( $url, $path, $blog_id = null ) {
837
-
838
- $wp_install_string = 'update.php?action=install-theme';
839
- if ( $path == $wp_install_string ) {
840
- if ( isset($this->installer_theme_active_tab) ) {
841
- if ( !(empty($this->installer_theme_active_tab)) ) {
842
- $url = add_query_arg( array(
843
- 'theme_repo' => $this->installer_theme_active_tab
844
- ), $url );
845
- }
846
- }
847
- }
848
- return $url;
849
- }
850
-
851
- /** Save frontend theme tab selected */
852
- public function installer_theme_frontend_selected_tab() {
853
- if ( isset($_POST["frontend_tab_selected"]) ) {
854
- check_ajax_referer( 'installer_theme_frontend_selected_tab', 'installer_theme_frontend_selected_tab_nonce' );
855
-
856
- //Client_side_active_tab
857
- $frontend_tab_selected = sanitize_text_field( $_POST['frontend_tab_selected'] );
858
- if ( !(empty($frontend_tab_selected)) ) {
859
- //Front end tab selected
860
- update_option( 'wp_installer_clientside_active_tab', $frontend_tab_selected, false );
861
-
862
- //Check for registration status
863
- if ( isset($this->theme_user_registration[$frontend_tab_selected]) ) {
864
- //Set
865
- if ( !($this->theme_user_registration[$frontend_tab_selected]) ) {
866
- //Not registered yet
867
-
868
- if ( is_multisite() ) {
869
- $admin_url_passed = network_admin_url();
870
- } else {
871
- $admin_url_passed = admin_url();
872
- }
873
-
874
- $registration_url = $admin_url_passed . 'plugin-install.php?tab=commercial#installer_repo_' . $frontend_tab_selected;
875
-
876
- //Message and link
877
- $theme_repo_name = $this->installer_theme_get_repo_product_name( $frontend_tab_selected );;
878
- $response['unregistered_messages'] = sprintf( __( 'To install and update %s, please %sregister%s %s for this site.', 'installer' ),
879
- $theme_repo_name, '<a href="' . $registration_url . '">', '</a>', $theme_repo_name );
880
-
881
- }
882
- }
883
-
884
- $response['output'] = $frontend_tab_selected;
885
- echo json_encode( $response );
886
- }
887
- die();
888
- }
889
- die();
890
- }
891
-
892
- /** Installer loaded aux hooks */
893
- public function installer_theme_loaded_hooks() {
894
-
895
- if ( isset($this->installer_theme_subscription_type) ) {
896
- $subscription_type = intval( $this->installer_theme_subscription_type );
897
- if ( $subscription_type > 0 ) {
898
- //Client is subscribed
899
- add_filter( 'installer_theme_get_themes', array($this, 'installer_theme_filter_themes_by_subscription'), 10, 2 );
900
- }
901
- }
902
-
903
- }
904
-
905
- /** Get themes by subscription type */
906
- protected function installer_theme_get_themes_by_subscription( $subscription_type, $repo ) {
907
-
908
- $themes_associated_with_subscription = array();
909
- if ( isset(WP_Installer()->settings['repositories'][$repo]['data']['packages']) ) {
910
- //Set
911
- $packages = WP_Installer()->settings['repositories'][$repo]['data']['packages'];
912
- $available_themes_subscription = array();
913
- foreach ( $packages as $package_id => $package_details ) {
914
- if ( isset($package_details['products']) ) {
915
- $the_products = $package_details['products'];
916
- foreach ( $the_products as $product_slug => $product_details ) {
917
- if ( isset($product_details['subscription_type']) ) {
918
- $subscription_type_from_settings = intval( $product_details['subscription_type'] );
919
- if ( $subscription_type_from_settings == $subscription_type ) {
920
- //We found the subscription
921
- if ( isset($product_details['themes']) ) {
922
- $themes_associated_with_subscription = $product_details['themes'];
923
- return $themes_associated_with_subscription;
924
- }
925
- }
926
- }
927
-
928
- }
929
- }
930
- }
931
- }
932
- return $themes_associated_with_subscription;
933
- }
934
-
935
- /** Filter API theme response according to user subscription */
936
- public function installer_theme_filter_themes_by_subscription( $themes, $active_tab ) {
937
-
938
- //Step1, we only filter OTGS themes
939
- $orig = is_array( $themes ) ? count( $themes ) : 0;
940
- if ( in_array( $active_tab, $this->theme_repo ) ) {
941
- //OTGS Theme
942
- //Step2, we retrieved the available themes based on client subscription
943
- if ( isset($this->installer_themes[$active_tab]) ) {
944
- $available_themes = $this->installer_themes[$active_tab];
945
- //Step3, we filter $themes based on this info
946
- if ( (is_array( $themes )) && (!(empty($themes))) ) {
947
- foreach ( $themes as $k => $theme ) {
948
- //Step4, get theme slug
949
- if ( isset($theme['slug']) ) {
950
- $theme_slug = $theme['slug'];
951
- if ( !(empty($theme_slug)) ) {
952
- if ( !(in_array( $theme_slug, $available_themes )) ) {
953
- //This theme is not in available themes
954
- unset($themes[$k]);
955
- }
956
- }
957
- }
958
- }
959
- }
960
- }
961
- }
962
- $new = is_array( $themes ) ? count( $themes ) : 0;
963
- if ( $orig != $new ) {
964
- //It is filtered
965
- $themes = array_values( $themes );
966
- }
967
-
968
- return $themes;
969
- }
970
-
971
- /** Hook to wp_loaded, fires when all Installer theme class is ready */
972
- public function installer_themes_support_set_up_func() {
973
- do_action( 'installer_themes_support_set_up' );
974
- }
975
-
976
- }
977
-
978
- /** Instantiate Installer Theme Class */
979
- new Installer_Theme_Class;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-installer-upgrader-skins.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
-
3
- class Installer_Upgrader_Skins extends WP_Upgrader_Skin {
4
-
5
- function __construct( $args = array() ) {
6
- $defaults = array( 'url' => '', 'nonce' => '', 'title' => '', 'context' => false );
7
- $this->options = wp_parse_args( $args, $defaults );
8
- }
9
-
10
- function header() {
11
-
12
- }
13
-
14
- function footer() {
15
-
16
- }
17
-
18
- function error( $error ) {
19
- $this->installer_error = $error;
20
- }
21
-
22
- function add_strings() {
23
-
24
- }
25
-
26
- function feedback( $string ) {
27
-
28
- }
29
-
30
- function before() {
31
-
32
- }
33
-
34
- function after() {
35
-
36
- }
37
-
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-filename-hooks.php DELETED
@@ -1,33 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_Filename_Hooks {
4
-
5
- /**
6
- * @var OTGS_Installer_PHP_Functions
7
- */
8
- private $built_in_functions;
9
-
10
- public function __construct( OTGS_Installer_PHP_Functions $built_in_functions ) {
11
- $this->built_in_functions = $built_in_functions;
12
- }
13
-
14
- public function add_hooks() {
15
- if ( in_array( $this->built_in_functions->constant( 'PHP_OS' ), array( 'WIN32', 'WINNT', 'Windows' ), true ) ) {
16
- add_filter( 'wp_unique_filename', array( $this, 'fix_filename_for_win' ), 10, 3 );
17
- }
18
- }
19
-
20
- /**
21
- * @param string $filename
22
- * @param string $ext
23
- * @param string $dir
24
- *
25
- * @return string
26
- */
27
- public function fix_filename_for_win( $filename, $ext, $dir ) {
28
- if ( $dir === get_temp_dir() ) {
29
- return md5( $filename . $this->built_in_functions->time() ) . 'tmp';
30
- }
31
- return $filename;
32
- }
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-icons.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_Icons {
4
-
5
- /**
6
- * @var WP_Installer
7
- */
8
- private $installer;
9
-
10
- /**
11
- * @var array
12
- */
13
- private $products_map;
14
-
15
- public function __construct( WP_Installer $installer ) {
16
- $this->installer = $installer;
17
- }
18
-
19
- public function add_hooks() {
20
- add_filter( 'otgs_installer_upgrade_check_response', array( $this, 'add_icons_on_response' ), 10, 3 );
21
- }
22
-
23
- /**
24
- * @param stdClass $response
25
- * @param string $plugin_id
26
- *
27
- * @return stdClass
28
- */
29
- public function add_icons_on_response( $response, $plugin_id, $repository ) {
30
- $product = isset( $this->installer->settings['repositories'][ $repository ]['data']['products-map'][ $plugin_id ] )
31
- ? $this->installer->settings['repositories'][ $repository ]['data']['products-map'][ $plugin_id ]
32
- : '';
33
-
34
- if ( $product ) {
35
- $base = $this->installer->plugin_url() . '/vendor/otgs/icons/plugin-icons/' . $repository . '/' . $product . '/icon';
36
- $response->icons = array(
37
- 'svg' => $base . '.svg',
38
- '1x' => $base . '.png',
39
- '2x' => $base . '.png',
40
- );
41
- }
42
-
43
- return $response;
44
- }
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-php-functions.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_PHP_Functions {
4
-
5
- /**
6
- * @param string $constant_name
7
- *
8
- * @return bool
9
- */
10
- public function defined( $constant_name ) {
11
- return defined( $constant_name );
12
- }
13
-
14
- /**
15
- * @param string $constant_name
16
- *
17
- * @return string|int|null
18
- */
19
- public function constant( $constant_name ) {
20
- return $this->defined( $constant_name ) ? constant( $constant_name ) : null;
21
- }
22
-
23
- /**
24
- * @return int
25
- */
26
- public function time() {
27
- return time();
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-plugins-page-notice.php DELETED
@@ -1,118 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_Plugins_Page_Notice {
4
-
5
- const TEMPLATE = 'plugins-page';
6
- const DISPLAY_SUBSCRIPTION_NOTICE_KEY = 'display_subscription_notice';
7
- const DISPLAY_SETTING_NOTICE_KEY = 'display_setting_notice';
8
-
9
- private $plugins = array();
10
-
11
- /**
12
- * @var OTGS_Installer_Twig_Template_Service
13
- */
14
- private $template_service;
15
-
16
- /**
17
- * @var OTGS_Installer_WP_Share_Local_Components_Setting
18
- */
19
- private $setting;
20
-
21
- public function __construct( OTGS_Installer_Twig_Template_Service $template_service, OTGS_Installer_WP_Share_Local_Components_Setting $setting ) {
22
- $this->template_service = $template_service;
23
- $this->setting = $setting;
24
- }
25
-
26
- public function add_hooks() {
27
- foreach ( $this->get_plugins() as $plugin_id => $plugin_data ) {
28
- add_action( 'after_plugin_row_' . $plugin_id, array(
29
- $this,
30
- 'show_purchase_notice_under_plugin'
31
- ), 10, 3 );
32
- }
33
- }
34
-
35
- /**
36
- * @return array
37
- */
38
- public function get_plugins() {
39
- return $this->plugins;
40
- }
41
-
42
- public function add_plugin( $plugin_id, $plugin_data ) {
43
- $this->plugins[ $plugin_id ] = $plugin_data;
44
- }
45
-
46
- /**
47
- * @param string $plugin_file
48
- * @param array $plugin_data
49
- * @param string $status
50
- */
51
- public function show_purchase_notice_under_plugin( $plugin_file, $plugin_data, $status ) {
52
- echo $this->template_service->show( $this->get_model( $plugin_data, $plugin_file ), self::TEMPLATE );
53
- }
54
-
55
- /**
56
- * @param array $plugin_data
57
- *
58
- * @return array
59
- */
60
- private function get_model( $plugin_data, $plugin_file ) {
61
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
62
-
63
- $tr_classes = 'plugin-update-tr';
64
- $notice_classes = 'update-message installer-q-icon';
65
-
66
- if ( version_compare( get_bloginfo( 'version' ), '4.6', '>=' ) ) {
67
- $tr_classes = 'plugin-update-tr installer-plugin-update-tr';
68
- $notice_classes = 'notice inline notice-warning notice-alt';
69
- }
70
-
71
- if ( is_multisite() ) {
72
- if ( is_network_admin() ) {
73
- $menu_url = network_admin_url( 'plugin-install.php?tab=commercial' );
74
- } else {
75
- $menu_url = admin_url( 'options-general.php?page=installer' );
76
- }
77
- } else {
78
- $menu_url = admin_url( 'plugin-install.php?tab=commercial' );
79
- }
80
-
81
- $plugin_name = false !== strpos( $plugin_data['Name'], 'WPML' ) ? 'WPML' : 'Toolset';
82
- $plugin_site = 'wpml.org';
83
-
84
- if ( 'Toolset' === $plugin_name ) {
85
- $plugin_site = 'wp-types.com';
86
- }
87
-
88
- $repo = strtolower( $plugin_name );
89
-
90
- return array(
91
- 'strings' => array(
92
- 'valid_subscription' => sprintf( __( 'You must have a valid subscription in order to get upgrades or support for this plugin. %sPurchase a subscription or enter an existing site key%s.', 'installer' ),
93
- '<a href="' . $menu_url . '">', '</a>' ),
94
- 'send_report' => sprintf( __( '%1$s can report to your %2$s account which theme and plugins you are using. This information allows us to give you more accurate and faster support.', 'installer' ),
95
- $plugin_name,
96
- '<a target="_blank" href="' . $plugin_data['PluginURI'] . '">' . $plugin_site . '</a>'
97
- ),
98
- ),
99
- 'css' => array(
100
- 'tr_classes' => $tr_classes,
101
- 'notice_classes' => $notice_classes,
102
- ),
103
- 'col_count' => $wp_list_table->get_column_count(),
104
- 'nonce' => array(
105
- 'action' => OTGS_Installer_WP_Components_Setting_Ajax::AJAX_ACTION,
106
- 'value' => wp_create_nonce( OTGS_Installer_WP_Components_Setting_Ajax::AJAX_ACTION ),
107
- ),
108
- 'repo' => $repo,
109
- 'repo_checked' => checked( $this->setting->is_repo_allowed( $repo ), true, false ),
110
- 'should_display_subscription_notice' => isset( $this->plugins[ $plugin_file ][ self::DISPLAY_SUBSCRIPTION_NOTICE_KEY ] )
111
- ? $this->plugins[ $plugin_file ][ self::DISPLAY_SUBSCRIPTION_NOTICE_KEY ]
112
- : false,
113
- 'should_display_setting_notice' => isset( $this->plugins[ $plugin_file ][ self::DISPLAY_SETTING_NOTICE_KEY ] )
114
- ? $this->plugins[ $plugin_file ][ self::DISPLAY_SETTING_NOTICE_KEY ]
115
- : false,
116
- );
117
- }
118
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-components-hooks.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Components_Hooks {
4
-
5
- const EVENT_HOOK = 'otgs_send_components_data';
6
-
7
- /**
8
- * @var OTGS_Installer_WP_Components_Storage
9
- */
10
- private $storage;
11
-
12
- /**
13
- * @var OTGS_Installer_WP_Components_Sender
14
- */
15
- private $sender;
16
-
17
- /**
18
- * @var OTGS_Installer_WP_Share_Local_Components_Setting
19
- */
20
- private $setting;
21
-
22
- public function __construct(
23
- OTGS_Installer_WP_Components_Storage $storage,
24
- OTGS_Installer_WP_Components_Sender $sender,
25
- OTGS_Installer_WP_Share_Local_Components_Setting $setting
26
- ) {
27
- $this->storage = $storage;
28
- $this->sender = $sender;
29
- $this->setting = $setting;
30
- }
31
-
32
- public function add_hooks() {
33
- add_action( self::EVENT_HOOK, array( $this, 'send_components_data' ) );
34
- add_action( 'init', array( $this, 'schedule_components_report' ) );
35
- add_filter( 'installer_fetch_subscription_data_request', array( $this, 'add_components_into_subscription_request' ) );
36
- }
37
-
38
- public function schedule_components_report() {
39
- if ( ! wp_next_scheduled( self::EVENT_HOOK ) ) {
40
- wp_schedule_single_event( strtotime( '+1 week' ), self::EVENT_HOOK );
41
- }
42
- }
43
-
44
- public function send_components_data() {
45
- if ( $this->storage->is_outdated() ) {
46
- $this->storage->refresh_cache();
47
- $this->sender->send( $this->storage->get() );
48
- }
49
- }
50
-
51
- /**
52
- * @param array $args
53
- *
54
- * @return array
55
- */
56
- public function add_components_into_subscription_request( $args ) {
57
- if ( isset( $args['body']['repository_id'] ) && $this->setting->is_repo_allowed( $args['body']['repository_id'] ) ) {
58
- $this->storage->refresh_cache();
59
- $args['body']['components'] = $this->storage->get();
60
- $args['body']['phpversion'] = phpversion();
61
- }
62
-
63
- return $args;
64
- }
65
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-components-sender.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Components_Sender {
4
-
5
- /**
6
- * @var WP_Installer
7
- */
8
- private $installer;
9
-
10
- /**
11
- * @var OTGS_Installer_WP_Share_Local_Components_Setting
12
- */
13
- private $settings;
14
-
15
- public function __construct( WP_Installer $installer, OTGS_Installer_WP_Share_Local_Components_Setting $settings ) {
16
- $this->installer = $installer;
17
- $this->settings = $settings;
18
- }
19
-
20
- public function send( array $components ) {
21
-
22
- if ( ! $this->installer->get_repositories() ) {
23
- $this->installer->load_repositories_list();
24
- }
25
-
26
- if ( ! $this->installer->get_settings() ) {
27
- $this->installer->save_settings();
28
- }
29
-
30
- foreach ( $this->installer->get_repositories() as $key => $repository ) {
31
- if ( $this->settings->is_repo_allowed( $key ) ) {
32
- wp_remote_post(
33
- $repository['api-url'] . '?action=update_site_components',
34
- apply_filters( 'installer_fetch_components_data_request', array(
35
- 'body' => array(
36
- 'action' => 'update_site_components',
37
- 'site_key' => $this->installer->get_site_key( $key ),
38
- 'site_url' => get_site_url(),
39
- 'components' => $components,
40
- 'phpversion' => phpversion(),
41
- ),
42
- ) )
43
- );
44
- }
45
- }
46
- }
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-components-setting-ajax.php DELETED
@@ -1,46 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Components_Setting_Ajax {
4
-
5
- const AJAX_ACTION = 'otgs_save_setting_share_local_components';
6
-
7
- /**
8
- * @var OTGS_Installer_WP_Share_Local_Components_Setting
9
- */
10
- private $setting;
11
-
12
- /**
13
- * @var WP_Installer
14
- */
15
- private $installer;
16
-
17
- public function __construct( OTGS_Installer_WP_Share_Local_Components_Setting $setting, WP_Installer $installer ) {
18
- $this->setting = $setting;
19
- $this->installer = $installer;
20
- }
21
-
22
- public function add_hooks() {
23
- add_action( 'wp_ajax_' . self::AJAX_ACTION, array( $this, 'save' ) );
24
- }
25
-
26
- public function save() {
27
- if ( $this->is_valid_request() ) {
28
- $user_agree = (int) filter_var( $_POST['agree'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
29
- $repo_request = filter_var( $_POST['repo'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
30
- $repos = array();
31
- foreach ( $this->installer->get_repositories() as $repo_id => $repository ) {
32
- if ( $repo_id === $repo_request ) {
33
- $repos[ $repo_id ] = $user_agree;
34
- }
35
- }
36
- $this->setting->save( $repos );
37
- }
38
- }
39
-
40
- /**
41
- * @return bool
42
- */
43
- private function is_valid_request() {
44
- return isset( $_POST['nonce'] ) && wp_verify_nonce( $_POST['nonce'], self::AJAX_ACTION );
45
- }
46
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-components-setting-resources.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Components_Setting_Resources {
4
-
5
- /**
6
- * @var WP_Installer
7
- */
8
- private $installer;
9
-
10
- public function __construct( WP_Installer $installer ) {
11
- $this->installer = $installer;
12
- }
13
-
14
- public function add_hooks() {
15
- add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_resources' ) );
16
- }
17
-
18
- public function enqueue_resources() {
19
- wp_enqueue_style( 'otgs-installer-tooltip', $this->installer->res_url() . '/res/css/tooltip/tooltip.css', array( 'wp-pointer' ), WP_INSTALLER_VERSION );
20
- wp_enqueue_script( 'otgs-installer-tooltip', $this->installer->res_url() . '/res/js/tooltip/tooltip.js', array(
21
- 'wp-pointer',
22
- 'jquery'
23
- ), WP_INSTALLER_VERSION );
24
- wp_enqueue_script(
25
- 'otgs-installer-components-save-setting',
26
- $this->installer->res_url() . '/res/js/save-components-setting.js',
27
- array(),
28
- WP_INSTALLER_VERSION
29
- );
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-components-setting-templates.php DELETED
@@ -1,83 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Components_Setting_Templates {
4
-
5
- const COMMERCIAL_TAB_TEMPLATE = 'commercial-tab';
6
- const NOTICE_TEMPLATE = 'notice';
7
-
8
- /**
9
- * @var IOTGS_Installer_Template_Service
10
- */
11
- private $template_service;
12
-
13
- public function __construct( IOTGS_Installer_Template_Service $template_service ) {
14
- $this->template_service = $template_service;
15
- }
16
-
17
- /**
18
- * @param string $site_url
19
- * @param string $site_name
20
- */
21
- public function render_commercial( $site_url, $site_name, $repo_id ) {
22
- echo $this->template_service->show( $this->get_commercial_tab_model( $site_url, $site_name, $repo_id ), self::COMMERCIAL_TAB_TEMPLATE );
23
- }
24
-
25
- /**
26
- * @param array $sites
27
- */
28
- public function render_notice( $sites ) {
29
- echo $this->template_service->show( $this->get_notice_model( $sites ), self::NOTICE_TEMPLATE );
30
- }
31
-
32
- /**
33
- * @param string $site_url
34
- * @param string $site_name
35
- * @param string $repo_id
36
- *
37
- * @return array
38
- */
39
- private function get_commercial_tab_model( $site_url, $site_name, $repo_id ) {
40
- return array(
41
- 'strings' => array(
42
- 'message' => sprintf( __( 'Keep %s up-to-date about which theme and plugins I use', 'installer' ), $site_url ),
43
- 'stop_sending' => sprintf(
44
- __( 'If you ever want to stop sending the information about active plugins and theme to %1$s, please visit the Plugins admin screen. You will see a checkbox to control this in %2$s plugin section.', 'installer' ),
45
- $site_url,
46
- $site_name
47
- ),
48
- 'tooltip' => sprintf(
49
- __( 'Almost always, %s support team can help you resolve issues faster and better when we know which theme and plugin you use. When this option is selected, we will include this information in your %s account profile (which only you and %s support can access) and update it as needed.', 'installer' ),
50
- $site_name,
51
- $site_url,
52
- $site_name
53
- ),
54
- ),
55
- 'repo_id' => $repo_id,
56
- );
57
- }
58
-
59
- /**
60
- * @param array $site_names
61
- *
62
- * @return array
63
- */
64
- private function get_notice_model( array $site_names ) {
65
- $model = array(
66
- 'strings' => array(
67
- 'title' => sprintf( __( 'Want faster support for %s?', 'installer' ), implode( $site_names, '' ) ),
68
- 'message' => sprintf( __( '%s plugin can report to your wpml.org account which theme and plugins you are using. This information allows us to give you more accurate and faster support.', 'installer' ), implode( $site_names, '' ) ),
69
- ),
70
- );
71
-
72
- if ( 2 === count( $site_names ) ) {
73
- $model['strings']['title'] = __( 'Want faster support for WPML and Toolset?', 'installer' );
74
- $model['strings']['message'] = __( 'WPML and Toolset plugins can report to your wpml.org and wp-types.com accounts which theme and plugins you are using. This information allows us to give you more accurate and faster support.', 'installer' );
75
- }
76
-
77
- $model['strings']['agree'] = __( "I'm in", 'installer' );
78
- $model['strings']['disagree'] = __( 'No thanks', 'installer' );
79
- $model['strings']['tell_me_more'] = __( 'Tell me more', 'installer' );
80
-
81
- return $model;
82
- }
83
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-components-storage.php DELETED
@@ -1,74 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Components_Storage {
4
-
5
- const COMPONENTS_CACHE_OPTION_KEY = 'otgs_active_components';
6
-
7
- public function refresh_cache() {
8
- $active_theme = wp_get_theme();
9
- $installed_plugins = get_plugins();
10
- $components = array();
11
-
12
- foreach ( $installed_plugins as $file => $plugin ) {
13
- if ( is_plugin_active( $file ) ) {
14
- $components['plugin'][] = array(
15
- 'File' => $file,
16
- 'Name' => $plugin['Name'],
17
- 'Version' => $plugin['Version'],
18
- );
19
- }
20
- }
21
-
22
- $components['theme'][] = array(
23
- 'Template' => $active_theme->get_template(),
24
- 'Name' => $active_theme->get( 'Name' ),
25
- 'Version' => $active_theme->get( 'Version' ),
26
- );
27
-
28
- update_option( self::COMPONENTS_CACHE_OPTION_KEY, $components );
29
- }
30
-
31
- public function is_outdated() {
32
- $components = $this->get();
33
- $current_theme = wp_get_theme();
34
- $active_plugins = get_option( 'active_plugins' );
35
-
36
- if ( ! function_exists( 'get_plugins' ) ) {
37
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
38
- }
39
-
40
- $installed_plugins = get_plugins();
41
-
42
- if ( isset( $components['theme'] ) ) {
43
- if ( $components['theme'][0]['Template'] !== $current_theme->get_template() ||
44
- $components['theme'][0]['Version'] !== $current_theme->get( 'Version' )
45
- ) {
46
- return true;
47
- }
48
- }
49
-
50
- $cached_activated_plugins = wp_list_pluck( $components['plugin'], 'File' );
51
- sort( $cached_activated_plugins );
52
- sort( $active_plugins );
53
-
54
- if ( $cached_activated_plugins !== $active_plugins ) {
55
- return true;
56
- }
57
-
58
- if ( isset( $components['plugin'] ) ) {
59
- foreach ( $components['plugin'] as $plugin ) {
60
- if ( $plugin['Version'] !== $installed_plugins[ $plugin['File'] ]['Version'] ||
61
- ! is_plugin_active( $plugin['File'] )
62
- ) {
63
- return true;
64
- }
65
- }
66
- }
67
-
68
- return false;
69
- }
70
-
71
- public function get() {
72
- return get_option( self::COMPONENTS_CACHE_OPTION_KEY );
73
- }
74
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-otgs-installer-wp-share-local-components-setting.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_WP_Share_Local_Components_Setting {
4
-
5
- const OPTION_KEY = 'otgs_share_local_components';
6
-
7
- public function save( array $repos ) {
8
- $settings = array_merge( $this->get(), $repos );
9
- update_option( self::OPTION_KEY, $settings );
10
- }
11
-
12
- /**
13
- * @param string $repo
14
- *
15
- * @return bool
16
- */
17
- public function is_repo_allowed( $repo ) {
18
- $allowed_repos = $this->get();
19
-
20
- return isset( $allowed_repos[ $repo ] ) && $allowed_repos[ $repo ];
21
- }
22
-
23
- private function get() {
24
- $setting = get_option( self::OPTION_KEY );
25
- return $setting ? $setting : array();
26
- }
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-translation-service-info.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
-
3
- class Translation_Service_Info {
4
-
5
- function __construct() {
6
-
7
- add_action( 'installer_fetched_subscription_data', array( $this, 'save_info' ), 10, 2 );
8
-
9
- }
10
-
11
- function save_info( $data, $repository_id ) {
12
-
13
- $ts_info = isset( WP_Installer()->settings['repositories'][ $repository_id ]['ts_info'] ) ?
14
- WP_Installer()->settings['repositories'][ $repository_id ]['ts_info'] : false;
15
-
16
- $save_settings = false;
17
- if ( isset( $data->ts_info['preferred'] ) && empty( $ts_info['preferred'] ) ) {
18
- WP_Installer()->settings['repositories'][ $repository_id ]['ts_info']['preferred'] = $data->ts_info['preferred'];
19
- $save_settings = true;
20
- }
21
-
22
- if ( isset( $data->ts_info['referal'] ) && empty( $ts_info['referal'] ) ) {
23
- WP_Installer()->settings['repositories'][ $repository_id ]['ts_info']['referal'] = $data->ts_info['referal'];
24
- $save_settings = true;
25
- }
26
-
27
- if ( ! empty( $data->ts_info['client_id'] ) ) { // can be updated
28
- WP_Installer()->settings['repositories'][ $repository_id ]['ts_info']['client_id'] = $data->ts_info['client_id'];
29
- $save_settings = true;
30
- }
31
-
32
- if ( $save_settings ) {
33
- WP_Installer()->save_settings();
34
- }
35
-
36
- }
37
-
38
- }
39
-
40
- new Translation_Service_Info();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-wp-installer-api.php DELETED
@@ -1,134 +0,0 @@
1
- <?php
2
-
3
- class WP_Installer_API{
4
-
5
- public static function get_product_installer_link($repository_id, $package_id = false){
6
-
7
- $menu_url = WP_Installer()->menu_url();
8
-
9
- $url = $menu_url . '#' . $repository_id;
10
- if($package_id){
11
- $url .= '/' . $package_id;
12
- }
13
-
14
- return $url;
15
-
16
- }
17
-
18
- public static function get_product_price($repository_id, $package_id, $product_id, $incl_discount = false){
19
-
20
- $price = WP_Installer()->get_product_price($repository_id, $package_id, $product_id, $incl_discount);
21
-
22
- return $price;
23
- }
24
-
25
- /**
26
- * Retrieve the preferred translation service.
27
- *
28
- * @since 1.6.5
29
- *
30
- * @param string The repository id (e.g. wpml)
31
- * @return string The translation service id
32
- */
33
- public static function get_preferred_ts($repository_id = 'wpml'){
34
-
35
- if(isset(WP_Installer()->settings['repositories'][$repository_id]['ts_info']['preferred'])){
36
- return WP_Installer()->settings['repositories'][$repository_id]['ts_info']['preferred'];
37
- }
38
-
39
- return false;
40
-
41
- }
42
-
43
- /**
44
- * Set the preferred translation service.
45
- *
46
- * @since 1.6.5
47
- *
48
- * @param string The translation service id
49
- * @param string The repository id (e.g. wpml)
50
- */
51
- public static function set_preferred_ts( $value, $repository_id = 'wpml' ){
52
-
53
- if( isset( WP_Installer()->settings['repositories'][$repository_id]['ts_info']['preferred'] ) ){
54
-
55
- WP_Installer()->settings['repositories'][$repository_id]['ts_info']['preferred'] = $value;
56
-
57
- WP_Installer()->save_settings();
58
-
59
- }
60
-
61
- }
62
-
63
- /**
64
- * Retrieve the referring translation service (if any)
65
- *
66
- * @since 1.6.5
67
- *
68
- * @param string The repository id (e.g. wpml)
69
- * @return string The translation service id or false
70
- */
71
- public static function get_ts_referal($repository_id = 'wpml'){
72
-
73
- if(isset(WP_Installer()->settings['repositories'][$repository_id]['ts_info']['referal'])){
74
- return WP_Installer()->settings['repositories'][$repository_id]['ts_info']['referal'];
75
- }
76
-
77
- return false;
78
-
79
- }
80
-
81
- /**
82
- * Retrieve the translation services client id for a specific repository (if any)
83
- *
84
- * @since 1.7.9
85
- *
86
- * @param string The repository id (e.g. wpml)
87
- * @return string The client id or false
88
- */
89
- public static function get_ts_client_id( $repository_id = 'wpml' ){
90
-
91
- if(isset(WP_Installer()->settings['repositories'][$repository_id]['ts_info']['client_id'])){
92
- return WP_Installer()->settings['repositories'][$repository_id]['ts_info']['client_id'];
93
- }
94
-
95
- return false;
96
-
97
- }
98
-
99
- /**
100
- * Retrieve the site key corresponding to a repository.
101
- * This is a wrapper of WP_Installer::get_site_key()
102
- * @see WP_Installer::get_site_key()
103
- *
104
- * @since 1.7.9
105
- *
106
- * @param string The repository id (e.g. wpml)
107
- * @return string The site key (or false)
108
- */
109
- public static function get_site_key( $repository_id = 'wpml' ){
110
-
111
- return WP_Installer()->get_site_key( $repository_id );
112
-
113
- }
114
-
115
- /**
116
- * Retrieve the ID of the last user who registered a repository.
117
- *
118
- * @since 1.7.16
119
- *
120
- * @param string The repository id (e.g. wpml)
121
- * @return int The user id (or zero)
122
- */
123
- public static function get_registering_user_id( $repository_id = 'wpml' ){
124
-
125
- $user_id = 0;
126
- if( isset( WP_Installer()->settings['repositories'][$repository_id]['subscription']['registered_by'] ) ){
127
- $user_id = WP_Installer()->settings['repositories'][$repository_id]['subscription']['registered_by'];
128
- }
129
-
130
- return $user_id;
131
- }
132
-
133
-
134
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-wp-installer-channels.php DELETED
@@ -1,282 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Class WP_Installer_Channels
5
- * @since 1.8
6
- */
7
- class WP_Installer_Channels{
8
-
9
- const CHANNEL_PRODUCTION = 'production';
10
- const CHANNEL_BETA = 'beta';
11
- const CHANNEL_DEVELOPMENT = 'development';
12
-
13
- protected static $_instance = null;
14
-
15
- function __construct() {
16
- add_action( 'init', array( $this, 'init' ), 20 ); // after Installer
17
- }
18
-
19
- /**
20
- * @return null|WP_Installer_Channels
21
- */
22
- public static function instance() {
23
-
24
- if ( is_null( self::$_instance ) ) {
25
- self::$_instance = new self();
26
- }
27
-
28
- return self::$_instance;
29
- }
30
-
31
- /**
32
- * Get the channel literal id based on the numeric id
33
- *
34
- * @param mixed $id
35
- *
36
- * @return string
37
- */
38
- public static function channel_name_by_id( $id ) {
39
- if ( self::CHANNEL_DEVELOPMENT === $id ) {
40
- $channel = __( 'Development', 'installer' );
41
- } elseif ( self::CHANNEL_BETA === $id ) {
42
- $channel = __( 'Beta', 'installer' );
43
- } else {
44
- $channel = __( 'Production', 'installer' );
45
- }
46
-
47
- return $channel;
48
- }
49
-
50
- /**
51
- * Initialization
52
- */
53
- public function init(){
54
- global $pagenow;
55
-
56
- if ( defined( 'DOING_AJAX' ) ) {
57
- add_action( 'wp_ajax_installer_set_channel', array( $this, 'set_channel' ) );
58
- }
59
-
60
- if ( $pagenow === 'plugin-install.php' && isset( $_GET['tab'] ) && $_GET['tab'] === 'commercial' ) {
61
- wp_enqueue_script( 'installer-channels', WP_Installer()->res_url() . '/res/js/channels.js', array( 'jquery' ), WP_Installer()->version() );
62
- }
63
-
64
- }
65
-
66
- /**
67
- * Ajax handler for channel switching
68
- */
69
- public function set_channel(){
70
- $repository_id = sanitize_text_field( $_POST['repository_id'] );
71
- $channel = sanitize_text_field( $_POST['channel'] );
72
-
73
- $response = array();
74
-
75
- if( $_POST['nonce'] === wp_create_nonce( 'installer_set_channel:' . $repository_id ) ){
76
-
77
- if( isset( WP_Installer()->settings['repositories'][$repository_id] ) ){
78
- WP_Installer()->settings['repositories'][$repository_id]['channel'] = $channel;
79
- WP_Installer()->settings['repositories'][$repository_id]['no-prompt'] = $_POST['noprompt'] === 'true';
80
- WP_Installer()->save_settings();
81
- }
82
-
83
- WP_Installer()->refresh_repositories_data();
84
-
85
- $response['status'] = 'OK';
86
- }
87
-
88
- echo json_encode( $response );
89
- exit;
90
- }
91
-
92
- /**
93
- * @param string $repository_id
94
- *
95
- * @return int
96
- */
97
- public function get_channel( $repository_id ){
98
- $channel = self::CHANNEL_PRODUCTION;
99
- if( isset( WP_Installer()->settings['repositories'][$repository_id]['channel'] ) ){
100
- $channel = WP_Installer()->settings['repositories'][$repository_id]['channel'];
101
- }
102
- return $channel;
103
- }
104
-
105
- /**
106
- * @param $repository_id
107
- *
108
- * @return bool
109
- */
110
- private function get_no_prompt( $repository_id ) {
111
- $settings = WP_Installer()->settings;
112
-
113
- return ! empty( $settings['repositories'][ $repository_id ]['no-prompt'] );
114
- }
115
-
116
- /**
117
- * @param string $repository_id
118
- * @param array $downloads
119
- */
120
- public function load_channel_selector( $repository_id, $downloads ) {
121
-
122
- $available_channels = $this->get_available_channels( $repository_id );
123
-
124
- if ( $available_channels ) {
125
- $args = array(
126
- 'can_switch' => $this->can_use_unstable_channels( $downloads ) || $this->get_channel( $repository_id ) > 1,
127
- 'channels' => $available_channels,
128
- 'repository_id' => $repository_id,
129
- 'current_channel' => $this->get_channel( $repository_id ),
130
- 'no_prompt' => $this->get_no_prompt( $repository_id ),
131
- 'nonce' => wp_create_nonce( 'installer_set_channel:' . $repository_id )
132
- );
133
- extract( $args );
134
- include WP_Installer()->plugin_path() . '/templates/channel-selector.php';
135
- }
136
- }
137
-
138
- /**
139
- * The beta and development channels can be used only when already using the most up to date versions
140
- * @param array $downloads
141
- *
142
- * @return bool
143
- */
144
- public function can_use_unstable_channels( $downloads ){
145
-
146
- $can = true;
147
- foreach( $downloads as $download ){
148
- $available_version = $download['version'];
149
- $installed_version = WP_Installer()->plugin_is_installed( $download['name'], $download['slug'] );
150
- if( $installed_version !== false && version_compare( $available_version, $installed_version, '>' ) ){
151
- $can = false;
152
- break;
153
- }
154
- }
155
-
156
- return $can;
157
- }
158
-
159
- /**
160
- * Get available updates channels. Only include channels with actual downloads available.
161
- *
162
- * @param string $repository_id
163
- *
164
- * @return array
165
- */
166
- public function get_available_channels( $repository_id ) {
167
-
168
- $beta = false;
169
- $dev = false;
170
-
171
- $downloads = WP_Installer()->settings['repositories'][ $repository_id ]['data']['downloads'];
172
- foreach ( $downloads as $type => $download_types ) {
173
- foreach ( $download_types as $download ) {
174
- $extra_channels = isset( $download['extra_channels'] ) ? array_keys( $download['extra_channels'] ) : array();
175
- if ( ! $beta && in_array( self::CHANNEL_BETA, $extra_channels ) ) {
176
- $beta = true;
177
- }
178
- if ( ! $dev && in_array( self::CHANNEL_DEVELOPMENT, $extra_channels ) ) {
179
- $dev = true;
180
- }
181
- if ( $beta && $dev ) {
182
- break;
183
- }
184
- }
185
- }
186
-
187
- $channels = array();
188
- if ( $beta || $dev ) {
189
- $channels[ self::CHANNEL_PRODUCTION ] = self::channel_name_by_id( self::CHANNEL_PRODUCTION );
190
- if ( $beta ) {
191
- $channels[ self::CHANNEL_BETA ] = self::channel_name_by_id( self::CHANNEL_BETA );
192
- }
193
- if ( $dev ) {
194
- $channels[ self::CHANNEL_DEVELOPMENT ] = self::channel_name_by_id( self::CHANNEL_DEVELOPMENT );
195
- }
196
- }
197
-
198
- return $channels;
199
- }
200
-
201
- /**
202
- * @param string $repository_id
203
- * @param array $downloads
204
- *
205
- * @return array
206
- */
207
- public function filter_downloads_by_channel( $repository_id, $downloads ) {
208
-
209
- $current_channel = $this->get_channel( $repository_id );
210
-
211
- foreach ( $downloads as $type => $type_downloads ) {
212
- foreach ( $type_downloads as $slug => $download ) {
213
-
214
- $override_download = array();
215
- if ( $current_channel === self::CHANNEL_DEVELOPMENT ) {
216
- if( ! empty( $download['channels']['development'] ) ){
217
- $override_download = $download['channels']['development'];
218
- $override_download['channel'] = self::CHANNEL_DEVELOPMENT;
219
- }elseif( ! empty( $download['channels']['beta'] ) ){
220
- $override_download = $download['channels']['beta'];
221
- $override_download['channel'] = self::CHANNEL_BETA;
222
- }
223
- }elseif ( $current_channel === self::CHANNEL_BETA && ! empty( $download['channels']['beta'] ) ) {
224
- $override_download = $download['channels']['beta'];
225
- $override_download['channel'] = self::CHANNEL_BETA;
226
- }
227
-
228
- if ( $override_download ) {
229
- foreach ( $override_download as $key => $value ) {
230
- $downloads[ $type ][ $slug ][ $key ] = $value;
231
- }
232
- } else {
233
- $downloads[ $type ][ $slug ]['channel'] = self::CHANNEL_PRODUCTION;
234
- }
235
- unset ( $downloads[ $type ][ $slug ]['channels'] );
236
-
237
- $downloads[ $type ][ $slug ]['extra_channels'] = array();
238
- if( isset( $download['channels'] ) ) {
239
- foreach( $download['channels'] as $channel_id => $channel ){
240
- $downloads[ $type ][ $slug ]['extra_channels'][$channel_id] = array(
241
- 'version' => $channel['version']
242
- );
243
- }
244
- }
245
-
246
- }
247
- }
248
-
249
- return $downloads;
250
- }
251
-
252
- /**
253
- * Get the source channel for the installed version when on the Beta or Development channel
254
- * @param string $version
255
- * @param string $repository_id
256
- * @param string $download_id
257
- * @param string $download_kind
258
- *
259
- * @return string
260
- */
261
- public function get_download_source_channel( $version, $repository_id, $download_id, $download_kind ) {
262
-
263
- $version_channel = '';
264
- $installer_settings = WP_Installer()->get_settings();
265
- if ( isset( $installer_settings['repositories'][ $repository_id ] ) ) {
266
- $repository_data = $installer_settings['repositories'][ $repository_id ]['data'];
267
- if ( isset( $repository_data['downloads'][ $download_kind ][ $download_id ]['extra_channels'] ) ) {
268
-
269
- foreach ( $repository_data['downloads'][ $download_kind ][ $download_id ]['extra_channels'] as $channel_id => $channel_data ) {
270
- if ( $version === $channel_data['version'] ) {
271
- $version_channel = self::channel_name_by_id( $channel_id );
272
- break;
273
- }
274
-
275
- }
276
- }
277
-
278
- }
279
-
280
- return $version_channel;
281
- }
282
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/class-wp-installer.php DELETED
@@ -1,2776 +0,0 @@
1
- <?php
2
-
3
- final class WP_Installer {
4
- protected static $_instance = null;
5
-
6
- public $settings = array();
7
-
8
- private $repositories = array();
9
-
10
- protected $api_debug = '';
11
-
12
- private $config = array();
13
-
14
- protected $_plugins_renew_warnings = array();
15
-
16
- private $admin_messages = array();
17
-
18
- private $_using_icl = false;
19
- private $_wpml_version = false;
20
-
21
- private $package_source = array();
22
-
23
- const SITE_KEY_VALIDATION_SOURCE_OTHER = 0;
24
- const SITE_KEY_VALIDATION_SOURCE_DOWNLOAD_SPECIFIC = 1;
25
- const SITE_KEY_VALIDATION_SOURCE_DOWNLOAD_REPORT = 2;
26
- const SITE_KEY_VALIDATION_SOURCE_REGISTRATION = 3;
27
- const SITE_KEY_VALIDATION_SOURCE_REVALIDATION = 4;
28
- const SITE_KEY_VALIDATION_SOURCE_UPDATES_CHECK = 5;
29
-
30
- public $dependencies;
31
-
32
- public static function instance() {
33
-
34
- if ( is_null( self::$_instance ) ) {
35
- self::$_instance = new self();
36
- }
37
-
38
- return self::$_instance;
39
- }
40
-
41
- public function __construct() {
42
-
43
- if ( ! is_admin() || ! is_user_logged_in() ) {
44
- return;
45
- } //Only for admin
46
-
47
- $this->settings = $this->get_settings();
48
-
49
- add_action( 'admin_notices', array( $this, 'show_site_key_nags' ) );
50
-
51
- add_action( 'admin_notices', array( $this, 'show_admin_messages' ) );
52
-
53
- add_action( 'admin_init', array( $this, 'load_embedded_plugins' ), 0 );
54
-
55
- add_action( 'admin_menu', array( $this, 'menu_setup' ) );
56
- add_action( 'network_admin_menu', array( $this, 'menu_setup' ) );
57
-
58
- if ( defined( 'DOING_AJAX' ) && isset( $_POST['action'] ) && $_POST['action'] == 'installer_download_plugin' ) {
59
- add_filter( 'site_transient_update_plugins', array( $this, 'plugins_upgrade_check' ) );
60
- }
61
- add_filter( 'plugins_api', array( $this, 'custom_plugins_api_call' ), 10, 3 );
62
- add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'plugins_upgrade_check' ) );
63
-
64
- // register repositories
65
- $this->load_repositories_list();
66
-
67
- // default config
68
- $this->config['plugins_install_tab'] = false;
69
-
70
- add_action( 'init', array( $this, 'init' ) );
71
-
72
- //add_filter('wp_installer_buy_url', array($this, 'append_parameters_to_buy_url'));
73
-
74
- add_action( 'init', array( $this, 'load_locale' ) );
75
-
76
- }
77
-
78
- public function get_repositories() {
79
-
80
- return $this->repositories;
81
-
82
- }
83
-
84
- public function set_config( $key, $value ) {
85
-
86
- $this->config[ $key ] = $value;
87
-
88
- }
89
-
90
- public function init() {
91
- global $pagenow;
92
-
93
- if ( empty( $this->settings['last_repositories_update'] ) || time() - $this->settings['last_repositories_update'] > 86400
94
- || ( isset( $_GET['force-check'] ) && $_GET['force-check'] == 1 )
95
- ) {
96
- $this->refresh_repositories_data();
97
- }
98
-
99
- $this->dependencies = new Installer_Dependencies;
100
-
101
- if ( empty( $this->settings['_pre_1_0_clean_up'] ) ) {
102
- $this->_pre_1_0_clean_up();
103
- }
104
-
105
- $this->settings = $this->_old_products_format_backwards_compatibility( $this->settings );
106
-
107
- if ( ! function_exists( 'get_plugins' ) ) {
108
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
109
- }
110
-
111
- $this->_using_icl = function_exists( 'wpml_site_uses_icl' ) && wpml_site_uses_icl();
112
- $this->_wpml_version = defined( 'ICL_SITEPRESS_VERSION' ) ? ICL_SITEPRESS_VERSION : '';
113
-
114
- wp_enqueue_script( 'installer-admin', $this->res_url() . '/res/js/admin.js', array( 'jquery' ), $this->version() );
115
- wp_enqueue_style( 'installer-admin', $this->res_url() . '/res/css/admin.css', array(), $this->version() );
116
-
117
- $translation_array = array(
118
- 'installing' => __( 'Installing %s', 'installer' ),
119
- 'updating' => __( 'Updating %s', 'installer' ),
120
- 'activating' => __( 'Activating %s', 'installer' )
121
- );
122
-
123
- wp_localize_script( 'installer-admin', 'installer_strings', $translation_array );
124
-
125
- if ( $pagenow == 'plugins.php' ) {
126
- add_action( 'admin_notices', array( $this, 'setup_plugins_page_notices' ) );
127
- add_action( 'admin_notices', array( $this, 'setup_plugins_renew_warnings' ), 10 );
128
- add_action( 'admin_notices', array( $this, 'queue_plugins_renew_warnings' ), 20 );
129
-
130
- add_action( 'admin_init', array( $this, 'setup_plugins_action_links' ) );
131
-
132
- }
133
-
134
- if ( $this->is_repositories_page() ) {
135
- add_action( 'admin_init', array( $this, 'validate_repository_subscription' ) );
136
- }
137
-
138
- if ( defined( 'DOING_AJAX' ) ) {
139
- add_action( 'wp_ajax_save_site_key', array( $this, 'save_site_key' ) );
140
- add_action( 'wp_ajax_remove_site_key', array( $this, 'remove_site_key_ajax' ) );
141
- add_action( 'wp_ajax_update_site_key', array( $this, 'update_site_key' ) );
142
-
143
- add_action( 'wp_ajax_installer_download_plugin', array( $this, 'download_plugin_ajax_handler' ) );
144
- add_action( 'wp_ajax_installer_activate_plugin', array( $this, 'activate_plugin' ) );
145
-
146
- add_action( 'wp_ajax_installer_dismiss_nag', array( $this, 'dismiss_nag' ) );
147
- }
148
-
149
- if ( $pagenow == 'update.php' ) {
150
- if ( isset( $_GET['action'] ) && $_GET['action'] == 'update-selected' ) {
151
- add_action( 'admin_head', array( $this, 'plugin_upgrade_custom_errors' ) ); //iframe/bulk
152
- } else {
153
- add_action( 'all_admin_notices', array( $this, 'plugin_upgrade_custom_errors' ) ); //regular/singular
154
- }
155
- }
156
-
157
- // WP 4.2
158
- if ( defined( 'DOING_AJAX' ) ) {
159
- add_action( 'wp_ajax_update-plugin', array(
160
- $this,
161
- 'plugin_upgrade_custom_errors'
162
- ), 0 ); // high priority, before WP
163
- }
164
-
165
- //Include theme support
166
- include_once $this->plugin_path() . '/includes/class-installer-theme.php';
167
-
168
- // Extra information about the source of Installer
169
- $package_source_file = $this->plugin_path() . '/installer-source.json';
170
- if ( file_exists( $package_source_file ) ) {
171
- WP_Filesystem();
172
- global $wp_filesystem;
173
- $this->package_source = json_decode( $wp_filesystem->get_contents( $package_source_file ) );
174
- }
175
- }
176
-
177
- protected function log( $message ) {
178
- require_once ABSPATH . 'wp-admin/includes/file.php';
179
- WP_Filesystem();
180
- global $wp_filesystem;
181
- if ( defined( 'WPML_INSTALLER_LOGGING' ) && WPML_INSTALLER_LOGGING ) {
182
- $wp_filesystem->put_contents( $this->plugin_path() . '/installer.log', current_time( 'mysql' ) . "\t" . $message . "\n" );
183
- }
184
- }
185
-
186
- public function register_admin_message( $text, $type = 'updated' ) {
187
- $this->admin_messages[] = array( 'text' => $text, 'type' => $type );
188
- }
189
-
190
- public function show_admin_messages() {
191
- if ( ! empty( $this->admin_messages ) ) {
192
- $types = array( 'error', 'updated', 'notice' );
193
- foreach ( $this->admin_messages as $message ) {
194
- $class = in_array( $message['type'], $types ) ? $message['type'] : 'updated';
195
- ?>
196
- <div class="<?php echo $class ?>">
197
- <p>
198
- <?php echo $message['text'] ?>
199
- </p>
200
- </div>
201
- <?php
202
- }
203
- }
204
- }
205
-
206
- public function load_locale() {
207
- if ( function_exists( 'get_user_locale' ) ) {
208
- $locale = get_user_locale();
209
- } else {
210
- $locale = get_locale();
211
- }
212
- $locale = apply_filters( 'plugin_locale', $locale, 'installer' );
213
- $mo_file = $this->plugin_path() . '/locale/installer-' . $locale . '.mo';
214
- if ( file_exists( $mo_file ) ) {
215
- load_textdomain( 'installer', $mo_file );
216
- }
217
- }
218
-
219
- public function load_embedded_plugins() {
220
- if ( file_exists( $this->plugin_path() . '/embedded-plugins' ) ) {
221
- include_once $this->plugin_path() . '/embedded-plugins/embedded-plugins.class.php';
222
- $this->installer_embedded_plugins = new Installer_Embedded_Plugins();
223
- }
224
- }
225
-
226
- public function menu_setup() {
227
- global $pagenow;
228
-
229
- if ( is_multisite() && ! is_network_admin() ) {
230
- $this->menu_multisite_redirect();
231
- add_options_page( __( 'Installer', 'installer' ), __( 'Installer', 'installer' ), 'manage_options', 'installer', array(
232
- $this,
233
- 'show_products'
234
- ) );
235
- } else {
236
- if ( $this->config['plugins_install_tab'] && is_admin() && $pagenow == 'plugin-install.php' ) {
237
- // Default GUI, under Plugins -> Install
238
- add_filter( 'install_plugins_tabs', array( $this, 'add_install_plugins_tab' ) );
239
- add_action( 'install_plugins_commercial', array( $this, 'show_products' ) );
240
- }
241
- }
242
-
243
- }
244
-
245
- public function menu_url() {
246
- if ( is_multisite() ) {
247
- if ( is_network_admin() ) {
248
- $url = network_admin_url( 'plugin-install.php?tab=commercial' );
249
- } else {
250
- $url = admin_url( 'options-general.php?page=installer' );
251
- }
252
- } else {
253
- $url = admin_url( 'plugin-install.php?tab=commercial' );
254
- }
255
-
256
- return $url;
257
- }
258
-
259
- private function menu_multisite_redirect() {
260
- global $pagenow;
261
-
262
- if ( $pagenow == 'plugin-install.php' && isset( $_GET['tab'] ) && $_GET['tab'] == 'commercial' ) {
263
- wp_redirect( $this->menu_url() );
264
- exit;
265
- }
266
-
267
- }
268
-
269
- private function _pre_1_0_clean_up() {
270
- global $wpdb;
271
-
272
- if ( ! defined( 'WPRC_VERSION' ) ) {
273
- $old_tables = array(
274
- $wpdb->prefix . 'wprc_cached_requests',
275
- $wpdb->prefix . 'wprc_extension_types',
276
- $wpdb->prefix . 'wprc_extensions',
277
- $wpdb->prefix . 'wprc_repositories',
278
- $wpdb->prefix . 'wprc_repositories_relationships',
279
- );
280
-
281
- foreach ( $old_tables as $table ) {
282
- $wpdb->query( sprintf( "DROP TABLE IF EXISTS %s", $table ) );
283
- }
284
-
285
- }
286
-
287
- $this->settings['_pre_1_0_clean_up'] = true;
288
- $this->save_settings();
289
- }
290
-
291
- public function setup_plugins_action_links() {
292
-
293
- $plugins = get_plugins();
294
-
295
- $repositories_plugins = array();
296
-
297
- if ( ! empty( $this->settings['repositories'] ) ) {
298
-
299
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
300
-
301
- foreach ( $repository['data']['packages'] as $package ) {
302
-
303
- foreach ( $package['products'] as $product ) {
304
-
305
- foreach ( $product['plugins'] as $plugin_slug ) {
306
-
307
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
308
-
309
- if ( ! isset( $repositories_plugins[ $repository_id ][ $download['slug'] ] ) ) {
310
- $repositories_plugins[ $repository_id ][ $download['slug'] ] = array(
311
- 'name' => $download['name'],
312
- 'registered' => $this->plugin_is_registered( $repository_id, $download['slug'] ) ? 1 : 0
313
- );
314
- }
315
-
316
- }
317
-
318
- }
319
-
320
- }
321
-
322
- foreach ( $plugins as $plugin_id => $plugin ) {
323
-
324
- $wp_plugin_slug = dirname( $plugin_id );
325
- if ( empty( $wp_plugin_slug ) ) {
326
- $wp_plugin_slug = basename( $plugin_id, '.php' );
327
- }
328
-
329
- foreach ( $repositories_plugins as $repository_id => $r_plugins ) {
330
-
331
- foreach ( $r_plugins as $slug => $r_plugin ) {
332
-
333
- if ( $wp_plugin_slug == $slug || $r_plugin['name'] == $plugin['Name'] || $r_plugin['name'] == $plugin['Title'] ) { //match order: slug, name, title
334
-
335
- if ( $r_plugin['registered'] ) {
336
- add_filter( 'plugin_action_links_' . $plugin_id, array(
337
- $this,
338
- 'plugins_action_links_registered'
339
- ) );
340
- } else {
341
- add_filter( 'plugin_action_links_' . $plugin_id, array(
342
- $this,
343
- 'plugins_action_links_not_registered'
344
- ) );
345
- }
346
-
347
- }
348
-
349
- }
350
-
351
- }
352
-
353
-
354
- }
355
-
356
- }
357
- }
358
-
359
- }
360
-
361
- public function plugins_action_links_registered( $links ) {
362
- $links[] = '<a href="' . $this->menu_url() . '">' . __( 'Registered', 'installer' ) . '</a>';
363
-
364
- return $links;
365
- }
366
-
367
- public function plugins_action_links_not_registered( $links ) {
368
- $links[] = '<a href="' . $this->menu_url() . '">' . __( 'Register', 'installer' ) . '</a>';
369
-
370
- return $links;
371
- }
372
-
373
- public function plugin_is_registered( $repository_id, $slug ) {
374
-
375
- $registered = false;
376
-
377
- if ( $this->repository_has_valid_subscription( $repository_id ) ) {
378
-
379
- $subscription_type = $this->get_subscription_type_for_repository( $repository_id );
380
- $r_plugins = array();
381
-
382
- foreach ( $this->settings['repositories'][ $repository_id ]['data']['packages'] as $package ) {
383
-
384
- foreach ( $package['products'] as $product ) {
385
-
386
- //consider equivalent subscriptions
387
- if( !array_key_exists('subscription_type_equivalent', $product) ) {
388
- $product['subscription_type_equivalent'] = '';
389
- }
390
-
391
- if ( $product['subscription_type'] == $subscription_type || $product['subscription_type_equivalent'] == $subscription_type || $this->have_superior_subscription( $subscription_type, $product ) ) {
392
-
393
- foreach ( $product['plugins'] as $plugin_slug ) {
394
-
395
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
396
-
397
- if ( ! isset( $rep_plugins[ $download['slug'] ] ) ) {
398
- $r_plugins[ $download['slug'] ] = $download['slug'];
399
- }
400
-
401
- }
402
-
403
- }
404
-
405
- }
406
-
407
- }
408
-
409
- $registered = isset( $r_plugins[ $slug ] );
410
-
411
- }
412
-
413
-
414
- return $registered;
415
-
416
- }
417
-
418
- public function version() {
419
- return WP_INSTALLER_VERSION;
420
- }
421
-
422
- public function plugin_path() {
423
- return untrailingslashit( plugin_dir_path( dirname( __FILE__ ) ) );
424
- }
425
-
426
- public function plugin_url() {
427
- if ( isset( $this->config['in_theme_folder'] ) && ! empty( $this->config['in_theme_folder'] ) ) {
428
- $url = untrailingslashit( get_template_directory_uri() . '/' . $this->config['in_theme_folder'] );
429
- } else {
430
- $url = untrailingslashit( plugins_url( '/', dirname( __FILE__ ) ) );
431
- }
432
-
433
- return $url;
434
- }
435
-
436
- public function is_repositories_page() {
437
- global $pagenow;
438
-
439
- return $pagenow == 'plugin-install.php' && isset( $_GET['tab'] ) && $_GET['tab'] == 'commercial';
440
- }
441
-
442
- public function res_url() {
443
- if ( isset( $this->config['in_theme_folder'] ) && ! empty( $this->config['in_theme_folder'] ) ) {
444
- $url = untrailingslashit( get_template_directory_uri() . '/' . $this->config['in_theme_folder'] );
445
- } else {
446
- $url = $this->plugin_url();
447
- }
448
-
449
- return $url;
450
- }
451
-
452
- public function save_settings() {
453
-
454
- $_settings = serialize( $this->settings );
455
- if ( $this->is_gz_on() ) {
456
- $_settings = gzcompress( $_settings );
457
- }
458
- $_settings = base64_encode( $_settings );
459
-
460
- update_option( 'wp_installer_settings', $_settings );
461
-
462
- if ( is_multisite() && is_main_site() && isset( $this->settings['repositories'] ) ) {
463
- $network_settings = array();
464
-
465
- foreach ( $this->settings['repositories'] as $rep_id => $repository ) {
466
- if ( isset( $repository['subscription'] ) ) {
467
- $network_settings[ $rep_id ] = $repository['subscription'];
468
- }
469
- }
470
-
471
- update_site_option( 'wp_installer_network', $network_settings );
472
-
473
-
474
- }
475
-
476
- }
477
-
478
- public function get_settings( $refresh = false ) {
479
-
480
- if ( $refresh || empty( $this->settings ) ) {
481
-
482
- $_settings = get_option( 'wp_installer_settings' );
483
-
484
-
485
- if ( is_array( $_settings ) || empty( $_settings ) ) { //backward compatibility 1.1
486
- $this->settings = $_settings;
487
-
488
- } else {
489
- $_settings = base64_decode( $_settings );
490
- if ( $this->is_gz_on() ) {
491
- $_settings = gzuncompress( $_settings );
492
- }
493
- $this->settings = unserialize( $_settings );
494
- }
495
-
496
- // Initialize
497
- if ( empty( $this->settings ) ) {
498
- $this->settings = array(
499
- 'repositories' => array()
500
- );
501
- }
502
-
503
- if ( is_multisite() ) {
504
- $network_settings = maybe_unserialize( get_site_option( 'wp_installer_network' ) );
505
- if ( $network_settings ) {
506
- foreach ( $this->settings['repositories'] as $rep_id => $repository ) {
507
- if ( isset( $network_settings[ $rep_id ] ) ) {
508
- $this->settings['repositories'][ $rep_id ]['subscription'] = $network_settings[ $rep_id ];
509
- }
510
- }
511
- }
512
- }
513
-
514
- $this->load_hardcoded_site_keys();
515
-
516
- $this->_pre_1_8_backwards_compatibility( $this->settings );
517
-
518
- $this->settings = $this->_old_products_format_backwards_compatibility( $this->settings );
519
-
520
- }
521
-
522
- return $this->settings;
523
- }
524
-
525
- private function is_gz_on() {
526
- return function_exists( 'gzuncompress' ) && function_exists( 'gzcompress' );
527
- }
528
-
529
- private function load_hardcoded_site_keys() {
530
-
531
- if ( ! empty( $this->settings['repositories'] ) ) {
532
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
533
-
534
- if ( $site_key = self::get_repository_hardcoded_site_key( $repository_id ) ) {
535
-
536
- $site_key_missing = empty( $this->settings['repositories'][ $repository_id ]['subscription']['data'] );
537
- $site_key_changed = ! $site_key_missing &&
538
- $this->settings['repositories'][ $repository_id ]['subscription']['key'] != $site_key;
539
-
540
- if ( $site_key_missing || $site_key_changed ) {
541
-
542
- if ( ! function_exists( 'get_plugins' ) ) {
543
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
544
- }
545
- $this->load_repositories_list();
546
- $response = $this->save_site_key(
547
- array(
548
- 'repository_id' => $repository_id,
549
- 'site_key' => $site_key,
550
- 'return' => true,
551
- 'nonce' => wp_create_nonce( 'save_site_key_' . $repository_id )
552
- )
553
- );
554
-
555
- if ( ! empty( $response['error'] ) ) {
556
- $this->remove_site_key( $repository_id, false );
557
-
558
- $this->admin_messages[] = array(
559
- 'type' => 'error',
560
- 'text' => sprintf( __( 'You are using an invalid site key defined as the constant %s (most likely in wp-config.php).
561
- Please remove it or use the correct value in order to be able to register correctly.', 'installer' ), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper( $repository_id ) )
562
- );
563
-
564
- }
565
-
566
- }
567
-
568
- }
569
-
570
- }
571
- }
572
-
573
- }
574
-
575
- public static function get_repository_hardcoded_site_key( $repository_id ) {
576
-
577
- $site_key = false;
578
-
579
- $site_key_constant = 'OTGS_INSTALLER_SITE_KEY_' . strtoupper( $repository_id );
580
- if ( defined( $site_key_constant ) ) {
581
- $site_key = constant( $site_key_constant );
582
- }
583
-
584
- return $site_key;
585
- }
586
-
587
- //backward compatibility, add channel
588
- private function _pre_1_8_backwards_compatibility( &$settings ) {
589
- if ( empty( $settings['_pre_1_8_clean_up'] ) ) {
590
- foreach ( $settings['repositories'] as $repository_id => $repository ) {
591
- foreach ( $repository['data']['downloads']['plugins'] as $slug => $download ) {
592
- if( !isset( $download['channel'] ) ){
593
- $settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $slug ]['channel'] = '';
594
- }
595
- }
596
- }
597
- $this->save_settings();
598
- }
599
- }
600
-
601
- //backward compatibility - support old products list format (downloads under products instead of global downloads list)
602
- private function _old_products_format_backwards_compatibility( $settings ) {
603
-
604
- if ( version_compare( $this->version(), '1.8', '<' ) && ! empty( $settings['repositories'] ) && empty( $this->_old_products_format_backwards_compatibility ) ) {
605
-
606
- foreach ( $settings['repositories'] as $repository_id => $repository ) {
607
- $populate_downloads = false;
608
- if ( isset( $repository['data'] ) ) {
609
-
610
- foreach ( $repository['data']['packages'] as $package_id => $package ) {
611
- foreach ( $package['products'] as $product_id => $product ) {
612
- if ( ! isset( $product['plugins'] ) ) {
613
- $populate_downloads = true;
614
- foreach ( $product['downloads'] as $download_id => $download ) {
615
- $settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['plugins'][] = $download['slug'];
616
- }
617
- }
618
- }
619
- }
620
-
621
- if ( $populate_downloads ) {
622
- // Add downloads branch
623
- foreach ( $repository['data']['packages'] as $package_id => $package ) {
624
- foreach ( $package['products'] as $product_id => $product ) {
625
- foreach ( $product['downloads'] as $download_id => $download ) {
626
- if ( ! isset( $settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $download['slug'] ] ) ) {
627
- $settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $download['slug'] ] = $download;
628
- }
629
- $settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['plugins'][] = $download['slug'];
630
- }
631
- unset( $settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['downloads'] );
632
- }
633
- }
634
- }
635
- }
636
- }
637
-
638
- $this->_old_products_format_backwards_compatibility = true;
639
- }
640
-
641
- return $settings;
642
- }
643
-
644
- public function get_installer_site_url( $repository_id = false ) {
645
- global $current_site;
646
-
647
- $site_url = get_site_url();
648
-
649
- if ( $repository_id && is_multisite() && isset( $this->settings['repositories'] ) ) {
650
- $network_settings = maybe_unserialize( get_site_option( 'wp_installer_network' ) );
651
-
652
- if ( isset( $network_settings[ $repository_id ] ) ) {
653
- $site_url = get_site_url( $current_site->blog_id );
654
- }
655
-
656
- }
657
-
658
- return $site_url;
659
- }
660
-
661
- /**
662
- * @param string $repository_id
663
- *
664
- * @return string|null
665
- */
666
- public function get_registered_site_url( $repository_id ) {
667
- if ( isset( $this->settings['repositories'][ $repository_id ]['subscription']['site_url'] ) ) {
668
- return $this->settings['repositories'][ $repository_id ]['subscription']['site_url'];
669
- }
670
-
671
- return null;
672
- }
673
-
674
- public function show_site_key_nags() {
675
- $screen = get_current_screen();
676
-
677
- if ( $screen->base == 'settings_page_installer' || ( $screen->base == 'plugin-install' && isset( $_GET['tab'] ) && $_GET['tab'] == 'commercial' ) ) {
678
- return;
679
- }
680
-
681
- if ( ! empty( $this->config['site_key_nags'] ) ) {
682
-
683
- foreach ( $this->config['site_key_nags'] as $nag ) {
684
-
685
- if ( ! $this->repository_has_subscription( $nag['repository_id'] ) ) {
686
- $show = true;
687
- if ( ! empty( $nag['condition_cb'] ) ) {
688
- $show = call_user_func( $nag['condition_cb'] );
689
- }
690
-
691
- if ( empty( $this->settings['dismissed_nags'][ $nag['repository_id'] ] ) && $show ) {
692
- echo '<div class="updated error otgs-is-dismissible"><p>';
693
- printf( __( "To get automatic updates, you need to register %s for this site. %sRegister %s%s", 'sitepress' ),
694
- $nag['product_name'], '<a class="button-primary" href="' . $this->menu_url() . '">', $nag['product_name'], '</a>' );
695
-
696
- echo '</p>';
697
- echo '<span class="installer-dismiss-nag notice-dismiss" data-repository="' . $nag['repository_id'] . '"><span class="screen-reader-text">' . __( 'Dismiss', 'sitepress' ) . '</span></span>';
698
- echo '</div>';
699
- }
700
- }
701
-
702
- }
703
-
704
- }
705
-
706
- }
707
-
708
- public function dismiss_nag() {
709
- $this->settings['dismissed_nags'][ $_POST['repository'] ] = 1;
710
-
711
- $this->save_settings();
712
-
713
- echo json_encode( array() );
714
- exit;
715
- }
716
-
717
- public function add_install_plugins_tab( $tabs ) {
718
-
719
- $tabs['commercial'] = __( 'Commercial', 'installer' );
720
-
721
- return $tabs;
722
- }
723
-
724
- public function load_repositories_list() {
725
- global $wp_installer_instances;
726
-
727
- foreach ( $wp_installer_instances as $instance ) {
728
-
729
- if ( file_exists( dirname( $instance['bootfile'] ) . '/repositories.xml' ) ) {
730
- $config_file = dirname( $instance['bootfile'] ) . '/repositories.xml';
731
-
732
- if ( file_exists( dirname( $instance['bootfile'] ) . '/repositories.sandbox.xml' ) ) {
733
- $config_file = dirname( $instance['bootfile'] ) . '/repositories.sandbox.xml';
734
- add_filter( 'https_ssl_verify', '__return_false' );
735
- }
736
-
737
- $repos = simplexml_load_file( $config_file );
738
-
739
- if ( $repos ) {
740
- foreach ( $repos as $repo ) {
741
- $id = strval( $repo->id );
742
-
743
- $data['api-url'] = strval( $repo->apiurl );
744
- $data['products'] = strval( $repo->products );
745
-
746
- // excludes rule;
747
- if ( isset( $this->config['repositories_exclude'] ) && in_array( $id, $this->config['repositories_exclude'] ) ) {
748
- continue;
749
- }
750
-
751
- // includes rule;
752
- if ( isset( $this->config['repositories_include'] ) && ! in_array( $id, $this->config['repositories_include'] ) ) {
753
- continue;
754
- }
755
-
756
- $this->repositories[ $id ] = $data;
757
-
758
- }
759
- }
760
-
761
- }
762
- }
763
-
764
- }
765
-
766
- public function filter_repositories_list() {
767
-
768
- if ( ! empty( $this->settings['repositories'] ) ) {
769
- foreach ( $this->settings['repositories'] as $id => $repo_data ) {
770
-
771
- // excludes rule;
772
- if ( isset( $this->config['repositories_exclude'] ) && in_array( $id, $this->config['repositories_exclude'] ) ) {
773
- unset( $this->settings['repositories'][ $id ] );
774
- }
775
-
776
- // includes rule;
777
- if ( isset( $this->config['repositories_include'] ) && ! in_array( $id, $this->config['repositories_include'] ) ) {
778
- unset( $this->settings['repositories'][ $id ] );
779
- }
780
-
781
-
782
- }
783
- }
784
-
785
-
786
- }
787
-
788
- public function refresh_repositories_data() {
789
- static $checked = false;
790
-
791
- if ( defined( 'OTGS_DISABLE_AUTO_UPDATES' ) && OTGS_DISABLE_AUTO_UPDATES && empty( $_GET['force-check'] ) || $checked ) {
792
-
793
- if ( empty( $this->settings['repositories'] ) && $this->is_repositories_page() ) {
794
-
795
- foreach ( $this->repositories as $id => $data ) {
796
- $repository_names[] = $id;
797
-
798
- }
799
-
800
- $error = sprintf( __( "Installer cannot display the products information because the automatic updating for %s was explicitly disabled with the configuration below (usually in wp-config.php):", 'installer' ), strtoupper( join( ', ', $repository_names ) ) );
801
- $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code><br /><br />';
802
- $error .= sprintf( __( "In order to see the products information, please run the %smanual updates check%s to initialize the products list or (temporarily) remove the above code.", 'installer' ), '<a href="' . admin_url( 'update-core.php' ) . '">', '</a>' );
803
-
804
- $this->register_admin_message( $error, 'error' );
805
-
806
-
807
- }
808
-
809
- return;
810
- }
811
-
812
- $checked = true;
813
-
814
- foreach ( $this->repositories as $id => $data ) {
815
-
816
- $response = wp_remote_get( $data['products'] );
817
-
818
- if ( is_wp_error( $response ) ) {
819
- // http fallback
820
- $data['products'] = preg_replace( "@^https://@", 'http://', $data['products'] );
821
- $response = wp_remote_get( $data['products'] );
822
- }
823
-
824
- if ( is_wp_error( $response ) ) {
825
-
826
- $error = sprintf( __( "Installer cannot contact our updates server to get information about the available products and check for new versions. If you are seeing this message for the first time, you can ignore it, as it may be a temporary communication problem. If the problem persists and your WordPress admin is slowing down, you can disable automated version checks. Add the following line to your wp-config.php file:", 'installer' ), strtoupper( $id ) );
827
- $error .= '<br /><br /><code>define("OTGS_DISABLE_AUTO_UPDATES", true);</code>';
828
-
829
- $this->register_admin_message( $error, 'error' );
830
-
831
- continue;
832
- }
833
-
834
- if ( $response && isset( $response['response']['code'] ) && $response['response']['code'] == 200 ) {
835
- $body = wp_remote_retrieve_body( $response );
836
- if ( $body ) {
837
- $products = json_decode( $body, true );
838
-
839
- if ( is_array( $products ) ) {
840
- $products['downloads'] = WP_Installer_Channels()->filter_downloads_by_channel( $id, $products['downloads'] );
841
- $this->set_release_notes( $products['downloads'] );
842
-
843
- $this->settings['repositories'][ $id ]['data'] = $products;
844
- $this->_pre_1_8_backwards_compatibility( $this->settings );
845
- }
846
- }
847
-
848
- }
849
-
850
- $this->log( sprintf( "Checked for %s updates: %s", $id, $data['products'] ) );
851
-
852
-
853
- }
854
-
855
- // cleanup
856
- if ( empty( $this->settings['repositories'] ) ) {
857
- $this->settings['repositories'] = array();
858
- }
859
- foreach ( $this->settings['repositories'] as $id => $data ) {
860
- if ( ! in_array( $id, array_keys( $this->repositories ) ) ) {
861
- unset( $this->settings['repositories'][ $id ] );
862
- }
863
- }
864
-
865
- $this->settings['last_repositories_update'] = time();
866
-
867
- $this->save_settings();
868
-
869
- }
870
-
871
- /**
872
- * Gets the release notes for the available version from the changelog
873
- *
874
- * @param array $all_downloads
875
- */
876
- private function set_release_notes( &$all_downloads ) {
877
- foreach ( $all_downloads as $kind => $downloads ) {
878
- foreach ( $downloads as $slug => $download ) {
879
- $start = strpos( $download['changelog'], '<h4>' . $download['version'] . '</h4>' );
880
- if ( $start !== false ) {
881
- $start += strlen( $download['version'] ) + 9;
882
- $end = strpos( $download['changelog'], '<h4>', 4 );
883
- if ( $end ) {
884
- $release_notes = substr( $download['changelog'], $start, $end - $start );
885
- } else {
886
- $release_notes = substr( $download['changelog'], $start );
887
- }
888
- }
889
- $all_downloads[ $kind ][ $slug ]['release-notes'] = ! empty( $release_notes ) ? $release_notes : '';
890
- }
891
- }
892
- }
893
-
894
- public function show_products( $args = array() ) {
895
-
896
- $screen = get_current_screen();
897
-
898
- if ( $screen->base == 'settings_page_installer' ) { // settings page
899
- echo '<div class="wrap">';
900
- echo '<h2>' . __( 'Installer', 'installer' ) . '</h2>';
901
- echo '<br />';
902
- }
903
-
904
- if ( ! is_array( $args ) ) {
905
- $args = array();
906
- }
907
- if ( empty( $args['template'] ) ) {
908
- $args['template'] = 'default';
909
- }
910
-
911
- $this->filter_repositories_list();
912
-
913
- if ( ! empty( $this->settings['repositories'] ) ) {
914
-
915
- $this->localize_strings();
916
- $this->set_filtered_prices( $args );
917
- $this->set_hierarchy_and_order();
918
-
919
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
920
-
921
- if ( $args['template'] == 'compact' ) {
922
-
923
- if ( isset( $args['repository'] ) && $args['repository'] == $repository_id ) {
924
- include $this->plugin_path() . '/templates/products-compact.php';
925
- }
926
-
927
- } else {
928
-
929
- include $this->plugin_path() . '/templates/repository-listing.php';
930
-
931
- }
932
-
933
- unset( $site_key, $subscription_type, $expired, $upgrade_options, $products_avaliable );
934
-
935
- }
936
-
937
- } else {
938
-
939
- echo '<center>' . __( 'No repositories defined.', 'installer' ) . '</center>';
940
-
941
- }
942
-
943
- if ( $screen->base == 'settings_page_installer' ) { // settings page
944
- echo '</div>';
945
- }
946
-
947
-
948
- }
949
-
950
- public function get_product_price( $repository_id, $package_id, $product_id, $incl_discount = false ) {
951
-
952
- $price = false;
953
-
954
- foreach ( $this->settings['repositories'][ $repository_id ]['data']['packages'] as $package ) {
955
-
956
- if ( $package['id'] == $package_id ) {
957
- if ( isset( $package['products'][ $product_id ] ) ) {
958
- if ( $incl_discount && isset( $package['products'][ $product_id ]['price_disc'] ) ) {
959
- $price = $package['products'][ $product_id ]['price_disc'];
960
- } elseif ( isset( $package['products'][ $product_id ]['price'] ) ) {
961
- $price = $package['products'][ $product_id ]['price'];
962
- }
963
- }
964
- break;
965
- }
966
- }
967
-
968
- return $price;
969
- }
970
-
971
- private function _render_product_packages( $packages, $subscription_type, $expired, $upgrade_options, $repository_id ) {
972
-
973
- $data = array();
974
-
975
- foreach ( $packages as $package_id => $package ) {
976
-
977
- $row = array( 'products' => array(), 'downloads' => array() );
978
- foreach ( $package['products'] as $product ) {
979
-
980
- // filter out free subscriptions from being displayed as buying options
981
- if ( empty( $product['price'] ) && ( empty( $subscription_type ) || $expired ) ) {
982
- continue;
983
- }
984
-
985
- //consider equivalent subscriptions
986
- if ( empty( $product['subscription_type_equivalent'] ) ) {
987
- $product['subscription_type_equivalent'] = '';
988
- }
989
-
990
- // buy base
991
- if ( empty( $subscription_type ) || $expired ) {
992
-
993
- $p['url'] = $this->append_parameters_to_buy_url( $product['url'], $repository_id );
994
- if ( ! empty( $product['price_disc'] ) ) {
995
- $p['label'] = $product['call2action'] . ' - ' . sprintf( '$%s %s$%d%s (USD)', $product['price_disc'], '&nbsp;&nbsp;<del>', $product['price'], '</del>' );
996
- } else {
997
- $p['label'] = $product['call2action'] . ' - ' . sprintf( '$%d (USD)', $product['price'] );
998
- }
999
- $row['products'][] = $p;
1000
-
1001
- // renew
1002
- } elseif ( isset( $subscription_type ) && ( $product['subscription_type'] == $subscription_type || $product['subscription_type_equivalent'] == $subscription_type ) ) {
1003
-
1004
- if ( $product['renewals'] ) {
1005
- foreach ( $product['renewals'] as $renewal ) {
1006
- $p['url'] = $this->append_parameters_to_buy_url( $renewal['url'], $repository_id );
1007
- $p['label'] = $renewal['call2action'] . ' - ' . sprintf( '$%d (USD)', $renewal['price'] );
1008
- }
1009
-
1010
- $row['products'][] = $p;
1011
- }
1012
-
1013
- }
1014
-
1015
- // upgrades
1016
- if ( ! empty( $upgrade_options[ $product['subscription_type'] ] ) ) {
1017
-
1018
- foreach ( $upgrade_options[ $product['subscription_type'] ] as $stype => $upgrade ) {
1019
- if ( $stype != $subscription_type ) {
1020
- continue;
1021
- }
1022
-
1023
- $p['url'] = $this->append_parameters_to_buy_url( $upgrade['url'], $repository_id );
1024
- if ( ! empty( $upgrade['price_disc'] ) ) {
1025
- $p['label'] = $upgrade['call2action'] . ' - ' . sprintf( '$%s %s$%d%s (USD)', $upgrade['price_disc'], '&nbsp;&nbsp;<del>', $upgrade['price'], '</del>' );
1026
- } else {
1027
- $p['label'] = $upgrade['call2action'] . ' - ' . sprintf( '$%d (USD)', $upgrade['price'] );
1028
- }
1029
- $row['products'][] = $p;
1030
-
1031
- }
1032
-
1033
- }
1034
-
1035
- // downloads
1036
- if ( isset( $subscription_type ) && ! $expired && ( $product['subscription_type'] == $subscription_type || $product['subscription_type_equivalent'] == $subscription_type ) ) {
1037
-
1038
- foreach ( $product['plugins'] as $plugin_slug ) {
1039
- $row['downloads'][ $plugin_slug ] = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
1040
- }
1041
-
1042
- }
1043
-
1044
- //subpackages
1045
- if ( ! empty( $package['sub-packages'] ) ) {
1046
- $row['sub-packages'] = $package['sub-packages'];
1047
- }
1048
-
1049
- }
1050
-
1051
- $row['id'] = $package['id'];
1052
- $row['image_url'] = $package['image_url'];
1053
- $row['name'] = $package['name'];
1054
- $row['description'] = $package['description'];
1055
-
1056
- if ( ! empty( $row['products'] ) || ! empty( $row['downloads'] ) || ! empty( $row['sub-packages'] ) ) {
1057
- $data[] = $row;
1058
- }
1059
-
1060
-
1061
- }
1062
-
1063
- return $data;
1064
-
1065
- }
1066
-
1067
- public function get_extra_url_parameters() {
1068
-
1069
- $parameters = array();
1070
-
1071
- if ( ! empty( $this->package_source ) ) {
1072
- foreach ( $this->package_source as $key => $val ) {
1073
- $parameters[ $key ] = $val;
1074
- }
1075
- }
1076
-
1077
- $parameters['installer_version'] = WP_INSTALLER_VERSION;
1078
- $parameters['theme'] = wp_get_theme()->get( 'Name' );
1079
- $parameters['site_name'] = get_bloginfo( 'name' );
1080
-
1081
- return $parameters;
1082
- }
1083
-
1084
- public function append_parameters_to_buy_url( $url, $repository_id, $args = array() ) {
1085
-
1086
- $url = add_query_arg( array( 'icl_site_url' => $this->get_installer_site_url( $repository_id ) ), $url );
1087
-
1088
- $affiliate_id = false;
1089
- $affiliate_key = false;
1090
-
1091
- // Add extra parameters for custom Installer packages
1092
- if ( ! empty( $this->package_source ) ) {
1093
- $extra = $this->get_extra_url_parameters();
1094
-
1095
- if ( ! empty( $extra['repository'] ) && $extra['repository'] == $repository_id ) {
1096
-
1097
- if ( ! empty( $extra['affiliate_key'] ) && ! empty( $extra['user_id'] ) ) {
1098
- $this->config[ 'affiliate_id:' . $repository_id ] = $extra['user_id'];
1099
- $this->config[ 'affiliate_key:' . $repository_id ] = $extra['affiliate_key'];
1100
- unset( $extra['affiliate_key'], $extra['user_id'], $extra['repository'] ); // no need to include these ones
1101
- }
1102
-
1103
- $url = add_query_arg( $extra, $url );
1104
- }
1105
-
1106
- }
1107
-
1108
- if ( isset( $this->config[ 'affiliate_id:' . $repository_id ] ) && isset( $this->config[ 'affiliate_key:' . $repository_id ] ) ) {
1109
-
1110
- $affiliate_id = $this->config[ 'affiliate_id:' . $repository_id ];
1111
- $affiliate_key = $this->config[ 'affiliate_key:' . $repository_id ];
1112
-
1113
- } elseif ( isset( $args[ 'affiliate_id:' . $repository_id ] ) && isset( $args[ 'affiliate_key:' . $repository_id ] ) ) {
1114
-
1115
- $affiliate_id = $args[ 'affiliate_id:' . $repository_id ];
1116
- $affiliate_key = $args[ 'affiliate_key:' . $repository_id ];
1117
-
1118
- } elseif ( defined( 'ICL_AFFILIATE_ID' ) && defined( 'ICL_AFFILIATE_KEY' ) ) { //support for 1 repo
1119
-
1120
- $affiliate_id = ICL_AFFILIATE_ID;
1121
- $affiliate_key = ICL_AFFILIATE_KEY;
1122
-
1123
- } elseif ( isset( $this->config['affiliate_id'] ) && isset( $this->config['affiliate_key'] ) ) {
1124
- // BACKWARDS COMPATIBILITY
1125
- $affiliate_id = $this->config['affiliate_id'];
1126
- $affiliate_key = $this->config['affiliate_key'];
1127
- }
1128
-
1129
- if ( $affiliate_id && $affiliate_key ) {
1130
- $url = add_query_arg( array( 'aid' => $affiliate_id, 'affiliate_key' => $affiliate_key ), $url );
1131
- }
1132
-
1133
- if ( $repository_id == 'wpml' ) {
1134
- $url = add_query_arg( array(
1135
- 'using_icl' => $this->_using_icl,
1136
- 'wpml_version' => $this->_wpml_version
1137
- ), $url );
1138
- }
1139
-
1140
- $url = apply_filters( 'wp_installer_buy_url', $url );
1141
-
1142
- $url = esc_url( $url );
1143
-
1144
- return $url;
1145
-
1146
- }
1147
-
1148
- public function save_site_key( $args = array() ) {
1149
-
1150
- $error = '';
1151
-
1152
- if ( isset( $args['repository_id'] ) ) {
1153
- $repository_id = $args['repository_id'];
1154
- } elseif ( isset( $_POST['repository_id'] ) ) {
1155
- $repository_id = sanitize_text_field( $_POST['repository_id'] );
1156
- } else {
1157
- $repository_id = false;
1158
- }
1159
-
1160
- if ( isset( $args['nonce'] ) ) {
1161
- $nonce = $args['nonce'];
1162
- } elseif ( isset( $_POST['nonce'] ) ) {
1163
- $nonce = sanitize_text_field( $_POST['nonce'] );
1164
- } else {
1165
- $nonce = '';
1166
- }
1167
-
1168
- if ( isset( $args['site_key'] ) ) {
1169
- $site_key = $args['site_key'];
1170
- } else {
1171
- $site_key = sanitize_text_field( $_POST[ 'site_key_' . $repository_id ] );
1172
- }
1173
- $site_key = preg_replace( "/[^A-Za-z0-9]/", '', $site_key );
1174
-
1175
- if ( $repository_id && $nonce && wp_create_nonce( 'save_site_key_' . $repository_id ) == $nonce ) {
1176
-
1177
- try {
1178
- $should_send_components_data = (int) isset( $_POST['repo_allowed_to_send_data'] );
1179
- $components_setting = new OTGS_Installer_WP_Share_Local_Components_Setting();
1180
- $components_setting->save( array( $repository_id => $should_send_components_data ) );
1181
-
1182
- $subscription_data = $this->fetch_subscription_data( $repository_id, $site_key, self::SITE_KEY_VALIDATION_SOURCE_REGISTRATION );
1183
-
1184
- if ( $subscription_data ) {
1185
- $this->settings['repositories'][ $repository_id ]['subscription'] = array(
1186
- 'key' => $site_key,
1187
- 'data' => $subscription_data,
1188
- 'registered_by' => get_current_user_id(),
1189
- 'site_url' => get_site_url(),
1190
- );
1191
- $this->save_settings();
1192
- } else {
1193
- $error = __( 'Invalid site key for the current site.', 'installer' )
1194
- . '<br /><div class="installer-footnote">' . __( 'Please note that the site key is case sensitive.', 'installer' ) . '</div>';
1195
- }
1196
-
1197
- } catch ( Exception $e ) {
1198
- $error = $e->getMessage();
1199
- if ( preg_match( '#Could not resolve host: (.*)#', $error, $matches ) || preg_match( '#Couldn\'t resolve host \'(.*)\'#', $error, $matches ) ) {
1200
- $error = sprintf( __( "%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates.", 'installer' ),
1201
- '<strong><i>' . $this->get_generic_product_name( $repository_id ) . '</i></strong>',
1202
- '<strong><i>' . $matches[1] . '</i></strong>'
1203
- );
1204
- }
1205
- }
1206
-
1207
- }
1208
-
1209
- $return = array( 'error' => $error );
1210
-
1211
- if ( $this->api_debug ) {
1212
- $return['debug'] = $this->api_debug;
1213
- }
1214
-
1215
- if ( ! empty( $args['return'] ) ) {
1216
- return $return;
1217
- } else {
1218
- echo json_encode( $return );
1219
- exit;
1220
- }
1221
-
1222
- }
1223
-
1224
- /**
1225
- * Alias for WP_Installer::get_repository_site_key
1226
- * @see WP_Installer::get_repository_site_key()
1227
- *
1228
- * @param string $repository_id
1229
- *
1230
- * @return string (site key) or bool
1231
- */
1232
- public function get_site_key( $repository_id ) {
1233
- return WP_Installer::get_repository_site_key( $repository_id );
1234
- }
1235
-
1236
- public function remove_site_key( $repository_id, $refresh_repositories_data = true ) {
1237
- if ( isset( $this->settings['repositories'][ $repository_id ] ) ) {
1238
- unset( $this->settings['repositories'][ $repository_id ]['subscription'] );
1239
- $this->save_settings();
1240
- if( $refresh_repositories_data ){
1241
- $this->refresh_repositories_data();
1242
- }
1243
- }
1244
- }
1245
-
1246
- public function remove_site_key_ajax() {
1247
- if ( $_POST['nonce'] == wp_create_nonce( 'remove_site_key_' . $_POST['repository_id'] ) ) {
1248
- $this->remove_site_key( $_POST['repository_id'] );
1249
- }
1250
- exit;
1251
- }
1252
-
1253
- public function validate_repository_subscription() {
1254
- $repository_id = isset( $_GET['validate_repository'] ) ? sanitize_text_field( $_GET['validate_repository'] ) : false;
1255
- if ( $repository_id ) {
1256
-
1257
- $site_key = $this->get_site_key( $repository_id );
1258
- if ( $site_key ) {
1259
- $subscription_data = $this->fetch_subscription_data( $repository_id, $site_key, self::SITE_KEY_VALIDATION_SOURCE_REVALIDATION );
1260
- if ( empty( $subscription_data ) ) {
1261
- unset( $this->settings['repositories'][ $repository_id ]['subscription'] );
1262
- delete_site_transient( 'update_plugins' );
1263
- $this->save_settings();
1264
- }
1265
- }
1266
-
1267
- wp_redirect( $this->menu_url() . '#repository-' . $repository_id );
1268
- exit;
1269
-
1270
- }
1271
-
1272
- }
1273
-
1274
- public function update_site_key() {
1275
-
1276
- $error = '';
1277
-
1278
- $repository_id = sanitize_text_field( $_POST['repository_id'] );
1279
- if ( $_POST['nonce'] == wp_create_nonce( 'update_site_key_' . $repository_id ) ) {
1280
-
1281
- $site_key = $this->get_site_key( $_POST['repository_id'] );
1282
-
1283
- if ( $site_key ) {
1284
- try {
1285
- $subscription_data = $this->fetch_subscription_data( $repository_id, $site_key, self::SITE_KEY_VALIDATION_SOURCE_UPDATES_CHECK );
1286
-
1287
- if ( $subscription_data ) {
1288
- $this->settings['repositories'][ $repository_id ]['subscription'] = array(
1289
- 'key' => $site_key,
1290
- 'data' => $subscription_data,
1291
- 'registered_by' => get_current_user_id()
1292
- );
1293
-
1294
- //also refresh products information
1295
- $this->refresh_repositories_data();
1296
-
1297
- $this->save_settings();
1298
-
1299
- } else {
1300
- unset( $this->settings['repositories'][ $repository_id ]['subscription'] );
1301
- $error = __( 'Invalid site key for the current site. If the error persists, try to unregister first and then register again with the same site key.', 'installer' );
1302
- }
1303
-
1304
-
1305
- } catch ( Exception $e ) {
1306
- $error = $e->getMessage();
1307
- if ( preg_match( '#Could not resolve host: (.*)#', $error, $matches ) || preg_match( '#Couldn\'t resolve host \'(.*)\'#', $error, $matches ) ) {
1308
- $error = sprintf( __( "%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates.", 'installer' ),
1309
- '<strong><i>' . $this->get_generic_product_name( $repository_id ) . '</i></strong>',
1310
- '<strong><i>' . $matches[1] . '</i></strong>'
1311
- );
1312
- }
1313
- }
1314
-
1315
- }
1316
-
1317
- }
1318
-
1319
- echo json_encode( array( 'error' => $error ) );
1320
-
1321
- exit;
1322
- }
1323
-
1324
- public function api_debug_log( $text ) {
1325
-
1326
- if ( defined( 'WPML_DEBUG_INSTALLER' ) && WPML_DEBUG_INSTALLER ) {
1327
-
1328
- if ( ! is_scalar( $text ) ) {
1329
- $text = print_r( $text, 1 );
1330
- }
1331
-
1332
- $this->api_debug .= $text . "\n";
1333
-
1334
- }
1335
-
1336
- }
1337
-
1338
- public function fetch_subscription_data( $repository_id, $site_key, $source = self::SITE_KEY_VALIDATION_SOURCE_OTHER ) {
1339
-
1340
- $subscription_data = false;
1341
-
1342
- $args['body'] = array(
1343
- 'action' => 'site_key_validation',
1344
- 'site_key' => $site_key,
1345
- 'site_url' => $this->get_installer_site_url( $repository_id ),
1346
- 'source' => $source
1347
- );
1348
-
1349
- if ( $repository_id == 'wpml' ) {
1350
- $args['body']['using_icl'] = $this->_using_icl;
1351
- $args['body']['wpml_version'] = $this->_wpml_version;
1352
- }
1353
-
1354
- $args['body']['installer_version'] = WP_INSTALLER_VERSION;
1355
- $args['body']['theme'] = wp_get_theme()->get( 'Name' );
1356
- $args['body']['site_name'] = get_bloginfo( 'name' );
1357
- $args['body']['repository_id'] = $repository_id;
1358
-
1359
- $args['body']['versions'] = $this->get_local_product_versions( $repository_id );
1360
-
1361
- $args['timeout'] = 45;
1362
-
1363
- // Add extra parameters for custom Installer packages
1364
- if ( ! empty( $this->package_source ) ) {
1365
- $extra = $this->get_extra_url_parameters();
1366
- if ( ! empty( $extra['repository'] ) && $extra['repository'] == $repository_id ) {
1367
- unset( $extra['repository'] );
1368
- foreach ( $extra as $key => $val ) {
1369
- $args['body'][ $key ] = $val;
1370
- }
1371
- }
1372
- }
1373
-
1374
- $response = wp_remote_post(
1375
- $this->repositories[ $repository_id ]['api-url'],
1376
- apply_filters( 'installer_fetch_subscription_data_request', $args )
1377
- );
1378
-
1379
- $this->api_debug_log( "POST {$this->repositories[$repository_id]['api-url']}" );
1380
- $this->api_debug_log( $args );
1381
-
1382
- $this->log( "POST {$this->repositories[$repository_id]['api-url']} - fetch subscription data" );
1383
-
1384
- if ( ! is_wp_error( $response ) ) {
1385
- $datas = wp_remote_retrieve_body( $response );
1386
-
1387
- if ( is_serialized( $datas ) ) {
1388
- $data = unserialize( $datas );
1389
- $this->api_debug_log( $data );
1390
-
1391
- if ( ! empty( $data->subscription_data ) ) {
1392
- $subscription_data = $data->subscription_data;
1393
- }
1394
-
1395
- do_action( 'installer_fetched_subscription_data', $data, $repository_id );
1396
-
1397
- } else {
1398
- $this->api_debug_log( $datas );
1399
- }
1400
-
1401
- } else {
1402
-
1403
- $this->api_debug_log( $response );
1404
- throw new Exception( $response->get_error_message() );
1405
- }
1406
-
1407
- return $subscription_data;
1408
-
1409
- }
1410
-
1411
- function get_local_product_versions( $repository_id ) {
1412
-
1413
- $versions = array();
1414
-
1415
- foreach ( $this->settings['repositories'][ $repository_id ]['data']['packages'] as $package_id => $package ) {
1416
-
1417
- foreach ( $package['products'] as $product_id => $product ) {
1418
-
1419
- foreach ( $product['plugins'] as $plugin_slug ) {
1420
-
1421
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
1422
-
1423
- if ( empty( $versions[ $download['slug'] ] ) ) {
1424
- $v = $this->get_plugin_installed_version( $download['name'], $download['slug'] );
1425
- if ( $v ) {
1426
- $versions[ $download['slug'] ] = $v;
1427
- }
1428
- }
1429
-
1430
- }
1431
-
1432
- }
1433
-
1434
- }
1435
-
1436
- return $versions;
1437
- }
1438
-
1439
- public function get_repository_site_key( $repository_id ) {
1440
- $site_key = false;
1441
-
1442
- if ( ! empty( $this->settings['repositories'][ $repository_id ]['subscription']['key'] ) ) {
1443
- $site_key = $this->settings['repositories'][ $repository_id ]['subscription']['key'];
1444
- }
1445
-
1446
- return $site_key;
1447
- }
1448
-
1449
- public function repository_has_valid_subscription( $repository_id ) {
1450
-
1451
- $valid = false;
1452
-
1453
- if ( ! empty( $this->settings['repositories'][ $repository_id ]['subscription'] ) ) {
1454
-
1455
- $subscription = $this->settings['repositories'][ $repository_id ]['subscription']['data'];
1456
- $valid = ( $subscription->status == 1 && ( strtotime( $subscription->expires ) > time() || empty( $subscription->expires ) ) ) || $subscription->status == 4;
1457
-
1458
- }
1459
-
1460
- return $valid;
1461
-
1462
- }
1463
-
1464
- public function repository_has_subscription( $repository_id ) {
1465
- $key = false;
1466
- if ( ! empty( $this->settings['repositories'][ $repository_id ]['subscription']['key'] ) ) {
1467
- $key = $this->settings['repositories'][ $repository_id ]['subscription']['key'];
1468
- }
1469
-
1470
- return $key;
1471
-
1472
- }
1473
-
1474
- public function repository_has_expired_subscription( $repository_id ) {
1475
-
1476
- return $this->repository_has_subscription( $repository_id ) && ! $this->repository_has_valid_subscription( $repository_id );
1477
-
1478
- }
1479
-
1480
- public function get_generic_product_name( $repository_id ) {
1481
-
1482
- return $this->settings['repositories'][ $repository_id ]['data']['product-name'];
1483
-
1484
- }
1485
-
1486
- public function show_subscription_renew_warning( $repository_id, $subscription_id ) {
1487
-
1488
- $show = false;
1489
-
1490
- $data = $this->settings['repositories'][ $repository_id ]['data'];
1491
- if ( ! empty( $data['subscriptions_meta'] ) ) {
1492
- if ( isset( $data['subscriptions_meta']['expiration'] ) ) {
1493
-
1494
- if ( ! empty( $data['subscriptions_meta']['expiration'][ $subscription_id ] ) ) {
1495
-
1496
- $days = $data['subscriptions_meta']['expiration'][ $subscription_id ]['days_warning'];
1497
- $message = $data['subscriptions_meta']['expiration'][ $subscription_id ]['warning_message'];
1498
-
1499
- } else {
1500
-
1501
- //defaults
1502
- $days = 30;
1503
- $message = __( 'You will have to renew your subscription in order to continue getting the updates and support.', 'installer' );
1504
-
1505
- }
1506
-
1507
- if ( ! empty( $this->settings['repositories'][ $repository_id ]['subscription'] ) ) {
1508
- $subscription = $this->settings['repositories'][ $repository_id ]['subscription'];
1509
-
1510
- if ( $subscription['data']->subscription_type == $subscription_id && ! empty( $subscription['data']->expires ) ) {
1511
-
1512
- if ( strtotime( $subscription['data']->expires ) < strtotime( sprintf( "+%d day", $days ) ) ) {
1513
-
1514
- $days_to_expiration = ceil( ( strtotime( $subscription['data']->expires ) - time() ) / 86400 );
1515
-
1516
- echo '<div><p class="installer-warn-box">' .
1517
- sprintf( _n( 'Your subscription expires in %d day.', 'Your subscription expires in %d days.', $days_to_expiration, 'installer' ), $days_to_expiration ) .
1518
- '<br />' . $message .
1519
- '</p></div>';
1520
-
1521
- $show = true;
1522
-
1523
- }
1524
-
1525
- }
1526
-
1527
- }
1528
-
1529
-
1530
- }
1531
- }
1532
-
1533
-
1534
- return $show;
1535
-
1536
- }
1537
-
1538
- public function setup_plugins_renew_warnings() {
1539
-
1540
- $plugins = get_plugins();
1541
-
1542
- $subscriptions_with_warnings = array();
1543
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
1544
-
1545
- if ( $this->repository_has_valid_subscription( $repository_id ) ) {
1546
- $subscription_type = $this->settings['repositories'][ $repository_id ]['subscription']['data']->subscription_type;
1547
- $expires = $this->settings['repositories'][ $repository_id ]['subscription']['data']->expires;
1548
-
1549
- $never_expires = isset( $this->settings['repositories'][ $repository_id ]['subscription'] )
1550
- && empty( $this->settings['repositories'][ $repository_id ]['subscription']['data']->expires )
1551
- && (
1552
- $this->settings['repositories'][ $repository_id ]['subscription']['data']->status == 4 ||
1553
- $this->settings['repositories'][ $repository_id ]['subscription']['data']->status == 1
1554
- );
1555
-
1556
- if ( ! $never_expires ) {
1557
- if ( isset( $this->settings['repositories'][ $repository_id ]['data']['subscriptions_meta']['expiration'][ $subscription_type ] ) ) {
1558
-
1559
- $days_warning = $this->settings['repositories'][ $repository_id ]['data']['subscriptions_meta']['expiration'][ $subscription_type ]['days_warning'];
1560
- $custom_message = $this->settings['repositories'][ $repository_id ]['data']['subscriptions_meta']['expiration'][ $subscription_type ]['warning_message'];
1561
-
1562
- } else {
1563
- //defaults
1564
- $days_warning = 30;
1565
- $custom_message = __( 'You will have to renew your subscription in order to continue getting the updates and support.', 'installer' );
1566
- }
1567
-
1568
- if ( strtotime( $expires ) < strtotime( sprintf( '+%d day', $days_warning ) ) ) {
1569
-
1570
- $days_to_expiration = ceil( ( strtotime( $expires ) - time() ) / 86400 );
1571
-
1572
- $message = sprintf( _n( 'Your subscription expires in %d day.', 'Your subscription expires in %d days.', $days_to_expiration, 'installer' ), $days_to_expiration );
1573
- $subscriptions_with_warnings[ $subscription_type ] = $message . ' ' . $custom_message;
1574
-
1575
- }
1576
- }
1577
-
1578
- }
1579
-
1580
- }
1581
-
1582
-
1583
- foreach ( $plugins as $plugin_id => $plugin ) {
1584
-
1585
- $slug = dirname( $plugin_id );
1586
- if ( empty( $slug ) ) {
1587
- continue;
1588
- }
1589
-
1590
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
1591
-
1592
- if ( $this->repository_has_valid_subscription( $repository_id ) ) {
1593
-
1594
- foreach ( $repository['data']['packages'] as $package ) {
1595
-
1596
- foreach ( $package['products'] as $product ) {
1597
-
1598
- foreach ( $product['plugins'] as $plugin_slug ) {
1599
-
1600
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
1601
-
1602
- if ( $download['slug'] == $slug || $download['name'] == $plugin['Name'] || $download['name'] == $plugin['Title'] ) { //match order: slug, name, title
1603
-
1604
- if ( isset( $subscriptions_with_warnings[ $product['subscription_type'] ] ) ) {
1605
-
1606
- $this->_plugins_renew_warnings[ $plugin_id ] = $subscriptions_with_warnings[ $product['subscription_type'] ];
1607
-
1608
- }
1609
-
1610
- }
1611
-
1612
- }
1613
-
1614
- }
1615
-
1616
- }
1617
-
1618
- }
1619
-
1620
- }
1621
-
1622
- }
1623
-
1624
- }
1625
-
1626
- public function queue_plugins_renew_warnings() {
1627
-
1628
- if ( ! empty( $this->_plugins_renew_warnings ) ) {
1629
-
1630
- foreach ( $this->_plugins_renew_warnings as $plugin_id => $message ) {
1631
-
1632
- add_action( "after_plugin_row_" . $plugin_id, array( $this, 'plugins_renew_warning' ), 10, 3 );
1633
- }
1634
-
1635
- }
1636
-
1637
- }
1638
-
1639
- public function plugins_renew_warning( $plugin_file, $plugin_data, $status ) {
1640
-
1641
- if ( empty( $this->_plugins_renew_warnings[ $plugin_file ] ) ) {
1642
- return;
1643
- }
1644
-
1645
- $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' );
1646
- ?>
1647
-
1648
- <tr class="plugin-update-tr">
1649
- <td colspan="<?php echo $wp_list_table->get_column_count(); ?>" class="plugin-update colspanchange">
1650
- <div class="update-message">
1651
- <?php
1652
- echo $this->_plugins_renew_warnings[ $plugin_file ] . ' ';
1653
- printf( __( '%sRenew here%s.', 'installer' ),
1654
- '<a href="' . $this->menu_url() . '">', '</a>' );
1655
- ?>
1656
- </div>
1657
- </tr>
1658
-
1659
- <?php
1660
-
1661
- }
1662
-
1663
- public function get_subscription_type_for_repository( $repository_id ) {
1664
-
1665
- $subscription_type = false;
1666
-
1667
- if ( ! empty( $this->settings['repositories'][ $repository_id ]['subscription'] ) ) {
1668
- $subscription_type = $this->settings['repositories'][ $repository_id ]['subscription']['data']->subscription_type;
1669
- }
1670
-
1671
- return $subscription_type;
1672
-
1673
- }
1674
-
1675
- public function have_superior_subscription( $subscription_type, $product ) {
1676
-
1677
- $have = false;
1678
-
1679
- if ( is_array( $product['upgrades'] ) ) {
1680
- foreach ( $product['upgrades'] as $u ) {
1681
- if ( $u['subscription_type'] == $subscription_type ) {
1682
- $have = true;
1683
- break;
1684
- }
1685
- }
1686
- }
1687
-
1688
- return $have;
1689
- }
1690
-
1691
- public function is_product_available_for_download( $product_name, $repository_id ) {
1692
-
1693
- $available = false;
1694
-
1695
- $subscription_type = $this->get_subscription_type_for_repository( $repository_id );
1696
- $expired = $this->repository_has_expired_subscription( $repository_id );
1697
-
1698
- if ( $this->repository_has_subscription( $repository_id ) && ! $expired ) {
1699
-
1700
- $this->set_hierarchy_and_order();
1701
-
1702
- foreach ( $this->settings['repositories'][ $repository_id ]['data']['packages'] as $package_id => $package ) {
1703
-
1704
- $has_top_package = false;
1705
-
1706
- foreach ( $package['products'] as $product ) {
1707
-
1708
- if ( $subscription_type == $product['subscription_type'] ) {
1709
- $has_top_package = true;
1710
- if ( $product['name'] == $product_name ) {
1711
- return $available = true;
1712
- }
1713
- }
1714
-
1715
- }
1716
-
1717
- if ( ! empty( $package['sub-packages'] ) ) {
1718
- foreach ( $package['sub-packages'] as $sub_package ) {
1719
- foreach ( $sub_package['products'] as $product ) {
1720
- if ( $product['name'] == $product_name && ( $subscription_type == $product['subscription_type'] || $has_top_package ) ) {
1721
- return $available = true;
1722
- }
1723
- }
1724
- }
1725
- }
1726
-
1727
- }
1728
- }
1729
-
1730
- return $available;
1731
-
1732
- }
1733
-
1734
- public function get_upgrade_options( $repository_id ) {
1735
- $all_upgrades = array();
1736
-
1737
-
1738
- //get all products: packages and subpackages
1739
- $all_products = array();
1740
- foreach ( $this->settings['repositories'][ $repository_id ]['data']['packages'] as $package ) {
1741
- foreach ( $package['products'] as $product ) {
1742
- $all_products[] = $product;
1743
- }
1744
- if ( ! empty( $package['sub-packages'] ) ) {
1745
- foreach ( $package['sub-packages'] as $subpackage ) {
1746
- foreach ( $subpackage['products'] as $product ) {
1747
- $all_products[] = $product;
1748
- }
1749
-
1750
- }
1751
-
1752
- }
1753
-
1754
- }
1755
-
1756
- foreach ( $all_products as $product ) {
1757
- if ( $product['upgrades'] ) {
1758
- foreach ( $product['upgrades'] as $upgrade ) {
1759
- if ( $this->repository_has_valid_subscription( $repository_id ) || ( $this->repository_has_subscription( $repository_id ) && $upgrade['including_expired'] ) ) {
1760
- $all_upgrades[ $upgrade['subscription_type'] ][ $product['subscription_type'] ] = $upgrade;
1761
- }
1762
- }
1763
- }
1764
- }
1765
-
1766
- return $all_upgrades;
1767
-
1768
- }
1769
-
1770
- public function append_site_key_to_download_url( $url, $key, $repository_id ) {
1771
-
1772
- $url_params['site_key'] = $key;
1773
- $url_params['site_url'] = $this->get_installer_site_url( $repository_id );
1774
-
1775
-
1776
- // Add extra parameters for custom Installer packages
1777
- if ( ! empty( $this->package_source ) ) {
1778
- $extra = $this->get_extra_url_parameters();
1779
- if ( ! empty( $extra['repository'] ) && $extra['repository'] == $repository_id ) {
1780
- unset( $extra['repository'] );
1781
- foreach ( $extra as $key => $val ) {
1782
- $url_params[ $key ] = $val;
1783
- }
1784
- }
1785
- }
1786
-
1787
- $url = add_query_arg( $url_params, $url );
1788
-
1789
- if ( $repository_id == 'wpml' ) {
1790
- $url = add_query_arg( array(
1791
- 'using_icl' => $this->_using_icl,
1792
- 'wpml_version' => $this->_wpml_version
1793
- ), $url );
1794
- }
1795
-
1796
- return $url;
1797
-
1798
- }
1799
-
1800
- public function plugin_is_installed( $name, $slug, $version = null ) {
1801
-
1802
- $is = false;
1803
-
1804
- $plugins = get_plugins();
1805
-
1806
- foreach ( $plugins as $plugin_id => $plugin ) {
1807
-
1808
- $wp_plugin_slug = dirname( $plugin_id );
1809
-
1810
- // Exception: embedded plugins
1811
- if ( $wp_plugin_slug == $slug || $plugin['Name'] == $name || $plugin['Title'] == $name || ( $wp_plugin_slug == $slug . '-embedded' || $plugin['Name'] == $name . ' Embedded' ) ) {
1812
- if ( $version ) {
1813
- if ( version_compare( $plugin['Version'], $version, '>=' ) ) {
1814
- $is = $plugin['Version'];
1815
- }
1816
- } else {
1817
- $is = $plugin['Version'];
1818
- }
1819
-
1820
- break;
1821
- }
1822
-
1823
- }
1824
-
1825
- //exception: Types name difference
1826
- if ( ! $is && $name == 'Types' ) {
1827
- return $this->plugin_is_installed( 'Types - Complete Solution for Custom Fields and Types', $slug, $version );
1828
- }
1829
-
1830
- return $is;
1831
- }
1832
-
1833
- public function plugin_is_embedded_version( $name, $slug ) {
1834
- $is = false;
1835
-
1836
- $plugins = get_plugins();
1837
-
1838
- //false if teh full version is also installed
1839
- $is_full_installed = false;
1840
- foreach ( $plugins as $plugin_id => $plugin ) {
1841
-
1842
- if ( ( $plugin['Name'] == $name && ! preg_match( "#-embedded$#", $slug ) ) ) {
1843
- $is_full_installed = true;
1844
- break;
1845
- }
1846
-
1847
- }
1848
-
1849
- if ( $is_full_installed ) {
1850
- return false;
1851
- }
1852
-
1853
- foreach ( $plugins as $plugin_id => $plugin ) {
1854
-
1855
- // TBD
1856
- $wp_plugin_slug = dirname( $plugin_id );
1857
- if ( $wp_plugin_slug == $slug . '-embedded' && $plugin['Name'] == $name . ' Embedded' ) {
1858
- $is = true;
1859
- break;
1860
- }
1861
-
1862
- }
1863
-
1864
- return $is;
1865
-
1866
- }
1867
-
1868
- //Alias for plugin_is_installed
1869
- public function get_plugin_installed_version( $name, $slug ) {
1870
-
1871
- return $this->plugin_is_installed( $name, $slug );
1872
-
1873
- }
1874
-
1875
- public function get_plugin_repository_version( $repository_id, $slug ) {
1876
- $version = false;
1877
-
1878
- if ( ! empty( $this->settings['repositories'][ $repository_id ]['data']['packages'] ) ) {
1879
- foreach ( $this->settings['repositories'][ $repository_id ]['data']['packages'] as $package ) {
1880
- foreach ( $package['products'] as $product ) {
1881
-
1882
- foreach ( $product['plugins'] as $plugin_slug ) {
1883
-
1884
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
1885
-
1886
- if ( $download['slug'] == $slug ) {
1887
- $version = $download['version'];
1888
- break ( 3 );
1889
- }
1890
-
1891
- }
1892
-
1893
- }
1894
- }
1895
- }
1896
-
1897
- return $version;
1898
- }
1899
-
1900
- public function is_uploading_allowed() {
1901
-
1902
- //_deprecated_function ( __FUNCTION__, '1.7.3', 'Installer_Dependencies::' . __FUNCTION__ );
1903
- return $this->dependencies->is_uploading_allowed();
1904
-
1905
- }
1906
-
1907
- public function download_plugin_ajax_handler() {
1908
-
1909
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
1910
- require_once $this->plugin_path() . '/includes/class-installer-upgrader-skins.php';
1911
-
1912
- $data = json_decode( base64_decode( sanitize_text_field( $_POST['data'] ) ), true );
1913
-
1914
- $ret = false;
1915
- $plugin_id = false;
1916
- $message = '';
1917
-
1918
- //validate subscription
1919
- $site_key = $this->get_repository_site_key( $data['repository_id'] );
1920
- $subscription_data = $this->fetch_subscription_data( $data['repository_id'], $site_key, self::SITE_KEY_VALIDATION_SOURCE_DOWNLOAD_REPORT );
1921
-
1922
- if ( $subscription_data && ! is_wp_error( $subscription_data ) && $this->repository_has_valid_subscription( $data['repository_id'] ) ) {
1923
-
1924
- if ( $data['nonce'] == wp_create_nonce( 'install_plugin_' . $data['url'] ) ) {
1925
-
1926
- $upgrader_skins = new Installer_Upgrader_Skins(); //use our custom (mute) Skin
1927
- $upgrader = new Plugin_Upgrader( $upgrader_skins );
1928
-
1929
- remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 );
1930
-
1931
- $plugins = get_plugins();
1932
-
1933
- //upgrade or install?
1934
- foreach ( $plugins as $id => $plugin ) {
1935
- $wp_plugin_slug = dirname( $id );
1936
- $is_embedded = $this->plugin_is_embedded_version( preg_replace( '/ Embedded$/', '', $plugin['Name'] ), preg_replace( '/-embedded$/', '', $wp_plugin_slug ) );
1937
-
1938
- if ( $wp_plugin_slug == $data['slug'] || $is_embedded && preg_replace( '/-embedded$/', '', $wp_plugin_slug ) == $data['slug'] ) {
1939
- $plugin_id = $id;
1940
- break;
1941
- }
1942
- }
1943
-
1944
- if ( $plugin_id && empty( $is_embedded ) ) { //upgrade
1945
- $response['upgrade'] = 1;
1946
-
1947
- $plugin_is_active = is_plugin_active( $plugin_id );
1948
-
1949
- $ret = $upgrader->upgrade( $plugin_id );
1950
-
1951
- if ( ! $ret && ! empty( $upgrader->skin->installer_error ) ) {
1952
- if ( is_wp_error( $upgrader->skin->installer_error ) ) {
1953
- $message = $upgrader->skin->installer_error->get_error_message() .
1954
- ' (' . $upgrader->skin->installer_error->get_error_data() . ')';
1955
- }
1956
- $plugin_version = 0;
1957
- }else{
1958
- if ( $plugin_is_active ) {
1959
- //prevent redirects
1960
- add_filter( 'wp_redirect', '__return_false' );
1961
- activate_plugin( $plugin_id );
1962
- }
1963
- $plugin_version = $this->get_plugin_repository_version( $data['repository_id'], $data['slug'] );
1964
- }
1965
-
1966
- } else { //install
1967
-
1968
- if ( $is_embedded ) {
1969
- delete_plugins( array( $plugin_id ) );
1970
- }
1971
-
1972
- $response['install'] = 1;
1973
- $ret = $upgrader->install( $data['url'] );
1974
- if ( ! $ret && ! empty( $upgrader->skin->installer_error ) ) {
1975
- if ( is_wp_error( $upgrader->skin->installer_error ) ) {
1976
- $message = $upgrader->skin->installer_error->get_error_message() .
1977
- ' (' . $upgrader->skin->installer_error->get_error_data() . ')';
1978
- }
1979
- }
1980
- }
1981
-
1982
- $plugins = get_plugins(); //read again
1983
-
1984
- if ( $ret ) {
1985
- foreach ( $plugins as $id => $plugin ) {
1986
- $wp_plugin_slug = dirname( $id );
1987
- if ( $wp_plugin_slug == $data['slug'] ) {
1988
- $plugin_version = $plugin['Version'];
1989
- $plugin_id = $id;
1990
- break;
1991
- }
1992
- }
1993
-
1994
- }
1995
-
1996
- if( WP_Installer_Channels()->get_channel( $data['repository_id'] ) !== WP_Installer_Channels::CHANNEL_PRODUCTION ){
1997
- $download = $this->settings['repositories'][$data['repository_id']]['data']['downloads']['plugins'][$data['slug']];
1998
- $non_stable = WP_Installer_Channels()->get_download_source_channel( $plugin_version, $data['repository_id'], $download['slug'], 'plugins' );
1999
- }
2000
-
2001
- }
2002
-
2003
- } else { //subscription not valid
2004
-
2005
- $ret = false;
2006
- $message = __( 'Your subscription appears to no longer be valid. Please try to register again using a valid site key.', 'installer' );
2007
- }
2008
-
2009
- $response['version'] = isset( $plugin_version ) ? $plugin_version : 0;
2010
- $response['non_stable']= isset( $non_stable ) ? $non_stable : '';
2011
- $response['plugin_id'] = $plugin_id;
2012
- $response['nonce'] = wp_create_nonce( 'activate_' . $plugin_id );
2013
- $response['success'] = $ret;
2014
- $response['message'] = $message;
2015
-
2016
- echo json_encode( $response );
2017
- exit;
2018
-
2019
- }
2020
-
2021
- public function download_plugin( $slug, $url ) {
2022
-
2023
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
2024
- require_once $this->plugin_path() . '/includes/class-installer-upgrader-skins.php';
2025
-
2026
- $upgrader_skins = new Installer_Upgrader_Skins(); //use our custom (mute) Skin
2027
- $upgrader = new Plugin_Upgrader( $upgrader_skins );
2028
-
2029
- remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 );
2030
-
2031
- $plugins = get_plugins();
2032
-
2033
- $plugin_id = false;
2034
-
2035
- //upgrade or install?
2036
- foreach ( $plugins as $id => $plugin ) {
2037
- $wp_plugin_slug = dirname( $id );
2038
- if ( $wp_plugin_slug == $slug ) {
2039
- $plugin_id = $id;
2040
- break;
2041
- }
2042
- }
2043
-
2044
- if ( $plugin_id ) { //upgrade
2045
-
2046
- $plugin_is_active = is_plugin_active( $plugin_id );
2047
-
2048
- $ret = $upgrader->upgrade( $plugin_id );
2049
-
2050
- if ( $plugin_is_active ) {
2051
- activate_plugin( $plugin_id );
2052
- }
2053
-
2054
- } else { //install
2055
- $ret = $upgrader->install( $url );
2056
- }
2057
-
2058
- return $ret;
2059
-
2060
- }
2061
-
2062
- public function activate_plugin() {
2063
-
2064
- $error = '';
2065
-
2066
- $plugin_id = sanitize_text_field( $_POST['plugin_id'] );
2067
- if ( isset( $_POST['nonce'] ) && $plugin_id && $_POST['nonce'] == wp_create_nonce( 'activate_' . $plugin_id ) ) {
2068
-
2069
- // Deactivate any embedded version
2070
- $plugin_slug = dirname( $plugin_id );
2071
- $active_plugins = get_option( 'active_plugins' );
2072
- foreach ( $active_plugins as $plugin ) {
2073
- $wp_plugin_slug = dirname( $plugin );
2074
- if ( $wp_plugin_slug == $plugin_slug . '-embedded' ) {
2075
- deactivate_plugins( array( $plugin ) );
2076
- break;
2077
- }
2078
- }
2079
-
2080
- //prevent redirects
2081
- add_filter( 'wp_redirect', '__return_false', 10000 );
2082
-
2083
- $return = activate_plugin( $plugin_id );
2084
-
2085
- if ( is_wp_error( $return ) ) {
2086
- $error = $return->get_error_message();
2087
- }
2088
-
2089
- } else {
2090
- $error = 'error';
2091
- }
2092
-
2093
- $ret = array( 'error' => $error );
2094
-
2095
- echo json_encode( $ret );
2096
- exit;
2097
-
2098
- }
2099
-
2100
- public function custom_plugins_api_call( $false, $action, $args ) {
2101
-
2102
- if ( $action == 'plugin_information' ) {
2103
-
2104
- $plugins = get_plugins();
2105
- $plugin_names = array();
2106
- foreach ( $plugins as $plugin_id => $plugin ) {
2107
- // plugins by WP slug which (plugin folder) which can be different
2108
- // will use this to compare by title
2109
- $plugin_names[ dirname( $plugin_id ) ] = array(
2110
- 'name' => $plugin['Name'],
2111
- 'title' => $plugin['Title'],
2112
- );
2113
- }
2114
-
2115
- $slug = $args->slug;
2116
-
2117
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2118
-
2119
- if ( ! $this->repository_has_valid_subscription( $repository_id ) ) {
2120
- $site_key = false;
2121
- } else {
2122
- $site_key = $repository['subscription']['key'];
2123
- }
2124
-
2125
- foreach ( $repository['data']['packages'] as $package ) {
2126
-
2127
- foreach ( $package['products'] as $product ) {
2128
-
2129
- foreach ( $product['plugins'] as $plugin_slug ) {
2130
-
2131
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
2132
-
2133
- if ( $download['slug'] == $slug ||
2134
- isset( $plugin_names[ $slug ] ) && (
2135
- $plugin_names[ $slug ]['name'] == $download['name'] ||
2136
- $plugin_names[ $slug ]['title'] == $download['name']
2137
- )
2138
- ) {
2139
-
2140
- if ( ! empty( $download['free-on-wporg'] ) && $download['channel'] == WP_Installer_Channels::CHANNEL_PRODUCTION ) {
2141
- return false; // use data from wordpress.org
2142
- }
2143
-
2144
- $res = new stdClass();
2145
- $res->external = true;
2146
-
2147
- $res->name = $download['name'];
2148
- $res->slug = $slug;
2149
- $res->version = $download['version'];
2150
- $res->author = '';
2151
- $res->author_profile = '';
2152
- $res->last_updated = $download['date'];
2153
-
2154
- if ( $site_key ) {
2155
- $res->download_link = $this->append_site_key_to_download_url( $download['url'], $site_key, $repository_id );
2156
- }
2157
-
2158
- $res->homepage = $repository['data']['url'];
2159
- $res->sections = array(
2160
- 'Description' => $download['description'],
2161
- 'Changelog' => $download['changelog']
2162
- );
2163
-
2164
- return $res;
2165
-
2166
- }
2167
-
2168
- }
2169
-
2170
- }
2171
-
2172
- }
2173
-
2174
- }
2175
-
2176
- }
2177
-
2178
- return $false;
2179
-
2180
- }
2181
-
2182
- public function plugins_upgrade_check( $update_plugins ) {
2183
-
2184
- if ( ! empty( $this->settings['repositories'] ) ) {
2185
-
2186
- $plugins = get_plugins();
2187
-
2188
- foreach ( $plugins as $plugin_id => $plugin ) {
2189
-
2190
- $slug = dirname( $plugin_id );
2191
- if ( empty( $slug ) ) {
2192
- continue;
2193
- }
2194
-
2195
- $version = $plugin['Version'];
2196
- $name = $plugin['Name'];
2197
-
2198
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2199
-
2200
-
2201
- if ( ! $this->repository_has_valid_subscription( $repository_id ) ) {
2202
- $site_key = false;
2203
- } else {
2204
- $site_key = $repository['subscription']['key'];
2205
- //$subscription_type = $this->get_subscription_type_for_repository($repository_id);
2206
- }
2207
-
2208
- foreach ( $repository['data']['packages'] as $package ) {
2209
-
2210
- foreach ( $package['products'] as $product ) {
2211
-
2212
- foreach ( $product['plugins'] as $plugin_slug ) {
2213
-
2214
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
2215
-
2216
- if ( ! empty( $download['free-on-wporg'] ) && $download['channel'] == WP_Installer_Channels::CHANNEL_PRODUCTION ) {
2217
- continue;
2218
- }
2219
-
2220
- $needs_version_update = version_compare( $download['version'], $version, '>' ) ||
2221
- ! empty( $_POST['reset_to_channel'] );
2222
-
2223
- if (
2224
- empty( $update_plugins->response[ $plugin_id ] ) &&
2225
- ( $download['slug'] == $slug || $download['name'] == $name ) &&
2226
- $needs_version_update
2227
- ) {
2228
- $response = new stdClass();
2229
- $response->id = 0;
2230
- $response->slug = $slug;
2231
- $response->plugin = $plugin_id;
2232
- $response->new_version = $download['version'];
2233
- $response->upgrade_notice = '';
2234
- $response->url = $download['url'];
2235
- if ( $site_key ) {
2236
- $response->package = $this->append_site_key_to_download_url( $download['url'], $site_key, $repository_id );
2237
- }
2238
-
2239
- $response = apply_filters( 'otgs_installer_upgrade_check_response', $response, $plugin_id, $repository_id );
2240
-
2241
- $update_plugins->checked[ $plugin_id ] = $version;
2242
- $update_plugins->response[ $plugin_id ] = $response;
2243
-
2244
- }
2245
-
2246
- }
2247
-
2248
- }
2249
-
2250
- }
2251
-
2252
- }
2253
-
2254
- }
2255
-
2256
- }
2257
-
2258
- return $update_plugins;
2259
-
2260
- }
2261
-
2262
- public function setup_plugins_page_notices() {
2263
- $plugins = get_plugins();
2264
- $template_service = new OTGS_Installer_Twig_Template_Service_Loader(
2265
- array( $this->plugin_path() . '/templates/components-setting/' )
2266
- );
2267
- $local_components_setting = new OTGS_Installer_WP_Share_Local_Components_Setting();
2268
- $plugin_page_notice = new OTGS_Installer_Plugins_Page_Notice( $template_service->get_service(), $local_components_setting );
2269
-
2270
- foreach ( $plugins as $plugin_id => $plugin ) {
2271
-
2272
- $slug = dirname( $plugin_id );
2273
- if ( empty( $slug ) ) {
2274
- continue;
2275
- }
2276
-
2277
- $name = $plugin['Name'];
2278
-
2279
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2280
-
2281
- if ( ! $this->repository_has_valid_subscription( $repository_id ) ) {
2282
- $site_key = false;
2283
- } else {
2284
- $site_key = $repository['subscription']['key'];
2285
- }
2286
-
2287
- foreach ( $repository['data']['packages'] as $package ) {
2288
-
2289
- foreach ( $package['products'] as $product ) {
2290
-
2291
- foreach ( $product['plugins'] as $plugin_slug ) {
2292
-
2293
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
2294
- $display_subscription_notice = false;
2295
- $display_setting_notice = false;
2296
- $is_free_and_production = ! empty( $download['free-on-wporg'] ) && $download['channel'] == WP_Installer_Channels::CHANNEL_PRODUCTION;
2297
-
2298
- if ( $download['slug'] == $slug || $download['name'] == $name ) {
2299
- if ( in_array( $name, array( 'Toolset Types', 'WPML Multilingual CMS' ), true ) ) {
2300
- $display_setting_notice = true;
2301
- }
2302
-
2303
- if ( ! $site_key || ! $this->plugin_is_registered( $repository_id, $download['slug'] ) ) {
2304
- $display_setting_notice = false;
2305
-
2306
- if ( ! $is_free_and_production ) {
2307
- $display_subscription_notice = true;
2308
- }
2309
- }
2310
- }
2311
-
2312
- if ( $display_setting_notice || $display_subscription_notice ) {
2313
- $plugin_page_notice->add_plugin(
2314
- $plugin_id,
2315
- array(
2316
- OTGS_Installer_Plugins_Page_Notice::DISPLAY_SUBSCRIPTION_NOTICE_KEY => $display_subscription_notice,
2317
- OTGS_Installer_Plugins_Page_Notice::DISPLAY_SETTING_NOTICE_KEY => $display_setting_notice,
2318
- )
2319
- );
2320
- }
2321
- }
2322
- }
2323
- }
2324
- }
2325
- }
2326
-
2327
- $plugin_page_notice->add_hooks();
2328
- }
2329
-
2330
- public function localize_strings() {
2331
-
2332
- if ( ! empty( $this->settings['repositories'] ) ) {
2333
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2334
- //set name as call2action when don't have any
2335
- //products
2336
- foreach ( $repository['data']['packages'] as $package_id => $package ) {
2337
- foreach ( $package['products'] as $product_id => $product ) {
2338
- if ( empty( $product['call2action'] ) ) {
2339
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['call2action'] = $product['name'];
2340
- }
2341
-
2342
- foreach ( $product['upgrades'] as $idx => $upg ) {
2343
- if ( empty( $upg['call2action'] ) ) {
2344
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['upgrades'][ $idx ]['call2action'] = $upg['name'];
2345
- }
2346
- }
2347
-
2348
- foreach ( $product['renewals'] as $idx => $rnw ) {
2349
- if ( empty( $rnw['call2action'] ) ) {
2350
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['renewals'][ $idx ]['call2action'] = $rnw['name'];
2351
- }
2352
-
2353
- }
2354
-
2355
- }
2356
- }
2357
- }
2358
- }
2359
-
2360
- global $sitepress;
2361
- if ( is_null( $sitepress ) ) {
2362
- return;
2363
- }
2364
-
2365
- // default strings are always in English
2366
- $user_admin_language = $sitepress->get_admin_language();
2367
-
2368
- if ( $user_admin_language != 'en' ) {
2369
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2370
-
2371
- $localization = $repository['data']['localization'];
2372
-
2373
- //packages
2374
- foreach ( $repository['data']['packages'] as $package_id => $package ) {
2375
-
2376
- if ( isset( $localization['packages'][ $package_id ]['name'][ $user_admin_language ] ) ) {
2377
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['name'] = $localization['packages'][ $package_id ]['name'][ $user_admin_language ];
2378
- }
2379
- if ( isset( $localization['packages'][ $package_id ]['description'][ $user_admin_language ] ) ) {
2380
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['description'] = $localization['packages'][ $package_id ]['description'][ $user_admin_language ];
2381
- }
2382
-
2383
- }
2384
-
2385
- //products
2386
- foreach ( $repository['data']['packages'] as $package_id => $package ) {
2387
- foreach ( $package['products'] as $product_id => $product ) {
2388
-
2389
- if ( isset( $localization['products'][ $product_id ]['name'][ $user_admin_language ] ) ) {
2390
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['name']
2391
- = $localization['products'][ $product_id ]['name'][ $user_admin_language ];
2392
- }
2393
- if ( isset( $localization['products'][ $product_id ]['description'][ $user_admin_language ] ) ) {
2394
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['description']
2395
- = $localization['products'][ $product_id ]['description'][ $user_admin_language ];
2396
- }
2397
- if ( isset( $localization['products'][ $product_id ]['call2action'][ $user_admin_language ] ) ) {
2398
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['name']
2399
- = $localization['products'][ $product_id ]['call2action'][ $user_admin_language ];
2400
- }
2401
-
2402
-
2403
- }
2404
- }
2405
-
2406
- //subscription info
2407
- if ( isset( $repository['data']['subscriptions_meta']['expiration'] ) ) {
2408
- foreach ( $repository['data']['subscriptions_meta']['expiration'] as $subscription_id => $note ) {
2409
- if ( isset( $localization['subscriptions-notes'][ $subscription_id ]['expiration-warning'][ $user_admin_language ] ) ) {
2410
- $this->settings['repositories'][ $repository_id ]['data']['subscriptions_meta']['expiration'][ $subscription_id ]['warning_message']
2411
- = $localization['subscriptions-notes'][ $subscription_id ]['expiration-warning'][ $user_admin_language ];
2412
- }
2413
- }
2414
- }
2415
-
2416
- }
2417
- }
2418
-
2419
- }
2420
-
2421
- public function get_matching_cp( $repository, $args = array() ) {
2422
- $match = false;
2423
-
2424
-
2425
- $cp_name = $cp_author = false;
2426
-
2427
- if ( isset( $this->config['src_name'] ) && isset( $this->config['src_author'] ) ) {
2428
-
2429
- $cp_name = $this->config['src_name'];
2430
- $cp_author = $this->config['src_author'];
2431
-
2432
- } elseif ( isset( $args['src_name'] ) && isset( $args['src_author'] ) ) {
2433
-
2434
- $cp_name = $args['src_name'];
2435
- $cp_author = $args['src_author'];
2436
-
2437
- }
2438
-
2439
- if ( isset( $repository['data']['marketing_cp'] ) ) {
2440
-
2441
- foreach ( $repository['data']['marketing_cp'] as $cp ) {
2442
-
2443
- if ( ! empty( $cp['exp'] ) && time() > $cp['exp'] ) {
2444
- continue;
2445
- }
2446
-
2447
- //Use theme_name for plugins too
2448
- if ( ! empty( $cp['theme_name'] ) ) {
2449
- if ( $cp['author_name'] == $cp_author && $cp['theme_name'] == $cp_name ) {
2450
- $match = $cp;
2451
- continue;
2452
- }
2453
- } else {
2454
- if ( $cp['author_name'] == $cp_author ) {
2455
- $match = $cp;
2456
- continue;
2457
- }
2458
- }
2459
-
2460
- }
2461
-
2462
- }
2463
-
2464
- return $match;
2465
- }
2466
-
2467
- public function set_filtered_prices( $args = array() ) {
2468
-
2469
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2470
-
2471
- $match = $this->get_matching_cp( $repository, $args );
2472
-
2473
- if ( empty( $match ) ) {
2474
- continue;
2475
- }
2476
-
2477
- foreach ( $repository['data']['packages'] as $package_id => $package ) {
2478
-
2479
- foreach ( $package['products'] as $product_id => $product ) {
2480
-
2481
- if ( $match['dtp'] == '%' ) {
2482
- $fprice = round( $product['price'] * ( 1 - $match['amt'] / 100 ), 2 );
2483
- $fprice = $fprice != round( $fprice ) ? sprintf( '%.2f', $fprice ) : round( $fprice, 0 );
2484
- } elseif ( $match['dtp'] == '-' ) {
2485
- $fprice = $product['price'] - $match['amt'];
2486
- } else {
2487
- $fprice = $product['price'];
2488
- }
2489
-
2490
- if ( $fprice ) {
2491
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['price_disc'] = $fprice;
2492
-
2493
- $url_glue = false !== strpos( $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['url'], '?' ) ? '&' : '?';
2494
- $cpndata = base64_encode( json_encode( array(
2495
- 'theme_author' => $match['author_name'],
2496
- 'theme_name' => $match['theme_name'],
2497
- 'vlc' => $match['vlc']
2498
- ) ) );
2499
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['url'] .= $url_glue . 'cpn=' . $cpndata;
2500
-
2501
- foreach ( $product['upgrades'] as $upgrade_id => $upgrade ) {
2502
-
2503
- $fprice = false;
2504
- if ( $match['dtp'] == '%' ) {
2505
- $fprice = round( $upgrade['price'] * ( 1 - $match['amt'] / 100 ), 2 );
2506
- $fprice = $fprice != round( $fprice ) ? sprintf( '%.2f', $fprice ) : round( $fprice, 0 );
2507
- } elseif ( $match['dtp'] == '-' ) {
2508
- $fprice = $upgrade['price'] - $match['amt'];
2509
- }
2510
- if ( $fprice ) {
2511
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['upgrades'][ $upgrade_id ]['price_disc'] = $fprice;
2512
- $this->settings['repositories'][ $repository_id ]['data']['packages'][ $package_id ]['products'][ $product_id ]['upgrades'][ $upgrade_id ]['url'] .= $url_glue . 'cpn=' . $cpndata;
2513
- }
2514
-
2515
-
2516
- }
2517
-
2518
- }
2519
-
2520
- }
2521
-
2522
- }
2523
-
2524
- }
2525
-
2526
- }
2527
-
2528
- public function set_hierarchy_and_order() {
2529
-
2530
- //2 levels
2531
- if ( ! empty( $this->settings['repositories'] ) ) {
2532
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2533
-
2534
- if ( empty( $repository['data']['packages'] ) ) {
2535
- continue;
2536
- }
2537
-
2538
- $all_packages = $repository['data']['packages'];
2539
- $ordered_packages = array();
2540
-
2541
- //backward compatibility - 'order'
2542
- foreach ( $all_packages as $k => $v ) {
2543
- if ( ! isset( $v['order'] ) ) {
2544
- $all_packages[ $k ]['order'] = 0;
2545
- }
2546
- }
2547
-
2548
- //select parents
2549
- foreach ( $all_packages as $package_id => $package ) {
2550
- if ( empty( $package['parent'] ) ) {
2551
- $ordered_packages[ $package_id ] = $package;
2552
- }
2553
- }
2554
-
2555
- //add sub-packages
2556
- foreach ( $all_packages as $package_id => $package ) {
2557
- if ( ! empty( $package['parent'] ) ) {
2558
- if ( isset( $ordered_packages[ $package['parent'] ] ) ) {
2559
- $ordered_packages[ $package['parent'] ]['sub-packages'][ $package_id ] = $package;
2560
- }
2561
- }
2562
- }
2563
-
2564
- // order parents
2565
- usort( $ordered_packages, array( $this, 'compare_package_order' ) );
2566
- //order sub-packages
2567
- foreach ( $ordered_packages as $package_id => $package ) {
2568
- if ( ! empty( $package['sub-packages'] ) ) {
2569
- usort( $ordered_packages[ $package_id ]['sub-packages'], array( $this, 'compare_package_order' ) );
2570
- }
2571
- }
2572
-
2573
- $this->settings['repositories'][ $repository_id ]['data']['packages'] = $ordered_packages;
2574
-
2575
-
2576
- }
2577
- }
2578
-
2579
-
2580
- }
2581
-
2582
- public function compare_package_order($a, $b) {
2583
- return $a['order'] > $b['order'];
2584
- }
2585
-
2586
- public function get_support_tag_by_name( $name, $repository ) {
2587
-
2588
- if ( is_array( $this->settings['repositories'][ $repository ]['data']['support_tags'] ) ) {
2589
- foreach ( $this->settings['repositories'][ $repository ]['data']['support_tags'] as $support_tag ) {
2590
- if ( $support_tag['name'] == $name ) {
2591
- return $support_tag['url'];
2592
- }
2593
- }
2594
- }
2595
-
2596
- return false;
2597
- }
2598
-
2599
- public function plugin_upgrade_custom_errors() {
2600
-
2601
- if ( isset( $_REQUEST['action'] ) ) {
2602
-
2603
- $action = isset( $_REQUEST['action'] ) ? sanitize_text_field( $_REQUEST['action'] ) : '';
2604
-
2605
- //bulk mode
2606
- if ( 'update-selected' == $action ) {
2607
-
2608
- global $plugins;
2609
-
2610
- if ( isset( $plugins ) && is_array( $plugins ) ) {
2611
-
2612
- foreach ( $plugins as $k => $plugin ) {
2613
- $plugin_repository = false;
2614
-
2615
- $wp_plugin_slug = dirname( $plugin );
2616
-
2617
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2618
-
2619
- foreach ( $repository['data']['packages'] as $package ) {
2620
-
2621
- foreach ( $package['products'] as $product ) {
2622
-
2623
- foreach ( $product['plugins'] as $plugin_slug ) {
2624
-
2625
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
2626
-
2627
- if ( $download['slug'] == $wp_plugin_slug ) {
2628
- $plugin_repository = $repository_id;
2629
- $product_name = $repository['data']['product-name'];
2630
- $plugin_name = $download['name'];
2631
- $free_on_wporg = ! empty( $download['free-on-wporg'] ) && $download['channel'] == WP_Installer_Channels::CHANNEL_PRODUCTION;
2632
- break;
2633
- }
2634
-
2635
- }
2636
-
2637
- }
2638
-
2639
- }
2640
-
2641
- }
2642
-
2643
- if ( $plugin_repository ) {
2644
-
2645
- //validate subscription
2646
- static $sub_cache = array();
2647
-
2648
- if ( empty( $sub_cache[ $plugin_repository ] ) ) {
2649
- $site_key = $this->get_repository_site_key( $plugin_repository );
2650
- if ( $site_key ) {
2651
- $subscription_data = $this->fetch_subscription_data( $plugin_repository, $site_key, self::SITE_KEY_VALIDATION_SOURCE_REVALIDATION );
2652
- }
2653
-
2654
- $sub_cache[ $plugin_repository ]['site_key'] = $site_key;
2655
- $sub_cache[ $plugin_repository ]['subscription_data'] = isset( $subscription_data ) ? $subscription_data : false;
2656
- } else {
2657
-
2658
- $site_key = $sub_cache[ $plugin_repository ]['site_key'];
2659
- $subscription_data = $sub_cache[ $plugin_repository ]['subscription_data'];
2660
-
2661
- }
2662
-
2663
- if ( ! $site_key && ! empty( $free_on_wporg ) ) { // allow the download from wp.org
2664
- continue;
2665
- }
2666
-
2667
- if ( empty( $site_key ) || empty( $subscription_data ) ) {
2668
-
2669
-
2670
- $error_message = sprintf( __( "%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first.", 'installer' ),
2671
- '<strong>' . $plugin_name . '</strong>', '<a target="_top" href="' . $this->menu_url() . '&validate_repository=' . $plugin_repository .
2672
- '#repository-' . $plugin_repository . '">', $product_name, '</a>' );
2673
-
2674
- echo '<div class="updated error"><p>' . $error_message . '</p></div>';
2675
-
2676
- unset( $plugins[ $k ] );
2677
-
2678
-
2679
- }
2680
-
2681
- }
2682
-
2683
- }
2684
-
2685
- }
2686
-
2687
- }
2688
-
2689
-
2690
- if ( 'upgrade-plugin' == $action || 'update-plugin' == $action ) {
2691
-
2692
- $plugin = isset( $_REQUEST['plugin'] ) ? trim( sanitize_text_field( $_REQUEST['plugin'] ) ) : '';
2693
-
2694
- $wp_plugin_slug = dirname( $plugin );
2695
-
2696
- $plugin_repository = false;
2697
-
2698
- foreach ( $this->settings['repositories'] as $repository_id => $repository ) {
2699
-
2700
- foreach ( $repository['data']['packages'] as $package ) {
2701
-
2702
- foreach ( $package['products'] as $product ) {
2703
-
2704
- foreach ( $product['plugins'] as $plugin_slug ) {
2705
- $download = $this->settings['repositories'][ $repository_id ]['data']['downloads']['plugins'][ $plugin_slug ];
2706
-
2707
- //match by folder, will change to match by name and folder
2708
- if ( $download['slug'] == $wp_plugin_slug ) {
2709
- $plugin_repository = $repository_id;
2710
- $product_name = $repository['data']['product-name'];
2711
- $plugin_name = $download['name'];
2712
- $free_on_wporg = ! empty( $download['free-on-wporg'] ) && $download['channel'] == WP_Installer_Channels::CHANNEL_PRODUCTION;
2713
- break;
2714
- }
2715
-
2716
- }
2717
-
2718
- }
2719
-
2720
- }
2721
-
2722
- }
2723
-
2724
- if ( $plugin_repository ) {
2725
-
2726
- //validate subscription
2727
- $site_key = $this->get_repository_site_key( $plugin_repository );
2728
- if ( $site_key ) {
2729
- $subscription_data = $this->fetch_subscription_data( $plugin_repository, $site_key, self::SITE_KEY_VALIDATION_SOURCE_REVALIDATION );
2730
- }
2731
-
2732
- if ( ( empty( $site_key ) || empty( $subscription_data ) ) && empty( $free_on_wporg ) ) {
2733
-
2734
- $error_message = sprintf( __( "%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first.", 'installer' ),
2735
- '<strong>' . $plugin_name . '</strong>', '<a href="' . $this->menu_url() . '&validate_repository=' . $plugin_repository .
2736
- '#repository-' . $plugin_repository . '">', $product_name, '</a>' );
2737
-
2738
- if ( defined( 'DOING_AJAX' ) ) { //WP 4.2
2739
-
2740
- $status = array(
2741
- 'update' => 'plugin',
2742
- 'plugin' => $plugin,
2743
- 'slug' => sanitize_key( $_POST['slug'] ),
2744
- 'oldVersion' => '',
2745
- 'newVersion' => '',
2746
- );
2747
-
2748
- $status['errorCode'] = 'wp_installer_invalid_subscription';
2749
- $status['error'] = $error_message;
2750
-
2751
- wp_send_json_error( $status );
2752
-
2753
- } else { // WP 4.1.1
2754
- echo '<div class="updated error"><p>' . $error_message . '</p></div>';
2755
-
2756
-
2757
- echo '<div class="wrap">';
2758
- echo '<h2>' . __( 'Update Plugin', 'installer' ) . '</h2>';
2759
- echo '<a href="' . admin_url( 'plugins.php' ) . '">' . __( 'Return to the plugins page', 'installer' ) . '</a>';
2760
- echo '</div>';
2761
- require_once( ABSPATH . 'wp-admin/admin-footer.php' );
2762
- exit;
2763
-
2764
- }
2765
-
2766
- }
2767
-
2768
-
2769
- }
2770
-
2771
- }
2772
- }
2773
-
2774
- }
2775
-
2776
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/functions-core.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
-
3
- function WP_Installer(){
4
- return WP_Installer::instance();
5
- }
6
-
7
- function WP_Installer_Channels(){
8
- return WP_Installer_Channels::instance();
9
- }
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/includes/functions-templates.php DELETED
@@ -1,6 +0,0 @@
1
- <?php
2
-
3
- // Ext function
4
- function WP_Installer_Show_Products($args = array()){
5
- WP_Installer()->show_products($args);
6
- }
 
 
 
 
 
 
vendor/otgs/installer/installer.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- define( 'WP_INSTALLER_VERSION', '1.8.10' );
3
-
4
- include_once dirname( __FILE__ ) . '/includes/functions-core.php';
5
- include_once dirname( __FILE__ ) . '/includes/class-wp-installer.php';
6
-
7
- include_once WP_Installer()->plugin_path() . '/includes/class-wp-installer-api.php';
8
- include_once WP_Installer()->plugin_path() . '/includes/class-translation-service-info.php';
9
- include_once WP_Installer()->plugin_path() . '/includes/class-installer-dependencies.php';
10
- include_once WP_Installer()->plugin_path() . '/includes/class-wp-installer-channels.php';
11
-
12
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-components-sender.php';
13
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-components-storage.php';
14
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-components-hooks.php';
15
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-share-local-components-setting.php';
16
-
17
- include_once WP_Installer()->plugin_path() . '/templates/template-service/interface-iotgs-installer-template-service.php';
18
- include_once WP_Installer()->plugin_path() . '/templates/template-service/class-otgs-installer-twig-template-service.php';
19
- include_once WP_Installer()->plugin_path() . '/templates/template-service/class-otgs-installer-twig-template-service-loader.php';
20
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-components-setting-templates.php';
21
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-components-setting-resources.php';
22
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-plugins-page-notice.php';
23
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-wp-components-setting-ajax.php';
24
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-filename-hooks.php';
25
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-php-functions.php';
26
- include_once WP_Installer()->plugin_path() . '/includes/class-otgs-installer-icons.php';
27
-
28
- include_once WP_Installer()->plugin_path() . '/includes/functions-templates.php';
29
-
30
- // Initialization
31
- WP_Installer();
32
- WP_Installer_Channels();
33
-
34
- $local_components_resources = new OTGS_Installer_WP_Components_Setting_Resources( WP_Installer() );
35
- $local_components_resources->add_hooks();
36
-
37
- $local_components_setting = new OTGS_Installer_WP_Share_Local_Components_Setting();
38
- $local_components_sender = new OTGS_Installer_WP_Components_Sender(
39
- WP_Installer(),
40
- $local_components_setting
41
- );
42
-
43
- $local_components_storage = new OTGS_Installer_WP_Components_Storage();
44
- $local_components_hooks = new OTGS_Installer_WP_Components_Hooks( $local_components_storage, $local_components_sender, $local_components_setting );
45
- $local_components_hooks->add_hooks();
46
-
47
- $local_components_ajax_setting = new OTGS_Installer_WP_Components_Setting_Ajax(
48
- $local_components_setting,
49
- WP_Installer()
50
- );
51
- $local_components_ajax_setting->add_hooks();
52
-
53
- $filename_hooks = new OTGS_Installer_Filename_Hooks( new OTGS_Installer_PHP_Functions() );
54
- $filename_hooks->add_hooks();
55
-
56
- $icons = new OTGS_Installer_Icons( WP_Installer() );
57
- $icons->add_hooks();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/loader.php DELETED
@@ -1,154 +0,0 @@
1
- <?php
2
-
3
- if ( ! defined( 'ABSPATH' ) ) {
4
- exit; // Exit if accessed directly
5
- }
6
-
7
- //It should only be loaded on the admin side
8
- if ( ! ( defined( 'DOING_CRON' ) && DOING_CRON ) && ! is_admin() ) {
9
- if ( ! function_exists( 'WP_Installer_Setup' ) ) {
10
- function WP_Installer_Setup() {
11
- }
12
- }
13
- $wp_installer_instance = null;
14
-
15
- return;
16
- }
17
-
18
- $wp_installer_instance = dirname(__FILE__) . '/installer.php';
19
-
20
-
21
- // Global stack of instances
22
- global $wp_installer_instances;
23
- $wp_installer_instances[$wp_installer_instance] = array(
24
- 'bootfile' => $wp_installer_instance,
25
- 'version' => '1.8.10'
26
- );
27
-
28
-
29
- /* EXCEPTIONS ********************************************************************************************/
30
- // Exception: When WPML prior 3.2 is used, that instance must be used regardless of another newer instance
31
- // Case 1: WPML loaded before Types - eliminate other instances
32
- if( defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.2', '<') ) {
33
- foreach($wp_installer_instances as $key => $instance) {
34
- if(isset($instance['args']['site_key_nags'])){
35
- $wp_installer_instances[$key]['version'] = '9.9';
36
- }else{
37
- $wp_installer_instances[$key]['version'] = '0';
38
- }
39
- }
40
- }
41
-
42
- // Exception: Types 1.8.9 (Installer 1.7.0) with WPML before 3.3 (Installer before 1.7.0)
43
- // New products file http://d2salfytceyqoe.cloudfront.net/wpml-products33.json overrides the old one
44
- // while the WPML's instance is being used
45
- // => Force using the new Installer Instance
46
- if( defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.3.1', '<') ) {
47
-
48
- // if Installer 1.7.0+ is present, unregister Installer from old WPML
49
- // Force Installer 1.7.0+ being used over older Installer versions
50
- $installer_171_plus_on = false;
51
- foreach($wp_installer_instances as $key => $instance) {
52
- if( version_compare( $instance['version'], '1.7.1', '>=' ) ){
53
- $installer_171_plus_on = true;
54
- break;
55
- }
56
- }
57
-
58
- if( $installer_171_plus_on ){
59
- foreach($wp_installer_instances as $key => $instance) {
60
-
61
- if( version_compare( $instance['version'], '1.7.0', '<' ) ){
62
- unset( $wp_installer_instances[$key] );
63
- }
64
-
65
- }
66
- }
67
-
68
- }
69
-
70
- // Exception: When using the embedded plugins module allow the set up to run completely with the
71
- // Installer instance that triggers it
72
- if( isset( $_POST['installer_instance'] ) && isset( $wp_installer_instances[$_POST['installer_instance']] ) ){
73
- $wp_installer_instances[$_POST['installer_instance']]['version'] = '999';
74
- }
75
- /* EXCEPTIONS ********************************************************************************************/
76
-
77
-
78
- // Only one of these in the end
79
- remove_action('after_setup_theme', 'wpml_installer_instance_delegator', 1);
80
- add_action('after_setup_theme', 'wpml_installer_instance_delegator', 1);
81
-
82
- // When all plugins load pick the newest version
83
- if(!function_exists('wpml_installer_instance_delegator')){
84
- function wpml_installer_instance_delegator(){
85
- global $wp_installer_instances;
86
-
87
- // version based election
88
- foreach($wp_installer_instances as $instance){
89
-
90
- if(!isset($delegate)){
91
- $delegate = $instance;
92
- continue;
93
- }
94
-
95
- if(version_compare($instance['version'], $delegate['version'], '>')){
96
- $delegate = $instance;
97
- }
98
- }
99
-
100
- // priority based election
101
- $highest_priority = null;
102
- foreach($wp_installer_instances as $instance) {
103
- if(isset($instance['args']['high_priority'])){
104
- if(is_null($highest_priority) || $instance['args']['high_priority'] <= $highest_priority){
105
- $highest_priority = $instance['args']['high_priority'];
106
- $delegate = $instance;
107
- }
108
- }
109
- }
110
-
111
- // Exception: When WPML prior 3.2 is used, that instance must be used regardless of another newer instance
112
- // Case 2: WPML loaded after Types
113
- if( defined('ICL_SITEPRESS_VERSION') && version_compare(ICL_SITEPRESS_VERSION, '3.2', '<') ) {
114
- foreach($wp_installer_instances as $key => $instance) {
115
- if(isset($instance['args']['site_key_nags'])){
116
- $delegate = $instance;
117
- $wp_installer_instances = array($key => $delegate); //Eliminate other instances
118
- break;
119
- }
120
- }
121
- }
122
-
123
- include_once $delegate['bootfile'];
124
-
125
- // set configuration
126
- if(strpos(realpath($delegate['bootfile']), realpath(TEMPLATEPATH)) === 0){
127
- $delegate['args']['in_theme_folder'] = dirname(ltrim(str_replace(realpath(TEMPLATEPATH), '', realpath($delegate['bootfile'])), '\\/'));
128
- }
129
- if(isset($delegate['args']) && is_array($delegate['args'])){
130
- foreach($delegate['args'] as $key => $value){
131
- WP_Installer()->set_config($key, $value);
132
- }
133
- }
134
-
135
- }
136
- }
137
-
138
- if(!function_exists('WP_Installer_Setup')){
139
-
140
- // $args:
141
- // plugins_install_tab = true|false (default: true)
142
- // repositories_include = array() (default: all)
143
- // repositories_exclude = array() (default: none)
144
- // template = name (default: default)
145
- //
146
- // Ext function
147
- function WP_Installer_Setup($wp_installer_instance, $args = array()){
148
- global $wp_installer_instances;
149
-
150
- $wp_installer_instances[$wp_installer_instance]['args'] = $args;
151
-
152
- }
153
-
154
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/locale/installer-ar.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-de_DE.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-el.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-es_ES.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-fr_FR.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-he_IL.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-it_IT.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-ja.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-ko_KR.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-nl_NL.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-pl_PL.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-pt_BR.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-pt_PT.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-ru_RU.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-sv_SE.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-uk_UA.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-vi.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-zh_CN.mo DELETED
Binary file
vendor/otgs/installer/locale/installer-zh_TW.mo DELETED
Binary file
vendor/otgs/installer/locale/orig/installer.po DELETED
@@ -1,230 +0,0 @@
1
- # This file was generated by WPML
2
- # WPML is a WordPress plugin that can turn any WordPress site into a full featured multilingual content management system.
3
- # https://wpml.org
4
- msgid ""
5
- msgstr ""
6
- "Content-Type: text/plain; charset=utf-8\n"
7
- "Content-Transfer-Encoding: 8bit\n"
8
- "Project-Id-Version:WPML_EXPORT\n"
9
- "POT-Creation-Date: \n"
10
- "PO-Revision-Date: \n"
11
- "Last-Translator: \n"
12
- "Language-Team: \n"
13
- "Language:en\n"
14
- "MIME-Version: 1.0\n"
15
-
16
- msgid "Installer"
17
- msgstr ""
18
-
19
- msgid "Registered"
20
- msgstr ""
21
-
22
- msgid "Register"
23
- msgstr ""
24
-
25
- msgid "To get automatic updates, you need to register %s for this site. %sRegister %s%s"
26
- msgstr ""
27
-
28
- msgid "Dismiss"
29
- msgstr ""
30
-
31
- msgid "Commercial"
32
- msgstr ""
33
-
34
- msgid "Installer cannot contact our updates server to get information about the available products and check for new versions. If you are seeing this message for the first time, you can ignore it, as it may be a temporary communication problem. If the problem persists and your WordPress admin is slowing down, you can disable automated version checks. Add the following line to your wp-config.php file:"
35
- msgstr ""
36
-
37
- msgid "No repositories defined."
38
- msgstr ""
39
-
40
- msgid "%s cannot access %s to register. Try again to see if it's a temporary problem. If the problem continues, make sure that this site has access to the Internet. You can still use the plugin without registration, but you will not receive automated updates."
41
- msgstr ""
42
-
43
- msgid "Invalid site key for the current site."
44
- msgstr ""
45
-
46
- msgid "You will have to renew your subscription in order to continue getting the updates and support."
47
- msgstr ""
48
-
49
- msgid "%sRenew here%s."
50
- msgstr ""
51
-
52
- msgid "Your subscription appears to no longer be valid. Please try to register again using a valid site key."
53
- msgstr ""
54
-
55
- msgid "You need to have a valid subscription in order to get upgrades or support for this plugin. %sPurchase a subscription or enter an existing site key%s."
56
- msgstr ""
57
-
58
- msgid "%s cannot update because your site's registration is not valid. Please %sregister %s%s again for this site first."
59
- msgstr ""
60
-
61
- msgid "Update Plugin"
62
- msgstr ""
63
-
64
- msgid "Return to the plugins page"
65
- msgstr ""
66
-
67
- msgid "Your subscription expires in %d day."
68
- msgstr ""
69
-
70
- msgid "Your subscription expires in %d days."
71
- msgstr ""
72
-
73
- msgid "Downloading is not possible because WordPress cannot write into the plugins folder. %sHow to fix%s."
74
- msgstr ""
75
-
76
- msgid "Plugin"
77
- msgstr ""
78
-
79
- msgid "downloading..."
80
- msgstr ""
81
-
82
- msgid "failed!"
83
- msgstr ""
84
-
85
- msgid "downloaded"
86
- msgstr ""
87
-
88
- msgid "activating"
89
- msgstr ""
90
-
91
- msgid "activated"
92
- msgstr ""
93
-
94
- msgid "Activate after download"
95
- msgstr ""
96
-
97
- msgid "Operation complete!"
98
- msgstr ""
99
-
100
- msgid "Download failed!\n\nClick OK to revalidate your subscription or CANCEL to try again."
101
- msgstr ""
102
-
103
- msgid "Available"
104
- msgstr ""
105
-
106
- msgid "Installed"
107
- msgstr ""
108
-
109
- msgid "Downloading"
110
- msgstr ""
111
-
112
- msgid "Activate"
113
- msgstr ""
114
-
115
- msgid "Download"
116
- msgstr ""
117
-
118
- msgid "Downloads:"
119
- msgstr ""
120
-
121
- msgid "Current version"
122
- msgstr ""
123
-
124
- msgid "Released"
125
- msgstr ""
126
-
127
- msgid "Installed version"
128
- msgstr ""
129
-
130
- msgid "(embedded)"
131
- msgstr ""
132
-
133
- msgid "installing..."
134
- msgstr ""
135
-
136
- msgid "updating..."
137
- msgstr ""
138
-
139
- msgid "installed"
140
- msgstr ""
141
-
142
- msgid "updated"
143
- msgstr ""
144
-
145
- msgid "Download failed!\n\nPlease refresh the page and try again."
146
- msgstr ""
147
-
148
- msgid "Incorrect setup"
149
- msgstr ""
150
-
151
- msgid "Invalid product"
152
- msgstr ""
153
-
154
- msgid "Unknown repository"
155
- msgstr ""
156
-
157
- msgid " Your current site key (%s) does not match the selected product (%s)."
158
- msgstr ""
159
-
160
- msgid "Buy %s"
161
- msgstr ""
162
-
163
- msgid "Already bought %s?"
164
- msgstr ""
165
-
166
- msgid "Renew %s"
167
- msgstr ""
168
-
169
- msgid "Remove current site key (%s)"
170
- msgstr ""
171
-
172
- msgid "%s support on wpml.org"
173
- msgstr ""
174
-
175
- msgid "Enter site key"
176
- msgstr ""
177
-
178
- msgid "Subscription is expired."
179
- msgstr ""
180
-
181
- msgid "Add"
182
- msgstr ""
183
-
184
- msgid "Are you sure you want to remove this site key?"
185
- msgstr ""
186
-
187
- msgid "Register %s"
188
- msgstr ""
189
-
190
- msgid "1. Go to your %s%s account%s and add this site URL: %s"
191
- msgstr ""
192
-
193
- msgid "Unregister %s from this site"
194
- msgstr ""
195
-
196
- msgid "%s is registered on this site. You will receive automatic updates until %s"
197
- msgstr ""
198
-
199
- msgid "%s is registered on this site. Your Lifetime account gives you updates for life."
200
- msgstr ""
201
-
202
- msgid "This page lets you install plugins and update existing plugins. To remove any of these plugins, go to the %splugins%s page and if you have the permission to remove plugins you should be able to do this."
203
- msgstr ""
204
-
205
- msgid "Already bought?"
206
- msgstr ""
207
-
208
- msgid "2. Enter your site key"
209
- msgstr ""
210
-
211
- msgid "Subscription is expired. You need to either purchase a new subscription or upgrade if available."
212
- msgstr ""
213
-
214
- msgid "Check for updates"
215
- msgstr ""
216
-
217
- msgid "Individual components"
218
- msgstr ""
219
-
220
- msgid "OK"
221
- msgstr ""
222
-
223
- msgid "Cancel"
224
- msgstr ""
225
-
226
- msgid "Are you sure you want to unregister?"
227
- msgstr ""
228
-
229
- msgid "Click to see individual components options."
230
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/phpcs.compatibility.xml DELETED
@@ -1,19 +0,0 @@
1
- <?xml version="1.0"?>
2
- <ruleset name="WPML">
3
- <description>WPML Coding Standards</description>
4
-
5
- <config name="testVersion" value="5.2"/>
6
-
7
- <rule ref="PHPCompatibility" />
8
-
9
- <exclude-pattern>*/vendor/*</exclude-pattern>
10
- <exclude-pattern>*/tests/*</exclude-pattern>
11
- <exclude-pattern>*.js</exclude-pattern>
12
- <exclude-pattern>*.mo</exclude-pattern>
13
- <exclude-pattern>*.po</exclude-pattern>
14
- <exclude-pattern>*.twig</exclude-pattern>
15
- <exclude-pattern>*.css</exclude-pattern>
16
- <exclude-pattern>*.scss</exclude-pattern>
17
-
18
-
19
- </ruleset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/phpcs.xml DELETED
@@ -1,17 +0,0 @@
1
- <?xml version="1.0"?>
2
- <ruleset name="WPML">
3
- <description>WPML Coding Standards</description>
4
-
5
- <rule ref="WordPress-Core"/>
6
- <rule ref="WordPress-Docs"/>
7
- <rule ref="WordPress-Extra"/>
8
-
9
- <exclude-pattern>*/vendor/*</exclude-pattern>
10
- <exclude-pattern>*/tests/*</exclude-pattern>
11
- <exclude-pattern>*.js</exclude-pattern>
12
- <exclude-pattern>*.mo</exclude-pattern>
13
- <exclude-pattern>*.po</exclude-pattern>
14
- <exclude-pattern>*.twig</exclude-pattern>
15
- <exclude-pattern>*.css</exclude-pattern>
16
- <exclude-pattern>*.scss</exclude-pattern>
17
- </ruleset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/phpunit.xml DELETED
@@ -1,24 +0,0 @@
1
- <phpunit
2
- bootstrap="./tests/phpunit/bootstrap.php"
3
- backupGlobals="false"
4
- colors="true"
5
- convertErrorsToExceptions="true"
6
- convertNoticesToExceptions="true"
7
- convertWarningsToExceptions="true"
8
- >
9
- <testsuites>
10
- <testsuite name="installer-tests">
11
- <directory suffix=".php">./tests/phpunit/tests/</directory>
12
- </testsuite>
13
- </testsuites>
14
- <filter>
15
- <whitelist>
16
- <directory suffix=".php">./</directory>
17
- <exclude>
18
- <directory>./locale</directory>
19
- <directory>./tests</directory>
20
- <directory>./vendor</directory>
21
- </exclude>
22
- </whitelist>
23
- </filter>
24
- </phpunit>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/repositories.xml DELETED
@@ -1,13 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <repositories>
3
- <repository>
4
- <id>wpml</id>
5
- <apiurl>https://api.wpml.org/</apiurl>
6
- <products>http://d2salfytceyqoe.cloudfront.net/wpml33-products.json</products>
7
- </repository>
8
- <repository>
9
- <id>toolset</id>
10
- <apiurl>https://api.wp-types.com/</apiurl>
11
- <products>http://d7j863fr5jhrr.cloudfront.net/toolset33-products.json</products>
12
- </repository>
13
- </repositories>
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/css/admin.css DELETED
@@ -1,339 +0,0 @@
1
- .otgsi_site_key_form{
2
- display:none;
3
- /*display:inline;*/
4
- }
5
- .otgs-installer-register-inputs {
6
- display: block;
7
- }
8
- @media (min-width: 1100px) {
9
- .otgs-installer-register-inputs {
10
- display: inline;
11
- white-space: nowrap;
12
- }
13
- }
14
- .otgsi_site_key_form .otgs-installer-register-inputs input {
15
- vertical-align: middle;
16
- margin: 3px 1px;
17
- height: 28px;
18
- line-height: 26px;
19
- }
20
-
21
-
22
- .installer-status-installing, .installer-status-installed, .installer-status-updating, .installer-status-updated, .installer-status-activating, .installer-status-activated, .installer-status-success{
23
- display: none;
24
- }
25
- .installer-status-installing{color: #FF9900; }
26
- .installer-status-installed{color: #003300; font-weight: bold; }
27
- .installer-status-updating{color: #FF9900; }
28
- .installer-status-updated{color: #003300; font-weight: bold; }
29
-
30
- .installer-status-installed .error-details:before,
31
- .installer-status-updated .error-details:before{
32
- content: "\f534";
33
- font: 200 16px/1 dashicons;
34
- vertical-align: text-bottom;
35
- margin-left: 5px;
36
- color: red;
37
- cursor: help;
38
- }
39
-
40
- .installer-status-activating{color: #996666 }
41
- .installer-status-activated{color: #333366; font-weight: bold; }
42
-
43
- .js-status-success p{
44
- color: #FF9900;
45
- padding: 4px;
46
- }
47
-
48
- .installer-green-text{
49
- color:#006600;
50
- font-weight:bold;
51
- }
52
-
53
- .installer-red-text{
54
- color:#b22121;
55
- font-weight:bold;
56
- }
57
-
58
- .installer-footnote{
59
- color:#3d5e69;
60
- display:block;
61
- float: left;
62
- font-style: italic;
63
- font-size: 90%;
64
- }
65
-
66
- .installer-products-list li{
67
- display: inline;
68
- margin-right: 20px;
69
- }
70
-
71
- .otgs_wp_installer_table a.disabled{
72
- color:#888;
73
- }
74
-
75
- .otgs_wp_installer_subtable{
76
- clear: both;
77
- margin-left:-20px;
78
- }
79
- .otgs_wp_installer_subtable td p{
80
- font-size: 92%;
81
- }
82
-
83
- .installer-status-error{
84
- color: #f00;
85
- }
86
-
87
- .installer-status-note{
88
- color: #6F6E6D;
89
- font-style: italic;
90
- }
91
-
92
- .installer-warn-text{
93
- color: #FF6400;
94
- }
95
-
96
- .installer-warn-box{
97
- -webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;border:1px solid #FF6400;background-color:#df8a48;
98
- color: #333;
99
- padding: 5px;
100
- }
101
- .installer-warn-box span.details{
102
- font-style: italic;
103
- color:#777;
104
- }
105
-
106
- .installer-error-box{
107
- color:#962722;
108
- margin-top: 10px;
109
- }
110
- .installer-error-box p{
111
- margin: 10px 0 10px 0;
112
- -webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;border:1px solid #962722;background-color:#F5C8C6;
113
- color: #333;
114
- padding: 5px;
115
- text-align: center;
116
- }
117
-
118
- .spinner-inline{
119
- float: none;
120
- display: inline-block;
121
- visibility: visible;
122
- }
123
-
124
- .installer-q-icon:before{
125
- content: '\f223' !important;
126
- font-family: dashicons !important;
127
- font-size: 20px;
128
- line-height: 1;
129
- color: #f56e28;
130
- }
131
-
132
- .installer-plugin-update-tr td{
133
- padding-left:3px !important;
134
- }
135
-
136
- .otgsi_yellow_bg{
137
- background-color: #f2f46b;
138
- }
139
-
140
- .otgs_wp_installer_table_compact{
141
- width:480px;
142
- border: solid 1px #999;
143
- padding:10px;
144
- border-radius: 5px;
145
- }
146
-
147
- .installer-plugins-list-compact{
148
- background-color: #fff;
149
- border-collapse: collapse;
150
- border:solid 1px #C1DAD7;
151
- width:100%;
152
- }
153
-
154
- .installer-plugins-list-compact tr th{
155
- padding-top:3px;
156
- background-color: #ccc;
157
- }
158
-
159
- .installer-plugins-list-compact tr{
160
- background-color: #ddd;
161
- }
162
-
163
- .installer-plugins-list-compact tr.even{
164
- background-color: #eee;
165
- }
166
-
167
- .installer-plugins-list-compact td{
168
- padding:2px 5px 2px 5px;
169
- border-right: 1px solid #C1DAD7;
170
- border-bottom: 1px solid #C1DAD7;
171
- }
172
-
173
- .installer-plugins-list-compact td.twelve{
174
- width:16px;
175
- }
176
-
177
- .otgs_wp_installer_table_compact .installer-status-downloading,
178
- .otgs_wp_installer_table_compact .installer-status-downloaded,
179
- .otgs_wp_installer_table_compact .installer-status-activating,
180
- .otgs_wp_installer_table_compact .installer-status-activated{
181
- display: none;
182
- color:transparent; width: 12px; padding:2px;
183
- }
184
-
185
- .otgs_wp_installer_table_compact .installer-status-success,
186
- .otgs_wp_installer_table_compact .installer-status-fail{
187
- display: none;
188
- }
189
-
190
- .installer-status-success{
191
- float: right;
192
- color: #006600;
193
- }
194
-
195
- .otgs_wp_installer_table_compact .installer-status-downloading{background: url(../img/dn.gif) no-repeat center; }
196
- .otgs_wp_installer_table_compact .installer-status-downloaded{background: url(../img/complete.png) no-repeat center;}
197
- .otgs_wp_installer_table_compact .installer-status-activating{background: url(../img/dn.gif) no-repeat center; }
198
- .otgs_wp_installer_table_compact .installer-status-activated{background: url(../img/complete.png) no-repeat center; }
199
- .otgs_wp_installer_table_compact .installer-status-error{background: url(../img/icon_error.gif) no-repeat center; }
200
-
201
- .installer_highlight{
202
- color:#c5510b;
203
- }
204
-
205
- .installer_highlight_package{
206
- background-color: #fff9c0;
207
- }
208
-
209
- .plugin_progress{
210
- font-style: italic;
211
- color: #777
212
- }
213
-
214
- .installer-download-progress-status{
215
- display: none;
216
- float:right;
217
- color: #006600;
218
- font-style: italic;
219
- background: url('../img/spinner.gif') no-repeat;
220
- padding-left:24px;
221
- }
222
-
223
- .installer-release-notes{
224
- display: none;
225
- }
226
-
227
- .handle.extended:after{
228
- content: "▾";
229
- font-size: 24px;
230
- vertical-align:bottom;
231
- }
232
- .installer-table-wrap a.handle:active,
233
- .installer-table-wrap a.handle:focus{
234
- outline:0;
235
- border:none;
236
- box-shadow: none;
237
- }
238
-
239
- .installer-release-notes .arrow_box {
240
- position: relative;
241
- background: #eee;
242
- border: 1px solid #ccc;
243
- }
244
- .installer-release-notes .arrow_box:after, .installer-release-notes .arrow_box:before {
245
- bottom: 100%;
246
- left: 50%;
247
- border: solid transparent;
248
- content: " ";
249
- height: 0;
250
- width: 0;
251
- position: absolute;
252
- pointer-events: none;
253
- }
254
-
255
- .installer-release-notes .arrow_box:after {
256
- border-color: rgba(238, 238, 238, 0);
257
- border-bottom-color: #eee;
258
- border-width: 16px;
259
- margin-left: -16px;
260
- }
261
- .installer-release-notes .arrow_box:before {
262
- border-color: rgba(204, 204, 204, 0);
263
- border-bottom-color: #ccc;
264
- border-width: 17px;
265
- margin-left: -17px;
266
- }
267
-
268
- .installer-release-notes .arrow_box div{
269
- margin-top:5px;
270
- padding: 10px;
271
- overflow-y: auto;
272
- max-height: 400px;
273
- }
274
-
275
- .otgs-is-dismissible {
276
- position: relative;
277
- padding-right: 38px;
278
- }
279
- .otgs-is-dismissible .notice-dismiss {
280
- text-decoration: none;
281
- }
282
- .otgs-is-dismissible p [class*="button-"] {
283
- margin: -5px 5px;
284
- }
285
-
286
- .otgsi_downloads_form{
287
- margin-top: 15px;
288
- }
289
-
290
- .spinner-with-text{
291
- padding-left: 25px;
292
- float:none;
293
- width: auto;
294
- }
295
- .installer-channel-update-ok{
296
- padding-left: 10px;
297
- display: none;
298
- color: #006600;
299
- }
300
- .installer-channel-update-fail{
301
- padding-left: 10px;
302
- display: none;
303
- color: #962722;
304
- }
305
-
306
- .otgs_wp_installer_table .installer-repository-image {
307
- padding: 8px 20px;
308
- }
309
-
310
- .remove_site_key_js:disabled,
311
- .enter_site_key_js:disabled {
312
- cursor: help;
313
- }
314
-
315
- .otgs-installer-registered span {
316
- display: inline-block;
317
- vertical-align: middle;
318
- margin-bottom: .5em;
319
- }
320
-
321
- @media (min-width: 1400px) {
322
- .otgs-installer-registered-buttons {
323
- float: right;
324
- }
325
- }
326
-
327
- .otgs-installer-keepuptodate small {
328
- display: block;
329
- margin-top: 3px;
330
- line-height: 1.3;
331
- }
332
-
333
- @media (min-width: 783px) {
334
- .otgs-installer-keepuptodate small {
335
- -webkit-margin-start: 25px;
336
- -moz-margin-start: 25px;
337
- margin-start: 25px;
338
- }
339
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/css/tooltip/tooltip.css DELETED
@@ -1 +0,0 @@
1
- .otgs-installer-tooltip-open{text-decoration:none}.js-otgs-installer-tooltip{z-index:110000 !important}.js-otgs-installer-tooltip .wp-pointer-content{padding:10px 25px 10px 10px}.js-otgs-installer-tooltip .wp-pointer-buttons{padding:0;position:absolute;overflow:hidden;top:4px;right:5px}.js-otgs-installer-tooltip a.close{width:18px;height:18px;padding:0}.js-otgs-installer-tooltip a.close:before{left:1px;top:0}
 
vendor/otgs/installer/res/img/complete.png DELETED
Binary file
vendor/otgs/installer/res/img/computer.png DELETED
Binary file
vendor/otgs/installer/res/img/dn.gif DELETED
Binary file
vendor/otgs/installer/res/img/dn2.gif DELETED
Binary file
vendor/otgs/installer/res/img/globe.png DELETED
Binary file
vendor/otgs/installer/res/img/icon_error.gif DELETED
Binary file
vendor/otgs/installer/res/img/on.png DELETED
Binary file
vendor/otgs/installer/res/img/spinner.gif DELETED
Binary file
vendor/otgs/installer/res/js/admin.js DELETED
@@ -1,463 +0,0 @@
1
-
2
-
3
- var otgs_wp_installer = {
4
-
5
- plugins_update_XHR :{},
6
-
7
- init: function(){
8
-
9
- jQuery('.otgs_wp_installer_table').on('click', '.enter_site_key_js', otgs_wp_installer.show_site_key_form);
10
- jQuery('.otgs_wp_installer_table').on('click', '.cancel_site_key_js', otgs_wp_installer.hide_site_key_form);
11
-
12
- jQuery('.otgs_wp_installer_table').on('click', '.remove_site_key_js', otgs_wp_installer.remove_site_key);
13
- jQuery('.otgs_wp_installer_table').on('click', '.update_site_key_js', otgs_wp_installer.update_site_key);
14
-
15
- jQuery('.otgs_wp_installer_table').on('submit', '.otgsi_site_key_form', otgs_wp_installer.save_site_key);
16
- jQuery('.otgs_wp_installer_table').on('submit', '.otgsi_downloads_form', otgs_wp_installer.download_downloads);
17
- jQuery('.otgs_wp_installer_table').on('change', '.otgsi_downloads_form :checkbox[name="downloads[]"]', otgs_wp_installer.update_downloads_form);
18
-
19
- jQuery('.installer-dismiss-nag').click(otgs_wp_installer.dismiss_nag);
20
-
21
- jQuery('.otgs_wp_installer_table').on('click', '.installer_expand_button', otgs_wp_installer.toggle_subpackages);
22
-
23
- otgs_wp_installer.scroll_to_repository();
24
-
25
- if( typeof pagenow != 'undefined' && pagenow == 'plugins'){
26
-
27
- jQuery(document).ajaxSuccess(function(event, xhr, settings) {
28
- var data = otgs_wp_installer.getQueryParameters(settings.data);
29
- if(typeof data.action != 'undefined' && data.action == 'update-plugin'){
30
- response = xhr.responseJSON.data;
31
- if(typeof response.error != 'undefined'){
32
- var default_error = jQuery('#' + response.slug + '-update .update-message').html();
33
- jQuery('#' + response.slug + '-update .update-message').html(default_error + ' &raquo;<span class="installer-red-text"> ' + response.error + '</span>');
34
- }
35
- }
36
- return false;
37
- });
38
-
39
- }
40
-
41
- if( typeof pagenow != 'undefined' && pagenow == 'plugin-install' ){
42
- jQuery( '.plugin-install-tab-commercial .search-plugins' ).remove();
43
- }
44
-
45
- jQuery('.installer-table-wrap').on('click', '.js-release-notes', otgs_wp_installer.toggle_release_notes);
46
- },
47
-
48
- getQueryParameters : function(str) {
49
- return (str || document.location.search).replace(/(^\?)/,'').split("&").map(function(n){return n = n.split("="),this[n[0]] = n[1],this}.bind({}))[0];
50
- },
51
-
52
- reset_errors: function(){
53
- jQuery('.installer-error-box').html('').hide();
54
- },
55
-
56
- show_error: function(repo, text){
57
- jQuery('#installer_repo_' + repo).find('.installer-error-box').html(text).show();
58
- },
59
-
60
- show_site_key_form: function () {
61
-
62
- var button = jQuery(this);
63
-
64
- if (button.attr('disabled')) {
65
- alert(button.attr('title'));
66
- return false;
67
- }
68
-
69
- otgs_wp_installer.reset_errors();
70
-
71
- var form = button.closest('td').find('form.otgsi_site_key_form');
72
- button.parent('p').hide();
73
-
74
- form.show();
75
- form.find('input[name^=site_key_]').focus().val('');
76
- form.find('input').removeAttr('disabled');
77
-
78
- form.closest('.otgsi_register_product_wrap').addClass('otgsi_yellow_bg');
79
-
80
- return false;
81
-
82
- },
83
-
84
- hide_site_key_form: function () {
85
- var button = jQuery(this);
86
- var form = button.closest('td').find('form');
87
- form.hide();
88
-
89
- form.closest('.otgsi_register_product_wrap').removeClass('otgsi_yellow_bg').find('.enter_site_key_wrap_js').show();
90
- otgs_wp_installer.reset_errors();
91
- return false;
92
- },
93
-
94
- save_site_key: function(){
95
-
96
- var thisf = jQuery(this);
97
- var data = jQuery(this).serialize();
98
- jQuery(this).find('input').attr('disabled', 'disabled');
99
-
100
- var spinner = jQuery('<span class="spinner"></span>');
101
- spinner.css({display: 'inline-block', float: 'right', visibility: 'visible'}).prependTo(jQuery(this));
102
-
103
- otgs_wp_installer.reset_errors();
104
-
105
- jQuery.ajax({url: ajaxurl, type: 'POST', dataType:'json', data: data, success:
106
- function(ret){
107
- if(!ret.error){
108
- otgs_wp_installer.saved_site_key();
109
- }else{
110
- otgs_wp_installer.show_error(thisf.find('[name=repository_id]').val(), ret.error);
111
- thisf.find('input').removeAttr('disabled');
112
- }
113
-
114
- if(typeof ret.debug != 'undefined'){
115
- thisf.append('<textarea style="width:100%" rows="20">' + ret.debug + '</textarea>');
116
- }
117
-
118
- spinner.remove();
119
- }
120
- });
121
-
122
- return false;
123
-
124
- },
125
-
126
- saved_site_key: function(){
127
- location.reload();
128
- },
129
-
130
- remove_site_key: function(){
131
-
132
- if( jQuery(this).attr('disabled') == 'disabled' ){
133
-
134
- alert( jQuery(this).attr('title') );
135
- return false;
136
-
137
- } else {
138
-
139
- if(confirm(jQuery(this).data('confirmation'))){
140
-
141
- jQuery('<span class="spinner"></span>').css({visibility: 'visible', float: 'none'}).prependTo(jQuery(this).parent());
142
- data = {action: 'remove_site_key', repository_id: jQuery(this).data('repository'), nonce: jQuery(this).data('nonce')}
143
- jQuery.ajax({url: ajaxurl, type: 'POST', data: data, success: otgs_wp_installer.removed_site_key});
144
- }
145
-
146
- }
147
-
148
- return false;
149
- },
150
-
151
- removed_site_key: function(){
152
- location.reload();
153
- },
154
-
155
- update_site_key: function(){
156
- var error_wrap = jQuery(this).closest('.otgsi_register_product_wrap').find('.installer-error-box');
157
- error_wrap.html('');
158
-
159
- var spinner = jQuery('<span class="spinner"></span>');
160
-
161
- spinner.css({visibility: 'visible', float: 'none'}).prependTo(jQuery(this).parent());
162
- data = {action: 'update_site_key', repository_id: jQuery(this).data('repository'), nonce: jQuery(this).data('nonce')}
163
- jQuery.ajax({
164
- url: ajaxurl,
165
- type: 'POST',
166
- data: data,
167
- dataType: 'json',
168
- complete: function( event, xhr, settings ){
169
- var error = '';
170
- if(xhr == 'success') {
171
- var ret = event.responseJSON;
172
- if(ret.error){
173
- error = ret.error;
174
- }else{
175
- otgs_wp_installer.updated_site_key(ret);
176
- }
177
- }else{
178
- error = 'Error processing request (' + xhr + '). Please try again!';
179
- }
180
-
181
- if( error ){
182
- error_wrap.html('<p>' + error + '</p>').show();
183
- spinner.remove();
184
- }
185
-
186
- }
187
- });
188
-
189
- return false;
190
-
191
- },
192
-
193
- updated_site_key: function(ret){
194
- location.reload();
195
- },
196
-
197
- update_downloads_form: function(){
198
-
199
- var checked = jQuery('.otgsi_downloads_form :checkbox:checked[name="downloads[]"]').length;
200
-
201
- if(checked){
202
- jQuery(this).closest('form').find(':submit, :checkbox[name=activate]').removeAttr('disabled');
203
- }else{
204
- jQuery(this).closest('form').find(':submit, :checkbox[name=activate]').attr('disabled', 'disabled');
205
- }
206
-
207
-
208
- },
209
-
210
- download_downloads: function(){
211
-
212
- var activate = jQuery(this).find(":checkbox:checked[name=activate]").val(),
213
- action_button = jQuery(this).find('input[type="submit"]');
214
- downloads_form = jQuery(this),
215
- idx = 0,
216
- checkboxes = [];
217
-
218
- jQuery(this).find(':checkbox:checked[name="downloads[]"]').each(function(){
219
- if(jQuery(this).attr('disabled')) return;
220
- checkboxes[idx] = jQuery(this);
221
- idx++;
222
- jQuery(this).attr('disabled', 'disabled');
223
- });
224
-
225
- idx = 0;
226
-
227
- if( typeof checkboxes[idx] != 'undefined' ){
228
- download_and_activate( checkboxes[idx] );
229
- action_button.attr('disabled', 'disabled');
230
- }
231
-
232
- function download_and_activate( elem ){
233
-
234
- var this_tr = elem.closest('tr');
235
- var is_update = this_tr.find('.installer-red-text').length;
236
- if(is_update){
237
- var installing = this_tr.find('.installer-status-updating');
238
- var installed = this_tr.find('.installer-status-updated');
239
- }else{
240
- var installing = this_tr.find('.installer-status-installing');
241
- var installed = this_tr.find('.installer-status-installed');
242
-
243
- }
244
- if(activate){
245
- var activating = this_tr.find('.installer-status-activating');
246
- var activated = this_tr.find('.installer-status-activated');
247
- }
248
-
249
- if( this_tr.find('.for_spinner_js .spinner').length > 0 ){
250
- var spinner = this_tr.find('.for_spinner_js .spinner');
251
- }else{
252
- var spinner = this_tr.find('.installer-status-downloading');
253
- }
254
-
255
- otgs_wp_installer.reset_errors();
256
- downloads_form.find('div.installer-status-success').hide();
257
- spinner.css('visibility', 'visible');
258
- installing.show();
259
-
260
- var plugin_name = this_tr.find('.installer_plugin_name').html();
261
- if(is_update){
262
- otgs_wp_installer.show_download_progress_status(downloads_form, installer_strings.updating.replace('%s', plugin_name));
263
- }else{
264
- otgs_wp_installer.show_download_progress_status(downloads_form, installer_strings.installing.replace('%s', plugin_name));
265
- }
266
-
267
-
268
- data = {
269
- action: 'installer_download_plugin',
270
- data: elem.val(),
271
- activate: activate,
272
- reset_to_channel: downloads_form.find('input[name="reset-to-channel"]').val()
273
- }
274
-
275
- otgs_wp_installer.plugins_update_XHR = jQuery.ajax({
276
- url: ajaxurl,
277
- type: 'POST',
278
- dataType: 'json',
279
- data: data,
280
- success: function(ret){
281
- installing.hide();
282
-
283
- if(!ret.success){
284
- installed.addClass('installer-status-error');
285
- installed.html(
286
- installed.data('fail') +
287
- '<a class="error-details" href="#" title="' + ret.message + '"></a>'
288
- );
289
-
290
- if(ret.message){
291
- installed.closest('.otgs_wp_installer_table')
292
- .find('.installer-error-box')
293
- .html('<p>' + ret.message + '</p>')
294
- .show();
295
- }else{
296
- installed.closest('.otgs_wp_installer_table')
297
- .find('.installer-error-box')
298
- .html('<p>' + downloads_form.find('.installer-revalidate-message').html() + '</p>')
299
- .show();
300
- }
301
-
302
- downloads_form.trigger('installer-update-fail');
303
- }
304
-
305
- installed.show();
306
- spinner.fadeOut();
307
-
308
- if(ret.version){
309
- var updated_version = '<span class="installer-green-text">' + ret.version + '</span>';
310
- if( ret.non_stable ){
311
- updated_version += ' (' + ret.non_stable + ')';
312
- }
313
- this_tr.find('.installer_version_installed').html(updated_version);
314
- }
315
-
316
- if(ret.success && activate){
317
-
318
- otgs_wp_installer.show_download_progress_status(downloads_form, installer_strings.activating.replace('%s', plugin_name));
319
- activating.show();
320
- spinner.show();
321
- this_tr.find('.installer-red-text').removeClass('installer-red-text').addClass('installer-green-text').html(ret.version);
322
-
323
- jQuery.ajax({
324
- url: ajaxurl,
325
- type: 'POST',
326
- dataType: 'json',
327
- data: {action: 'installer_activate_plugin', plugin_id: ret.plugin_id, nonce: ret.nonce},
328
- success: function(ret){
329
- activating.hide();
330
- if(!ret.error ){
331
- activated.show();
332
- }
333
-
334
- spinner.fadeOut();
335
-
336
- idx++;
337
- if( typeof checkboxes[idx] != 'undefined' ){
338
- download_and_activate( checkboxes[idx] );
339
- }else{
340
- otgs_wp_installer.hide_download_progress_status(downloads_form);
341
- downloads_form.find('div.installer-status-success').show();
342
- action_button.removeAttr('disabled');
343
-
344
- downloads_form.trigger('installer-update-complete');
345
- }
346
- }
347
- });
348
- }else{
349
- idx++;
350
- if( typeof checkboxes[idx] != 'undefined' ){
351
- download_and_activate( checkboxes[idx] );
352
- }else{
353
- otgs_wp_installer.hide_download_progress_status(downloads_form);
354
- downloads_form.find('div.installer-status-success').show();
355
- action_button.removeAttr('disabled');
356
-
357
- downloads_form.trigger('installer-update-complete');
358
-
359
- }
360
- }
361
- }
362
-
363
- });
364
-
365
- };
366
-
367
- return false;
368
- },
369
-
370
- show_download_progress_status: function(downloads_form, text){
371
-
372
- downloads_form.find('.installer-download-progress-status').html(text).fadeIn();
373
-
374
- },
375
-
376
- hide_download_progress_status: function(downloads_form){
377
-
378
- downloads_form.find('.installer-download-progress-status').html('').fadeOut();
379
-
380
- },
381
-
382
- dismiss_nag: function(){
383
-
384
- var thisa = jQuery(this);
385
-
386
- data = {action: 'installer_dismiss_nag', repository: jQuery(this).data('repository')}
387
-
388
- jQuery.ajax({url: ajaxurl, type: 'POST', dataType:'json', data: data, success:
389
- function(ret){
390
- thisa.closest('.otgs-is-dismissible').remove();
391
- }
392
- });
393
-
394
- return false;
395
- },
396
-
397
- toggle_subpackages: function(){
398
- var list = jQuery(this).closest('td').find('.otgs_wp_installer_subtable');
399
-
400
- if(list.is(':visible')){
401
- list.slideUp('fast');
402
- }else{
403
- list.slideDown('fast');
404
- }
405
-
406
-
407
- return false;
408
-
409
- },
410
-
411
- scroll_to_repository: function(){
412
-
413
- var ref = window.location.hash.replace('#', '');
414
-
415
- if(ref) {
416
- var split = ref.split('/');
417
- var repo = split[0];
418
-
419
- if(typeof split[1] != 'undefined'){
420
- var package = split[1];
421
- var repo_element = jQuery('#repository-' + repo);
422
-
423
-
424
-
425
- if(repo_element.length){
426
-
427
- jQuery('html, body').animate({
428
- scrollTop: repo_element.offset().top
429
- }, 1000);
430
-
431
- var package_element = jQuery('#repository-' + repo +'_' + package);
432
-
433
- if(package_element.length && !package_element.is(':visible')){
434
- package_element.parents('.otgs_wp_installer_subtable').slideDown();
435
- package_element.addClass('installer_highlight_package');
436
- }
437
-
438
- package_element.find('.button-secondary').removeClass('button-secondary').addClass('button-primary');
439
- }
440
- }
441
-
442
- }
443
-
444
- },
445
-
446
- toggle_release_notes: function(){
447
- var handle = jQuery(this);
448
- var tr = handle.closest('tr');
449
- if( tr.next('.installer-release-notes').is(':visible') ){
450
- handle.removeClass('extended');
451
- }else{
452
- handle.addClass('extended');
453
- }
454
- tr.next('.installer-release-notes').fadeToggle();
455
-
456
- return false;
457
- }
458
-
459
-
460
- }
461
-
462
-
463
- jQuery(document).ready(otgs_wp_installer.init);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/js/channels.js DELETED
@@ -1,261 +0,0 @@
1
- (function($){
2
-
3
- var updateErrors = [];
4
- var channelUpdateInProgress = false;
5
-
6
- function channelSelectorInit(){
7
-
8
- $('.otgs_wp_installer_table')
9
- .on('focus', '.installer-channel-selector', saveCurrentValue)
10
- .on('change', '.installer-channel-selector', maybeShowPrompt);
11
-
12
- $('.otgs_wp_installer_table')
13
- .on('click', '.installer-channel-retry', retryChannelSwitch)
14
-
15
- $('.installer-switch-confirmation')
16
- .on('click', '.js-cancel', cancelSwitch)
17
- .on('click', '.js-proceed', changeChannel);
18
-
19
- $('.otgsi_downloads_form').on('installer-update-complete', maybeShowWarn);
20
- $('.otgsi_downloads_form').on('installer-update-complete', hideUpdateProgress);
21
-
22
- $('.otgsi_downloads_form').on('installer-update-complete', showConfirmationMessage);
23
-
24
- $('.otgsi_downloads_form').on('installer-update-fail', logUpdateError);
25
-
26
- }
27
-
28
- function saveCurrentValue(){
29
- $(this).data('previous-value', $(this).val());
30
- }
31
-
32
- function maybeShowPrompt(){
33
- var selectorContainer = $(this).closest('.installer-channel-selector-wrap');
34
- var prompt = selectorContainer.find('.installer-switch-confirmation:hidden');
35
-
36
- if(prompt.length){
37
- prompt.show();
38
- selectorContainer.find('select').prop('disabled', true);
39
- var warnText = selectorContainer.find('.installer-warn-text');
40
- warnText.hide();
41
- }else{
42
- changeChannel(selectorContainer);
43
- }
44
-
45
- }
46
-
47
- function changeChannel(selectorContainer){
48
-
49
- if(selectorContainer.type == 'click'){
50
- var selectorContainer = $(this).closest('.installer-channel-selector-wrap');
51
- }
52
-
53
- var select = selectorContainer.find('select');
54
- select.prop('disabled', true);
55
-
56
- hideConfirmationMessage(select);
57
- showUpdateProgress(select);
58
-
59
- selectorContainer.find('.installer-switch-confirmation').hide();
60
-
61
- var data = {
62
- action: 'installer_set_channel',
63
- repository_id: select.data('repository-id'),
64
- channel: select.val(),
65
- nonce: select.parent().find('.nonce').val(),
66
- noprompt: selectorContainer.find('.js-remember').length ?
67
- selectorContainer.find('.js-remember').attr('checked') == 'checked' : 0
68
- }
69
-
70
- resetUpdateErrors();
71
- otgs_wp_installer.reset_errors();
72
- channelUpdateInProgress = true;
73
-
74
- // save selection
75
- jQuery.ajax({
76
- url: ajaxurl,
77
- type: 'POST',
78
- dataType: 'json',
79
- data: data,
80
- success: function (ret) {
81
- if( ret.status == 'OK'){
82
- var tableSelector = '#installer_repo_' + select.data('repository-id') + ' .installer-table-wrap';
83
- $(tableSelector).load( location.href + ' ' + tableSelector + ' table.widefat', function(){
84
-
85
- var upgradesCount = $(tableSelector).find('tr .installer-red-text').length
86
- || select.val() == 1 && $(tableSelector).find('td.installer_version_installed .unstable').length;
87
- if( upgradesCount > 0){
88
- automaticUpgrade(tableSelector);
89
- }else{
90
- $('#installer_repo_' + select.data('repository-id') + ' .otgsi_downloads_form')
91
- .trigger('installer-update-complete');
92
- }
93
-
94
- select.prop('disabled', false);
95
- } );
96
- }
97
-
98
- }
99
-
100
- });
101
-
102
- }
103
-
104
- function retryChannelSwitch(){
105
- var selectorContainer = $(this).closest('.installer-channel-selector-wrap');
106
- changeChannel(selectorContainer);
107
- return false;
108
- }
109
-
110
- function cancelSwitch(){
111
- $(this).closest('.installer-switch-confirmation').hide();
112
- var select = $(this).closest('.installer-switch-confirmation').prev().find('.installer-channel-selector');
113
- var previousValue = select.data('previous-value');
114
-
115
- select.val(previousValue).prop('disabled', false);
116
-
117
- if( select.val() > 1){
118
- var selectorContainer = $(this).closest('.installer-channel-selector-wrap');
119
- var warnText = selectorContainer.find('.installer-warn-text');
120
- warnText.show();
121
- }
122
-
123
- }
124
-
125
- function automaticUpgrade(downloadsTable){
126
- $(downloadsTable + ' tr').each(
127
- function () {
128
- var needsUpgrade = $(this).find(
129
- 'td.installer_version_installed .installer-red-text, ' +
130
- 'td.installer_version_installed .unstable'
131
- ).length > 0;
132
- if (needsUpgrade) {
133
- $(this).find('td :checkbox').prop('disabled', false).prop('checked', true);
134
- }
135
- }
136
- );
137
-
138
- $(downloadsTable)
139
- .closest('form')
140
- .append('<input type="hidden" name="reset-to-channel" value="1">')
141
- .submit();
142
-
143
- }
144
-
145
- function maybeShowWarn(){
146
-
147
- var select = $(this)
148
- .closest('.otgs_wp_installer_table')
149
- .find('.installer-channel-selector')
150
-
151
- if(select.val() > 1 && !hasUpdateErrors()){
152
-
153
- var warnText = select
154
- .closest('.installer-channel-selector-wrap')
155
- .find('.installer-warn-text');
156
- warnText.show();
157
-
158
- }
159
-
160
-
161
- }
162
-
163
- function showUpdateProgress(select){
164
-
165
- var spinner = select
166
- .closest('.installer-channel-selector-wrap')
167
- .find('.spinner-with-text');
168
-
169
- spinner.addClass('is-active').show();
170
-
171
- }
172
-
173
- function hideUpdateProgress(){
174
-
175
- var spinner = $(this)
176
- .closest('.otgs_wp_installer_table')
177
- .find('.installer-channel-selector-wrap')
178
- .find('.spinner-with-text');
179
-
180
- spinner.removeClass('is-active').hide();
181
-
182
- }
183
-
184
- function showConfirmationMessage(){
185
-
186
- if( ! channelUpdateInProgress ) return false;
187
-
188
- var selectWrap = $(this)
189
- .closest('.otgs_wp_installer_table')
190
- .find('.installer-channel-selector-wrap');
191
-
192
- var select = $(this)
193
- .closest('.otgs_wp_installer_table')
194
- .find('.installer-channel-selector');
195
-
196
- var channelName = select.find('option:selected').text();
197
-
198
- if( hasUpdateErrors() ) {
199
-
200
- var message = selectWrap.find('.installer-channel-update-fail');
201
- // suppress default errors
202
- $(this).closest('.otgs_wp_installer_table').find('.installer-error-box').hide();
203
-
204
- var channelType = select.val() == 1 ? 'stable' : 'unstable';
205
- message.html(message.data('text-' + channelType).replace(/%CHANNEL%/, channelName));
206
-
207
- }else{
208
-
209
- var message = selectWrap.find('.installer-channel-update-ok');
210
- message.html(message.data('text').replace(/%CHANNEL%/, channelName));
211
- }
212
-
213
- message.show();
214
-
215
- channelUpdateInProgress = false;
216
- }
217
-
218
- function hideConfirmationMessage(select){
219
-
220
- var selectWrap = select.closest('.installer-channel-selector-wrap');
221
- if( hasUpdateErrors() ){
222
- var message = selectWrap.find('.installer-channel-update-fail');
223
- }else{
224
- var message = selectWrap.find('.installer-channel-update-ok');
225
- }
226
-
227
- message.hide();
228
- }
229
-
230
- /*
231
- function showFailureMessage(download_form){
232
- var message = download_form
233
- .closest('.otgs_wp_installer_table')
234
- .find('.installer-channel-selector-wrap')
235
- .find('.installer-channel-update-fail');
236
-
237
- var channelName = $(this)
238
- .closest('.otgs_wp_installer_table')
239
- .find('.installer-channel-selector option:selected')
240
- .text();
241
-
242
- message.html( message.data('text').replace(/%CHANNEL%/, channelName) );
243
- message.show();
244
- }
245
- */
246
-
247
- function logUpdateError(){
248
- updateErrors.push(1);
249
- }
250
-
251
- function resetUpdateErrors(){
252
- updateErrors = [];
253
- }
254
-
255
- function hasUpdateErrors() {
256
- return updateErrors.length;
257
- }
258
-
259
- $(document).ready( channelSelectorInit );
260
-
261
- })(jQuery)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/js/iframeResizer.min.js DELETED
@@ -1,10 +0,0 @@
1
- /*! iFrame Resizer (iframeSizer.min.js ) - v2.6.1 - 2014-09-03
2
- * Desc: Force cross domain iframes to size to content.
3
- * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame.
4
- * Copyright: (c) 2014 David J. Bradshaw - dave@bradshaw.net
5
- * License: MIT
6
- */
7
-
8
- !function(){"use strict";function a(a,b,c){"addEventListener"in window?a.addEventListener(b,c,!1):"attachEvent"in window&&a.attachEvent("on"+b,c)}function b(){var a,b=["moz","webkit","o","ms"];for(a=0;a<b.length&&!w;a+=1)w=window[b[a]+"RequestAnimationFrame"];w||c(" RequestAnimationFrame not supported")}function c(a){y.log&&"object"==typeof console&&console.log(s+"[Host page"+u+"]"+a)}function d(a){function b(){function a(){h(z),f(),y.resizedCallback(z)}i(a,z,"resetPage")}function d(a){var b=a.id;c(" Removing iFrame: "+b),a.parentNode.removeChild(a),y.closedCallback(b),c(" --")}function e(){var a=x.substr(t).split(":");return{iframe:document.getElementById(a[0]),id:a[0],height:a[1],width:a[2],type:a[3]}}function j(a){var b=Number(y["max"+a]),d=Number(y["min"+a]),e=a.toLowerCase(),f=Number(z[e]);if(d>b)throw new Error("Value for min"+a+" can not be greater than max"+a);c(" Checking "+e+" is in range "+d+"-"+b),d>f&&(f=d,c(" Set "+e+" to min value")),f>b&&(f=b,c(" Set "+e+" to max value")),z[e]=""+f}function k(){var b=a.origin,d=z.iframe.src.split("/").slice(0,3).join("/");if(y.checkOrigin&&(c(" Checking connection is from: "+d),""+b!="null"&&b!==d))throw new Error("Unexpected message received from: "+b+" for "+z.iframe.id+". Message was: "+a.data+". This error can be disabled by adding the checkOrigin: false option.");return!0}function l(){return s===(""+x).substr(0,t)}function m(){var a=z.type in{"true":1,"false":1};return a&&c(" Ignoring init message from meta parent page"),a}function n(){var a=x.substr(x.indexOf(":")+r+6);c(" MessageCallback passed: {iframe: "+z.iframe.id+", message: "+a+"}"),y.messageCallback({iframe:z.iframe,message:a}),c(" --")}function o(){if(null===z.iframe)throw new Error("iFrame ("+z.id+") does not exist on "+u);return!0}function q(){c(" Reposition requested from iFrame"),v={x:z.width,y:z.height},f()}function w(){switch(z.type){case"close":d(z.iframe),y.resizedCallback(z);break;case"message":n();break;case"scrollTo":q();break;case"reset":g(z);break;case"init":b(),y.initCallback(z.iframe);break;default:b()}}var x=a.data,z={};l()&&(c(" Received: "+x),z=e(),j("Height"),j("Width"),!m()&&o()&&k()&&(w(),p=!1))}function e(){null===v&&(v={x:void 0!==window.pageXOffset?window.pageXOffset:document.documentElement.scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:document.documentElement.scrollTop},c(" Get position: "+v.x+","+v.y))}function f(){null!==v&&(window.scrollTo(v.x,v.y),c(" Set position: "+v.x+","+v.y),v=null)}function g(a){function b(){h(a),j("reset","reset",a.iframe)}c(" Size reset requested by "+("init"===a.type?"host page":"iFrame")),e(),i(b,a,"init")}function h(a){function b(b){a.iframe.style[b]=a[b]+"px",c(" IFrame ("+a.iframe.id+") "+b+" set to "+a[b]+"px")}y.sizeHeight&&b("height"),y.sizeWidth&&b("width")}function i(a,b,d){d!==b.type&&w?(c(" Requesting animation frame"),w(a)):a()}function j(a,b,d){c("["+a+"] Sending msg to iframe ("+b+")"),d.contentWindow.postMessage(s+b,"*")}function k(){function b(){function a(a){1/0!==y[a]&&0!==y[a]&&(k.style[a]=y[a]+"px",c(" Set "+a+" = "+y[a]+"px"))}a("maxHeight"),a("minHeight"),a("maxWidth"),a("minWidth")}function d(a){return""===a&&(k.id=a="iFrameResizer"+o++,c(" Added missing iframe ID: "+a+" ("+k.src+")")),a}function e(){c(" IFrame scrolling "+(y.scrolling?"enabled":"disabled")+" for "+l),k.style.overflow=!1===y.scrolling?"hidden":"auto",k.scrolling=!1===y.scrolling?"no":"yes"}function f(){("number"==typeof y.bodyMargin||"0"===y.bodyMargin)&&(y.bodyMarginV1=y.bodyMargin,y.bodyMargin=""+y.bodyMargin+"px")}function h(){return l+":"+y.bodyMarginV1+":"+y.sizeWidth+":"+y.log+":"+y.interval+":"+y.enablePublicMethods+":"+y.autoResize+":"+y.bodyMargin+":"+y.heightCalculationMethod+":"+y.bodyBackground+":"+y.bodyPadding+":"+y.tolerance}function i(b){a(k,"load",function(){var a=p;j("iFrame.onload",b,k),!a&&y.heightCalculationMethod in x&&g({iframe:k,height:0,width:0,type:"init"})}),j("init",b,k)}var k=this,l=d(k.id);e(),b(),f(),i(h())}function l(a){if("object"!=typeof a)throw new TypeError("Options is not an object.")}function m(){function a(a){if("IFRAME"!==a.tagName.toUpperCase())throw new TypeError("Expected <IFRAME> tag, found <"+a.tagName+">.");k.call(a)}function b(a){a=a||{},l(a);for(var b in z)z.hasOwnProperty(b)&&(y[b]=a.hasOwnProperty(b)?a[b]:z[b])}return function(c,d){b(c),Array.prototype.forEach.call(document.querySelectorAll(d||"iframe"),a)}}function n(a){a.fn.iFrameResize=function(b){return b=b||{},l(b),y=a.extend({},z,b),this.filter("iframe").each(k).end()}}var o=0,p=!0,q="message",r=q.length,s="[iFrameSizer]",t=s.length,u="",v=null,w=window.requestAnimationFrame,x={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},y={},z={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,enablePublicMethods:!1,heightCalculationMethod:"offset",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,scrolling:!1,sizeHeight:!0,sizeWidth:!1,tolerance:0,closedCallback:function(){},initCallback:function(){},messageCallback:function(){},resizedCallback:function(){}};b(),a(window,"message",d),"jQuery"in window&&n(jQuery),"function"==typeof define&&define.amd?define(function(){return m()}):window.iFrameResize=m()}();
9
- //# sourceMappingURL=../src/iframeResizer.map
10
-
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/js/installer_theme_install.js DELETED
@@ -1,97 +0,0 @@
1
- jQuery( document ).ready( function( $ ) {
2
-
3
- /** Append OTGS Theme tab */
4
- var js_array= installer_theme_install_localize.js_array_installer;
5
-
6
- if (!($.isEmptyObject(js_array))) {
7
- //Unempty
8
- for(var key in js_array) {
9
- //Dont append if we are on commercial plugins tab page and if there are no themes
10
- if ((!(js_array[key]['is_commercial_plugin_tab'])) && (!(installer_theme_install_localize.no_associated_themes))) {
11
- $('div.wp-filter ul.filter-links').append('<li><a data-sort="'+key+'" href="#">'+ js_array[key]['the_hyperlink_text'] +'</a></li>');
12
- }
13
- }
14
- }
15
-
16
- /** Page load event tab selected identifier */
17
- var loaded_browsing_tab=installer_theme_extended_object.getParameterByName('browse');
18
- if (loaded_browsing_tab.length > 0) {
19
-
20
- var frontend_tab_selected_tab = loaded_browsing_tab;
21
-
22
- } else if (0 == loaded_browsing_tab.length){
23
-
24
- //WordPress defaults to 'Featured' when theme install is loaded without the browse parameter
25
- var frontend_tab_selected_tab = 'featured';
26
- }
27
-
28
- /** Prepare data on page load event for AJAX */
29
- var data = {
30
- action: 'installer_theme_frontend_selected_tab',
31
- installer_theme_frontend_selected_tab_nonce: installer_theme_install_localize.installer_theme_frontend_selected_tab_nonce,
32
- frontend_tab_selected :frontend_tab_selected_tab
33
- };
34
-
35
- //Call AJAX
36
- installer_theme_extended_object.doAJAX(data,frontend_tab_selected_tab,js_array);
37
-
38
- /** When user clicks on any tab */
39
- $(document).on('click','.filter-links li > a',function () {
40
-
41
- //Get data_sort
42
- var data_sort =$(this).attr('data-sort');
43
-
44
- if (data_sort) {
45
- //data_sort is set, prepare data
46
- var data = {
47
- action: 'installer_theme_frontend_selected_tab',
48
- installer_theme_frontend_selected_tab_nonce: installer_theme_install_localize.installer_theme_frontend_selected_tab_nonce,
49
- frontend_tab_selected : data_sort
50
- };
51
-
52
- //Call AJAX
53
- installer_theme_extended_object.doAJAX(data,data_sort,js_array);
54
-
55
- }
56
- });
57
-
58
- var fullhash = window.location.hash;
59
- if (fullhash.length > 0) {
60
- var product_selector=fullhash+' '+'.enter_site_key_js';
61
- if ($(product_selector).length ) {
62
- $(product_selector).click();
63
- }
64
- }
65
- });
66
-
67
- //Installer theme extended JS object for methods
68
- var installer_theme_extended_object = {
69
-
70
- getParameterByName: function(name) {
71
- name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
72
- var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
73
- results = regex.exec(location.search);
74
- return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
75
- },
76
-
77
- doAJAX: function(data,data_sort,js_array) {
78
-
79
- //We only want to post to AJAX if its an OTGS tab
80
- jQuery.post(installer_theme_install_localize.ajaxurl, data, function(response) {
81
- //AJAX response
82
- var myObject = jQuery.parseJSON(response);
83
- if (typeof myObject != "undefined") {
84
- if(myObject.hasOwnProperty("output")){
85
- var tab_selected= myObject.output;
86
- if (data_sort in js_array) {
87
- if (!(installer_theme_install_localize.js_array_installer[tab_selected]['registration_status'])) {
88
- //Not registered, no theme response
89
- var unregistered_message= myObject.unregistered_messages;
90
- jQuery('.no-themes').html(unregistered_message);
91
- }
92
- }
93
- }
94
- }
95
- });
96
- }
97
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/js/save-components-setting.js DELETED
@@ -1,21 +0,0 @@
1
- jQuery(document).ready(function () {
2
- jQuery( '.js-otgs-components-report-user-choice' ).click(function () {
3
- var spinner = jQuery(this).parent().prev();
4
-
5
- spinner.addClass('is-active');
6
-
7
- jQuery.ajax({
8
- url: ajaxurl,
9
- type: 'POST',
10
- data: {
11
- action: jQuery(this).data('nonce-action'),
12
- nonce: jQuery(this).data('nonce-value'),
13
- agree: jQuery(this).is(':checked') ? 1 : 0,
14
- repo: jQuery(this).data('repo')
15
- },
16
- success: function () {
17
- spinner.removeClass('is-active');
18
- }
19
- });
20
- });
21
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/res/js/tooltip/tooltip.js DELETED
@@ -1,82 +0,0 @@
1
- (function () {
2
- 'use strict';
3
-
4
- var OTGS_Installer_Tooltip = function( element ) {
5
- this.trigger = element;
6
- this.content = this.trigger.html(this.trigger.html()).text();
7
- this.edge = 'bottom';
8
- this.align = 'left';
9
- this.margin_left = '-54px';
10
-
11
- if ( !this.content ) {
12
- this.content = this.decodeEntities(this.trigger.data('content'));
13
- }
14
-
15
- if ( this.trigger.data( 'edge' ) ) {
16
- this.edge = this.trigger.data( 'edge' );
17
- }
18
-
19
- if ( this.trigger.data( 'align' ) ) {
20
- this.align = this.trigger.data( 'align' );
21
- }
22
-
23
- if ( this.trigger.data( 'margin_left' ) ) {
24
- this.margin_left = this.trigger.data( 'margin_left' );
25
- }
26
-
27
- this.trigger.empty();
28
- this.trigger.click( jQuery.proxy( this.onTriggerClick,this ) );
29
- };
30
-
31
- OTGS_Installer_Tooltip.prototype = {
32
- open: function () {
33
- if (this.trigger.length && this.content) {
34
- this.trigger.addClass('js-otgs-installer-active-tooltip');
35
- this.trigger.pointer({
36
- pointerClass: 'js-otgs-installer-tooltip',
37
- content: this.content,
38
- position: {
39
- edge: this.edge,
40
- align: this.align
41
- },
42
- show: jQuery.proxy( this.onShow, this ),
43
- close: this.onClose,
44
- buttons: this.buttons
45
-
46
- }).pointer('open');
47
- }
48
- },
49
- onShow: function(event, t) {
50
- t.pointer.css('marginLeft', this.margin_left);
51
- },
52
- onClose: function (event, t) {
53
- t.pointer.css('marginLeft', '0');
54
- },
55
- onTriggerClick: function(e) {
56
- e.preventDefault();
57
- this.open();
58
- },
59
- buttons: function (event, t) {
60
- var button = jQuery('<a class="close" href="#">&nbsp;</a>');
61
-
62
- return button.bind('click.pointer', function (e) {
63
- e.preventDefault();
64
- t.element.pointer('close');
65
- });
66
- },
67
- decodeEntities: function(encodedString) {
68
- var textArea = document.createElement('textarea');
69
- textArea.innerHTML = encodedString;
70
- return textArea.value;
71
- }
72
- };
73
-
74
- jQuery(document).ready(function () {
75
- var tooltips = jQuery('.js-otgs-installer-tooltip-open'),
76
- tooltip = {};
77
-
78
- tooltips.each(function (index, element) {
79
- tooltip = new OTGS_Installer_Tooltip(jQuery(element));
80
- });
81
- });
82
- }());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/channel-selector.php DELETED
@@ -1,68 +0,0 @@
1
- <div class="installer-channel-selector-wrap">
2
- <label>
3
- <?php esc_html_e('Updates channel:', 'installer'); ?>
4
- <select class="installer-channel-selector" data-repository-id="<?php echo $repository_id ?>"<?php if( !$can_switch ): ?> disabled<?php endif ?>>
5
- <?php foreach( $channels as $channel_id => $channel_name ): ?>
6
- <option value="<?php echo $channel_id ?>" <?php
7
- if( $channel_id == $current_channel ): ?>selected="selected"<?php
8
- endif; ?>><?php echo $channel_name ?></option>
9
- <?php endforeach ?>
10
- </select>
11
- <span class="installer-status-note" <?php if( $can_switch ): ?>style="display:none" <?php endif; ?>>
12
- <?php _e("To select different update channels (beta, development) you must update your existing products to their most recent stable versions.", 'installer') ?>
13
- </span>
14
- <span class="spinner spinner-with-text">
15
- <?php _e( "Updating the plugins on your site. Please don't close this page or navigate away.", 'installer' ); ?>
16
- </span>
17
- <span class="installer-channel-update-ok" data-text="<?php
18
- esc_attr_e( sprintf("Update completed. You are now using the %s channel of %s.",
19
- '%CHANNEL%', WP_Installer()->get_generic_product_name( $repository_id ) ) ) ?>">
20
- </span>
21
- <span class="installer-channel-update-fail" data-text-unstable="<?php
22
- $support_url = $repository_id ==='toolset' ? 'https://wp-types.com/forums/forum/support-2/' : 'https://wpml.org/forums/forum/english-support/';
23
- $download_url = $repository_id ==='toolset' ? 'https://wp-types.com/account/downloads/' : 'https://wpml.org/account/downloads/';
24
- echo esc_attr( sprintf(
25
- __( "Something went wrong and we could not install all updates from the %s channel. Click here to %stry again%s. If the errors persist, please switch back to the Production channel and contact the %s%s support%s.", 'installer' ),
26
- '%CHANNEL%',
27
- '<a href="#" class="installer-channel-retry"><strong>',
28
- '</strong></a>',
29
- '<a href="' . $support_url . '">', WP_Installer()->get_generic_product_name( $repository_id ), '</a>'
30
- ) );
31
- ?>" data-text-stable="<?php
32
- echo esc_attr( sprintf(
33
- esc_attr__( "There was a problem switching to the %s channel. You can %sretry%s. If the problem continues, please %sdownload %s%s and install again manually", 'installer' ),
34
- '%CHANNEL%',
35
- '<a href="#" class="installer-channel-retry"><strong>',
36
- '</strong></a>',
37
- '<a href="' . $download_url . '">', WP_Installer()->get_generic_product_name( $repository_id ), '</a>'
38
- ) );
39
- ?>">
40
- </span>
41
- <input type="hidden" class="nonce" value="<?php echo $nonce ?>" />
42
- </label>
43
-
44
- <?php if( !$no_prompt ): ?>
45
- <div class="installer-warn-box installer-switch-confirmation" style="margin-top: 10px; display: none">
46
- <p class="alignright">
47
- <button class="button-secondary js-cancel"><?php _e("Cancel", 'installer') ?></button>
48
- <button class="button-primary js-proceed"><?php _e("Switch", 'installer') ?></button>
49
- </p>
50
- <p>
51
- <?php _e("Plugins will be updated to their most advanced version in the channel that you selected.", 'installer') ?>
52
- </p>
53
- <label>
54
- <input type="checkbox" value="1" class="js-remember"/>
55
- &nbsp;<?php _e("Remember my preference.", 'installer') ?><br />
56
- </label>
57
- </div>
58
- <?php endif; ?>
59
-
60
- <div class="installer-warn-text" <?php if( WP_Installer_Channels()->get_channel( $repository_id ) <= 1 ): ?>style="display:none" <?php endif; ?>>
61
- <?php printf(
62
- __("You are using a potentially less stable channel for %s. If you didn't enable this on purpose, you should switch to the 'Production' channel.", 'installer'),
63
- WP_Installer()->get_generic_product_name( $repository_id )
64
- );
65
- ?>
66
- </div>
67
-
68
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/components-setting/commercial-tab.twig DELETED
@@ -1,7 +0,0 @@
1
- <p class="otgs-installer-keepuptodate">
2
- <input checked name="repo_allowed_to_send_data" value="{{ repo_id }}" type="checkbox"> {{ strings.message }}
3
- <a class="js-otgs-installer-tooltip-open otgs-ico-help">
4
- {{ strings.tooltip }}
5
- </a>
6
- <small>{{ strings.stop_sending }}</small>
7
- </p>
 
 
 
 
 
 
 
vendor/otgs/installer/templates/components-setting/plugins-page.twig DELETED
@@ -1,24 +0,0 @@
1
- {% if should_display_subscription_notice or should_display_setting_notice %}
2
- <tr class="{{ css.tr_classes }}">
3
- <td colspan="{{ col_count }}" class="plugin-update colspanchange">
4
- <div class="{{ css.notice_classes }}">
5
-
6
- {% if should_display_subscription_notice %}
7
-
8
- <p class="installer-q-icon">
9
- {{ strings.valid_subscription|raw }}
10
- </p>
11
-
12
- {% endif %}
13
-
14
- {% if should_display_setting_notice %}
15
- <div class="spinner otgs-components-report-setting-spinner"></div>
16
- <p>
17
- <input type="checkbox" {{ repo_checked }} class="js-otgs-components-report-user-choice" value="1" data-nonce-action="{{ nonce.action }}" data-nonce-value="{{ nonce.value }}" data-repo="{{ repo }}" />
18
- {{ strings.send_report|raw }}
19
- </p>
20
- {% endif %}
21
- </div>
22
- </td>
23
- </tr>
24
- {% endif %}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/downloads-list-compact.php DELETED
@@ -1,80 +0,0 @@
1
-
2
- <form method="post" class="otgsi_downloads_form">
3
-
4
- <table class="installer-plugins-list-compact">
5
- <thead>
6
- <tr>
7
- <th>&nbsp;</th>
8
- <th><?php _e('Plugin', 'installer') ?></th>
9
- <th><img src="<?php echo $this->plugin_url() ?>/res/img/globe.png" alt="<?php esc_attr_e('Available', 'installer') ?>" width="16" height="16"></th>
10
- <th><img src="<?php echo $this->plugin_url() ?>/res/img/computer.png" alt="<?php esc_attr_e('Installed', 'installer') ?>" width="16" height="16"></th>
11
- <th><img src="<?php echo $this->plugin_url() ?>/res/img/dn2.gif" alt="<?php esc_attr_e('Downloading', 'installer') ?>" width="16" height="16"></th>
12
- <th><img src="<?php echo $this->plugin_url() ?>/res/img/on.png" alt="<?php esc_attr_e('Activate', 'installer') ?>" width="16" height="16"></th>
13
- </tr>
14
- </thead>
15
- <tbody>
16
- <?php foreach($product['downloads'] as $download): ?>
17
- <?php if(empty($tr_oddeven) || $tr_oddeven == 'even') $tr_oddeven = 'odd'; else $tr_oddeven = 'even'; ?>
18
- <tr class="<?php echo $tr_oddeven ?>">
19
- <td>
20
- <label>
21
- <?php
22
- $url = $this->append_site_key_to_download_url($download['url'], $site_key, $repository_id );
23
-
24
- $download_data = array(
25
- 'url' => $url,
26
- 'slug' => $download['slug'],
27
- 'nonce' => wp_create_nonce('install_plugin_' . $url),
28
- 'repository_id' => $repository_id
29
- );
30
-
31
- $disabled = $expired ||
32
- (
33
- $this->plugin_is_installed($download['name'], $download['slug'], $download['version']) &&
34
- !$this->plugin_is_embedded_version($download['name'], $download['slug'])
35
- ) || WP_Installer()->dependencies->cant_download( $repository_id );
36
-
37
- ?>
38
- <input type="checkbox" name="downloads[]" value="<?php echo base64_encode(json_encode($download_data)); ?>" <?php
39
- if($disabled): ?>disabled="disabled"<?php endif; ?> />&nbsp;
40
-
41
- </label>
42
- </td>
43
- <td class="installer_plugin_name"><?php echo $download['name'] ?></td>
44
- <td><?php echo $download['version'] ?></td>
45
- <td class="installer_version_installed">
46
- <?php if($v = $this->plugin_is_installed($download['name'], $download['slug'])):
47
- $class = version_compare($v, $download['version'], '>=') ? 'installer-green-text' : 'installer-red-text'; ?>
48
- <span class="<?php echo $class ?>"><?php echo $v; ?></span>
49
- <?php endif; ?>
50
- </td>
51
- <td class="twelve">
52
- <div class="installer-status-downloading"><?php _e('downloading...', 'installer') ?></div>
53
- <div class="installer-status-downloaded" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('downloaded', 'installer') ?></div>
54
- </td>
55
- <td class="twelve">
56
- <div class="installer-status-activating"><?php _e('activating', 'installer') ?></div>
57
- <div class="installer-status-activated"><?php _e('activated', 'installer') ?></div>
58
- </td>
59
- </tr>
60
- <?php endforeach; ?>
61
- </tbody>
62
- </table>
63
-
64
- <?php if( !WP_Installer()->dependencies->is_uploading_allowed() ): ?>
65
- <p class="installer-error-box"><?php printf(__('Downloading is not possible because WordPress cannot write into the plugins folder. %sHow to fix%s.', 'installer'),
66
- '<a href="http://codex.wordpress.org/Changing_File_Permissions">', '</a>') ?></p>
67
- <?php elseif( WP_Installer()->dependencies->is_win_paths_exception($repository_id) ): ?>
68
- <p><?php echo WP_Installer()->dependencies->win_paths_exception_message() ?></p>
69
- <?php endif;?>
70
-
71
- <br />
72
- <input type="submit" class="button-secondary" value="<?php esc_attr_e('Download', 'installer') ?>" disabled="disabled" />
73
- &nbsp;
74
- <label><input name="activate" type="checkbox" value="1" disabled="disabled" />&nbsp;<?php _e('Activate after download', 'installer') ?></label>
75
-
76
- <div class="installer-download-progress-status"></div>
77
- <div class="installer-status-success"><?php _e('Operation complete!', 'installer') ?></div>
78
-
79
- <span class="installer-revalidate-message hidden"><?php _e("Download failed!\n\nClick OK to revalidate your subscription or CANCEL to try again.", 'installer') ?></span>
80
- </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/downloads-list.php DELETED
@@ -1,109 +0,0 @@
1
-
2
- <form method="post" class="otgsi_downloads_form">
3
-
4
- <div class="installer-table-wrap">
5
- <table class="widefat">
6
- <thead>
7
- <tr>
8
- <th>&nbsp;</th>
9
- <th><?php _e('Plugin', 'installer') ?></th>
10
- <th><?php _e('Installed', 'installer') ?></th>
11
- <th><?php _e('Current', 'installer') ?></th>
12
- <th><?php _e('Released', 'installer') ?></th>
13
- <th>&nbsp;</th>
14
- <th>&nbsp;</th>
15
- <th>&nbsp;</th>
16
- <th>&nbsp;</th>
17
- </tr>
18
- </thead>
19
- <tbody>
20
- <?php
21
- foreach($package['downloads'] as $download_id => $download): ?>
22
- <tr>
23
- <td>
24
- <label>
25
- <?php
26
- $url = $this->append_site_key_to_download_url($download['url'], $site_key, $repository_id);
27
-
28
- $download_data = array(
29
- 'url' => $url,
30
- 'slug' => $download['slug'],
31
- 'nonce' => wp_create_nonce('install_plugin_' . $url),
32
- 'repository_id' => $repository_id
33
- );
34
- ?>
35
- <input type="checkbox" name="downloads[]" value="<?php echo base64_encode(json_encode($download_data)); ?>" <?php
36
- if( $this->plugin_is_installed($download['name'], $download['slug'], $download['version'] )
37
- && ! $this->plugin_is_embedded_version( $download['name'], $download['slug'] )
38
- || WP_Installer()->dependencies->cant_download( $repository_id ) ): ?>disabled="disabled"<?php endif; ?> />&nbsp;
39
- </label>
40
- </td>
41
- <td class="installer_plugin_name"><?php echo $download['name'] ?></td>
42
- <td class="installer_version_installed">
43
- <?php if ( $v = $this->plugin_is_installed( $download['name'], $download['slug'] ) ): ?>
44
- <?php
45
- $class = version_compare( $v, $download['version'], '>=' ) ? 'installer-green-text' : 'installer-red-text';
46
- $class .= version_compare( $v, $download['version'], '>' ) ? ' unstable' : '';
47
- ?>
48
- <span class="<?php echo $class ?>"><?php echo $v; ?></span>
49
- <?php if ( $this->plugin_is_embedded_version( $download['name'], $download['slug'] ) ): ?>&nbsp;<?php _e( '(embedded)', 'installer' ); ?><?php endif; ?>
50
- <?php if(
51
- WP_Installer_Channels()->get_channel( $repository_id ) !== WP_Installer_Channels::CHANNEL_PRODUCTION &&
52
- $non_stable = WP_Installer_Channels()->get_download_source_channel( $v, $repository_id, $download_id, 'plugins')
53
- ) : ?>
54
- (<?php echo $non_stable ?>)
55
- <?php endif; ?>
56
- <?php endif; ?>
57
- </td>
58
- <td><?php echo $download['version'] ?></td>
59
- <td><?php echo date_i18n('F j, Y', strtotime($download['date'])) ?></td>
60
- <td>
61
- <?php if ( !empty( $download['release-notes'] ) ): ?>
62
- <a class="js-release-notes handle" href="#"><?php esc_html_e( 'Release notes', 'installer' ) ?></a></td>
63
- <?php endif; ?>
64
- <td>
65
- <span class="installer-status-installing"><?php _e('installing...', 'installer') ?></span>
66
- <span class="installer-status-updating"><?php _e('updating...', 'installer') ?></span>
67
- <span class="installer-status-installed" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('installed', 'installer') ?></span>
68
- <span class="installer-status-updated" data-fail="<?php _e('failed!', 'installer') ?>"><?php _e('updated', 'installer') ?></span>
69
- </td>
70
- <td>
71
- <span class="installer-status-activating"><?php _e('activating', 'installer') ?></span>
72
- <span class="installer-status-activated"><?php _e('activated', 'installer') ?></span>
73
- </td>
74
- <td class="for_spinner_js"><span class="spinner"></span></td>
75
- </tr>
76
- <?php if ( !empty( $download['release-notes'] ) ): ?>
77
- <tr class="installer-release-notes">
78
- <td colspan="9">
79
- <div class="arrow_box">
80
- <div><?php echo force_balance_tags( $download['release-notes'] ) ?></div>
81
- </div>
82
- </td>
83
- </tr>
84
- <?php endif; ?>
85
- <?php endforeach; ?>
86
- </tbody>
87
- </table>
88
- </div>
89
- <br />
90
-
91
- <div class="installer-error-box">
92
- <?php if( !WP_Installer()->dependencies->is_uploading_allowed() ): ?>
93
- <p><?php printf(__('Downloading is not possible because WordPress cannot write into the plugins folder. %sHow to fix%s.', 'installer'),
94
- '<a href="http://codex.wordpress.org/Changing_File_Permissions">', '</a>') ?></p>
95
- <?php elseif( WP_Installer()->dependencies->is_win_paths_exception($repository_id) ): ?>
96
- <p><?php echo WP_Installer()->dependencies->win_paths_exception_message() ?></p>
97
- <?php endif; ?>
98
- </div>
99
-
100
- <input type="submit" class="button-secondary" value="<?php esc_attr_e('Download', 'installer') ?>" disabled="disabled" />
101
- &nbsp;
102
- <label><input name="activate" type="checkbox" value="1" disabled="disabled" />&nbsp;<?php _e('Activate after download', 'installer') ?></label>
103
-
104
- <div class="installer-download-progress-status"></div>
105
-
106
- <div class="installer-status-success"><?php _e('Operation complete!', 'installer') ?></div>
107
-
108
- <span class="installer-revalidate-message hidden"><?php _e("Download failed!\n\nPlease refresh the page and try again.", 'installer') ?></span>
109
- </form>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/products-compact.php DELETED
@@ -1,147 +0,0 @@
1
- <h3><?php echo $args['box_title'] ?></h3>
2
-
3
- <?php
4
- if(empty($args['repository']) || empty($args['package']) || empty($args['product'])){
5
- echo __('Incorrect setup', 'installer');
6
- return;
7
- }
8
-
9
- $product = false;
10
- foreach($this->settings['repositories'][$repository_id]['data']['packages'] as $package_idx => $package){
11
-
12
- //pre 1.3 backwardds compatibility
13
- if(!isset($package['id'])){
14
- $package['id'] = sanitize_title_with_dashes($package['name']);
15
- }
16
-
17
- if($package['id'] == $args['package']){
18
- $product = $this->settings['repositories'][$repository_id]['data']['packages'][$package_idx]['products'][$args['product']];
19
- break;
20
- }
21
- }
22
-
23
-
24
- if(!$product){
25
- echo __('Invalid product', 'installer');
26
- return;
27
- }
28
-
29
- if(isset($this->settings['repositories'][$repository_id])){
30
- if(isset($this->settings['repositories'][$repository_id]['subscription']['key'])){
31
- $site_key = $this->settings['repositories'][$repository_id]['subscription']['key'];
32
- }else{
33
- $site_key = false;
34
- }
35
- }else{
36
- echo __('Unknown repository', 'installer');
37
- return;
38
- }
39
-
40
- $subscription_type = $this->get_subscription_type_for_repository($repository_id);
41
- $expired = false;
42
-
43
- if($subscription_type != $product['subscription_type'] && !$this->have_superior_subscription($subscription_type, $product) && $site_key){
44
- $subscription_no_match = sprintf(__(' Your current site key (%s) does not match the selected product (%s).', 'installer'), $site_key, $product['name']);
45
- }
46
-
47
- if(!isset($args['product_name'])) $args['product_name'] = $product['name'];
48
-
49
- ?>
50
-
51
- <div class="otgs_wp_installer_table otgs_wp_installer_table_compact">
52
-
53
- <p><?php echo $args['box_description'] ?></p>
54
-
55
-
56
- <?php if(!$this->repository_has_subscription($repository_id) || !empty($subscription_no_match)): ?>
57
-
58
- <?php if(!empty($subscription_no_match)): ?>
59
- <div class="installer-warn-box">
60
- <?php echo $subscription_no_match; ?>
61
- </div>
62
- <br />
63
- <?php endif; ?>
64
-
65
- <a class="button-primary" href="<?php echo $this->append_parameters_to_buy_url($product['url'], $repository_id, $args) ?>"><?php printf(__('Buy %s', 'installer'), $args['product_name']) ?></a>
66
-
67
- <div>
68
- <br />
69
- <?php printf(__('Already bought %s?', 'installer'), $args['product_name']) ?>
70
- <a class="enter_site_key_js<?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?> disabled<?php endif ?>" href="#"
71
- <?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?>
72
- style="cursor: help"
73
- disabled="disabled"
74
- title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to register.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
75
- <?php endif; ?>
76
- >
77
- <?php _e('Enter site key', 'installer') ?>
78
- </a>&nbsp;&nbsp;
79
-
80
- <form class="otgsi_site_key_form" method="post">
81
- <input type="hidden" name="action" value="save_site_key" />
82
- <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('save_site_key_' . $repository_id) ?>" />
83
- <input type="hidden" name="repository_id" value="<?php echo $repository_id ?>">
84
- <input type="text" size="10" name="site_key_<?php echo $repository_id ?>" />
85
- <input class="button-secondary" type="submit" value="<?php esc_attr_e('Add', 'installer') ?>" />
86
- </form>
87
- <div class="installer-error-box hidden" style="margin-top:10px;"></div>
88
- </div>
89
-
90
- <?php else: ?>
91
-
92
- <?php if($this->repository_has_expired_subscription($repository_id)): $expired = true; ?>
93
-
94
- <div><p class="installer-warn-box"><?php _e('Subscription is expired.', 'installer') ?></p></div>
95
-
96
- <?php else: ?>
97
-
98
- <?php if($this->show_subscription_renew_warning($repository_id, $subscription_type)): ?>
99
-
100
- <ul class="installer-products-list">
101
- <?php foreach($product['renewals'] as $renewal): ?>
102
- <li>
103
- <a href="<?php echo $this->append_parameters_to_buy_url($renewal['url'], $repository_id, $args) ?>"><?php printf(__('Renew %s', 'installer'), $args['product_name']) ?></a>
104
- </li>
105
- <?php endforeach; ?>
106
- </ul>
107
-
108
- <?php endif; ?>
109
-
110
- <?php endif; ?>
111
-
112
- <center>
113
- <a class="remove_site_key_js" href="#" data-repository=<?php echo $repository_id ?>
114
- data-confirmation="<?php esc_attr_e('Are you sure you want to remove this site key?', 'installer') ?>"
115
- data-nonce="<?php echo wp_create_nonce('remove_site_key_' . $repository_id) ?>"
116
- <?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?>
117
- style="cursor: help;color:#999999"
118
- disabled="disabled"
119
- title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to unregister.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
120
- <?php endif; ?>
121
- >
122
- <?php printf(__("Remove current site key (%s)", 'installer'), $site_key) ?>
123
- </a>
124
- </center>
125
- <br />
126
-
127
- <?php include $this->plugin_path() . '/templates/downloads-list-compact.php'; ?>
128
-
129
-
130
-
131
- <?php endif; ?>
132
-
133
- <?php
134
- if( isset( $args[ 'name' ] ) ):
135
- $support_link = $this->get_support_tag_by_name($args['name'], $args['repository']); ?>
136
-
137
- <?php if($support_link): ?>
138
- <p><a href="<?php echo $support_link ?>" target="_blank"><?php printf(__('%s support on wpml.org', 'installer'), $args['name'] ) ?></a></p>
139
-
140
- <?php endif; ?>
141
- <?php
142
- // compatibility for installer 1.1
143
- elseif( isset( $args[ 'support_link' ] ) ): ?>
144
- <p><?php echo $args[ 'support_link' ]; ?></p>
145
- <?php endif; ?>
146
-
147
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/repository-listing.php DELETED
@@ -1,243 +0,0 @@
1
- <?php if((!$this->repository_has_subscription($repository_id) && $match = $this->get_matching_cp($repository)) && $match['exp']): ?>
2
- <p class="alignright installer_highlight"><strong><?php printf('Price offers available until %s', date_i18n(get_option( 'date_format' ), $match['exp'])) ?></strong></p>
3
- <?php endif; ?>
4
-
5
- <h3 id="repository-<?php echo $repository_id ?>"><?php echo $repository['data']['name'] ?></h3>
6
- <?php
7
- $generic_product_name = $this->settings['repositories'][$repository_id]['data']['product-name'];
8
- ?>
9
- <table class="widefat otgs_wp_installer_table" id="installer_repo_<?php echo $repository_id ?>">
10
-
11
- <tr>
12
- <td>&nbsp;</td>
13
- <td class="otgsi_register_product_wrap">
14
- <?php // IF NO SUBSCRIPTION ?>
15
- <?php if(!$this->repository_has_subscription($repository_id)): ?>
16
-
17
-
18
-
19
- <p class="alignright enter_site_key_wrap_js">
20
- <span><?php _e('Already bought?', 'installer'); ?></span>
21
- <a class="enter_site_key_js button-primary"
22
- <?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?>
23
- disabled
24
- title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to register.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
25
- <?php endif; ?>
26
- >
27
- <?php printf(__('Register %s', 'installer'), $generic_product_name); ?>
28
- </a>
29
- </p>
30
-
31
- <form class="otgsi_site_key_form" method="post">
32
- <input type="hidden" name="action" value="save_site_key" />
33
- <input type="hidden" name="nonce" value="<?php echo wp_create_nonce('save_site_key_' . $repository_id) ?>" />
34
- <input type="hidden" name="repository_id" value="<?php echo $repository_id ?>">
35
-
36
- <p >
37
- <?php
38
- $repo_site = str_replace( array(
39
- 'https://',
40
- 'http://'
41
- ), '', $this->settings['repositories'][ $repository_id ]['data']['url'] );
42
-
43
- printf(
44
- __( '1. Get your site-key for %1$s. If you already have a key, get it from %2$s. Otherwise', 'installer' ),
45
- str_replace( array(
46
- 'https://',
47
- 'http://'
48
- ), '', $this->get_installer_site_url( $repository_id ) ),
49
- '<a target="_blank" href="'. $this->settings['repositories'][ $repository_id ]['data']['site_keys_management_url'] . '?add=' . urlencode( $this->get_installer_site_url( $repository_id ) ) . '">' . __( 'your account', 'installer' ) . '</a>'
50
- );
51
- ?>
52
- <a target="_blank"
53
- href="<?php echo $this->settings['repositories'][ $repository_id ]['data']['url'] ?>"> <?php printf( esc_attr( 'register on %s.', 'installer' ), $repo_site ) ?> </a>
54
- </p>
55
-
56
- <p>
57
- <?php
58
- printf(
59
- __( '2. Insert your key and activate automatic updates:', 'installer' ),
60
- '<a href="' . $this->settings['repositories'][ $repository_id ]['data']['site_keys_management_url'] . '?add=' . urlencode( $this->get_installer_site_url( $repository_id ) ) . '">',
61
- $generic_product_name, '</a>', $this->get_installer_site_url( $repository_id )
62
- );
63
- ?>
64
- <span class="otgs-installer-register-inputs">
65
- <input type="text" size="20" name="site_key_<?php echo $repository_id ?>" placeholder="<?php echo esc_attr('site key') ?>" />
66
- <input class="button-primary" type="submit" value="<?php esc_attr_e('OK', 'installer') ?>" />
67
- <input class="button-secondary cancel_site_key_js" type="button" value="<?php esc_attr_e('Cancel registration', 'installer') ?>" />
68
- </span>
69
- </p>
70
-
71
- <?php
72
- $template_service = new OTGS_Installer_Twig_Template_Service_Loader(
73
- array( WP_Installer()->plugin_path() . '/templates/components-setting/' )
74
- );
75
- $components_setting_template = new OTGS_Installer_WP_Components_Setting_Templates( $template_service->get_service() );
76
- $components_setting_template->render_commercial( $repo_site, $generic_product_name, $repository_id );
77
- ?>
78
- </form>
79
-
80
-
81
-
82
-
83
- <?php
84
- $site_key = false;
85
-
86
- // IF SUBSCRIPTION
87
- else:
88
-
89
- $site_key = $this->settings['repositories'][$repository_id]['subscription']['key'];
90
- $subscription_type = $this->get_subscription_type_for_repository($repository_id);
91
- $upgrade_options = $this->get_upgrade_options($repository_id);
92
- $expired = false;
93
-
94
- ?>
95
-
96
- <?php if($this->repository_has_expired_subscription($repository_id)): $expired = true; ?>
97
- <div>
98
- <p class="installer-warn-box">
99
- <?php _e('Subscription expired. You need to either purchase a new subscription or upgrade if available.', 'installer') ?>
100
- <span class="alignright">
101
- <a class="update_site_key_js button-secondary" href="#" data-repository=<?php echo $repository_id ?> data-nonce="<?php echo wp_create_nonce('update_site_key_' . $repository_id) ?>">
102
- <?php _e('Revalidate subscription', 'installer'); ?>
103
- </a>
104
- </span>
105
- <br />
106
- <span class="details"><?php _e("If you have already purchased or renewed your subscription and you can still see this message, please revalidate your subscription", 'installer') ?></span>
107
- </p>
108
- </div>
109
- <?php else: ?>
110
- <?php $this->show_subscription_renew_warning($repository_id, $subscription_type); ?>
111
- <?php endif; ?>
112
-
113
-
114
- <?php if(empty($expired)): ?>
115
-
116
- <div class="otgs-installer-registered clearfix">
117
- <span>
118
- <?php if($expires = $this->settings['repositories'][$repository_id]['subscription']['data']->expires): ?>
119
- <?php printf(__('%s is registered on this site. You will receive automatic updates until %s', 'installer'), $generic_product_name, date_i18n('F j, Y', strtotime($expires))); ?>
120
- <?php else: ?>
121
- <?php printf(__('%s is registered on this site. Your Lifetime account gives you updates for life.', 'installer'), $generic_product_name); ?>
122
- <?php endif; ?>
123
- </span>
124
- <?php endif; //if(empty($expired)) ?>
125
-
126
- <span class="otgs-installer-registered-buttons">
127
-
128
- <a class="remove_site_key_js button-secondary" data-repository=<?php echo $repository_id ?>
129
- data-confirmation="<?php esc_attr_e('Are you sure you want to unregister?', 'installer') ?>"
130
- data-nonce="<?php echo wp_create_nonce('remove_site_key_' . $repository_id) ?>"
131
- <?php if( WP_Installer::get_repository_hardcoded_site_key( $repository_id ) ): ?>
132
- disabled
133
- title="<?php printf( esc_attr__("Site-key was set by %s, most likely in wp-config.php. Please remove the constant before attempting to unregister.", 'installer'), 'OTGS_INSTALLER_SITE_KEY_' . strtoupper($repository_id) ) ?>"
134
- <?php endif; ?>
135
- >
136
- <?php printf(__("Unregister %s from this site", 'installer'), $generic_product_name) ?></a>&nbsp;
137
-
138
- <a class="update_site_key_js button-secondary" data-repository=<?php echo $repository_id ?>
139
- data-nonce="<?php echo wp_create_nonce('update_site_key_' . $repository_id) ?>">
140
- <?php _e('Check for updates', 'installer'); ?>
141
- </a>
142
- </span>
143
- </div>
144
-
145
-
146
- <?php endif; // if(!repository_has_subscription) ?>
147
-
148
- <div class="installer-error-box hidden"></div>
149
-
150
- </td>
151
- </tr>
152
-
153
- <?php
154
-
155
- $subscription_type = isset($subscription_type) ? $subscription_type : null;
156
- $expired = isset($expired) ? $expired : null;
157
- $upgrade_options = isset($upgrade_options) ? $upgrade_options : null;
158
- $packages = $this->_render_product_packages($repository['data']['packages'], $subscription_type, $expired, $upgrade_options, $repository_id);
159
- if(empty($subscription_type) || $expired){
160
- $subpackages_expandable = true;
161
- }else{
162
- $subpackages_expandable = false;
163
- }
164
-
165
- ?>
166
-
167
- <?php foreach($packages as $package): ?>
168
- <tr id="repository-<?php echo $repository_id ?>_<?php echo $package['id'] ?>">
169
- <td class="installer-repository-image"><img width="140" src="<?php echo $package['image_url'] ?>" /></td>
170
- <td>
171
- <p><strong><?php echo $package['name'] ?></strong></p>
172
- <p><?php echo $package['description'] ?></p>
173
-
174
- <?php if($package['products']): ?>
175
- <?php foreach($package['products'] as $product): ?>
176
- <ul class="installer-products-list" style="display:inline">
177
- <li>
178
- <a class="button-secondary" href="<?php echo $product['url'] ?>"><?php echo $product['label'] ?></a>
179
- </li>
180
- </ul>
181
- <?php endforeach; ?>
182
- <?php endif; ?>
183
-
184
- <?php
185
- if ( $package['downloads'] ) {
186
- WP_Installer_Channels()->load_channel_selector( $repository_id, $package['downloads'] );
187
- include $this->plugin_path() . '/templates/downloads-list.php';
188
- }
189
- ?>
190
-
191
- <?php if(!empty($package['sub-packages'])): ?>
192
-
193
- <?php $subpackages = $this->_render_product_packages($package['sub-packages'], $subscription_type, $expired, $upgrade_options, $repository_id); ?>
194
-
195
- <?php if($subpackages): ?>
196
-
197
- <?php if($subpackages_expandable): ?>
198
- <h5><a class="installer_expand_button" href="#" title="<?php esc_attr_e('Click to see individual components options.', 'installer') ?>"><?php _e('Individual components', 'installer') ?></a></h5>
199
- <?php endif; ?>
200
-
201
- <table class="otgs_wp_installer_subtable" style="<?php if($subpackages_expandable) echo 'display:none' ?>">
202
- <?php foreach($subpackages as $package): ?>
203
- <tr id="repository-<?php echo $repository_id ?>_<?php echo $package['id'] ?>">
204
- <td><img width="70" height="70" src="<?php echo $package['image_url'] ?>" /></td>
205
- <td>
206
- <p><strong><?php echo $package['name'] ?></strong></p>
207
- <p><?php echo $package['description'] ?></p>
208
-
209
- <?php if($package['products']): ?>
210
- <?php foreach($package['products'] as $product): ?>
211
- <ul class="installer-products-list" style="display:inline">
212
- <li>
213
- <a class="button-secondary" href="<?php echo $product['url'] ?>"><?php echo $product['label'] ?></a>
214
- </li>
215
- </ul>
216
- <?php endforeach; ?>
217
- <?php endif; ?>
218
-
219
- <?php if($package['downloads']): ?>
220
- <?php include $this->plugin_path() . '/templates/downloads-list.php'; ?>
221
- <?php endif; ?>
222
- </td>
223
- </tr>
224
- <?php endforeach; ?>
225
- </table>
226
- <?php endif; ?>
227
-
228
- <?php endif; ?>
229
-
230
-
231
- </td>
232
- </tr>
233
-
234
- <?php endforeach; ?>
235
-
236
- </table>
237
-
238
-
239
- <p><i><?php printf(__('This page lets you install plugins and update existing plugins. To remove any of these plugins, go to the %splugins%s page and if you have the permission to remove plugins you should be able to do this.', 'installer'), '<a href="' . admin_url('plugins.php') . '">' , '</a>'); ?></i></p>
240
-
241
-
242
-
243
- <br />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service-loader.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_Twig_Template_Service_Loader {
4
-
5
- /**
6
- * @var array
7
- */
8
- private $paths;
9
-
10
- /**
11
- * OTGS_Installer_Twig_Template_Service_Loader constructor.
12
- *
13
- * @param array $paths
14
- */
15
- public function __construct( array $paths ) {
16
- $this->paths = $paths;
17
- }
18
-
19
- /**
20
- * @return OTGS_Installer_Twig_Template_Service
21
- */
22
- public function get_service() {
23
- $twig_loader = new Twig_Loader_Filesystem( $this->paths );
24
- $environment_args = array();
25
- if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
26
- $environment_args['debug'] = true;
27
- }
28
- $twig = new Twig_Environment( $twig_loader, $environment_args );
29
-
30
- return new OTGS_Installer_Twig_Template_Service( $twig );
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/template-service/class-otgs-installer-twig-template-service.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
-
3
- class OTGS_Installer_Twig_Template_Service implements IOTGS_Installer_Template_Service {
4
-
5
- const FILE_EXTENSION = '.twig';
6
-
7
- private $twig;
8
-
9
- /**
10
- * OTGS_Installer_Twig_Template_Service constructor.
11
- *
12
- * @param Twig_Environment $twig
13
- */
14
- public function __construct( Twig_Environment $twig ) {
15
- $this->twig = $twig;
16
- }
17
-
18
- /**
19
- * @param array $model
20
- * @param string $template
21
- *
22
- * @return string
23
- */
24
- public function show( $model, $template ) {
25
- return $this->twig->render( $template . self::FILE_EXTENSION, $model );
26
- }
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/otgs/installer/templates/template-service/interface-iotgs-installer-template-service.php DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
-
3
- interface IOTGS_Installer_Template_Service {
4
- public function show( $model, $template );
5
- }
 
 
 
 
 
vendor/toolset/toolset-common/autoload_classmap.php CHANGED
@@ -8,8 +8,14 @@ return array(
8
  'IToolset_Post_Type' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/i_post_type.php',
9
  'IToolset_Post_Type_From_Types' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/i_post_type_from_types.php',
10
  'IToolset_Post_Type_Registered' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/i_post_type_registered.php',
11
- 'IToolset_Query' => dirname( __FILE__ ) . '/inc/autoloaded/i_query.php',
12
  'IToolset_Upgrade_Command' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_interface.php',
 
 
 
 
 
 
 
13
  'Toolset_Admin_Controller' => dirname( __FILE__ ) . '/inc/autoloaded/admin.php',
14
  'Toolset_Admin_Notice_Abstract' => dirname( __FILE__ ) . '/utility/admin/notice/abstract.php',
15
  'Toolset_Admin_Notice_Dismissible' => dirname( __FILE__ ) . '/utility/admin/notice/dismissible.php',
@@ -30,6 +36,7 @@ return array(
30
  'Toolset_Ajax_Handler_Interface' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/interface.php',
31
  'Toolset_Ajax_Handler_Intermediary_Post_Cleanup' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/intermediary_post_cleanup.php',
32
  'Toolset_Ajax_Handler_Migrate_To_M2M' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/migrate_to_m2m.php',
 
33
  'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php',
34
  'Toolset_Ajax_Handler_Select2_Suggest_Terms' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_terms.php',
35
  'Toolset_Ajax_Handler_Select2_Suggest_Users' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_users.php',
@@ -129,6 +136,7 @@ return array(
129
  'Toolset_Field_Renderer_Preview_Date' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/date.php',
130
  'Toolset_Field_Renderer_Preview_File' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/file.php',
131
  'Toolset_Field_Renderer_Preview_Image' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/image.php',
 
132
  'Toolset_Field_Renderer_Preview_Radio' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/radio.php',
133
  'Toolset_Field_Renderer_Preview_Skype' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/skype.php',
134
  'Toolset_Field_Renderer_Preview_Textfield' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/textfield.php',
@@ -164,10 +172,13 @@ return array(
164
  'Toolset_Post_Type_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/factory.php',
165
  'Toolset_Post_Type_From_Types' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/from_types.php',
166
  'Toolset_Post_Type_Labels' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/labels.php',
 
167
  'Toolset_Post_Type_Query' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/query.php',
168
  'Toolset_Post_Type_Query_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/query_factory.php',
169
  'Toolset_Post_Type_Registered' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/registered.php',
170
  'Toolset_Post_Type_Repository' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/repository.php',
 
 
171
  'Toolset_Regex' => dirname( __FILE__ ) . '/expression-parser/parser.php',
172
  'Toolset_Relationship_Service' => dirname( __FILE__ ) . '/inc/autoloaded/relationship_service.php',
173
  'Toolset_Renderer' => dirname( __FILE__ ) . '/inc/autoloaded/renderer/renderer.php',
@@ -176,6 +187,12 @@ return array(
176
  'Toolset_Result_Updated' => dirname( __FILE__ ) . '/inc/autoloaded/result_updated.php',
177
  'Toolset_Shortcode_Attr_Field' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/field.php',
178
  'Toolset_Shortcode_Attr_Interface' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/interface.php',
 
 
 
 
 
 
179
  'Toolset_Shortcode_Attr_Item_Id' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/id.php',
180
  'Toolset_Shortcode_Attr_Item_Legacy' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/legacy.php',
181
  'Toolset_Shortcode_Attr_Item_M2M' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/m2m.php',
@@ -183,8 +200,10 @@ return array(
183
  'Toolset_Tokenizer' => dirname( __FILE__ ) . '/expression-parser/parser.php',
184
  'Toolset_Upgrade_Command_Definition' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_definition.php',
185
  'Toolset_Upgrade_Command_Definition_Repository' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_definition_repository.php',
 
186
  'Toolset_Upgrade_Command_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_factory.php',
187
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php',
 
188
  'Toolset_Upgrade_Controller' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/controller.php',
189
  'Toolset_Upgrade_Executed_Commands' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/executed_commands.php',
190
  'Toolset_User_Editors_Editor_Abstract' => dirname( __FILE__ ) . '/user-editors/editor/abstract.php',
8
  'IToolset_Post_Type' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/i_post_type.php',
9
  'IToolset_Post_Type_From_Types' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/i_post_type_from_types.php',
10
  'IToolset_Post_Type_Registered' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/i_post_type_registered.php',
 
11
  'IToolset_Upgrade_Command' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_interface.php',
12
+ 'OTGS\Toolset\Common\Condition\Installer\IsAvailable' => dirname( __FILE__ ) . '/utility/condition/plugin/installer/is_available.php',
13
+ 'OTGS\Toolset\Common\Condition\Installer\IsToolsetSubscriptionValid' => dirname( __FILE__ ) . '/utility/condition/plugin/installer/is_toolset_subscription_valid.php',
14
+ 'OTGS\Toolset\Common\Interop\HandlerInterface' => dirname( __FILE__ ) . '/inc/autoloaded/interop/handler_interface.php',
15
+ 'OTGS\Toolset\Common\Interop\Handler\InstallerCompatibilityReporting' => dirname( __FILE__ ) . '/inc/autoloaded/interop/handler/installer_compatibility_reporting.php',
16
+ 'OTGS\Toolset\Common\Interop\Mediator' => dirname( __FILE__ ) . '/inc/autoloaded/interop/mediator.php',
17
+ 'OTGS\Toolset\Common\MaintenanceMode\Controller' => dirname( __FILE__ ) . '/inc/autoloaded/maintenance_mode/controller.php',
18
+ 'OTGS\Toolset\Common\Utility\Admin\Notices\Builder' => dirname( __FILE__ ) . '/utility/admin/notices/Builder.php',
19
  'Toolset_Admin_Controller' => dirname( __FILE__ ) . '/inc/autoloaded/admin.php',
20
  'Toolset_Admin_Notice_Abstract' => dirname( __FILE__ ) . '/utility/admin/notice/abstract.php',
21
  'Toolset_Admin_Notice_Dismissible' => dirname( __FILE__ ) . '/utility/admin/notice/dismissible.php',
36
  'Toolset_Ajax_Handler_Interface' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/interface.php',
37
  'Toolset_Ajax_Handler_Intermediary_Post_Cleanup' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/intermediary_post_cleanup.php',
38
  'Toolset_Ajax_Handler_Migrate_To_M2M' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/migrate_to_m2m.php',
39
+ 'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Post_Type' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_posts_by_post_type.php',
40
  'Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php',
41
  'Toolset_Ajax_Handler_Select2_Suggest_Terms' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_terms.php',
42
  'Toolset_Ajax_Handler_Select2_Suggest_Users' => dirname( __FILE__ ) . '/inc/autoloaded/ajax_handler/select2_suggest_users.php',
136
  'Toolset_Field_Renderer_Preview_Date' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/date.php',
137
  'Toolset_Field_Renderer_Preview_File' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/file.php',
138
  'Toolset_Field_Renderer_Preview_Image' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/image.php',
139
+ 'Toolset_Field_Renderer_Preview_Post' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/post.php',
140
  'Toolset_Field_Renderer_Preview_Radio' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/radio.php',
141
  'Toolset_Field_Renderer_Preview_Skype' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/skype.php',
142
  'Toolset_Field_Renderer_Preview_Textfield' => dirname( __FILE__ ) . '/inc/autoloaded/field/renderer/preview/textfield.php',
172
  'Toolset_Post_Type_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/factory.php',
173
  'Toolset_Post_Type_From_Types' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/from_types.php',
174
  'Toolset_Post_Type_Labels' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/labels.php',
175
+ 'Toolset_Post_Type_List' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/list.php',
176
  'Toolset_Post_Type_Query' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/query.php',
177
  'Toolset_Post_Type_Query_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/query_factory.php',
178
  'Toolset_Post_Type_Registered' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/registered.php',
179
  'Toolset_Post_Type_Repository' => dirname( __FILE__ ) . '/inc/autoloaded/post_type/repository.php',
180
+ 'Toolset_Postmeta_Access_Loader' => dirname( __FILE__ ) . '/inc/autoloaded/postmeta_access/loader.php',
181
+ 'Toolset_Postmeta_Access_M2m' => dirname( __FILE__ ) . '/inc/autoloaded/postmeta_access/m2m.php',
182
  'Toolset_Regex' => dirname( __FILE__ ) . '/expression-parser/parser.php',
183
  'Toolset_Relationship_Service' => dirname( __FILE__ ) . '/inc/autoloaded/relationship_service.php',
184
  'Toolset_Renderer' => dirname( __FILE__ ) . '/inc/autoloaded/renderer/renderer.php',
187
  'Toolset_Result_Updated' => dirname( __FILE__ ) . '/inc/autoloaded/result_updated.php',
188
  'Toolset_Shortcode_Attr_Field' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/field.php',
189
  'Toolset_Shortcode_Attr_Interface' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/interface.php',
190
+ 'Toolset_Shortcode_Attr_Item_Gui_Base' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/gui/base.php',
191
+ 'Toolset_Shortcode_Attr_Item_Gui_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/gui/factory.php',
192
+ 'Toolset_Shortcode_Attr_Item_Gui_M2m' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/gui/m2m.php',
193
+ 'Toolset_Shortcode_Attr_Item_Gui_O2m' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/gui/o2m.php',
194
+ 'Toolset_Shortcode_Attr_Item_Gui_O2o' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/gui/o2o.php',
195
+ 'Toolset_Shortcode_Attr_Item_Gui_Option' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/gui/option.php',
196
  'Toolset_Shortcode_Attr_Item_Id' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/id.php',
197
  'Toolset_Shortcode_Attr_Item_Legacy' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/legacy.php',
198
  'Toolset_Shortcode_Attr_Item_M2M' => dirname( __FILE__ ) . '/inc/autoloaded/shortcode/attr/item/m2m.php',
200
  'Toolset_Tokenizer' => dirname( __FILE__ ) . '/expression-parser/parser.php',
201
  'Toolset_Upgrade_Command_Definition' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_definition.php',
202
  'Toolset_Upgrade_Command_Definition_Repository' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_definition_repository.php',
203
+ 'Toolset_Upgrade_Command_Delete_Obsolete_Upgrade_Options' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command/delete_obsolete_version_number_option.php',
204
  'Toolset_Upgrade_Command_Factory' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command_factory.php',
205
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php',
206
+ 'Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/command/m2m_v2_database_structure_upgrade.php',
207
  'Toolset_Upgrade_Controller' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/controller.php',
208
  'Toolset_Upgrade_Executed_Commands' => dirname( __FILE__ ) . '/inc/autoloaded/upgrade/executed_commands.php',
209
  'Toolset_User_Editors_Editor_Abstract' => dirname( __FILE__ ) . '/user-editors/editor/abstract.php',
vendor/toolset/toolset-common/bootstrap.php CHANGED
@@ -342,6 +342,15 @@ class Toolset_Common_Bootstrap {
342
  new Toolset_Controller_Admin_Notices();
343
  }
344
 
 
 
 
 
 
 
 
 
 
345
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.compatibility.php' );
346
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.function.helpers.php' );
347
  require_once( TOOLSET_COMMON_PATH . '/deprecated.php' );
@@ -376,6 +385,19 @@ class Toolset_Common_Bootstrap {
376
  $wp_query_adjustments = new Toolset_Wp_Query_Adjustments_Loader();
377
  $wp_query_adjustments->initialize();
378
 
 
 
 
 
 
 
 
 
 
 
 
 
 
379
  $this->apply_filters_on_sections_loaded( 'toolset_register_include_section' );
380
  }
381
  }
342
  new Toolset_Controller_Admin_Notices();
343
  }
344
 
345
+ // Load Toolset Singleton Factory based on PHP_Version
346
+ if( ! class_exists( 'Toolset_Singleton_Factory', false ) ) {
347
+ if( version_compare( PHP_VERSION, '5.6.0', '>=' ) ) {
348
+ require_once( TOOLSET_COMMON_PATH . '/utility/singleton_factory.php' );
349
+ } else {
350
+ require_once( TOOLSET_COMMON_PATH . '/utility/singleton_factory_pre_php_5_6.php' );
351
+ }
352
+ }
353
+
354
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.compatibility.php' );
355
  require_once( TOOLSET_COMMON_PATH . '/inc/toolset.function.helpers.php' );
356
  require_once( TOOLSET_COMMON_PATH . '/deprecated.php' );
385
  $wp_query_adjustments = new Toolset_Wp_Query_Adjustments_Loader();
386
  $wp_query_adjustments->initialize();
387
 
388
+ $interop_mediator = new \OTGS\Toolset\Common\Interop\Mediator();
389
+ $interop_mediator->initialize();
390
+
391
+ /**
392
+ * Avoid the initialization of this class.
393
+ *
394
+ * @since m2m
395
+ */
396
+ if ( ! apply_filters( 'toolset_disable_legacy_relationships_meta_access', false ) ) {
397
+ $postmeta_access = new Toolset_Postmeta_Access_Loader();
398
+ $postmeta_access->initialize();
399
+ }
400
+
401
  $this->apply_filters_on_sections_loaded( 'toolset_register_include_section' );
402
  }
403
  }
vendor/toolset/toolset-common/changelog.md CHANGED
@@ -1,5 +1,65 @@
1
  # Toolset Common Library
2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ## 2.6.2
4
  * Various minor bugfixes.
5
  * (toolsetcommon-290) First version of the public relationship API for both legacy and m2m relationships.
@@ -248,7 +308,6 @@
248
  - Fixed issue when there is more than one CRED form on a page with the same taxonomy.
249
  - Fixed a little problem with edit skype button modal window - was too narrow.
250
  - Fixed empty title problem for filter "wpt_field_options" on user edit/add screen.
251
- https://wp-types.com/forums/topic/populate-select-field-in-wpcf-um-group/
252
  - Added filter "toolset_editor_add_form_buttons" to disable Toolset buttons on the post editor.
253
  - Added placeholder attributes to fields.
254
  - Updated CakePHP validation URL method to allow new TLD's.
1
  # Toolset Common Library
2
 
3
+ ## 2.8
4
+ * Legacy branch of the library created to support Types 2.3. Contains all fixes up until 3.0.1.
5
+
6
+ ## 3.0.1
7
+ * Adjust the shortcodes GUI API so it generates attributes wrapped in single quotes.
8
+
9
+ ## 3.0
10
+ * (types-1537) Display the Installer's Compatibility Reporting setting wherever necessary.
11
+ * (toolsetcommon-406) Add new actions to inform about associations being created and deleted.
12
+ * (types-1583) Fix: Errors in PHP 5.3.6.
13
+ * (types-1553) Fix: Do not assume that an option for post type definitions is set.
14
+ * Migration: do not enforce a specific translation mode between posts involved in relationships to migrate.
15
+ * API: fails gracefully when trying to get a relationship by a non existing slug.
16
+ * API: two new public functions to create associations.
17
+ * WPML: support defining associations between posts without enforcing a specific translation mode for them.
18
+ * WPML: ensure that data from a post reference field can be rendered.
19
+
20
+ ## 2.7.1
21
+ * Tag for Forms 2.0-RC3
22
+ * Better validation methods in shared forms.
23
+ * Fixed styling issue in the Toolset shared admin pages.
24
+ * Fixed the shortcodes API GUI on items that have a content and include instructions for it.
25
+
26
+ ## 2.7.0
27
+ * Tag for upcoming Toolset releases.
28
+ * Fix a PHP 5.3 compatibility issue.
29
+
30
+ ## 2.6.9.1
31
+ * Restore compatibility with Toolset plugins using previous versions of the assets manager shared class.
32
+
33
+ ## 2.6.9
34
+ * Restore the $current_page value for the post selector shortcode attribute.
35
+ * Remove an admin notice about using Toolset plugins together.
36
+
37
+ ## 2.6.8
38
+ * (types-1444) Fixed inconsistent API call results when WPML switcher is set to "All languages".
39
+
40
+ ## 2.6.7
41
+ * Improve the shortcodes GUI post selector for better m2m compatibility.
42
+ * Extend the m2m relationships query API so it can play with intermediary post types.
43
+
44
+ ## 2.6.6
45
+ * (toolsetcommon-390) Make sure that there are no potential posts for association when the other (known) post has reached its cardinality limit.
46
+ * (toolsetcommon-381) Make the `_wpcf_belongs_{$post_type}_id` usage in WP_Query meta queries safe to use also in m2m.
47
+ * (types-1467) Fixes in the data structure upgrade mechanism and in the upgrade command for m2m-v1 tables.
48
+
49
+ ## 2.6.5
50
+ * Released with CRED 2.0-b2 and Layouts 2.3-b1
51
+ * Include a compatibility layer for xxx_post_meta native functions usage on legacy relationships postmeta keys.
52
+
53
+ ## 2.6.4
54
+ * Added a set of checks to avoid errors with third parties also loading the Recaptcha v1.11 library.
55
+ * (toolsetcommon-382) Fix issues with the Toolset_Post_Type_Repository too early initialization.
56
+ * (toolsetcommon-369) Fix: Avoid repeated results in the association query.
57
+
58
+ ## 2.6.3
59
+ * Compatibility for Types 2.3-b4
60
+ * Fixed an issue using repeatable File field inside a relationship
61
+ * (types-1374) Fail gracefully if dealing with corrupted `_wpcf_belongs_*_id` postmeta during the m2m migration.
62
+
63
  ## 2.6.2
64
  * Various minor bugfixes.
65
  * (toolsetcommon-290) First version of the public relationship API for both legacy and m2m relationships.
308
  - Fixed issue when there is more than one CRED form on a page with the same taxonomy.
309
  - Fixed a little problem with edit skype button modal window - was too narrow.
310
  - Fixed empty title problem for filter "wpt_field_options" on user edit/add screen.
 
311
  - Added filter "toolset_editor_add_form_buttons" to disable Toolset buttons on the post editor.
312
  - Added placeholder attributes to fields.
313
  - Updated CakePHP validation URL method to allow new TLD's.
vendor/toolset/toolset-common/classes/validation-cakephp.php CHANGED
@@ -126,7 +126,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
126
  */
127
  function notEmpty($check) {
128
  $_this = & Wpcf_Cake_Validation::getInstance();
129
- $_this->__reset();
130
  $_this->check = $check;
131
 
132
  if (is_array($check)) {
@@ -154,7 +154,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
154
  */
155
  function alphaNumeric($check) {
156
  $_this = & Wpcf_Cake_Validation::getInstance();
157
- $_this->__reset();
158
  $_this->check = $check;
159
 
160
  if (is_array($check)) {
@@ -177,7 +177,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
177
 
178
  function alphaNumericWhitespaces($check) {
179
  $_this = & Wpcf_Cake_Validation::getInstance();
180
- $_this->__reset();
181
  $_this->check = $check;
182
 
183
  if (is_array($check)) {
@@ -227,7 +227,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
227
  */
228
  function blank($check) {
229
  $_this = & Wpcf_Cake_Validation::getInstance();
230
- $_this->__reset();
231
  $_this->check = $check;
232
 
233
  if (is_array($check)) {
@@ -254,7 +254,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
254
  */
255
  function cc($check, $type = 'fast', $deep = false, $regex = null) {
256
  $_this = & Wpcf_Cake_Validation::getInstance();
257
- $_this->__reset();
258
  $_this->check = $check;
259
  $_this->type = $type;
260
  $_this->deep = $deep;
@@ -392,7 +392,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
392
  */
393
  function custom($check, $regex = null) {
394
  $_this = & Wpcf_Cake_Validation::getInstance();
395
- $_this->__reset();
396
  $_this->check = $check;
397
  $_this->regex = $regex;
398
  if (is_array($check)) {
@@ -436,7 +436,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
436
  $format = $cake_date_formats[$date_format];
437
 
438
  $_this = & Wpcf_Cake_Validation::getInstance();
439
- $_this->__reset();
440
  $_this->check = $check;
441
  $_this->regex = $regex;
442
 
@@ -474,7 +474,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
474
  */
475
  function time($check) {
476
  $_this = & Wpcf_Cake_Validation::getInstance();
477
- $_this->__reset();
478
  $_this->check = $check;
479
  $_this->regex = '%^((0?[1-9]|1[012])(:[0-5]\d){0,2}([AP]M|[ap]m))$|^([01]\d|2[0-3])(:[0-5]\d){0,2}$%';
480
  return $_this->_check();
@@ -504,7 +504,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
504
  */
505
  function decimal($check, $places = null, $regex = null) {
506
  $_this = & Wpcf_Cake_Validation::getInstance();
507
- $_this->__reset();
508
  $_this->regex = $regex;
509
  $_this->check = $check;
510
 
@@ -529,7 +529,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
529
  */
530
  function email($check, $deep = false, $regex = null) {
531
  $_this = & Wpcf_Cake_Validation::getInstance();
532
- $_this->__reset();
533
  $_this->check = $check;
534
  $_this->regex = $regex;
535
  $_this->deep = $deep;
@@ -629,7 +629,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
629
  if (function_exists('filter_var')) {
630
  return filter_var($check, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4)) !== false;
631
  }
632
- $this->__populateIp();
633
  $this->check = $check;
634
  $this->regex = '/^' . $this->__pattern['IPv4'] . '$/';
635
  return $this->_check();
@@ -646,7 +646,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
646
  if (function_exists('filter_var')) {
647
  return filter_var($check, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV6)) !== false;
648
  }
649
- $this->__populateIp();
650
  $this->check = $check;
651
  $this->regex = '/^' . $this->__pattern['IPv6'] . '$/';
652
  return $this->_check();
@@ -941,7 +941,7 @@ if (!class_exists('Wpcf_Cake_Validation')) {
941
  */
942
  function url($check, $strict = false) {
943
  $_this = & Wpcf_Cake_Validation::getInstance();
944
- $_this->__populateIp();
945
  $_this->check = $check;
946
  $validChars = '([' . preg_quote('!"$&\'()*+,-.@_:;=~[]') . '\/0-9a-z\p{L}\p{N}]|(%[0-9a-f]{2}))';
947
  $_this->regex = '/^(?:(?:https?|ftps?|file|news|gopher):\/\/)' . (!empty($strict) ? '' : '?') .
@@ -1095,8 +1095,13 @@ if (!class_exists('Wpcf_Cake_Validation')) {
1095
  * @access private
1096
  */
1097
 
1098
- function __populateIp() {
1099
- if (!isset($this->__pattern['IPv6'])) {
 
 
 
 
 
1100
  $pattern = '((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}';
1101
  $pattern .= '(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})';
1102
  $pattern .= '|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})';
@@ -1126,7 +1131,13 @@ if (!class_exists('Wpcf_Cake_Validation')) {
1126
  * @return void
1127
  * @access private
1128
  */
1129
- function __reset() {
 
 
 
 
 
 
1130
  $this->check = null;
1131
  $this->regex = null;
1132
  $this->country = null;
@@ -1136,6 +1147,24 @@ if (!class_exists('Wpcf_Cake_Validation')) {
1136
  $this->errors = array();
1137
  }
1138
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1139
  }
1140
 
1141
  }
126
  */
127
  function notEmpty($check) {
128
  $_this = & Wpcf_Cake_Validation::getInstance();
129
+ $_this->reset();
130
  $_this->check = $check;
131
 
132
  if (is_array($check)) {
154
  */
155
  function alphaNumeric($check) {
156
  $_this = & Wpcf_Cake_Validation::getInstance();
157
+ $_this->reset();
158
  $_this->check = $check;
159
 
160
  if (is_array($check)) {
177
 
178
  function alphaNumericWhitespaces($check) {
179
  $_this = & Wpcf_Cake_Validation::getInstance();
180
+ $_this->reset();
181
  $_this->check = $check;
182
 
183
  if (is_array($check)) {
227
  */
228
  function blank($check) {
229
  $_this = & Wpcf_Cake_Validation::getInstance();
230
+ $_this->reset();
231
  $_this->check = $check;
232
 
233
  if (is_array($check)) {
254
  */
255
  function cc($check, $type = 'fast', $deep = false, $regex = null) {
256
  $_this = & Wpcf_Cake_Validation::getInstance();
257
+ $_this->reset();
258
  $_this->check = $check;
259
  $_this->type = $type;
260
  $_this->deep = $deep;
392
  */
393
  function custom($check, $regex = null) {
394
  $_this = & Wpcf_Cake_Validation::getInstance();
395
+ $_this->reset();
396
  $_this->check = $check;
397
  $_this->regex = $regex;
398
  if (is_array($check)) {
436
  $format = $cake_date_formats[$date_format];
437
 
438
  $_this = & Wpcf_Cake_Validation::getInstance();
439
+ $_this->reset();
440
  $_this->check = $check;
441
  $_this->regex = $regex;
442
 
474
  */
475
  function time($check) {
476
  $_this = & Wpcf_Cake_Validation::getInstance();
477
+ $_this->reset();
478
  $_this->check = $check;
479
  $_this->regex = '%^((0?[1-9]|1[012])(:[0-5]\d){0,2}([AP]M|[ap]m))$|^([01]\d|2[0-3])(:[0-5]\d){0,2}$%';
480
  return $_this->_check();
504
  */
505
  function decimal($check, $places = null, $regex = null) {
506
  $_this = & Wpcf_Cake_Validation::getInstance();
507
+ $_this->reset();
508
  $_this->regex = $regex;
509
  $_this->check = $check;
510
 
529
  */
530
  function email($check, $deep = false, $regex = null) {
531
  $_this = & Wpcf_Cake_Validation::getInstance();
532
+ $_this->reset();
533
  $_this->check = $check;
534
  $_this->regex = $regex;
535
  $_this->deep = $deep;
629
  if (function_exists('filter_var')) {
630
  return filter_var($check, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV4)) !== false;
631
  }
632
+ $this->populateIp();
633
  $this->check = $check;
634
  $this->regex = '/^' . $this->__pattern['IPv4'] . '$/';
635
  return $this->_check();
646
  if (function_exists('filter_var')) {
647
  return filter_var($check, FILTER_VALIDATE_IP, array('flags' => FILTER_FLAG_IPV6)) !== false;
648
  }
649
+ $this->populateIp();
650
  $this->check = $check;
651
  $this->regex = '/^' . $this->__pattern['IPv6'] . '$/';
652
  return $this->_check();
941
  */
942
  function url($check, $strict = false) {
943
  $_this = & Wpcf_Cake_Validation::getInstance();
944
+ $_this->populateIp();
945
  $_this->check = $check;
946
  $validChars = '([' . preg_quote('!"$&\'()*+,-.@_:;=~[]') . '\/0-9a-z\p{L}\p{N}]|(%[0-9a-f]{2}))';
947
  $_this->regex = '/^(?:(?:https?|ftps?|file|news|gopher):\/\/)' . (!empty($strict) ? '' : '?') .
1095
  * @access private
1096
  */
1097
 
1098
+ function populateIp() {
1099
+ if( method_exists( $this, '__populateIp' ) ) {
1100
+ // support for subclasses overwritting the previous __populateIp function
1101
+ return $this->__populateIp();
1102
+ }
1103
+
1104
+ if (!isset($this->__pattern['IPv6'])) {
1105
  $pattern = '((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}';
1106
  $pattern .= '(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})';
1107
  $pattern .= '|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})';
1131
  * @return void
1132
  * @access private
1133
  */
1134
+ function reset() {
1135
+ if( method_exists( $this, '__reset' ) ) {
1136
+ // support for subclasses overwritting the previous __reset function
1137
+ return $this->__reset();
1138
+ }
1139
+
1140
+ // no sublcass
1141
  $this->check = null;
1142
  $this->regex = null;
1143
  $this->country = null;
1147
  $this->errors = array();
1148
  }
1149
 
1150
+ /**
1151
+ * Backward compatibility
1152
+ * For PHP 7 we renamed the method __reset() and __populateIp() to reset() and populateIp().
1153
+ * As both are public methods we apply this fallback for the case someone calls the old methods.
1154
+ *
1155
+ * @param $method
1156
+ * @param $arguments
1157
+ */
1158
+ public function __call( $method, $arguments ) {
1159
+ switch( $method ) {
1160
+ case '__reset':
1161
+ $this->reset();
1162
+ break;
1163
+ case '__populateIp':
1164
+ $this->populateIp();
1165
+ break;
1166
+ }
1167
+ }
1168
  }
1169
 
1170
  }
vendor/toolset/toolset-common/inc/autoloaded/admin.php CHANGED
@@ -12,6 +12,7 @@ class Toolset_Admin_Controller {
12
 
13
  public function initialize() {
14
  $this->load_whip();
 
15
  }
16
 
17
 
@@ -29,4 +30,9 @@ class Toolset_Admin_Controller {
29
  whip_wp_check_versions( array( 'php' => '>=5.3' ) );
30
  }
31
 
 
 
 
 
 
32
  }
12
 
13
  public function initialize() {
14
  $this->load_whip();
15
+ $this->init_page_extensions();
16
  }
17
 
18
 
30
  whip_wp_check_versions( array( 'php' => '>=5.3' ) );
31
  }
32
 
33
+
34
+ private function init_page_extensions() {
35
+
36
+ }
37
+
38
  }
vendor/toolset/toolset-common/inc/autoloaded/admin/notices.php CHANGED
@@ -158,16 +158,6 @@ class Toolset_Controller_Admin_Notices {
158
  ) {
159
  $this->notices_compilation_introduction();
160
  $this->notice_wpml_version_doesnt_support_m2m();
161
-
162
- if( $this->only_types_active() || $this->is_commercial_active_but_not_registered( false ) ) {
163
- // notice: types free version support ends
164
- if( $notice = $this->types_free_version_support_ends() ) {
165
- if( $current_screen_id == 'toplevel_page_toolset-dashboard'
166
- && Toolset_Admin_Notices_Manager::is_notice_dismissed( $notice ) ) {
167
- $this->types_free_version_support_ends_undissmisble();
168
- }
169
- };
170
- }
171
  }
172
  }
173
 
@@ -219,11 +209,6 @@ class Toolset_Controller_Admin_Notices {
219
 
220
  $this->notices_compilation_introduction();
221
  $this->notice_wpml_version_doesnt_support_m2m();
222
-
223
- if( $this->only_types_active() || $this->is_commercial_active_but_not_registered( false ) ) {
224
- // notice: types free version support ends
225
- $this->types_free_version_support_ends();
226
- }
227
  }
228
 
229
  /**
@@ -262,8 +247,6 @@ class Toolset_Controller_Admin_Notices {
262
  */
263
  protected function notices_compilation_introduction() {
264
  if( $this->only_types_active() ) {
265
- $this->notice_how_to_design_with_toolset();
266
-
267
  // notice: theme has native layout support
268
  $this->notice_theme_works_best_with_toolset();
269
 
@@ -272,15 +255,6 @@ class Toolset_Controller_Admin_Notices {
272
 
273
  // commercial plugin active + theme we have an integration plugin for
274
  $this->integration_run_installer();
275
-
276
- // + commercial plugin active
277
- // + types || views || layouts missing
278
- if( ! $this->is_views_active
279
- || ! $this->is_types_active
280
- || ! $this->is_layouts_active
281
- ) {
282
- $this->types_views_or_layouts_missing();
283
- }
284
  }
285
 
286
  /**
@@ -297,18 +271,6 @@ class Toolset_Controller_Admin_Notices {
297
  return true;
298
  }
299
 
300
- /**
301
- * @return Toolset_Admin_Notice_Dismissible
302
- */
303
- protected function notice_how_to_design_with_toolset() {
304
- $notice = new Toolset_Admin_Notice_Dismissible( 'how-to-design-with-toolset' );
305
- $notice->set_content( $this->tpl_path . '/only-types-installed/layouts-support-missing.phtml' );
306
- $notice->add_condition( new Toolset_Condition_Theme_Layouts_Support_Native_Missing() );
307
- Toolset_Admin_Notices_Manager::add_notice( $notice );
308
-
309
- return $notice;
310
- }
311
-
312
  /**
313
  * @return Toolset_Admin_Notice_Dismissible
314
  */
@@ -319,19 +281,6 @@ class Toolset_Controller_Admin_Notices {
319
  Toolset_Admin_Notices_Manager::add_notice( $notice );
320
  }
321
 
322
- /**
323
- * @return Toolset_Admin_Notice_Dismissible
324
- */
325
- protected function types_views_or_layouts_missing() {
326
- // The id 'layouts-no-theme-integration' can be irritating as it no longer depends on a theme integration plugin
327
- // But changing the id means users have to dismiss the notice again. So we keep 'layouts-no-theme-integration'.
328
- $notice = new Toolset_Admin_Notice_Dismissible( 'layouts-no-theme-integration' );
329
- $notice->set_content( $this->tpl_path . '/commercial-plugin-installed/types-views-or-layouts-missing.phtml' );
330
- Toolset_Admin_Notices_Manager::add_notice( $notice );
331
-
332
- return $notice;
333
- }
334
-
335
  /**
336
  *
337
  * Display a Toolset_Admin_Notice_Undismissible notice if the user has not registered this site.
@@ -348,45 +297,6 @@ class Toolset_Controller_Admin_Notices {
348
  }
349
 
350
 
351
- /**
352
- * @return Toolset_Admin_Notice_Dismissible
353
- */
354
- protected function types_free_version_support_ends() {
355
- if( class_exists( 'WP_Installer' )
356
- && WP_Installer()->repository_has_valid_subscription( 'toolset' ) ) {
357
- return false;
358
- }
359
-
360
- $is_m2m_ready = new Toolset_Condition_Plugin_Types_Ready_For_M2M();
361
- if ( $is_m2m_ready->is_met() ) {
362
- return false;
363
- }
364
-
365
- $notice = new Toolset_Admin_Notice_Dismissible( 'types_free_version_support_ends', '', $this->constants );
366
- $notice->set_content( $this->tpl_path . '/types-free-version-ends.phtml' );
367
- Toolset_Admin_Notices_Manager::add_notice( $notice );
368
-
369
- return $notice;
370
- }
371
-
372
- /**
373
- * @return Toolset_Admin_Notice_Undismissible
374
- */
375
- protected function types_free_version_support_ends_undissmisble() {
376
- if( class_exists( 'WP_Installer' )
377
- && WP_Installer()->repository_has_valid_subscription( 'toolset' ) ) {
378
- return false;
379
- }
380
-
381
- $notice = new Toolset_Admin_Notice_Undismissible( 'types_free_version_support_ends_undissmisble', '', $this->constants );
382
- $notice->set_template_path( $this->tpl_path . '/types-move-to-toolset.phtml' );
383
- $notice->set_content( $this->tpl_path . '/types-free-version-ends.phtml' );
384
- Toolset_Admin_Notices_Manager::add_notice( $notice );
385
-
386
- return $notice;
387
- }
388
-
389
-
390
 
391
  /**
392
  * @return Toolset_Admin_Notice_Dismissible
@@ -489,7 +399,7 @@ class Toolset_Controller_Admin_Notices {
489
  $notice = new Toolset_Admin_Notice_Required_Action(
490
  'toolset-wpml-version-doesnt-support-m2m',
491
  sprintf(
492
- __( 'Many-to-many post relationships in Toolset require WPML %s or newer to work properly with post translations. Please upgrade WPML.', 'wpcf' ),
493
  sanitize_text_field( Toolset_Relationship_Controller::MINIMAL_WPML_VERSION )
494
  )
495
  );
158
  ) {
159
  $this->notices_compilation_introduction();
160
  $this->notice_wpml_version_doesnt_support_m2m();
 
 
 
 
 
 
 
 
 
 
161
  }
162
  }
163
 
209
 
210
  $this->notices_compilation_introduction();
211
  $this->notice_wpml_version_doesnt_support_m2m();
 
 
 
 
 
212
  }
213
 
214
  /**
247
  */
248
  protected function notices_compilation_introduction() {
249
  if( $this->only_types_active() ) {
 
 
250
  // notice: theme has native layout support
251
  $this->notice_theme_works_best_with_toolset();
252
 
255
 
256
  // commercial plugin active + theme we have an integration plugin for
257
  $this->integration_run_installer();
 
 
 
 
 
 
 
 
 
258
  }
259
 
260
  /**
271
  return true;
272
  }
273
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  /**
275
  * @return Toolset_Admin_Notice_Dismissible
276
  */
281
  Toolset_Admin_Notices_Manager::add_notice( $notice );
282
  }
283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  /**
285
  *
286
  * Display a Toolset_Admin_Notice_Undismissible notice if the user has not registered this site.
297
  }
298
 
299
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
 
301
  /**
302
  * @return Toolset_Admin_Notice_Dismissible
399
  $notice = new Toolset_Admin_Notice_Required_Action(
400
  'toolset-wpml-version-doesnt-support-m2m',
401
  sprintf(
402
+ __( 'Post relationships in Toolset require WPML %s or newer to work properly with post translations. Please upgrade WPML.', 'wpcf' ),
403
  sanitize_text_field( Toolset_Relationship_Controller::MINIMAL_WPML_VERSION )
404
  )
405
  );
vendor/toolset/toolset-common/inc/autoloaded/ajax_handler/migrate_to_m2m.php CHANGED
@@ -18,9 +18,9 @@ class Toolset_Ajax_Handler_Migrate_To_M2M extends Toolset_Ajax_Handler_Abstract
18
 
19
  // Fixed step numbers in the first phase.
20
  // These need to be consecutive numbers.
21
- const STEP_MAYBE_DROP_TABLES = 0;
22
-
23
- const STEP_CREATE_TABLES = 1;
24
 
25
 
26
  /** @var Toolset_Relationship_Controller */
@@ -105,18 +105,39 @@ class Toolset_Ajax_Handler_Migrate_To_M2M extends Toolset_Ajax_Handler_Abstract
105
  // Used for calculating offsets in the last two phases.
106
  $steps_before_association_migration = (int) toolset_getarr( $_POST, 'first_phase_step', 0 );
107
 
 
 
 
 
 
108
  switch ( $current_phase ) {
109
 
110
  case self::PHASE_DBDELTA: {
111
- $continue = $this->phase_dbdelta( $step_number , $migration_controller, $results, $next_phase );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  break;
113
  }
114
 
115
  case self::PHASE_DEFINITION_MIGRATION: {
116
  // Second step - (re)create relationship definitions.
117
 
118
- $definition_migration_result = $migration_controller->migrate_relationship_definitions();
 
119
  if ( $definition_migration_result->is_complete_success() ) {
 
120
  $results->add( true, __( 'Relationship definitions migrated.', 'wpcf' ) );
121
  } else {
122
  $results->add( $definition_migration_result );
@@ -180,12 +201,32 @@ class Toolset_Ajax_Handler_Migrate_To_M2M extends Toolset_Ajax_Handler_Abstract
180
 
181
  }
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  $this->ajax_finish(
184
  array(
185
  'message' => $results->concat_messages( "\n> " ),
186
  'continue' => $continue,
187
  'previous_phase' => $current_phase,
 
 
 
188
  'is_complete_success' => $results->is_complete_success(),
 
189
  'ajax_arguments' => array(
190
  'step' => $step_number + 1,
191
  'phase' => $next_phase,
@@ -194,7 +235,7 @@ class Toolset_Ajax_Handler_Migrate_To_M2M extends Toolset_Ajax_Handler_Abstract
194
  'options' => $options
195
  )
196
  ),
197
- true // the call is a success, it doesn't say anything about the actual operation
198
  );
199
  }
200
 
@@ -229,7 +270,7 @@ class Toolset_Ajax_Handler_Migrate_To_M2M extends Toolset_Ajax_Handler_Abstract
229
 
230
  $migration_controller->do_native_dbdelta();
231
 
232
- $results->add( true, __( 'The toolset_associations table created.', 'wpcf' ) );
233
 
234
  $next_phase = self::PHASE_DEFINITION_MIGRATION;
235
 
@@ -241,4 +282,20 @@ class Toolset_Ajax_Handler_Migrate_To_M2M extends Toolset_Ajax_Handler_Abstract
241
  return false;
242
  }
243
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  }
18
 
19
  // Fixed step numbers in the first phase.
20
  // These need to be consecutive numbers.
21
+ const STEP_MAINTENANCE_ON = 0;
22
+ const STEP_MAYBE_DROP_TABLES = 1;
23
+ const STEP_CREATE_TABLES = 2;
24
 
25
 
26
  /** @var Toolset_Relationship_Controller */
105
  // Used for calculating offsets in the last two phases.
106
  $steps_before_association_migration = (int) toolset_getarr( $_POST, 'first_phase_step', 0 );
107
 
108
+ $has_maintenance_mode = (bool) toolset_getarr( $options, 'use_maintenance_mode', false );
109
+
110
+ $is_fatal_error = false;
111
+ $keep_maintenance_mode = false;
112
+
113
  switch ( $current_phase ) {
114
 
115
  case self::PHASE_DBDELTA: {
116
+ // Putting this here because adding another phase would require more changes to the
117
+ // migration dialog.
118
+ if( $step_number === self::STEP_MAINTENANCE_ON ) {
119
+ if( $has_maintenance_mode ) {
120
+ $results->add( $this->enable_maintenance_mode() );
121
+ $continue = $results->is_complete_success();
122
+ } else {
123
+ $results->add( true, __( 'Not using maintenance mode for the migration.', 'wpcf' ) );
124
+ $continue = true;
125
+ }
126
+ $keep_maintenance_mode = true;
127
+ $is_fatal_error = ! $continue;
128
+ } else {
129
+ $continue = $this->phase_dbdelta( $step_number, $migration_controller, $results, $next_phase );
130
+ }
131
  break;
132
  }
133
 
134
  case self::PHASE_DEFINITION_MIGRATION: {
135
  // Second step - (re)create relationship definitions.
136
 
137
+ $adjust_translation_mode = (bool) toolset_getarr( $options, 'adjust_translation_mode' );
138
+ $definition_migration_result = $migration_controller->migrate_relationship_definitions( $adjust_translation_mode );
139
  if ( $definition_migration_result->is_complete_success() ) {
140
+ $results->add( $definition_migration_result );
141
  $results->add( true, __( 'Relationship definitions migrated.', 'wpcf' ) );
142
  } else {
143
  $results->add( $definition_migration_result );
201
 
202
  }
203
 
204
+ // Never leave the maintenance mode behind unless specifically instructed to do so
205
+ // (when there is an error because the maintenance mode is already active).
206
+ if( $has_maintenance_mode && ! $continue && ! $keep_maintenance_mode ) {
207
+ $results->add( $this->disable_maintenance_mode() );
208
+ }
209
+
210
+ $result_status = 'success';
211
+ if( ! $results->is_complete_success() ) {
212
+ // Something went wrong but we can still continue.
213
+ $result_status = 'warning';
214
+ }
215
+ if( $is_fatal_error ) {
216
+ // Something went wrong and the process cannot continue anymore,
217
+ $result_status = 'error';
218
+ }
219
+
220
  $this->ajax_finish(
221
  array(
222
  'message' => $results->concat_messages( "\n> " ),
223
  'continue' => $continue,
224
  'previous_phase' => $current_phase,
225
+ 'status' => $result_status,
226
+
227
+ // keeping this for backward compatibility - replaced by "status":
228
  'is_complete_success' => $results->is_complete_success(),
229
+
230
  'ajax_arguments' => array(
231
  'step' => $step_number + 1,
232
  'phase' => $next_phase,
235
  'options' => $options
236
  )
237
  ),
238
+ true
239
  );
240
  }
241
 
270
 
271
  $migration_controller->do_native_dbdelta();
272
 
273
+ $results->add( true, __( 'The toolset_associations, toolset_relationships and toolset_post_type_sets tables have been created.', 'wpcf' ) );
274
 
275
  $next_phase = self::PHASE_DEFINITION_MIGRATION;
276
 
282
  return false;
283
  }
284
 
285
+
286
+ private function get_maintenance_mode_controller() {
287
+ $maintenance = new \OTGS\Toolset\Common\MaintenanceMode\Controller();
288
+ return $maintenance;
289
+ }
290
+
291
+
292
+ private function enable_maintenance_mode() {
293
+ return $this->get_maintenance_mode_controller()->enable( true, true, true );
294
+ }
295
+
296
+
297
+ private function disable_maintenance_mode() {
298
+ return $this->get_maintenance_mode_controller()->disable();
299
+ }
300
+
301
  }
vendor/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_post_type.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Handles toolset_select2 instances that suggest post by title.
5
+ *
6
+ * If a given post type is not provided, it will return no results.
7
+ * valueType - If a return value among [ 'ID', 'post_name' ] is not provided, it will return result built upon post ID.
8
+ * orderBy - Can order by 'date', 'title', 'ID'.
9
+ * order - Can order as 'DESC' or 'ASC'.
10
+ * author - Can filter by an author ID, or return no results if passed as zero.
11
+ *
12
+ * @since m2m
13
+ */
14
+ class Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Post_Type extends Toolset_Ajax_Handler_Abstract {
15
+
16
+
17
+ /**
18
+ * @param array $arguments Original action arguments.
19
+ *
20
+ * @return void
21
+ */
22
+ function process_call( $arguments ) {
23
+
24
+ $this->ajax_begin(
25
+ array(
26
+ 'nonce' => Toolset_Ajax::CALLBACK_SELECT2_SUGGEST_POSTS_BY_POST_TYPE,
27
+ 'is_public' => true
28
+ )
29
+ );
30
+
31
+ $post_type = toolset_getpost( 'postType' );
32
+
33
+ if ( empty( $post_type ) ) {
34
+ $this->ajax_finish( array( 'message' => __( 'Wrong or missing query.', 'wpv-views' ) ), false );
35
+ }
36
+
37
+ $return = toolset_getpost( 'valueType' );
38
+ $return = in_array( $return, array( 'ID', 'post_name' ) )
39
+ ? $return
40
+ : 'ID';
41
+
42
+ global $wpdb;
43
+ $values_to_prepare = array();
44
+
45
+ $post_type_query = '';
46
+
47
+
48
+ $post_type_query = "AND post_type = %s ";
49
+ $values_to_prepare[] = $post_type;
50
+
51
+ $author_query = '';
52
+ if ( '' != toolset_getpost('author') ) {
53
+ $author_query = "AND post_author = %s";
54
+ $values_to_prepare[] = (int) toolset_getpost('author');
55
+ }
56
+
57
+ $orderby = toolset_getpost( 'orderBy', 'ID', array( 'date', 'title', 'ID' ) );
58
+ $values_to_prepare[] = $orderby;
59
+
60
+ $order = toolset_getpost( 'order', 'DESC', array( 'ASC', 'DESC' ) );
61
+ $values_to_prepare[] = $order;
62
+
63
+ $results = $wpdb->get_results(
64
+ $wpdb->prepare(
65
+ "SELECT ID, post_type, post_title, post_name
66
+ FROM {$wpdb->posts}
67
+ WHERE post_status = 'publish'
68
+ {$post_type_query}
69
+ {$author_query}
70
+ ORDER BY %s %s
71
+ LIMIT 0, 15",
72
+ $values_to_prepare
73
+ )
74
+ );
75
+
76
+
77
+ if (
78
+ isset( $results )
79
+ && ! empty( $results )
80
+ ) {
81
+
82
+ $final = array();
83
+
84
+ if ( is_array( $results ) ) {
85
+
86
+ foreach ( $results as $result ) {
87
+ $final[] = array(
88
+ 'id' => $result->$return,
89
+ 'text' => $result->post_title
90
+ );
91
+ }
92
+
93
+ $final = array_values( $final );
94
+
95
+ }
96
+ $this->ajax_finish( $final, true );
97
+
98
+ } else {
99
+ // return empty result set
100
+ $result = array();
101
+ $this->ajax_finish( $result, true );
102
+ }
103
+
104
+ $this->ajax_finish( array( 'message' => __( 'Error while retrieving result.', 'wpv-views' ) ), false );
105
+
106
+ }
107
+
108
+ /**
109
+ * Return only post type from post object, used for array_map
110
+ * @param $one_post
111
+ * @return string
112
+ */
113
+ private function get_post_type( $one_post ){
114
+ return $one_post->post_type;
115
+ }
116
+
117
+ }
vendor/toolset/toolset-common/inc/autoloaded/ajax_handler/select2_suggest_posts_by_title.php CHANGED
@@ -3,8 +3,13 @@
3
  /**
4
  * Handles toolset_select2 instances that suggest post by title.
5
  *
6
- * If a given post type is not provided, it will return results in any post type but the excluded ones.
7
- * If a return value among [ 'ID', 'post_name' ] is not provided, it will return result built upon post ID.
 
 
 
 
 
8
  *
9
  * @since m2m
10
  */
@@ -25,11 +30,12 @@ class Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title extends Toolset_Ajax_H
25
  )
26
  );
27
 
28
- // Read and validate input
29
  $s = toolset_getpost( 's' );
30
 
31
-
32
- if ( empty( $s ) ) {
 
 
33
  $this->ajax_finish( array( 'message' => __( 'Wrong or missing query.', 'wpv-views' ) ), false );
34
  }
35
 
@@ -41,14 +47,19 @@ class Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title extends Toolset_Ajax_H
41
  global $wpdb;
42
  $values_to_prepare = array();
43
 
44
- if ( method_exists( $wpdb, 'esc_like' ) ) {
45
- $s = '%' . $wpdb->esc_like( $s ) . '%';
46
- } else {
47
- $s = '%' . like_escape( esc_sql( $s ) ) . '%';
 
 
 
 
 
 
 
48
  }
49
 
50
- $values_to_prepare[] = $s;
51
-
52
  $post_type_query = '';
53
  $force_post_type = toolset_getpost( 'postType' );
54
  if ( empty( $force_post_type ) ) {
@@ -62,17 +73,27 @@ class Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title extends Toolset_Ajax_H
62
  $values_to_prepare[] = $force_post_type;
63
  }
64
 
65
- $toolset_post_type_exclude = new Toolset_Post_Type_Exclude_List();
66
- $toolset_post_type_exclude_list = $toolset_post_type_exclude->get();
67
- $toolset_post_type_exclude_list_string = "'" . implode( "', '", $toolset_post_type_exclude_list ) . "'";
 
 
 
 
 
 
 
 
68
 
69
  $results = $wpdb->get_results(
70
  $wpdb->prepare(
71
  "SELECT ID, post_type, post_title, post_name
72
  FROM {$wpdb->posts}
73
- WHERE post_title LIKE %s
74
  AND post_status = 'publish'
75
- {$post_type_query}
 
 
76
  LIMIT 0, 15",
77
  $values_to_prepare
78
  )
@@ -83,33 +104,43 @@ class Toolset_Ajax_Handler_Select2_Suggest_Posts_By_Title extends Toolset_Ajax_H
83
  isset( $results )
84
  && ! empty( $results )
85
  ) {
86
-
87
  $final = array();
88
 
89
  if ( is_array( $results ) ) {
90
-
91
- // create list of unique post types in result set
92
- $selected_post_types = array_map( array( $this,'get_post_type' ), $results );
93
- $unique_post_types = array_unique( $selected_post_types );
94
-
95
-
96
- foreach ( $unique_post_types as $key => $post_type ) {
97
- $post_type_details = get_post_type_object( $post_type );
98
- $final[ $post_type ] = array(
99
- 'text' => $post_type_details->label,
100
- 'children' => array()
101
- );
102
- }
103
- foreach ( $results as $result ) {
104
- $final[ $result->post_type ]['children'][] = array(
105
- 'id' => $result->$return,
106
- 'text' => $result->post_title
107
- );
 
 
 
 
 
 
 
 
 
108
  }
109
 
110
  $final = array_values( $final );
111
-
112
  }
 
113
  $this->ajax_finish( $final, true );
114
 
115
  } else {
3
  /**
4
  * Handles toolset_select2 instances that suggest post by title.
5
  *
6
+ * This AJAX handler supports the following modifies:
7
+ * postType - If a given post type is not provided, it will return results in any post type but the excluded ones. No validation is done.
8
+ * valueType - If a return value among [ 'ID', 'post_name' ] is not provided, it will return result built upon post ID.
9
+ * loadRecent - If provided as TRUE, a search for the most recent posts will be performed even without a search term.
10
+ * orderBy - Can order by 'date', 'title', 'ID'.
11
+ * order - Can order as 'DESC' or 'ASC'.
12
+ * author - Can filter by an author ID, or return no results if passed as zero.
13
  *
14
  * @since m2m
15
  */
30
  )
31
  );
32
 
 
33
  $s = toolset_getpost( 's' );
34
 
35
+ if (
36
+ empty( $s )
37
+ && ! toolset_getpost( 'loadRecent', false )
38
+ ) {
39
  $this->ajax_finish( array( 'message' => __( 'Wrong or missing query.', 'wpv-views' ) ), false );
40
  }
41
 
47
  global $wpdb;
48
  $values_to_prepare = array();
49
 
50
+ if ( empty( $s ) ) {
51
+ $search_query = '1 = %d';
52
+ $values_to_prepare[] = 1;
53
+ } else {
54
+ $search_query = 'post_title LIKE %s';
55
+ if ( method_exists( $wpdb, 'esc_like' ) ) {
56
+ $s = '%' . $wpdb->esc_like( $s ) . '%';
57
+ } else {
58
+ $s = '%' . like_escape( esc_sql( $s ) ) . '%';
59
+ }
60
+ $values_to_prepare[] = $s;
61
  }
62
 
 
 
63
  $post_type_query = '';
64
  $force_post_type = toolset_getpost( 'postType' );
65
  if ( empty( $force_post_type ) ) {
73
  $values_to_prepare[] = $force_post_type;
74
  }
75
 
76
+ $author_query = '';
77
+ if ( '' != toolset_getpost('author') ) {
78
+ $author_query = "AND post_author = %s";
79
+ $values_to_prepare[] = (int) toolset_getpost('author');
80
+ }
81
+
82
+ $orderby = toolset_getpost( 'orderBy', 'ID', array( 'date', 'title', 'ID' ) );
83
+ $values_to_prepare[] = $orderby;
84
+
85
+ $order = toolset_getpost( 'order', 'DESC', array( 'ASC', 'DESC' ) );
86
+ $values_to_prepare[] = $order;
87
 
88
  $results = $wpdb->get_results(
89
  $wpdb->prepare(
90
  "SELECT ID, post_type, post_title, post_name
91
  FROM {$wpdb->posts}
92
+ WHERE {$search_query}
93
  AND post_status = 'publish'
94
+ {$post_type_query}
95
+ {$author_query}
96
+ ORDER BY %s %s
97
  LIMIT 0, 15",
98
  $values_to_prepare
99
  )
104
  isset( $results )
105
  && ! empty( $results )
106
  ) {
107
+
108
  $final = array();
109
 
110
  if ( is_array( $results ) ) {
111
+
112
+ if ( ! empty( $force_post_type ) ) {
113
+
114
+ foreach ( $results as $result ) {
115
+ $final[] = array(
116
+ 'id' => $result->$return,
117
+ 'text' => $result->post_title
118
+ );
119
+ }
120
+
121
+ } else {
122
+
123
+ foreach ( $results as $result ) {
124
+ if ( ! isset( $final[ $result->post_type ] ) ) {
125
+ $post_type_details = get_post_type_object( $result->post_type );
126
+ $final[ $result->post_type ] = array(
127
+ 'text' => $post_type_details->label,
128
+ 'children' => array()
129
+ );
130
+ }
131
+
132
+ $final[ $result->post_type ]['children'][] = array(
133
+ 'id' => $result->$return,
134
+ 'text' => $result->post_title
135
+ );
136
+ }
137
+
138
  }
139
 
140
  $final = array_values( $final );
141
+
142
  }
143
+
144
  $this->ajax_finish( $final, true );
145
 
146
  } else {
vendor/toolset/toolset-common/inc/autoloaded/element/domain.php CHANGED
@@ -5,7 +5,7 @@
5
  *
6
  * @since 2.5.4
7
  */
8
- abstract class Toolset_Element_Domain {
9
 
10
  const POSTS = 'posts';
11
  const USERS = 'users';
5
  *
6
  * @since 2.5.4
7
  */
8
+ class Toolset_Element_Domain {
9
 
10
  const POSTS = 'posts';
11
  const USERS = 'users';
vendor/toolset/toolset-common/inc/autoloaded/element/element.php CHANGED
@@ -66,18 +66,6 @@ abstract class Toolset_Element implements IToolset_Element {
66
 
67
 
68
 
69
- /**
70
- * @return string One of the Toolset_Field_Utils::get_domains() values.
71
- */
72
- public abstract function get_domain();
73
-
74
-
75
- /**
76
- * @return int ID of the underlying object.
77
- */
78
- public abstract function get_id();
79
-
80
-
81
  /**
82
  * Load custom fields of the element if they're not loaded yet.
83
  *
66
 
67
 
68
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  /**
70
  * Load custom fields of the element if they're not loaded yet.
71
  *
vendor/toolset/toolset-common/inc/autoloaded/element/element_factory.php CHANGED
@@ -113,6 +113,7 @@ class Toolset_Element_Factory {
113
  * @param array|WP_Post|int $object_source
114
  *
115
  * @return Toolset_Post_Translation_Set
 
116
  */
117
  public function get_post_translation_set( $object_source ) {
118
  if( ! is_array( $object_source ) ) {
113
  * @param array|WP_Post|int $object_source
114
  *
115
  * @return Toolset_Post_Translation_Set
116
+ * @throws Toolset_Element_Exception_Element_Doesnt_Exist
117
  */
118
  public function get_post_translation_set( $object_source ) {
119
  if( ! is_array( $object_source ) ) {
vendor/toolset/toolset-common/inc/autoloaded/element/i_post.php CHANGED
@@ -22,13 +22,6 @@ interface IToolset_Post extends IToolset_Element {
22
  public function get_type_object();
23
 
24
 
25
- /**
26
- * @return string Post title
27
- * @since m2m
28
- */
29
- public function get_title();
30
-
31
-
32
  /**
33
  * @param string $title New post title
34
  *
22
  public function get_type_object();
23
 
24
 
 
 
 
 
 
 
 
25
  /**
26
  * @param string $title New post title
27
  *
vendor/toolset/toolset-common/inc/autoloaded/element/post.php CHANGED
@@ -275,4 +275,4 @@ class Toolset_Post extends Toolset_Element implements IToolset_Post {
275
  public function get_trid() {
276
  return $this->wpml_service->get_post_trid( $this->get_id() );
277
  }
278
- }
275
  public function get_trid() {
276
  return $this->wpml_service->get_post_trid( $this->get_id() );
277
  }
278
+ }
vendor/toolset/toolset-common/inc/autoloaded/element/post_translation_set.php CHANGED
@@ -133,7 +133,11 @@ class Toolset_Post_Translation_Set implements IToolset_Post {
133
  if ( ! array_key_exists( $language_code, $this->translations ) ) {
134
  $translated_post_id = $this->fetch_translation( $language_code );
135
  if ( $translated_post_id !== 0 ) {
136
- $translation = $this->element_factory->get_post_untranslated( $translated_post_id, $language_code );
 
 
 
 
137
  } else {
138
  $translation = null;
139
  }
133
  if ( ! array_key_exists( $language_code, $this->translations ) ) {
134
  $translated_post_id = $this->fetch_translation( $language_code );
135
  if ( $translated_post_id !== 0 ) {
136
+ try {
137
+ $translation = $this->element_factory->get_post_untranslated( $translated_post_id, $language_code );
138
+ } catch ( Toolset_Element_Exception_Element_Doesnt_Exist $e ) {
139
+ $translation = null;
140
+ }
141
  } else {
142
  $translation = null;
143
  }
vendor/toolset/toolset-common/inc/autoloaded/field/definition_abstract.php CHANGED
@@ -5,42 +5,6 @@
5
  */
6
  abstract class Toolset_Field_Definition_Abstract implements Toolset_Field_Definition_Interface {
7
 
8
- /**
9
- * @return string Field definition slug.
10
- */
11
- public abstract function get_slug();
12
-
13
-
14
- /**
15
- * @return string Field definition display name.
16
- */
17
- public abstract function get_name();
18
-
19
-
20
- /**
21
- * @return string Description provided by the user.
22
- */
23
- public abstract function get_description();
24
-
25
-
26
- /**
27
- * @return string Meta key used to store values of these fields.
28
- */
29
- public abstract function get_meta_key();
30
-
31
- /**
32
- * Determine whether the field is currently under Types control.
33
- *
34
- * @return mixed
35
- */
36
- public abstract function is_under_types_control();
37
-
38
-
39
- /**
40
- * @return Toolset_Field_Group[]
41
- */
42
- public abstract function get_associated_groups();
43
-
44
 
45
  /**
46
  * Does the field definition match a certain string?
5
  */
6
  abstract class Toolset_Field_Definition_Abstract implements Toolset_Field_Definition_Interface {
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  /**
10
  * Does the field definition match a certain string?
vendor/toolset/toolset-common/inc/autoloaded/field/definition_factory.php CHANGED
@@ -347,12 +347,6 @@ abstract class Toolset_Field_Definition_Factory implements Toolset_Field_Definit
347
  protected abstract function get_existing_meta_keys();
348
 
349
 
350
- /**
351
- * @return Toolset_Field_Group_Factory
352
- * @since 2.0
353
- */
354
- public abstract function get_group_factory();
355
-
356
 
357
  /**
358
  * @var null|Toolset_Field_Definition_Generic[] Cache.
347
  protected abstract function get_existing_meta_keys();
348
 
349
 
 
 
 
 
 
 
350
 
351
  /**
352
  * @var null|Toolset_Field_Definition_Generic[] Cache.
vendor/toolset/toolset-common/inc/autoloaded/field/definition_factory_interface.php CHANGED
@@ -6,6 +6,7 @@
6
  * @since 2.3
7
  */
8
  interface Toolset_Field_Definition_Factory_Interface {
 
9
  /**
10
  * Load an existing field definition.
11
  *
6
  * @since 2.3
7
  */
8
  interface Toolset_Field_Definition_Factory_Interface {
9
+
10
  /**
11
  * Load an existing field definition.
12
  *
vendor/toolset/toolset-common/inc/autoloaded/field/group.php CHANGED
@@ -745,4 +745,17 @@ abstract class Toolset_Field_Group {
745
  return $this->_post_type_repository;
746
  }
747
 
 
 
 
 
 
 
 
 
 
 
 
 
 
748
  }
745
  return $this->_post_type_repository;
746
  }
747
 
748
+
749
+ /**
750
+ * @return bool
751
+ * @since 2.8
752
+ */
753
+ public function contains_repeating_field_group() {
754
+ // Note: Must not be overridden until types-1593 is implemented. @refactoring
755
+ $has_rfg = array_reduce( $this->get_field_slugs(), function( $has_rfg, $field_slug ) {
756
+ return $has_rfg || (bool) preg_match( '/(' . Types_Field_Group_Repeatable::PREFIX . '[a-z0-9_]+)/', $field_slug );
757
+ }, false );
758
+
759
+ return $has_rfg;
760
+ }
761
  }
vendor/toolset/toolset-common/inc/autoloaded/field/group/post.php CHANGED
@@ -152,8 +152,7 @@ class Toolset_Field_Group_Post extends Toolset_Field_Group {
152
  * @deprecated Use is_assigned_to_type() instead.
153
  */
154
  public function has_associated_post_type( $post_type_slug ) {
155
-
156
- return $this->is_assigned_to_type( $post_type_slug);
157
  }
158
 
159
 
152
  * @deprecated Use is_assigned_to_type() instead.
153
  */
154
  public function has_associated_post_type( $post_type_slug ) {
155
+ return $this->is_assigned_to_type( $post_type_slug );
 
156
  }
157
 
158
 
vendor/toolset/toolset-common/inc/autoloaded/field/group/post_factory.php CHANGED
@@ -93,6 +93,7 @@ class Toolset_Field_Group_Post_Factory extends Toolset_Field_Group_Factory {
93
  )
94
  );
95
 
 
96
  $post_types = $post_type_query->get_results();
97
 
98
  $this->post_type_assignment_cache = array();
93
  )
94
  );
95
 
96
+ /** @var string[] $post_types */
97
  $post_types = $post_type_query->get_results();
98
 
99
  $this->post_type_assignment_cache = array();
vendor/toolset/toolset-common/inc/autoloaded/field/renderer/preview/post.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Toolset_Field_Renderer_Preview_Post extends Toolset_Field_Renderer_Preview_Base {
4
+
5
+ /**
6
+ * @param mixed $value Single field value in the intermediate format (see data mappers for details)
7
+ *
8
+ * @return string Rendered HTML
9
+ */
10
+ protected function render_single( $value ) {
11
+ if ( ! $value ) {
12
+ return '';
13
+ }
14
+ $post = get_post( (int) $value);
15
+
16
+ if ( ! $post ) {
17
+ return '';
18
+ }
19
+
20
+ $has_permission = current_user_can( 'edit_posts' );
21
+ $has_permissions = apply_filters( 'toolset_access_api_get_post_type_permissions', $has_permission, $post->post_type, 'publish', get_current_user_id() );
22
+
23
+ if ( $has_permissions ) {
24
+ return sprintf( '<a href="%s" target="_blank">%s</a>',
25
+ esc_attr( get_edit_post_link( $post ) ),
26
+ esc_html( get_the_title( $post ) )
27
+ );
28
+ } else {
29
+ return esc_html( get_the_title( $post ) );
30
+ }
31
+ }
32
+ }
vendor/toolset/toolset-common/inc/autoloaded/field/renderer/toolset_forms_repeatable_group.php CHANGED
@@ -14,36 +14,132 @@
14
  */
15
  class Toolset_Field_Renderer_Toolset_Forms_Repeatable_Group extends Toolset_Field_Renderer_Toolset_Forms {
16
 
17
- public function render( $echo = false ) {
18
- $field_config = $this->get_toolset_forms_config();
19
- if ( $this->hide_field_title ) {
20
- $field_config['title'] = '';
21
- $field_config['hide_field_title'] = true;
22
- }
23
 
24
- if ( $field_config['type'] == 'wysiwyg' ) {
25
- $field_config['type'] = 'textarea';
26
- }
 
27
 
28
- $field_config['repetitive'] = false;
 
 
 
 
 
 
 
 
 
 
 
29
 
30
- // [name] => wpcf[audio-205cb736]
31
- $field_config['name'] = 'types-repeatable-group[' . $this->field->get_object_id() . '][' . $field_config['slug'] . ']';
32
- if( isset( $field_config['options'] ) ) {
33
- foreach ( (array) $field_config['options'] as $option_key => $option_value ) {
34
- if ( isset( $option_value['name'] ) ) {
35
- $field_config['options'][$option_key]['name'] = 'types-repeatable-group[' . $this->field->get_object_id() . '][' . $field_config['slug'] . '][' . $option_key . ']';
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  }
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  $value_in_intermediate_format = $this->field->get_value();
41
  $output = wptoolset_form_field( $this->get_form_id(), $field_config, $value_in_intermediate_format );
42
 
43
  if ( $echo ) {
44
  echo $output;
45
  }
 
 
46
 
47
  return $output;
48
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
14
  */
15
  class Toolset_Field_Renderer_Toolset_Forms_Repeatable_Group extends Toolset_Field_Renderer_Toolset_Forms {
16
 
17
+ /**
18
+ * @var array
19
+ */
20
+ private $field_config;
 
 
21
 
22
+ /**
23
+ * @var int
24
+ */
25
+ private $group_id;
26
 
27
+ /**
28
+ * Get the legacy field config and modifiy the field names to work with rfg items.
29
+ *
30
+ * @param null $group_id
31
+ *
32
+ * @return array
33
+ *
34
+ * @since 2.6.5
35
+ */
36
+ public function get_field_config( $group_id = null ) {
37
+ if( $this->field_config === null || ( $group_id !== null && $group_id !== $this->group_id ) ) {
38
+ $this->group_id = $group_id;
39
 
40
+ // done by legacy
41
+ $field_config = $this->get_toolset_forms_config();
42
+
43
+ if ( $this->hide_field_title ) {
44
+ $field_config['title'] = '';
45
+ $field_config['hide_field_title'] = true;
46
+ }
47
+
48
+ // no repetitive fields on rfg
49
+ $field_config['repetitive'] = false;
50
+
51
+ // convert field name to types-repeatable-group[item-id][field-slug]
52
+ $field_config['name'] = 'types-repeatable-group[' . $this->field->get_object_id() . '][' . $field_config['slug'] . ']';
53
+ if( isset( $field_config['options'] ) ) {
54
+ foreach ( (array) $field_config['options'] as $option_key => $option_value ) {
55
+ if ( isset( $option_value['name'] ) ) {
56
+ $field_config['options'][$option_key]['name'] =
57
+ 'types-repeatable-group[' . $this->field->get_object_id() . '][' . $field_config['slug'] . '][' . $option_key . ']';
58
+ }
59
  }
60
  }
61
+
62
+ // check conditionals and rename field names
63
+ if( isset( $field_config['conditional'] ) && isset( $field_config['conditional']['conditions'] ) ) {
64
+ $group_fields = get_post_meta( $group_id, '_wp_types_group_fields', true );
65
+ $group_fields = explode( ',', $group_fields );
66
+
67
+ foreach( $field_config['conditional']['conditions'] as $con_key => $con_value ) {
68
+ $con_field_slug = str_replace( 'wpcf-', '', $con_value['id'] );
69
+
70
+ // only change the conditions field slug if the field is part of the rfg
71
+ if( in_array( $con_field_slug, $group_fields ) ) {
72
+ $field_config['conditional']['conditions'][ $con_key ][ 'id' ] =
73
+ 'types-repeatable-group[' . $this->field->get_object_id() . '][' . $con_field_slug . ']';
74
+ }
75
+ }
76
+
77
+ // we also need to renaeme the keys of the values
78
+ // before 'wpcf-field-slug' => 1 / after: 'types-repeatable-group[item-id][field-slug]' => 1
79
+ if( isset( $field_config['conditional']['values'] ) && is_array( $field_config['conditional']['values'] ) ) {
80
+ foreach( $field_config['conditional']['values'] as $original_field_slug => $field_value ) {
81
+ $field_slug = str_replace( 'wpcf-', '', $original_field_slug );
82
+
83
+ // check if field is part of rfg
84
+ if( in_array( $field_slug, $group_fields ) ) {
85
+ $rfg_item_field_slug = 'types-repeatable-group[' . $this->field->get_object_id() . '][' . $field_slug . ']';
86
+ $field_config['conditional']['values'][$rfg_item_field_slug] = $field_value;
87
+ unset( $field_config['conditional']['values'][$original_field_slug] );
88
+ }
89
+ }
90
+ }
91
+ }
92
+
93
+ $this->field_config = $field_config;
94
  }
95
 
96
+ return $this->field_config;
97
+ }
98
+
99
+ /**
100
+ * Render group
101
+ *
102
+ * @param bool $echo
103
+ * @param null $group_id
104
+ *
105
+ * @return mixed|void
106
+ */
107
+ public function render( $echo = false, $group_id = null ) {
108
+
109
+ /**
110
+ * Use filter to set types-related-content to "true"
111
+ * This is necessary to make sure that all WYSIWYG fields will have unique ID
112
+ */
113
+ add_filter( 'toolset_field_factory_get_attributes', array( $this, 'add_filter_attributes' ), 10, 2 );
114
+
115
+ $field_config = $this->get_field_config( $group_id );
116
+
117
  $value_in_intermediate_format = $this->field->get_value();
118
  $output = wptoolset_form_field( $this->get_form_id(), $field_config, $value_in_intermediate_format );
119
 
120
  if ( $echo ) {
121
  echo $output;
122
  }
123
+ remove_filter( 'toolset_field_factory_get_attributes', array( $this, 'add_filter_attributes' ), 10, 2 );
124
+
125
 
126
  return $output;
127
  }
128
+
129
+
130
+ /**
131
+ * In case of wysiwyg fields set types-related-content to true
132
+ * to make sure that field ID is unique
133
+ * @param $attributes
134
+ * @param $field
135
+ *
136
+ * @return array
137
+ */
138
+ public function add_filter_attributes( $attributes, $field ) {
139
+ $field_type = $field->getType();
140
+ if( 'wysiwyg' == $field_type ){
141
+ $attributes['types-related-content'] = true;
142
+ }
143
+ return $attributes;
144
+ }
145
  }
vendor/toolset/toolset-common/inc/autoloaded/field/type/definition.php CHANGED
@@ -101,9 +101,9 @@ class Toolset_Field_Type_Definition {
101
 
102
  /**
103
  * Retrieve CSS classes for a field type icon.
104
- *
105
  * To be placed in the i tag.
106
- *
107
  * @return string One or more CSS classes separated by spaces.
108
  * @since 2.0
109
  */
@@ -112,19 +112,19 @@ class Toolset_Field_Type_Definition {
112
  if( null != $fa_class ) {
113
  return sprintf( 'fa fa-%s', esc_attr( $fa_class ) );
114
  }
115
-
116
  $types_class = $this->get_args( 'types-field-image', null );
117
  if( null != $types_class ) {
118
  return sprintf( 'types-field-icon types-field-icon-%s', esc_attr( $types_class ) );
119
  }
120
-
121
- return '';
122
  }
123
 
124
 
125
  /**
126
  * Perform field type-specific sanitization of the field definition array.
127
- *
128
  * @link https://git.onthegosystems.com/toolset/types/wikis/database-layer/field-definition-arrays
129
  * @param $definition_array
130
  * @return array Sanitized definition array
@@ -175,7 +175,7 @@ class Toolset_Field_Type_Definition {
175
 
176
  /**
177
  * Make sure that the field definition array contains all necessary information.
178
- *
179
  * Note: This is a WIP, currently it sanitizes only very specific cases. It should be extended in the future.
180
  *
181
  * @link https://git.onthegosystems.com/toolset/types/wikis/database-layer/field-definition-arrays
@@ -199,9 +199,9 @@ class Toolset_Field_Type_Definition {
199
  $definition_array = $this->sanitize_field_definition_array_generic( $definition_array );
200
 
201
  $definition_array = $this->sanitize_numeric_validation( $definition_array );
202
-
203
  $definition_array = $this->sanitize_field_definition_array_type_specific( $definition_array );
204
-
205
  /**
206
  * types_post_sanitize_field_definition_array
207
  *
@@ -212,16 +212,16 @@ class Toolset_Field_Type_Definition {
212
  * @since 2.1
213
  */
214
  $definition_array = toolset_ensarr( apply_filters( 'types_post_sanitize_field_definition_array', $definition_array ) );
215
-
216
  return $definition_array;
217
  }
218
 
219
 
220
  /**
221
  * For all fields, remove the "number" validation option.
222
- *
223
  * Numeric field will override this and do the opposite instead.
224
- *
225
  * @param array $definition_array
226
  * @return array
227
  * @since 2.0
@@ -239,11 +239,11 @@ class Toolset_Field_Type_Definition {
239
 
240
  /**
241
  * Perform a basic "isset" sanitization of an array element.
242
- *
243
- * @param array $source
244
  * @param string $element_name Name of the element to sanitize.
245
  * @param string $default Default value for the element if not set or invalid.
246
- * @param null|array $allowed If an array, defines the set of allowed values for the element.
247
  * @param null|string $nested_key If not null, the element will be taken from $source[$nested_key][$element_name].
248
  * @return array Updated source array.
249
  * @since 2.1
@@ -251,13 +251,13 @@ class Toolset_Field_Type_Definition {
251
  protected function sanitize_element_isset( $source, $element_name, $default = '', $allowed = null, $nested_key = null ) {
252
  $src_array = ( null == $nested_key ? $source : $source[ $nested_key ] );
253
  $value = toolset_getarr( $src_array, $element_name, $default, $allowed );
254
-
255
  if( null == $nested_key ) {
256
  $source[ $element_name ] = $value;
257
  } else {
258
  $source[ $nested_key ][ $element_name ] = $value;
259
  }
260
-
261
  return $source;
262
  }
263
 
@@ -309,6 +309,9 @@ class Toolset_Field_Type_Definition {
309
  case Toolset_Field_Type_Definition_Factory::SKYPE:
310
  return new Toolset_Field_Renderer_Preview_Skype( $field, $renderer_args );
311
 
 
 
 
312
  default:
313
  return new Toolset_Field_Renderer_Preview_Textfield( $field, $renderer_args );
314
  break;
101
 
102
  /**
103
  * Retrieve CSS classes for a field type icon.
104
+ *
105
  * To be placed in the i tag.
106
+ *
107
  * @return string One or more CSS classes separated by spaces.
108
  * @since 2.0
109
  */
112
  if( null != $fa_class ) {
113
  return sprintf( 'fa fa-%s', esc_attr( $fa_class ) );
114
  }
115
+
116
  $types_class = $this->get_args( 'types-field-image', null );
117
  if( null != $types_class ) {
118
  return sprintf( 'types-field-icon types-field-icon-%s', esc_attr( $types_class ) );
119
  }
120
+
121
+ return '';
122
  }
123
 
124
 
125
  /**
126
  * Perform field type-specific sanitization of the field definition array.
127
+ *
128
  * @link https://git.onthegosystems.com/toolset/types/wikis/database-layer/field-definition-arrays
129
  * @param $definition_array
130
  * @return array Sanitized definition array
175
 
176
  /**
177
  * Make sure that the field definition array contains all necessary information.
178
+ *
179
  * Note: This is a WIP, currently it sanitizes only very specific cases. It should be extended in the future.
180
  *
181
  * @link https://git.onthegosystems.com/toolset/types/wikis/database-layer/field-definition-arrays
199
  $definition_array = $this->sanitize_field_definition_array_generic( $definition_array );
200
 
201
  $definition_array = $this->sanitize_numeric_validation( $definition_array );
202
+
203
  $definition_array = $this->sanitize_field_definition_array_type_specific( $definition_array );
204
+
205
  /**
206
  * types_post_sanitize_field_definition_array
207
  *
212
  * @since 2.1
213
  */
214
  $definition_array = toolset_ensarr( apply_filters( 'types_post_sanitize_field_definition_array', $definition_array ) );
215
+
216
  return $definition_array;
217
  }
218
 
219
 
220
  /**
221
  * For all fields, remove the "number" validation option.
222
+ *
223
  * Numeric field will override this and do the opposite instead.
224
+ *
225
  * @param array $definition_array
226
  * @return array
227
  * @since 2.0
239
 
240
  /**
241
  * Perform a basic "isset" sanitization of an array element.
242
+ *
243
+ * @param array $source
244
  * @param string $element_name Name of the element to sanitize.
245
  * @param string $default Default value for the element if not set or invalid.
246
+ * @param null|array $allowed If an array, defines the set of allowed values for the element.
247
  * @param null|string $nested_key If not null, the element will be taken from $source[$nested_key][$element_name].
248
  * @return array Updated source array.
249
  * @since 2.1
251
  protected function sanitize_element_isset( $source, $element_name, $default = '', $allowed = null, $nested_key = null ) {
252
  $src_array = ( null == $nested_key ? $source : $source[ $nested_key ] );
253
  $value = toolset_getarr( $src_array, $element_name, $default, $allowed );
254
+
255
  if( null == $nested_key ) {
256
  $source[ $element_name ] = $value;
257
  } else {
258
  $source[ $nested_key ][ $element_name ] = $value;
259
  }
260
+
261
  return $source;
262
  }
263
 
309
  case Toolset_Field_Type_Definition_Factory::SKYPE:
310
  return new Toolset_Field_Renderer_Preview_Skype( $field, $renderer_args );
311
 
312
+ case Toolset_Field_Type_Definition_Factory::POST:
313
+ return new Toolset_Field_Renderer_Preview_Post( $field, $renderer_args );
314
+
315
  default:
316
  return new Toolset_Field_Renderer_Preview_Textfield( $field, $renderer_args );
317
  break;
vendor/toolset/toolset-common/inc/autoloaded/field/type/definition_factory.php CHANGED
@@ -31,7 +31,8 @@ class Toolset_Field_Type_Definition_Factory {
31
  const URL = 'url';
32
  const VIDEO = 'video';
33
  const WYSIWYG = 'wysiwyg';
34
-
 
35
  private static $instance = null;
36
 
37
  private function __construct() { }
@@ -139,7 +140,7 @@ class Toolset_Field_Type_Definition_Factory {
139
 
140
  /**
141
  * Create the proper instance of a type definition class, based on the type slug.
142
- *
143
  * @param string $field_type_slug
144
  * @param array $field_type_configuration Legacy configuration array
145
  *
@@ -213,7 +214,7 @@ class Toolset_Field_Type_Definition_Factory {
213
 
214
  /**
215
  * Get a map of all field definition slugs to their properties.
216
- *
217
  * @return string[]
218
  * @since 2.0
219
  */
@@ -247,4 +248,4 @@ class Toolset_Field_Type_Definition_Factory {
247
  // ends in an error because of parents (abstract) $var = new self();
248
  return Toolset_Field_Type_Definition_Factory::get_instance()->load_field_type_definition( $field_type_slug );
249
  }
250
- }
31
  const URL = 'url';
32
  const VIDEO = 'video';
33
  const WYSIWYG = 'wysiwyg';
34
+ const POST = 'post';
35
+
36
  private static $instance = null;
37
 
38
  private function __construct() { }
140
 
141
  /**
142
  * Create the proper instance of a type definition class, based on the type slug.
143
+ *
144
  * @param string $field_type_slug
145
  * @param array $field_type_configuration Legacy configuration array
146
  *
214
 
215
  /**
216
  * Get a map of all field definition slugs to their properties.
217
+ *
218
  * @return string[]
219
  * @since 2.0
220
  */
248
  // ends in an error because of parents (abstract) $var = new self();
249
  return Toolset_Field_Type_Definition_Factory::get_instance()->load_field_type_definition( $field_type_slug );
250
  }
251
+ }
vendor/toolset/toolset-common/inc/autoloaded/i_query.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * Generic interface for queries.
5
- *
6
- * @since m2m
7
- */
8
- interface IToolset_Query {
9
-
10
-
11
- /**
12
- * @return array
13
- */
14
- public function get_results();
15
-
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/toolset/toolset-common/inc/autoloaded/interop/handler/installer_compatibility_reporting.php ADDED
@@ -0,0 +1,315 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace OTGS\Toolset\Common\Interop\Handler;
4
+
5
+ use OTGS\Toolset\Common\Condition\Installer as installerCondition;
6
+ use OTGS\Toolset\Common\Interop\HandlerInterface;
7
+
8
+ /**
9
+ * Display the Installer's Compatibility Reporting setting wherever necessary.
10
+ *
11
+ * Specifically, we show it:
12
+ * - as a section in Toolset Settings (General tab)
13
+ * - as a first step if the clicks on the Register button on the repository listing page (Commercial tab)
14
+ * - as a orange Toolset notice if the user didn't make any choice yet
15
+ *
16
+ * @package OTGS\Toolset\Common\Interop\Handler
17
+ * @since 2.8
18
+ */
19
+ class InstallerCompatibilityReporting implements HandlerInterface {
20
+
21
+
22
+ /** @var string Slug of the Toolset Settings section */
23
+ const SECTION_SLUG = 'toolset-installer-component-settings';
24
+
25
+ /** @var string ID of the Installer repository where we need to show the settings. */
26
+ const REPOSITORY_ID = 'toolset';
27
+
28
+ /** @var string ID of the admin notice. */
29
+ const NOTICE_ID = 'toolset-requires-installer-compatibility-reporting-setup';
30
+
31
+ // Different contexts used for rendering slightly different output.
32
+ const CONTEXT_TOOLSET_SETTINGS = 'toolset_settings';
33
+
34
+ const CONTEXT_REPOSITORY_LISTING = 'repository_listing';
35
+
36
+ const CONTEXT_ADMIN_NOTICE = 'admin_notice';
37
+
38
+
39
+ /** @var installerCondition\IsAvailable */
40
+ private $is_installer_available_condition;
41
+
42
+
43
+ /** @var installerCondition\IsToolsetSubscriptionValid */
44
+ private $is_toolset_subscription_valid_condition;
45
+
46
+
47
+ /**
48
+ * InstallerCompatibilityReporting constructor.
49
+ *
50
+ * @param installerCondition\IsAvailable|null $is_installer_available_di
51
+ * @param installerCondition\IsToolsetSubscriptionValid|null $is_toolset_subscription_valid_di
52
+ */
53
+ public function __construct(
54
+ installerCondition\IsAvailable $is_installer_available_di = null,
55
+ installerCondition\IsToolsetSubscriptionValid $is_toolset_subscription_valid_di = null
56
+ ) {
57
+ $this->is_installer_available_condition = $is_installer_available_di ?: new installerCondition\IsAvailable();
58
+ $this->is_toolset_subscription_valid_condition = $is_toolset_subscription_valid_di ?: new installerCondition\IsToolsetSubscriptionValid();
59
+ }
60
+
61
+
62
+ /**
63
+ * Hook into proper actions.
64
+ *
65
+ * This expects to be run during Toolset Common initialization.
66
+ */
67
+ public function initialize() {
68
+
69
+ // Do nothing if there is no installer.
70
+ if( ! $this->is_installer_available_condition->is_met() ) {
71
+ return;
72
+ }
73
+
74
+ $that = $this;
75
+ $is_subscription_valid_condition = $this->is_toolset_subscription_valid_condition;
76
+
77
+ // Add the options for sending compatibility reports to the Toolset repository on the Installer's Commercial
78
+ // Plugins page.
79
+ add_filter( 'otgs_installer_repository_registration_steps', function ( $registration_steps, $repository_id ) use ( $that ) {
80
+ if ( self::REPOSITORY_ID === $repository_id ) {
81
+ $content = __( 'Choose if Toolset plugins should send reports about the active theme and plugins to toolset.com.', 'wpv-views' )
82
+ . $that->build_content( self::CONTEXT_REPOSITORY_LISTING )
83
+ . '* ' . __( 'These reports, if you decide to send them, will allow Toolset team to give you faster support. We will also use this information to send you alerts about potential compatibility issues with the theme and plugins that you use.', 'wpv-views' );
84
+
85
+ array_unshift( $registration_steps, $content );
86
+ }
87
+
88
+ return $registration_steps;
89
+ }, 10, 2 );
90
+
91
+ // Add a custom settings section.
92
+ // Note the priority. 9 means it will come before other usually present sections.
93
+ add_filter(
94
+ 'toolset_filter_toolset_register_settings_general_section',
95
+ function ( $sections ) use ( $that, $is_subscription_valid_condition ) {
96
+ if ( $is_subscription_valid_condition->is_met() ) {
97
+ $sections = $that->build_section( $sections );
98
+ }
99
+ return $sections;
100
+ },
101
+ 9
102
+ );
103
+
104
+ // Show the admin notice if the setting is still missing and the site has a valid Toolset subscription.
105
+ // If the subscription is not valid, the user will need to go through the registration steps will
106
+ // most probably save the setting there.
107
+ add_action( 'admin_init', function () use ( $that, $is_subscription_valid_condition ) {
108
+ if ( ! $that->has_setting() && $is_subscription_valid_condition->is_met() ) {
109
+ $that->show_notice();
110
+ }
111
+ } );
112
+ }
113
+
114
+
115
+ /**
116
+ * Build the content of the setting section, coming from Installer.
117
+ *
118
+ * Note that this may also cause Installer to enqueue some assets.
119
+ *
120
+ * @param string $context One of the CONTEXT_ constants.
121
+ *
122
+ * @return string HTML markup.
123
+ */
124
+ public function build_content( $context ) {
125
+ ob_start();
126
+
127
+ do_action(
128
+ 'otgs_installer_render_local_components_setting',
129
+ array(
130
+ 'plugin_name' => 'Toolset',
131
+ 'use_styles' => true, //Styles not defined yet
132
+ 'use_radio' => true,
133
+ 'privacy_policy_url' => $this->get_privacy_policy_url( $context ),
134
+ 'plugin_uri' => 'https://toolset.com',
135
+ 'plugin_repository' => self::REPOSITORY_ID,
136
+ )
137
+ );
138
+
139
+ return ob_get_clean();
140
+
141
+ }
142
+
143
+
144
+ /**
145
+ * @param string $context One of the CONTEXT_ constants.
146
+ *
147
+ * @return string URL
148
+ */
149
+ private function get_privacy_policy_url( $context ) {
150
+ switch ( $context ) {
151
+ case self::CONTEXT_ADMIN_NOTICE:
152
+ $utm_medium = 'compatibility-message';
153
+ break;
154
+ case self::CONTEXT_REPOSITORY_LISTING:
155
+ $utm_medium = 'commercial-tab';
156
+ break;
157
+ case self::CONTEXT_TOOLSET_SETTINGS:
158
+ default:
159
+ $utm_medium = 'compatibility-settings';
160
+ break;
161
+ }
162
+
163
+ return sprintf(
164
+ 'https://toolset.com/privacy-policy-and-gdpr-compliance/?utm_source=typesplugin&utm_campaign=compatibility-reporting&utm_medium=%s&utm_term=privacy-policy-and-gdpr-compliance',
165
+ $utm_medium
166
+ );
167
+ }
168
+
169
+
170
+ /**
171
+ * Add a new section to the General tab of Toolset Settings.
172
+ *
173
+ * See toolset_filter_toolset_register_settings_general_section for details.
174
+ *
175
+ * @param array $sections
176
+ *
177
+ * @return array
178
+ */
179
+ public function build_section( $sections ) {
180
+ $sections[ self::SECTION_SLUG ] = array(
181
+ 'slug' => self::SECTION_SLUG,
182
+ 'title' => __( 'Fast support and compatibility alerts', 'wpv-views' ),
183
+ 'content' => $this->build_content( self::CONTEXT_TOOLSET_SETTINGS ),
184
+ );
185
+
186
+ return $sections;
187
+ }
188
+
189
+
190
+ /**
191
+ * Check whether the user had aleady made a choice about the compatibility reporting.
192
+ *
193
+ * @return bool
194
+ */
195
+ public function has_setting() {
196
+ return (bool) apply_filters( 'otgs_installer_has_local_components_setting', null, 'toolset' );
197
+ }
198
+
199
+
200
+ /**
201
+ * Build and register the admin notice that alerts about the missing setting of compatibility reporting.
202
+ */
203
+ public function show_notice() {
204
+ $builder = new \OTGS\Toolset\Common\Utility\Admin\Notices\Builder();
205
+
206
+ $notice = $builder->createNotice( self::NOTICE_ID, 'undismissible' );
207
+ $notice->set_is_only_for_administrators( true );
208
+ $notice->set_template_path( TOOLSET_COMMON_PATH . '/templates/admin/notice/installer/compatibility-reporting-setting-needed.phtml' );
209
+ $notice->set_template_context( array(
210
+ 'policy_url' => $this->get_privacy_policy_url( self::CONTEXT_ADMIN_NOTICE ),
211
+ ) );
212
+
213
+ $that = $this;
214
+
215
+ // Enqueue assets only if the notice is actually about to be rendered.
216
+ $notice->add_dependency_callback( function () use ( $that ) {
217
+ $asset_manager = \Toolset_Assets_Manager::get_instance();
218
+ $asset_manager->enqueue_styles( \Toolset_Assets_Manager::STYLE_FONT_AWESOME );
219
+ $asset_manager->enqueue_scripts( \Toolset_Assets_Manager::SCRIPT_UTILS );
220
+ add_action( 'admin_print_footer_scripts', array( $that, 'print_notice_script' ) );
221
+ } );
222
+
223
+ $builder->addNotice( $notice );
224
+ }
225
+
226
+
227
+ /**
228
+ * Print additional script that controls the admin notice behaviour.
229
+ *
230
+ * - Allow to save the setting via yes/no buttons
231
+ * - Hide the notice when the setting is saved, via AJAX or elsewhere on the page
232
+ * - Reload the page if the setting was saved from the notice but there are other instances
233
+ * of the setting elsewhere on the page.
234
+ *
235
+ * Note: Deliberately not putting this into a template, to keep all the functionality in a single class.
236
+ * Basically, it handles a special case and this way we don't have to think about this case outside
237
+ * of the class.
238
+ */
239
+ public function print_notice_script() {
240
+
241
+ // Fallback in case changes have been made in Installer. In the worst case, the action will not work.
242
+ $action_name = 'otgs_save_setting_share_local_components';
243
+ if ( defined( '\OTGS_Installer_WP_Components_Setting_Ajax::AJAX_ACTION' ) ) {
244
+ $action_name = \OTGS_Installer_WP_Components_Setting_Ajax::AJAX_ACTION;
245
+ }
246
+
247
+ $nonce = wp_create_nonce( $action_name );
248
+
249
+ ?>
250
+ <script type="text/javascript">
251
+ jQuery(document).ready(function () {
252
+
253
+ var hideNotice = function () {
254
+ jQuery('div.toolset-notice-installer-compatibility-setting').fadeOut(500);
255
+ };
256
+
257
+ var applyChoice = function (choice) {
258
+ var $spinner = jQuery('.toolset-notice-installer-compatibility-setting__spinner');
259
+ WPV_Toolset.Utils.Spinner.show($spinner);
260
+
261
+ var finishProcess = function () {
262
+ var hasAnotherSettingOnPage = (0 < jQuery('.otgs-installer-component-setting input[type="radio"]').length);
263
+ // Reload the page if it contains the same setting in a different GUI. That way, that GUI will get in sync
264
+ // with the updated option. Not the most fancy solution, but this will happen very very rarely.
265
+ if (hasAnotherSettingOnPage) {
266
+ location.reload();
267
+ } else {
268
+ WPV_Toolset.Utils.Spinner.hide($spinner);
269
+ }
270
+ };
271
+
272
+ var failCallback = function () {
273
+ jQuery('.toolset-notice-installer-compatibility-setting__error').text('<?php _e( 'An error happened when saving the setting.', 'wpv-views' ); ?>');
274
+ finishProcess();
275
+ };
276
+
277
+ // Store the user's choice. Using directly an AJAX call in Installer.
278
+ jQuery.post({
279
+ async: true,
280
+ url: ajaxurl,
281
+ data: {
282
+ action: '<?php echo $action_name ?>',
283
+ nonce: '<?php echo $nonce ?>',
284
+ agree: (choice ? 1 : 0),
285
+ repo: '<?php echo self::REPOSITORY_ID ?>'
286
+ },
287
+ success: function () {
288
+ // Unfortunately, the AJAX call from Installer doesn't return any result. We have to hope.
289
+ hideNotice();
290
+ finishProcess();
291
+ },
292
+ error: failCallback
293
+ })
294
+ };
295
+
296
+ jQuery(document).on('click', '.toolset-notice-installer-compatibility-setting__accept-btn', function (e) {
297
+ e.preventDefault();
298
+ applyChoice(true);
299
+ });
300
+
301
+ jQuery(document).on('click', '.toolset-notice-installer-compatibility-setting__decline-btn', function (e) {
302
+ e.preventDefault();
303
+ applyChoice(false);
304
+ });
305
+
306
+ // If the user makes the choice in another place, e.g. the Commercial tab or Toolset Settings, we just hide the notice.
307
+ jQuery(document).on('click', '.otgs-installer-component-setting input[type="radio"]', function () {
308
+ hideNotice();
309
+ });
310
+ });
311
+ </script>
312
+ <?php
313
+ }
314
+
315
+ }
vendor/toolset/toolset-common/inc/autoloaded/interop/handler_interface.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace OTGS\Toolset\Common\Interop;
4
+
5
+ /**
6
+ * Describes a class that handles interoperability issues with third-party software.
7
+ *
8
+ * @package OTGS\Toolset\Common\Interop
9
+ * @since 2.8
10
+ */
11
+ interface HandlerInterface {
12
+
13
+ public function initialize();
14
+
15
+ }
vendor/toolset/toolset-common/inc/autoloaded/interop/mediator.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace OTGS\Toolset\Common\Interop;
4
+
5
+ use OTGS\Toolset\Common\Interop\Handler as handler;
6
+
7
+ /**
8
+ * Interoperability mediator.
9
+ *
10
+ * Handle any interop tasks with non-Toolset software - including Installer, but excluding WPML (WPML plugins are
11
+ * handled in the Toolset_WPML_Compatibility class).
12
+ *
13
+ * @package OTGS\Toolset\Common\Interop
14
+ * @since 2.8
15
+ */
16
+ class Mediator {
17
+
18
+ public function initialize() {
19
+ // If the class gets more complex, split it into subclasses, using the same design as in Types_Interop_Mediator.
20
+ $installer_compatibility_reporting = new handler\InstallerCompatibilityReporting();
21
+ $installer_compatibility_reporting->initialize();
22
+ }
23
+
24
+ }
vendor/toolset/toolset-common/inc/autoloaded/maintenance_mode/controller.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace OTGS\Toolset\Common\MaintenanceMode;
4
+
5
+ /**
6
+ * Control (enable or disable) the WordPress maintenance mode.
7
+ *
8
+ * @package OTGS\Toolset\Common\MaintenanceMode
9
+ * @since 2.6.8
10
+ */
11
+ class Controller {
12
+
13
+
14
+ private function get_maintenance_file_path() {
15
+ return ABSPATH . '/.maintenance';
16
+ }
17
+
18
+
19
+ /**
20
+ * Note that an existing file doesn't mean the maintenance mode is active - it can also be expired.
21
+ *
22
+ * @return bool
23
+ */
24
+ public function maintenance_file_exists() {
25
+ return file_exists( $this->get_maintenance_file_path() );
26
+ }
27
+
28
+
29
+ /**
30
+ * Create the content of the .maintenance file.
31
+ *
32
+ * @param bool $allow_backend Allow access to backend - wp-admin/ and wp-login.php, but not AJAX calls.
33
+ * @param bool $allow_ajax Allow AJAX calls.
34
+ * @param bool $for_infinity If true, the maintenance mode will never expire. Otherwise, it will expire
35
+ * based on WordPress core logic (10min).
36
+ *
37
+ * @return bool|string Content of the .maintenance file or false on failure.
38
+ */
39
+ private function build_maintenance_file( $allow_backend = true, $allow_ajax = false, $for_infinity = false ) {
40
+ $template = \Toolset_Output_Template_Repository::get_instance()->get( \Toolset_Output_Template_Repository::MAINTENANCE_FILE );
41
+
42
+ $context = array(
43
+ 'allow_backend' => $allow_backend,
44
+ 'allow_ajax' => $allow_ajax,
45
+ 'upgrading_time' => ( $for_infinity ? 'time()' : time() )
46
+ );
47
+
48
+ try {
49
+ $output = \Toolset_Renderer::get_instance()->render( $template, $context, false );
50
+ } catch ( \Exception $e ) {
51
+ return false;
52
+ }
53
+
54
+ return $output;
55
+ }
56
+
57
+
58
+ /**
59
+ * Enable the maintenance mode.
60
+ *
61
+ * Note: If it's already active, the method will fail.
62
+ *
63
+ * @param bool $allow_backend Allow access to backend - wp-admin/ and wp-login.php, but not AJAX calls.
64
+ * @param bool $allow_ajax Allow AJAX calls.
65
+ * @param bool $for_infinity If true, the maintenance mode will never expire. Otherwise, it will expire
66
+ * based on WordPress core logic (10min).
67
+ *
68
+ * @return \Toolset_Result
69
+ */
70
+ public function enable( $allow_backend = true, $allow_ajax = false, $for_infinity = false ) {
71
+ if( $this->maintenance_file_exists() ) {
72
+ return new \Toolset_Result( false, __( 'Maintenance mode is already active (.maintenance file present).', 'wpcf' ) );
73
+ }
74
+
75
+ $content = $this->build_maintenance_file( $allow_backend, $allow_ajax, $for_infinity );
76
+
77
+ if( false === $content ) {
78
+ return new \Toolset_Result( false, __( 'Unable to process the template for the ".maintenance" file.', 'wpcf' ) );
79
+ }
80
+
81
+ $result = file_put_contents( $this->get_maintenance_file_path(), $content );
82
+
83
+ if( false === $result ) {
84
+ return new \Toolset_Result( false, __( 'Couldn\'t write to the ".maintenance" file.', 'wpcf' ) );
85
+ }
86
+
87
+ return new \Toolset_Result( true, __( 'Maintenance mode enabled.', 'wpcf' ) );
88
+ }
89
+
90
+
91
+ /**
92
+ * Disable the maintenance mode.
93
+ *
94
+ * Note: If it's not enabled, the method will fail.
95
+ *
96
+ * @return \Toolset_Result
97
+ */
98
+ public function disable() {
99
+ if( ! $this->maintenance_file_exists() ) {
100
+ return new \Toolset_Result( false, __( 'Maintenance mode is already disabled.', 'wpcf' ) );
101
+ }
102
+
103
+ $result = unlink( $this->get_maintenance_file_path() );
104
+
105
+ if( false === $result ) {
106
+ return new \Toolset_Result( false, __( 'Unable to delete the ".maintenance" file.', 'wpcf' ) );
107
+ }
108
+
109
+ return new \Toolset_Result( true, __( 'Maintenance mode disabled.', 'wpcf' ) );
110
+ }
111
+
112
+ }
vendor/toolset/toolset-common/inc/autoloaded/post_type/abstract.php CHANGED
@@ -79,25 +79,32 @@ abstract class Toolset_Post_Type_Abstract implements IToolset_Post_Type {
79
 
80
  /**
81
  * @inheritdoc
82
- * @return bool
83
  */
84
  public function can_be_used_in_relationship() {
 
 
 
 
 
85
  if( ! $this->get_wpml_compatibility()->is_wpml_active_and_configured() ) {
86
  // no wpml = no limitations on relationships
87
- return true;
88
  }
89
 
90
  if( ! $this->is_translatable() ) {
91
  // no translation mode selected = all good
92
- return true;
93
  }
94
 
95
  if( $this->is_in_display_as_translated_mode() ) {
96
  // "display as translated" mode selected = all good
97
- return true;
98
  }
99
 
100
- return false;
 
 
101
  }
102
 
103
 
@@ -122,4 +129,4 @@ abstract class Toolset_Post_Type_Abstract implements IToolset_Post_Type {
122
  return ( count( $results ) > 0 );
123
  }
124
 
125
- }
79
 
80
  /**
81
  * @inheritdoc
82
+ * @return Toolset_Result
83
  */
84
  public function can_be_used_in_relationship() {
85
+ if ( 'attachment' == $this->get_slug() ) {
86
+ // Media post type can be used in relationships.
87
+ return new Toolset_Result( false, __( 'Media post type can not be part of a relationship.') );
88
+ }
89
+
90
  if( ! $this->get_wpml_compatibility()->is_wpml_active_and_configured() ) {
91
  // no wpml = no limitations on relationships
92
+ return new Toolset_Result( true );
93
  }
94
 
95
  if( ! $this->is_translatable() ) {
96
  // no translation mode selected = all good
97
+ return new Toolset_Result( true );
98
  }
99
 
100
  if( $this->is_in_display_as_translated_mode() ) {
101
  // "display as translated" mode selected = all good
102
+ return new Toolset_Result( true );
103
  }
104
 
105
+ // at the end, we've decided to allow any translation mode for relationships
106
+ return new Toolset_Result( true );
107
+ // return new Toolset_Result( false, __( 'This post type uses the <strong>Translatable - only show translated items</strong> WPML translation mode. In order to use it in a relationship, switch to <strong>Translatable - use translation if available or fallback to default language</strong> mode.', 'wpcf' ) );
108
  }
109
 
110
 
129
  return ( count( $results ) > 0 );
130
  }
131
 
132
+ }
vendor/toolset/toolset-common/inc/autoloaded/post_type/excluded_list.php CHANGED
@@ -8,23 +8,24 @@
8
  class Toolset_Post_Type_Exclude_List {
9
 
10
  private static $initial_list = array(
11
- 'cred-form',
12
- 'cred-user-form',
13
- 'cred_rel_form',
 
 
 
 
 
 
14
  'custom_css',
15
  'customize_changeset',
16
- 'dd_layouts',
17
  'deprecated_log',
18
  'mediapage',
19
  'nav_menu_item',
20
  'revision',
21
- 'view',
22
- 'view-template',
23
- 'wp-types-group',
24
- 'wp-types-user-group',
25
- 'wp-types-term-group',
26
  'acf-field-group',
27
- 'acf'
 
28
  );
29
 
30
 
8
  class Toolset_Post_Type_Exclude_List {
9
 
10
  private static $initial_list = array(
11
+ Toolset_Post_Type_List::CRED_POST_FORM,
12
+ Toolset_Post_Type_List::CRED_USER_FORM,
13
+ Toolset_Post_Type_List::CRED_RELATIONSHIP_FORM,
14
+ Toolset_Post_Type_List::LAYOUT,
15
+ Toolset_Post_Type_List::VIEW_OR_WPA,
16
+ Toolset_Post_Type_List::CONTENT_TEMPLATE,
17
+ Toolset_Post_Type_List::POST_FIELD_GROUP,
18
+ Toolset_Post_Type_List::USER_FIELD_GROUP,
19
+ Toolset_Post_Type_List::TERM_FIELD_GROUP,
20
  'custom_css',
21
  'customize_changeset',
 
22
  'deprecated_log',
23
  'mediapage',
24
  'nav_menu_item',
25
  'revision',
 
 
 
 
 
26
  'acf-field-group',
27
+ 'acf',
28
+ 'otgs_ps_bundles',
29
  );
30
 
31
 
vendor/toolset/toolset-common/inc/autoloaded/post_type/from_types.php CHANGED
@@ -326,6 +326,19 @@ class Toolset_Post_Type_From_Types extends Toolset_Post_Type_Abstract implements
326
  }
327
 
328
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  /**
330
  * @inheritdoc
331
  * @return bool
@@ -484,7 +497,7 @@ class Toolset_Post_Type_From_Types extends Toolset_Post_Type_Abstract implements
484
  public function set_is_repeating_field_group( $value ) {
485
  $this->set_flag_to_definition( self::DEF_IS_REPEATING_FIELD_GROUP, (bool) $value );
486
  if ( $value ) {
487
- $this->definition['supports'] = array( 'post_title', 'author', 'custom-fields', 'revisions' );
488
  }
489
  $this->set_is_public( false );
490
  }
326
  }
327
 
328
 
329
+ /**
330
+ * @param IToolset_Post_Type_Registered $registered_post_type
331
+ * @since 2.6.3
332
+ */
333
+ public function set_registered_post_type( IToolset_Post_Type_Registered $registered_post_type ) {
334
+ if( $registered_post_type->get_slug() !== $this->get_slug() ) {
335
+ throw new InvalidArgumentException();
336
+ }
337
+
338
+ $this->registered_post_type = $registered_post_type;
339
+ }
340
+
341
+
342
  /**
343
  * @inheritdoc
344
  * @return bool
497
  public function set_is_repeating_field_group( $value ) {
498
  $this->set_flag_to_definition( self::DEF_IS_REPEATING_FIELD_GROUP, (bool) $value );
499
  if ( $value ) {
500
+ $this->definition['supports'] = array( 'post_title' => 1, 'author' => 1, 'custom-fields' => 1 );
501
  }
502
  $this->set_is_public( false );
503
  }
vendor/toolset/toolset-common/inc/autoloaded/post_type/i_post_type.php CHANGED
@@ -120,7 +120,7 @@ interface IToolset_Post_Type {
120
  /**
121
  * Check if the post type can be used in a relationship.
122
  *
123
- * @return bool
124
  * @since 2.5.10
125
  */
126
  public function can_be_used_in_relationship();
@@ -135,4 +135,4 @@ interface IToolset_Post_Type {
135
  * @since 2.5.11
136
  */
137
  public function is_involved_in_relationship();
138
- }
120
  /**
121
  * Check if the post type can be used in a relationship.
122
  *
123
+ * @return Toolset_Result
124
  * @since 2.5.10
125
  */
126
  public function can_be_used_in_relationship();
135
  * @since 2.5.11
136
  */
137
  public function is_involved_in_relationship();
138
+ }
vendor/toolset/toolset-common/inc/autoloaded/post_type/i_post_type_from_types.php CHANGED
@@ -84,4 +84,18 @@ interface IToolset_Post_Type_From_Types extends IToolset_Post_Type {
84
  * @return bool Corresponds with the disabled status of the post type.
85
  */
86
  public function is_disabled();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
84
  * @return bool Corresponds with the disabled status of the post type.
85
  */
86
  public function is_disabled();
87
+
88
+
89
+ /**
90
+ * @return IToolset_Post_Type_Registered|null
91
+ * @since 2.6.3
92
+ */
93
+ public function get_registered_post_type();
94
+
95
+
96
+ /**
97
+ * @param IToolset_Post_Type_Registered $registered_post_type
98
+ * @since 2.6.3
99
+ */
100
+ public function set_registered_post_type( IToolset_Post_Type_Registered $registered_post_type );
101
  }
vendor/toolset/toolset-common/inc/autoloaded/post_type/list.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Enum class for holding a list of special, well-known post types.
5
+ *
6
+ * @since 2.6.4
7
+ */
8
+ abstract class Toolset_Post_Type_List {
9
+
10
+ const VIEW_OR_WPA = 'view';
11
+ const CONTENT_TEMPLATE = 'view-template';
12
+
13
+ const POST_FIELD_GROUP = 'wp-types-group';
14
+ const USER_FIELD_GROUP = 'wp-types-user-group';
15
+ const TERM_FIELD_GROUP = 'wp-types-term-group';
16
+
17
+ const CRED_POST_FORM = 'cred-form';
18
+ const CRED_USER_FORM = 'cred-user-form';
19
+ const CRED_RELATIONSHIP_FORM = 'cred_rel_form';
20
+
21
+ const LAYOUT = 'dd_layouts';
22
+
23
+ const ATTACHMENT = 'attachment';
24
+
25
+ }
vendor/toolset/toolset-common/inc/autoloaded/post_type/repository.php CHANGED
@@ -73,9 +73,24 @@ class Toolset_Post_Type_Repository {
73
 
74
  $this->post_types = $this->load_all_post_types();
75
 
 
 
 
 
 
 
 
 
76
  $this->is_initialized = true;
77
  }
78
 
 
 
 
 
 
 
 
79
  /**
80
  * Load all post types known on the site
81
  *
@@ -91,6 +106,33 @@ class Toolset_Post_Type_Repository {
91
  return $post_types;
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /**
95
  * Load post types currently registered on the site.
96
  *
@@ -127,7 +169,7 @@ class Toolset_Post_Type_Repository {
127
  */
128
  private function load_post_types_from_types( $registered_post_types ) {
129
 
130
- $custom_types = get_option( self::POST_TYPES_OPTION_NAME, array() );
131
 
132
  $results = $registered_post_types;
133
  foreach ( $custom_types as $slug => $definition ) {
73
 
74
  $this->post_types = $this->load_all_post_types();
75
 
76
+ if( ! did_action( 'init' ) ) {
77
+ // Run immediately after CPTs have been registered by Types.
78
+ //
79
+ // This is necessary if the post type repository gets initialized too early
80
+ // and does the initial loading before CPTs in Types are registered (at init:10 or earlier).
81
+ add_action( 'init', array( $this, 'finish_loading_registered_post_types' ), 11 );
82
+ }
83
+
84
  $this->is_initialized = true;
85
  }
86
 
87
+ /**
88
+ * Reloads all post types to the repository
89
+ */
90
+ public function refresh_all_post_types() {
91
+ $this->post_types = $this->load_all_post_types();
92
+ }
93
+
94
  /**
95
  * Load all post types known on the site
96
  *
106
  return $post_types;
107
  }
108
 
109
+
110
+ /**
111
+ * Load registered post types again and add them where they are missing:
112
+ *
113
+ * - if the CPT is defined in Types, add it to the IToolset_Post_Type_From_Types object (which will
114
+ * let the CPT object know that it's registered (== active))
115
+ * - if the CPT is not from Types but hasn't been stored in the repository at all, add it.
116
+ *
117
+ * @since 2.6.3
118
+ */
119
+ public function finish_loading_registered_post_types() {
120
+ $post_types = $this->load_registered_post_types();
121
+
122
+ foreach( $post_types as $registered_post_type ) {
123
+ // The post type was newly registered, just add it to the repository.
124
+ if( ! array_key_exists( $registered_post_type->get_slug(), $this->post_types ) ) {
125
+ $this->post_types[ $registered_post_type->get_slug() ] = $registered_post_type;
126
+ }
127
+
128
+ /** @var IToolset_Post_Type_From_Types|IToolset_Post_Type $stored_post_type */
129
+ $stored_post_type = $this->post_types[ $registered_post_type->get_slug() ];
130
+ if( $stored_post_type->is_from_types() ) {
131
+ $stored_post_type->set_registered_post_type( $registered_post_type );
132
+ }
133
+ }
134
+ }
135
+
136
  /**
137
  * Load post types currently registered on the site.
138
  *
169
  */
170
  private function load_post_types_from_types( $registered_post_types ) {
171
 
172
+ $custom_types = toolset_ensarr( get_option( self::POST_TYPES_OPTION_NAME, array() ) );
173
 
174
  $results = $registered_post_types;
175
  foreach ( $custom_types as $slug => $definition ) {
vendor/toolset/toolset-common/inc/autoloaded/postmeta_access/loader.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Hijack xxx_postmeta calls.
5
+ *
6
+ * Depending on the status of the m2m functionality, a proper adjustment class will be instantiated
7
+ * to allow for setting or getting legacy relationship postmeta-based entries.
8
+ *
9
+ * @since m2m
10
+ */
11
+ class Toolset_Postmeta_Access_Loader {
12
+
13
+
14
+ public function initialize() {
15
+
16
+ if( apply_filters( 'toolset_is_m2m_enabled', false ) ) {
17
+ $adjustments = new Toolset_Postmeta_Access_M2m();
18
+ $adjustments->initialize();
19
+ }
20
+
21
+ }
22
+
23
+ }
vendor/toolset/toolset-common/inc/autoloaded/postmeta_access/m2m.php ADDED
@@ -0,0 +1,348 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Hijack add/update/get_post_meta native functions for legacy relationships converted to m2m.
5
+ *
6
+ * This assumes m2m is enabled.
7
+ *
8
+ * See Toolset_Postmeta_Access_Loader for details.
9
+ *
10
+ * @since m2m
11
+ */
12
+ class Toolset_Postmeta_Access_M2m {
13
+
14
+ const KEY_START = '_wpcf_belongs_';
15
+ const KEY_START_LENGTH = 14;
16
+
17
+ const KEY_END = '_id';
18
+ const KEY_END_LENGTH = 3;
19
+
20
+ private $legacy_relationships = null;
21
+
22
+ private $array_filter_args = null;
23
+
24
+ public function initialize() {
25
+ $types_has_legacy_relationships_condition = new Toolset_Condition_Plugin_Types_Has_Legacy_Relationships();
26
+ $types_has_legacy_relationships = $types_has_legacy_relationships_condition->is_met();
27
+
28
+ if (
29
+ ! $types_has_legacy_relationships
30
+ /**
31
+ * Force the initialization of this class.
32
+ *
33
+ * @since m2m
34
+ */
35
+ && ! apply_filters( 'toolset_force_legacy_relationships_meta_access', false )
36
+ ) {
37
+ return;
38
+ }
39
+
40
+ /**
41
+ * Init the legacy postmeta access hooks, at init:11 so Types can register its post types at init:10.
42
+ *
43
+ * @since m2m
44
+ */
45
+ add_action( 'init', array( $this, 'init' ), 11 );
46
+ }
47
+
48
+ /**
49
+ * Init the legacy postmeta access hooks.
50
+ *
51
+ * Note that this legacy layer is only available after init:11 since Types post types are registered at init:10.
52
+ *
53
+ * @since m2m
54
+ */
55
+ public function init() {
56
+ do_action( 'toolset_do_m2m_full_init' );
57
+
58
+ // Cache the legacy relationships, and deactivate the hooks above if needed.
59
+ $this->set_legacy_relationships();
60
+ if ( ! empty( $this->legacy_relationships ) ) {
61
+ // Hijack the native set/update/get posteta functions
62
+ add_action( 'add_post_meta', array( $this, 'add_post_meta' ), 10, 3 );
63
+ add_action( 'update_post_meta', array( $this, 'update_post_meta' ), 10, 4 );
64
+ add_filter( 'get_post_metadata', array( $this, 'get_post_metadata' ), 10, 4 );
65
+ add_filter( 'toolset_postmeta_access_m2m_get_post_metadata', array( $this, 'get_post_metadata' ), 10, 4 );
66
+ }
67
+
68
+ // Deactivate this class hijcking in case there is nothing to hijack
69
+ add_action( 'toolset_deactivate_postmeta_access_m2m', array( $this, 'deactivate_postmeta_access_m2m' ) );
70
+ }
71
+
72
+ /**
73
+ * Transform a postmeta adding action into an association creation.
74
+ *
75
+ * @param $object_id int ID of the object metadata is for
76
+ * @param @meta_key string Metadata key
77
+ * @param $_meta_value mixed Metadata value
78
+ *
79
+ * @since m2m
80
+ */
81
+ public function add_post_meta( $object_id, $meta_key, $_meta_value ) {
82
+ // It has to run update_post_meta because the IPT could exist and needs to be deleted.
83
+ $this->update_post_meta( null, $object_id, $meta_key, $_meta_value );
84
+ }
85
+
86
+ /**
87
+ * Transform a postmeta updating action into an association updating.
88
+ *
89
+ * @param $meta_id int ID of the metadata entry to update
90
+ * @param $object_id int ID of the object metadata is for
91
+ * @param @meta_key string Metadata key
92
+ * @param $_meta_value mixed Metadata value
93
+ *
94
+ * @since m2m
95
+ */
96
+ public function update_post_meta( $meta_id, $object_id, $meta_key, $_meta_value ) {
97
+ $parent_type = $this->get_parent_type_from_meta_key( $meta_key );
98
+ if ( ! $parent_type ) {
99
+ return;
100
+ }
101
+
102
+ if ( ! Toolset_Utils::is_nonnegative_numeric( $_meta_value ) ) {
103
+ return;
104
+ }
105
+
106
+ $child_post_type = get_post_type( $object_id );
107
+ $matching_relationships = $this->get_legacy_relationship( $parent_type, $child_post_type );
108
+
109
+ if ( null === $matching_relationships ) {
110
+ return;
111
+ }
112
+
113
+ $current_relationship = key( $matching_relationships );
114
+ $relationship_definition = isset( $this->legacy_relationships[ $current_relationship ] )
115
+ ? $this->legacy_relationships[ $current_relationship ]['definition']
116
+ : null;
117
+
118
+ if ( null === $relationship_definition ) {
119
+ return;
120
+ }
121
+
122
+ $current_association = $this->get_association( $current_relationship, $object_id );
123
+
124
+ if ( $current_association instanceof Toolset_Association ) {
125
+ if ( $_meta_value === $current_association->get_element_id( Toolset_Relationship_Role::PARENT ) ) {
126
+ // There is an association already for those two items, so do nothing else.
127
+ return;
128
+ }
129
+ $relationship_driver = $relationship_definition->get_driver();
130
+ // Delete the previously existing association between child and any parent in the known relationship, if any.
131
+ $relationship_driver->delete_association( $current_association );
132
+ }
133
+
134
+ // Create an association between child and parent in the known relationship.
135
+ // It should be one2many, so no intermediary fields are required.
136
+ try {
137
+ $relationship_definition->create_association( $_meta_value, $object_id );
138
+ } catch( Exception $e ) {
139
+
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Transform a postmeta getting action into an association get.
145
+ *
146
+ * @param $return ull|array|string The value to return
147
+ * @param $object_id int ID of the object metadata is for
148
+ * @param @meta_key string Metadata key
149
+ * @param $single bool Whether to return only the first value of the specified $meta_key
150
+ *
151
+ * @return mixed Will be an array if $single is false. Will be value of meta data field if $single is true.
152
+ *
153
+ * @since m2m
154
+ */
155
+ public function get_post_metadata( $return, $object_id, $meta_key, $single ) {
156
+ $parent_type = $this->get_parent_type_from_meta_key( $meta_key );
157
+ if ( ! $parent_type ) {
158
+ return $return;
159
+ }
160
+
161
+ $child_post_type = get_post_type( $object_id );
162
+ $matching_relationships = $this->get_legacy_relationship( $parent_type, $child_post_type );
163
+
164
+ if ( null === $matching_relationships ) {
165
+ return $return;
166
+ }
167
+
168
+ $current_relationship = key( $matching_relationships );
169
+ $parent_id = $this->get_association_parent_id( $current_relationship, $object_id );
170
+
171
+ if ( null === $parent_id ) {
172
+ return $single
173
+ ? ''
174
+ : array();
175
+ }
176
+
177
+ return $single
178
+ ? $parent_id
179
+ : array( $parent_id );
180
+ }
181
+
182
+ /**
183
+ * Remove the hooks to postmeta functions, on demand.
184
+ * Fired here when after getting legacy relationships, there is none.
185
+ *
186
+ * @since m2m
187
+ */
188
+ public function deactivate_postmeta_access_m2m() {
189
+ remove_action( 'add_post_meta', array( $this, 'add_post_meta' ), 10, 3 );
190
+ remove_action( 'update_post_meta', array( $this, 'update_post_meta' ), 10, 4 );
191
+ remove_filter( 'get_post_metadata', array( $this, 'get_post_metadata' ), 10, 4 );
192
+ remove_filter( 'toolset_postmeta_access_m2m_get_post_metadata', array( $this, 'get_post_metadata' ), 10, 4 );
193
+ }
194
+
195
+ /**
196
+ * Check whether a given postmeta key matches the _wpcf_belongs_{slug}_id structure,
197
+ * and return the parent post type slug if available.
198
+ *
199
+ * @param $meta_key string The meta key
200
+ *
201
+ * @return bool|string False when the meta key does not match the pattern, the parent type slug otherwise.
202
+ *
203
+ * @since m2m
204
+ */
205
+ private function get_parent_type_from_meta_key( $meta_key ) {
206
+ if ( substr( $meta_key, 0, self::KEY_START_LENGTH ) !== self::KEY_START ) {
207
+ return false;
208
+ }
209
+
210
+ if ( substr( $meta_key, - self::KEY_END_LENGTH ) !== self::KEY_END ) {
211
+ return false;
212
+ }
213
+
214
+ $parent_type = substr( $meta_key, self::KEY_START_LENGTH );
215
+ $parent_type = substr( $parent_type, 0, - self::KEY_END_LENGTH );
216
+ return $parent_type;
217
+ }
218
+
219
+ /**
220
+ * Cache the existing legacy relationships on this site.
221
+ *
222
+ * @note It deactivates the hijacking of postmeta functions if no legacy relationships are found.
223
+ *
224
+ * @since m2m
225
+ */
226
+ private function set_legacy_relationships() {
227
+ if ( null !== $this->legacy_relationships ) {
228
+ return;
229
+ }
230
+
231
+ $relationship_query = new Toolset_Relationship_Query_V2();
232
+ $definitions = $relationship_query
233
+ ->add( $relationship_query->is_legacy( true ) )
234
+ ->get_results();
235
+
236
+
237
+ if ( empty( $definitions ) ) {
238
+ $this->legacy_relationships = array();
239
+ }
240
+
241
+ foreach ( $definitions as $definition ) {
242
+ $this->legacy_relationships[ $definition->get_slug() ] = array(
243
+ 'parent' => $definition->get_parent_type()->get_types(),
244
+ 'child' => $definition->get_child_type()->get_types(),
245
+ 'definition' => $definition
246
+ );
247
+ }
248
+ }
249
+
250
+ /**
251
+ * Get a legacy relationship by its parent and child post types.
252
+ *
253
+ * @param $parent_type string The parent post type slug
254
+ * @param $child_type string The child post type slug
255
+ *
256
+ * @return null|array The list of matching legacy relationships, or null otherwise.
257
+ *
258
+ * @since m2m
259
+ */
260
+ private function get_legacy_relationship( $parent_type, $child_type ) {
261
+ if ( empty( $this->legacy_relationships ) ) {
262
+ return null;
263
+ }
264
+
265
+ $this->array_filter_args = array(
266
+ 'parent' => $parent_type,
267
+ 'child' => $child_type
268
+ );
269
+
270
+ $matching_relationships = array_filter( $this->legacy_relationships, array( $this, 'filter_by_roles' ) );
271
+
272
+ $this->array_filter_args = null;
273
+
274
+ if ( empty( $matching_relationships ) ) {
275
+ return null;
276
+ }
277
+
278
+ return $matching_relationships;
279
+ }
280
+
281
+ /**
282
+ * Helper to filter an array of relationships by its parent and child post types.
283
+ *
284
+ * @param $relationship array
285
+ *
286
+ * @return bool
287
+ *
288
+ * @since m2m
289
+ */
290
+ private function filter_by_roles( $relationship ) {
291
+ return (
292
+ in_array( $this->array_filter_args['parent'], $relationship['parent'] )
293
+ && in_array( $this->array_filter_args['child'], $relationship['child'] )
294
+ );
295
+ }
296
+
297
+ /**
298
+ * Get a specific association given a child, and a relationship.
299
+ * Works because legacy relationships are one-to-many, hence the child can only have one associated parent.
300
+ *
301
+ * @param $elationship_slug string The relationship slug
302
+ * @param $child_id int The child ID
303
+ *
304
+ * @return null|Toolset_Association
305
+ *
306
+ * @since m2m
307
+ */
308
+ private function get_association( $relationshup_slug, $child_id ) {
309
+ $association_query = new Toolset_Association_Query_V2();
310
+ $associations = $association_query
311
+ ->add( $association_query->relationship_slug( $relationshup_slug ) )
312
+ ->limit( 1 )
313
+ ->add( $association_query->element_id_and_domain( $child_id, Toolset_Element_Domain::POSTS, new Toolset_Relationship_Role_Child() ) )
314
+ ->get_results();
315
+
316
+ if ( empty( $associations ) ) {
317
+ return null;
318
+ }
319
+ return reset( $associations );
320
+ }
321
+
322
+ /**
323
+ * Get a specific association parent ID given a child, and a relationship.
324
+ * Works because legacy relationships are one-to-many, hence the child can only have one associated parent.
325
+ *
326
+ * @param $elationship_slug string The relationship slug
327
+ * @param $child_id int The child ID
328
+ *
329
+ * @return null|int
330
+ *
331
+ * @since m2m
332
+ */
333
+ private function get_association_parent_id( $relationshup_slug, $child_id ) {
334
+ $association_query = new Toolset_Association_Query_V2();
335
+ $associations_ids = $association_query
336
+ ->add( $association_query->relationship_slug( $relationshup_slug ) )
337
+ ->return_element_ids( new Toolset_Relationship_Role_Parent() )
338
+ ->limit( 1 )
339
+ ->add( $association_query->element_id_and_domain( $child_id, Toolset_Element_Domain::POSTS, new Toolset_Relationship_Role_Child() ) )
340
+ ->get_results();
341
+
342
+ if ( empty( $associations_ids ) ) {
343
+ return null;
344
+ }
345
+ return reset( $associations_ids );
346
+ }
347
+
348
+ }
vendor/toolset/toolset-common/inc/autoloaded/relationship_service.php CHANGED
@@ -54,7 +54,6 @@ class Toolset_Relationship_Service {
54
  * @param IToolset_Relationship_Definition $relationship
55
  * @param $child_id
56
  * @param null $parent_slug
57
- *s
58
  *
59
  * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
60
  */
@@ -66,20 +65,69 @@ class Toolset_Relationship_Service {
66
  if( ! $this->is_m2m_enabled() ) {
67
  return false;
68
  }
 
 
 
 
 
69
 
70
- $qry_args = array(
71
- Toolset_Association_Query::QUERY_RELATIONSHIP_SLUG => $relationship->get_slug(),
72
- Toolset_Association_Query::QUERY_CHILD_ID => $child_id,
73
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_PARENT_IDS
74
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
  if ( $parent_slug ) {
77
- $qry_args['parent_query'] = array( 'post_type' => $parent_slug );
 
 
 
 
 
 
 
 
 
78
  }
79
 
80
- return $this->query_association( $qry_args );
81
  }
82
 
 
83
  /**
84
  * Function to find parend id by relationship and child id
85
  *
@@ -97,64 +145,129 @@ class Toolset_Relationship_Service {
97
  if( ! $this->is_m2m_enabled() ) {
98
  return false;
99
  }
100
-
101
- $qry_args = array(
102
- Toolset_Association_Query::QUERY_RELATIONSHIP_SLUG => $relationship->get_slug(),
103
- Toolset_Association_Query::QUERY_PARENT_ID => $parent_id,
104
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_CHILD_IDS
105
- );
106
 
107
  if ( $child_slug ) {
108
- $qry_args[ Toolset_Association_Query::QUERY_CHILD_QUERY ] = array( 'post_type' => $child_slug );
 
 
 
 
 
 
 
 
 
109
  }
110
 
111
- return $this->query_association( $qry_args );
112
  }
113
 
114
  /**
115
  * Function to find intermediary post id by relationship and child id
116
  *
117
  * @param IToolset_Relationship_Definition $relationship
118
- * @param $post_id
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  *
120
  * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
121
  *
 
122
  */
123
- public function find_intermediary_by_relationship_and_child_id( IToolset_Relationship_Definition $relationship, $post_id ) {
 
 
 
 
124
  if( ! $this->is_m2m_enabled() ) {
125
  return false;
126
  }
 
 
 
 
 
127
 
128
- $qry_args = array(
129
- Toolset_Association_Query::QUERY_RELATIONSHIP_SLUG => $relationship->get_slug(),
130
- Toolset_Association_Query::QUERY_CHILD_ID => $post_id,
131
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_ASSOCIATIONS
132
- );
 
 
 
 
 
 
 
133
 
134
- return $this->query_association( $qry_args );
135
  }
136
 
137
  /**
138
  * Function to find intermediary post id by relationship and parent id
139
  *
140
  * @param IToolset_Relationship_Definition $relationship
141
- * @param $post_id
142
  *
143
  * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
144
  *
145
  */
146
- public function find_intermediary_by_relationship_and_parent_id( IToolset_Relationship_Definition $relationship, $post_id ) {
147
  if( ! $this->is_m2m_enabled() ) {
148
  return false;
149
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
 
151
- $qry_args = array(
152
- Toolset_Association_Query::QUERY_RELATIONSHIP_SLUG => $relationship->get_slug(),
153
- Toolset_Association_Query::QUERY_PARENT_ID => $post_id,
154
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_ASSOCIATIONS
155
- );
156
-
157
- return $this->query_association( $qry_args );
158
  }
159
 
160
  /**
@@ -189,21 +302,21 @@ class Toolset_Relationship_Service {
189
  if( ! $this->is_m2m_enabled() ) {
190
  return false;
191
  }
192
-
193
- $children_args = wp_parse_args( $children_args, array(
194
- 'post_type' => 'any',
195
- 'post_status' => 'publish',
196
- 'numberposts' => -1,
197
- 'suppress_filters' => 0,
198
- ) );
199
-
200
- $qry_args = array(
201
- Toolset_Association_Query::QUERY_PARENT_ID => $parent_id,
202
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_CHILD_IDS,
203
- Toolset_Association_Query::QUERY_CHILD_QUERY => $children_args,
204
- );
205
-
206
- return $this->query_association( $qry_args );
207
  }
208
 
209
  /**
@@ -225,41 +338,49 @@ class Toolset_Relationship_Service {
225
  /**
226
  * Find associations (IToolset_Associations[]) by parent id
227
  *
228
- * @param $id
229
  *
230
  * @return IToolset_Association[]
231
  */
232
- private function find_associations_by_parent_id( $id ) {
233
- $qry_args = array(
234
- Toolset_Association_Query::QUERY_PARENT_ID => $id,
235
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_ASSOCIATIONS
236
- );
237
-
238
- $associations_parent = $this->query_association( $qry_args );
 
 
 
 
 
 
239
 
240
- return is_array( $associations_parent )
241
- ? $associations_parent
242
- : array();
243
  }
244
 
245
  /**
246
  * Find associations (IToolset_Associations[]) by child id
247
  *
248
- * @param $id
249
  *
250
  * @return IToolset_Association[]
251
  */
252
- private function find_associations_by_child_id( $id ) {
253
- $qry_args = array(
254
- Toolset_Association_Query::QUERY_CHILD_ID => $id,
255
- Toolset_Association_Query::OPTION_RETURN => Toolset_Association_Query::RETURN_ASSOCIATIONS
256
- );
257
-
258
- $associations_child = $this->query_association( $qry_args );
 
 
 
 
 
 
259
 
260
- return is_array( $associations_child )
261
- ? $associations_child
262
- : array();
263
  }
264
 
265
  /**
@@ -305,7 +426,7 @@ class Toolset_Relationship_Service {
305
  * @return bool|int
306
  */
307
  public function legacy_find_parent_id_by_child_id_and_parent_slug( $child_id, $parent_slug ) {
308
- if( ! $this->is_m2m_enabled() ) {
309
  return false;
310
  }
311
 
54
  * @param IToolset_Relationship_Definition $relationship
55
  * @param $child_id
56
  * @param null $parent_slug
 
57
  *
58
  * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
59
  */
65
  if( ! $this->is_m2m_enabled() ) {
66
  return false;
67
  }
68
+
69
+ $query = new Toolset_Association_Query_V2();
70
+
71
+ $query->add( $query->relationship( $relationship ) );
72
+ $query->add( $query->child_id( $child_id, Toolset_Element_Domain::POSTS ) );
73
 
74
+ if ( $parent_slug ) {
75
+ $query->add( $query->has_domain_and_type( Toolset_Element_Domain::POSTS, $parent_slug, new Toolset_Relationship_Role_Parent() ) );
76
+ }
77
+
78
+ $results = $query
79
+ ->return_element_ids( new Toolset_Relationship_Role_Parent() )
80
+ ->limit( 1 )
81
+ ->get_results();
82
+
83
+ if ( ! $results || empty( $results ) ) {
84
+ return false;
85
+ }
86
+
87
+ return $results;
88
+ }
89
+
90
+ /**
91
+ * Function to find parent ID by relationship and intermediary post ID
92
+ * @param IToolset_Relationship_Definition $relationship
93
+ * @param $intermediary_post_id
94
+ * @param null $parent_slug
95
+ *
96
+ * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
97
+ *
98
+ * @since 2.6.7
99
+ */
100
+ public function find_parent_id_by_relationship_and_intermediary_post_id(
101
+ IToolset_Relationship_Definition $relationship,
102
+ $intermediary_post_id,
103
+ $parent_slug = null
104
+ ) {
105
+ if( ! $this->is_m2m_enabled() ) {
106
+ return false;
107
+ }
108
+
109
+ $query = new Toolset_Association_Query_V2();
110
+
111
+ $query->add( $query->relationship( $relationship ) );
112
+ $query->add( $query->intermediary_id( $intermediary_post_id ) );
113
 
114
  if ( $parent_slug ) {
115
+ $query->add( $query->has_domain_and_type( Toolset_Element_Domain::POSTS, $parent_slug, new Toolset_Relationship_Role_Parent() ) );
116
+ }
117
+
118
+ $results = $query
119
+ ->return_element_ids( new Toolset_Relationship_Role_Parent() )
120
+ ->limit( 1 )
121
+ ->get_results();
122
+
123
+ if ( ! $results || empty( $results ) ) {
124
+ return false;
125
  }
126
 
127
+ return $results;
128
  }
129
 
130
+
131
  /**
132
  * Function to find parend id by relationship and child id
133
  *
145
  if( ! $this->is_m2m_enabled() ) {
146
  return false;
147
  }
148
+
149
+ $query = new Toolset_Association_Query_V2();
150
+
151
+ $query->add( $query->relationship( $relationship ) );
152
+ $query->add( $query->parent_id( $parent_id, Toolset_Element_Domain::POSTS ) );
 
153
 
154
  if ( $child_slug ) {
155
+ $query->add( $query->has_domain_and_type( Toolset_Element_Domain::POSTS, $child_slug, new Toolset_Relationship_Role_Child() ) );
156
+ }
157
+
158
+ $results = $query
159
+ ->return_element_ids( new Toolset_Relationship_Role_Child() )
160
+ ->limit( 1 )
161
+ ->get_results();
162
+
163
+ if ( ! $results || empty( $results ) ) {
164
+ return false;
165
  }
166
 
167
+ return $results;
168
  }
169
 
170
  /**
171
  * Function to find intermediary post id by relationship and child id
172
  *
173
  * @param IToolset_Relationship_Definition $relationship
174
+ * @param $child_id
175
+ *
176
+ * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
177
+ *
178
+ */
179
+ public function find_intermediary_by_relationship_and_child_id( IToolset_Relationship_Definition $relationship, $child_id ) {
180
+ if( ! $this->is_m2m_enabled() ) {
181
+ return false;
182
+ }
183
+
184
+ $query = new Toolset_Association_Query_V2();
185
+
186
+ $query->add( $query->relationship( $relationship ) );
187
+ $query->add( $query->child_id( $child_id, Toolset_Element_Domain::POSTS ) );
188
+
189
+ $results = $query
190
+ ->return_association_instances()
191
+ ->limit( 1 )
192
+ ->get_results();
193
+
194
+ if ( ! $results || empty( $results ) ) {
195
+ return false;
196
+ }
197
+
198
+ return $results;
199
+ }
200
+
201
+ /**
202
+ * Function to find Child ID by relationship and intermediary post ID
203
+ *
204
+ * @param IToolset_Relationship_Definition $relationship
205
+ * @param $intermediary_post_id
206
+ * @param null $child_slug
207
  *
208
  * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
209
  *
210
+ * @since 2.6.7
211
  */
212
+ public function find_child_id_by_relationship_and_intermediary_post_id(
213
+ IToolset_Relationship_Definition $relationship,
214
+ $intermediary_post_id,
215
+ $child_slug = null
216
+ ) {
217
  if( ! $this->is_m2m_enabled() ) {
218
  return false;
219
  }
220
+
221
+ $query = new Toolset_Association_Query_V2();
222
+
223
+ $query->add( $query->relationship( $relationship ) );
224
+ $query->add( $query->intermediary_id( $intermediary_post_id ) );
225
 
226
+ if ( $child_slug ) {
227
+ $query->add( $query->has_domain_and_type( Toolset_Element_Domain::POSTS, $child_slug, new Toolset_Relationship_Role_Child() ) );
228
+ }
229
+
230
+ $results = $query
231
+ ->return_element_ids( new Toolset_Relationship_Role_Child() )
232
+ ->limit( 1 )
233
+ ->get_results();
234
+
235
+ if ( ! $results || empty( $results ) ) {
236
+ return false;
237
+ }
238
 
239
+ return $results;
240
  }
241
 
242
  /**
243
  * Function to find intermediary post id by relationship and parent id
244
  *
245
  * @param IToolset_Relationship_Definition $relationship
246
+ * @param $parent_id
247
  *
248
  * @return bool|int[]|IToolset_Association[]|IToolset_Element[]
249
  *
250
  */
251
+ public function find_intermediary_by_relationship_and_parent_id( IToolset_Relationship_Definition $relationship, $parent_id ) {
252
  if( ! $this->is_m2m_enabled() ) {
253
  return false;
254
  }
255
+
256
+ $query = new Toolset_Association_Query_V2();
257
+
258
+ $query->add( $query->relationship( $relationship ) );
259
+ $query->add( $query->parent_id( $parent_id, Toolset_Element_Domain::POSTS ) );
260
+
261
+ $results = $query
262
+ ->return_association_instances()
263
+ ->limit( 1 )
264
+ ->get_results();
265
+
266
+ if ( ! $results || empty( $results ) ) {
267
+ return false;
268
+ }
269
 
270
+ return $results;
 
 
 
 
 
 
271
  }
272
 
273
  /**
302
  if( ! $this->is_m2m_enabled() ) {
303
  return false;
304
  }
305
+
306
+ $query = new Toolset_Association_Query_V2();
307
+
308
+ $query->add( $query->parent_id( $parent_id, Toolset_Element_Domain::POSTS ) );
309
+
310
+ $results = $query
311
+ ->return_element_ids( new Toolset_Relationship_Role_Child() )
312
+ ->limit( PHP_INT_MAX )
313
+ ->get_results();
314
+
315
+ if ( ! $results || empty( $results ) ) {
316
+ return false;
317
+ }
318
+
319
+ return $results;
320
  }
321
 
322
  /**
338
  /**
339
  * Find associations (IToolset_Associations[]) by parent id
340
  *
341
+ * @param $parent_id
342
  *
343
  * @return IToolset_Association[]
344
  */
345
+ private function find_associations_by_parent_id( $parent_id ) {
346
+ $query = new Toolset_Association_Query_V2();
347
+
348
+ $query->add( $query->parent_id( $parent_id, Toolset_Element_Domain::POSTS ) );
349
+
350
+ $results = $query
351
+ ->return_association_instances()
352
+ ->limit( PHP_INT_MAX )
353
+ ->get_results();
354
+
355
+ if ( ! $results || empty( $results ) ) {
356
+ return array();
357
+ }
358
 
359
+ return $results;
 
 
360
  }
361
 
362
  /**
363
  * Find associations (IToolset_Associations[]) by child id
364
  *
365
+ * @param $child_id
366
  *
367
  * @return IToolset_Association[]
368
  */
369
+ private function find_associations_by_child_id( $child_id ) {
370
+ $query = new Toolset_Association_Query_V2();
371
+
372
+ $query->add( $query->child_id( $child_id, Toolset_Element_Domain::POSTS ) );
373
+
374
+ $results = $query
375
+ ->return_association_instances()
376
+ ->limit( PHP_INT_MAX )
377
+ ->get_results();
378
+
379
+ if ( ! $results || empty( $results ) ) {
380
+ return array();
381
+ }
382
 
383
+ return $results;
 
 
384
  }
385
 
386
  /**
426
  * @return bool|int
427
  */
428
  public function legacy_find_parent_id_by_child_id_and_parent_slug( $child_id, $parent_slug ) {
429
+ if( $this->is_m2m_enabled() ) {
430
  return false;
431
  }
432
 
vendor/toolset/toolset-common/inc/autoloaded/renderer/output_template_repository.php CHANGED
@@ -14,17 +14,13 @@ class Toolset_Output_Template_Repository extends Toolset_Output_Template_Reposit
14
  //
15
 
16
  const FAUX_TEMPLATE = 'faux_template.twig';
 
17
 
18
 
19
  /**
20
  * @var array Template definitions.
21
  */
22
- private $templates = array(
23
- self::FAUX_TEMPLATE => array(
24
- 'base_path' => null,
25
- 'namespaces' => array()
26
- )
27
- );
28
 
29
 
30
  /** @var Toolset_Output_Template_Repository */
@@ -43,6 +39,24 @@ class Toolset_Output_Template_Repository extends Toolset_Output_Template_Reposit
43
  }
44
 
45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  /**
47
  * @inheritdoc
48
  * @return string
@@ -52,6 +66,12 @@ class Toolset_Output_Template_Repository extends Toolset_Output_Template_Reposit
52
  }
53
 
54
 
 
 
 
 
 
 
55
  /**
56
  * Get the array with template definitions.
57
  *
14
  //
15
 
16
  const FAUX_TEMPLATE = 'faux_template.twig';
17
+ const MAINTENANCE_FILE = 'maintenance.twig';
18
 
19
 
20
  /**
21
  * @var array Template definitions.
22
  */
23
+ private $templates = array();
 
 
 
 
 
24
 
25
 
26
  /** @var Toolset_Output_Template_Repository */
39
  }
40
 
41
 
42
+ public function __construct(
43
+ Toolset_Output_Template_Factory $template_factory_di = null,
44
+ Toolset_Constants $constants_di = null
45
+ ) {
46
+ parent::__construct( $template_factory_di, $constants_di );
47
+
48
+ $this->templates = array(
49
+ self::FAUX_TEMPLATE => array(
50
+ 'base_path' => null,
51
+ 'namespaces' => array()
52
+ ),
53
+ self::MAINTENANCE_FILE => array(
54
+ 'base_path' => $this->get_templates_dir_base_path()
55
+ )
56
+ );
57
+ }
58
+
59
+
60
  /**
61
  * @inheritdoc
62
  * @return string
66
  }
67
 
68
 
69
+ private function get_templates_dir_base_path() {
70
+ return $this->constants->constant( 'TOOLSET_COMMON_PATH' ) . '/templates';
71
+ }
72
+
73
+
74
+
75
  /**
76
  * Get the array with template definitions.
77
  *
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/base.php ADDED
@@ -0,0 +1,160 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Abstract factory for the item attribute GUI selector.
5
+ *
6
+ * Extended depending on the relationship cardinality.
7
+ *
8
+ * @since m2m
9
+ */
10
+ abstract class Toolset_Shortcode_Attr_Item_Gui_Base {
11
+
12
+
13
+ /**
14
+ * @var Toolset_Relationship_Definition
15
+ */
16
+ protected $relationship_definition;
17
+
18
+
19
+ /**
20
+ * @var null|WP_Post_Type
21
+ */
22
+ protected $current_post_object;
23
+
24
+
25
+ /**
26
+ * @var string
27
+ */
28
+ protected $option_name;
29
+
30
+
31
+ /**
32
+ * @var Toolset_Post_Type_Repository
33
+ */
34
+ protected $post_type_repository;
35
+
36
+
37
+ /**
38
+ * @var string[]
39
+ */
40
+ protected $parent_types;
41
+
42
+
43
+ /**
44
+ * @var string[]
45
+ */
46
+ protected $child_types;
47
+
48
+
49
+ /**
50
+ * @var string
51
+ */
52
+ protected $intermediary_type;
53
+
54
+
55
+ /**
56
+ * @var string[]
57
+ */
58
+ protected $options = array();
59
+
60
+
61
+ function __construct(
62
+ Toolset_Relationship_Definition $relationship_definition,
63
+ $current_post_object,
64
+ $option_name ,
65
+ Toolset_Post_Type_Repository $post_type_repository
66
+ ) {
67
+ $this->relationship_definition = $relationship_definition;
68
+ $this->current_post_object = $current_post_object;
69
+ $this->option_name = $option_name;
70
+ $this->post_type_repository = $post_type_repository;
71
+
72
+ $this->parent_types = $relationship_definition->get_parent_type()->get_types();
73
+ $this->child_types = $relationship_definition->get_child_type()->get_types();
74
+ $this->intermediary_type = $relationship_definition->get_intermediary_post_type();
75
+
76
+ $this->set_options();
77
+ }
78
+
79
+
80
+ /**
81
+ * Get the option name attribute.
82
+ *
83
+ * @return string
84
+ *
85
+ * @since m2m
86
+ */
87
+ public function get_option_name() {
88
+ return $this->option_name;
89
+ }
90
+
91
+
92
+ /**
93
+ * Get the generated options.
94
+ *
95
+ * @return string[]
96
+ *
97
+ * @since m2m
98
+ */
99
+ public function get_options() {
100
+ return $this->options;
101
+ }
102
+
103
+
104
+ /**
105
+ * Get the label of a given role in the current relationship.
106
+ *
107
+ * @param string $role
108
+ * @param bool $singular
109
+ *
110
+ * @return null|string
111
+ *
112
+ * @since m2m
113
+ */
114
+ public function get_post_type_label_by_role( $role, $singular = false ) {
115
+ $types_for_role = $this->relationship_definition->get_element_type( $role )->get_types();
116
+ $first_type_for_role = reset( $types_for_role );
117
+
118
+ $post_type_for_role = $this->post_type_repository->get( $first_type_for_role );
119
+
120
+ if ( null === $post_type_for_role ) {
121
+ return null;
122
+ }
123
+
124
+ $requested_label_name = ( $singular )
125
+ ? Toolset_Post_Type_Labels::SINGULAR_NAME
126
+ : Toolset_Post_Type_Labels::NAME;
127
+
128
+ return $post_type_for_role->get_label( $requested_label_name );
129
+ }
130
+
131
+
132
+ /**
133
+ * Define options, to be implemnted by children classes.
134
+ *
135
+ * @since m2m
136
+ */
137
+ abstract protected function set_options();
138
+
139
+ /**
140
+ * Compose documentation links and add the GA arguments.
141
+ *
142
+ * @param string $url
143
+ * @param array $args
144
+ * @param string $anchor
145
+ *
146
+ * @return string
147
+ *
148
+ * @since m2m
149
+ */
150
+ protected function get_documentation_link( $url = '', $args = array(), $anchor = '' ) {
151
+ if ( ! empty( $args ) ) {
152
+ $url = esc_url( add_query_arg( $args, $url ) );
153
+ }
154
+ if ( ! empty( $anchor ) ) {
155
+ $url .= '#' . esc_attr( $anchor );
156
+ }
157
+ return $url;
158
+ }
159
+
160
+ }
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/factory.php ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Factory for the item attribute GUI selector, based on the relationship cardinality.
5
+ *
6
+ * @since m2m
7
+ */
8
+ class Toolset_Shortcode_Attr_Item_Gui_Factory {
9
+
10
+
11
+ /**
12
+ * @var Toolset_Relationship_Definition
13
+ */
14
+ private $relationship_definition;
15
+
16
+
17
+ /**
18
+ * @var null|WP_Post_Type
19
+ */
20
+ private $current_post_object;
21
+
22
+
23
+ /**
24
+ * @var string
25
+ */
26
+ private $option_name = '';
27
+
28
+
29
+ /**
30
+ * @var string
31
+ */
32
+ private $cardinality;
33
+
34
+
35
+ /**
36
+ * @var Toolset_Post_Type_Repository
37
+ */
38
+ private $post_type_repository;
39
+
40
+
41
+ /**
42
+ * @var Toolset_Shortcode_Attr_Item_Gui_Base
43
+ */
44
+ private $provider;
45
+
46
+
47
+ function __construct( Toolset_Relationship_Definition $relationship_definition, $current_post_object, $option_name ) {
48
+ $this->relationship_definition = $relationship_definition;
49
+ $this->current_post_object = $current_post_object;
50
+ $this->option_name = $option_name;
51
+
52
+ $this->cardinality = $relationship_definition->get_cardinality()->get_type();
53
+
54
+ $this->post_type_repository = Toolset_Post_Type_Repository::get_instance();
55
+
56
+ $this->create();
57
+ }
58
+
59
+
60
+ /**
61
+ * Fill options per relationship cardinality.
62
+ *
63
+ * @since m2m
64
+ */
65
+ private function create() {
66
+ switch( $this->cardinality ) {
67
+ case 'many-to-many':
68
+ $this->provider = new Toolset_Shortcode_Attr_Item_Gui_M2m(
69
+ $this->relationship_definition,
70
+ $this->current_post_object,
71
+ $this->option_name,
72
+ $this->post_type_repository
73
+ );
74
+ break;
75
+ case 'one-to-many':
76
+ $this->provider = new Toolset_Shortcode_Attr_Item_Gui_O2m(
77
+ $this->relationship_definition,
78
+ $this->current_post_object,
79
+ $this->option_name,
80
+ $this->post_type_repository
81
+ );
82
+ break;
83
+ case 'one-to-one':
84
+ $this->provider = new Toolset_Shortcode_Attr_Item_Gui_O2o(
85
+ $this->relationship_definition,
86
+ $this->current_post_object,
87
+ $this->option_name,
88
+ $this->post_type_repository
89
+ );
90
+ break;
91
+ }
92
+ }
93
+
94
+
95
+ /**
96
+ * Get the options registered by the right provider based on the current relationship cardinality.
97
+ *
98
+ * @return string[]
99
+ *
100
+ * @since m2m
101
+ */
102
+ public function get_options() {
103
+ return $this->provider->get_options();
104
+ }
105
+
106
+ }
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/m2m.php ADDED
@@ -0,0 +1,474 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * item attribute GUI selector provider for many-to-many relationships.
5
+ *
6
+ * @since m2m
7
+ */
8
+ class Toolset_Shortcode_Attr_Item_Gui_M2m extends Toolset_Shortcode_Attr_Item_Gui_Base {
9
+
10
+
11
+ /**
12
+ * Set options for post selectors on M2M relationships.
13
+ *
14
+ * @since m2m
15
+ */
16
+ protected function set_options() {
17
+ if ( null === $this->intermediary_type ) {
18
+ $this->set_many_to_many_disabled();
19
+ return;
20
+ }
21
+
22
+ if ( null === $this->current_post_object ) {
23
+
24
+ if (
25
+ in_array( toolset_getget('get_page'), array( 'views-editor', 'view-archives-editor' ) )
26
+ || (
27
+ is_admin()
28
+ && in_array( toolset_getget('page'), array( 'views-editor', 'view-archives-editor' ) )
29
+ )
30
+ ) {
31
+ $this->set_many_to_many_view_loop();
32
+ return;
33
+ }
34
+
35
+ if (
36
+ in_array( toolset_getget('get_page'), array( 'ct-editor' ) )
37
+ || (
38
+ is_admin()
39
+ && in_array( toolset_getget('page'), array( 'ct-editor' ) )
40
+ )
41
+ ) {
42
+ $this->set_many_to_many_content_template();
43
+ return;
44
+ }
45
+
46
+ $this->set_many_to_many_disabled();
47
+ return;
48
+
49
+ }
50
+
51
+ if ( $this->current_post_object->name === $this->intermediary_type ) {
52
+ $this->set_many_to_many_current_intermediary();
53
+ return;
54
+ }
55
+
56
+ $this->set_many_to_many_disabled();
57
+ return;
58
+ }
59
+
60
+
61
+ /**
62
+ * Set a disabled option.
63
+ *
64
+ * M2M relationships usualy do not allow to display data from related objects,
65
+ * so a disabled option is rendered in most cases.
66
+ *
67
+ * @since m2m
68
+ */
69
+ private function set_many_to_many_disabled() {
70
+ $option_parent = new Toolset_Shortcode_Attr_Item_Gui_Option(
71
+ $this->relationship_definition,
72
+ Toolset_Relationship_Role::PARENT,
73
+ $this
74
+ );
75
+ $option_parent->set_property( 'is_disabled', true );
76
+ $option_parent->set_property(
77
+ 'pointer_content',
78
+ '<h3>' . sprintf(
79
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
80
+ $this->relationship_definition->get_display_name()
81
+ ) . '</h3><p>' . sprintf(
82
+ __( 'To display the %1$s that are connected to each %2$s, you will need to create a View.', 'wpv-views' ),
83
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
84
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT, true ) . '</strong>'
85
+ ) . '</p><p>' . sprintf(
86
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
87
+ '<a href="'
88
+ . $this->get_documentation_link(
89
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
90
+ array(
91
+ 'utm_source' => 'postselector',
92
+ 'utm_campaign' => 'm2m',
93
+ 'utm_medium' => 'post-selector-documentation-link',
94
+ 'utm_term' => 'Documentation'
95
+ ),
96
+ 'displaying-many-related-items'
97
+ )
98
+ . '" target="_blank">',
99
+ '<i class="fa fa-external-link"></i>',
100
+ '</a>'
101
+ ) . '</p>'
102
+ );
103
+ $this->options[] = $option_parent->get_option();
104
+
105
+ $option_child = new Toolset_Shortcode_Attr_Item_Gui_Option(
106
+ $this->relationship_definition,
107
+ Toolset_Relationship_Role::CHILD,
108
+ $this
109
+ );
110
+ $option_child->set_property( 'is_disabled', true );
111
+ $option_child->set_property(
112
+ 'pointer_content',
113
+ '<h3>' . sprintf(
114
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
115
+ $this->relationship_definition->get_display_name()
116
+ ) . '</h3><p>' . sprintf(
117
+ __( 'To display the %1$s that are connected to each %2$s, you will need to create a View.', 'wpv-views' ),
118
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT ) . '</strong>',
119
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD, true ) . '</strong>'
120
+ ) . '</p><p>' . sprintf(
121
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
122
+ '<a href="'
123
+ . $this->get_documentation_link(
124
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
125
+ array(
126
+ 'utm_source' => 'postselector',
127
+ 'utm_campaign' => 'm2m',
128
+ 'utm_medium' => 'post-selector-documentation-link',
129
+ 'utm_term' => 'Documentation'
130
+ ),
131
+ 'displaying-many-related-items'
132
+ )
133
+ . '" target="_blank">',
134
+ '<i class="fa fa-external-link"></i>',
135
+ '</a>'
136
+ ) . '</p>'
137
+ );
138
+ $this->options[] = $option_child->get_option();
139
+
140
+ if ( null != $this->intermediary_type ) {
141
+
142
+ $option_intermediary = new Toolset_Shortcode_Attr_Item_Gui_Option(
143
+ $this->relationship_definition,
144
+ Toolset_Relationship_Role::INTERMEDIARY,
145
+ $this
146
+ );
147
+ $option_intermediary->set_property( 'is_disabled', true );
148
+ $option_intermediary->set_property(
149
+ 'pointer_content',
150
+ '<h3>' . sprintf(
151
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
152
+ $this->relationship_definition->get_display_name()
153
+ ) . '</h3><p>' . sprintf(
154
+ __( '%1$s connects with %2$s through %3$s.', 'wpv-views' ),
155
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT ) . '</strong>',
156
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
157
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>'
158
+ ) . '</p><p>' . sprintf(
159
+ __( 'To display %1$s you need to use a View that will list %2$s or %3$s and include a filter by the %4$s relationship.', 'wpv-views' ),
160
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>',
161
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT ) . '</strong>',
162
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
163
+ $this->relationship_definition->get_display_name()
164
+ ) . '</p><p>' . sprintf(
165
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
166
+ '<a href="'
167
+ . $this->get_documentation_link(
168
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
169
+ array(
170
+ 'utm_source' => 'postselector',
171
+ 'utm_campaign' => 'm2m',
172
+ 'utm_medium' => 'post-selector-documentation-link',
173
+ 'utm_term' => 'Documentation'
174
+ ),
175
+ 'displaying-many-related-items'
176
+ )
177
+ . '" target="_blank">',
178
+ '<i class="fa fa-external-link"></i>',
179
+ '</a>'
180
+ ) . '</p>'
181
+ );
182
+ $this->options[] = $option_intermediary->get_option();
183
+
184
+ }
185
+ }
186
+
187
+
188
+ /**
189
+ * Set the post selector options in Views and WPAs loops.
190
+ *
191
+ * In those cases, you can:
192
+ * - display parent and child data from the IPT.
193
+ * - display the IPT data from parent and child posts when the association is well defined.
194
+ *
195
+ * @since m2m
196
+ */
197
+ private function set_many_to_many_view_loop() {
198
+ $option_parent = new Toolset_Shortcode_Attr_Item_Gui_Option(
199
+ $this->relationship_definition,
200
+ Toolset_Relationship_Role::PARENT,
201
+ $this
202
+ );
203
+ $option_parent->set_property(
204
+ 'pointer_content',
205
+ '<h3>' . sprintf(
206
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
207
+ $this->relationship_definition->get_display_name()
208
+ ) . '</h3><p>' . sprintf(
209
+ __( 'You can display the related %1$s if this View is set to display %2$s.', 'wpv-views' ),
210
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT, true ) . '</strong>',
211
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>'
212
+ ) . '</p><p>' . sprintf(
213
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
214
+ '<a href="'
215
+ . $this->get_documentation_link(
216
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
217
+ array(
218
+ 'utm_source' => 'postselector',
219
+ 'utm_campaign' => 'm2m',
220
+ 'utm_medium' => 'post-selector-documentation-link',
221
+ 'utm_term' => 'Documentation'
222
+ ),
223
+ 'displaying-many-related-items'
224
+ )
225
+ . '" target="_blank">',
226
+ '<i class="fa fa-external-link"></i>',
227
+ '</a>'
228
+ ) . '</p>'
229
+ );
230
+ $this->options[] = $option_parent->get_option();
231
+
232
+ $option_child = new Toolset_Shortcode_Attr_Item_Gui_Option(
233
+ $this->relationship_definition,
234
+ Toolset_Relationship_Role::CHILD,
235
+ $this
236
+ );
237
+ $option_child->set_property(
238
+ 'pointer_content',
239
+ '<h3>' . sprintf(
240
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
241
+ $this->relationship_definition->get_display_name()
242
+ ) . '</h3><p>' . sprintf(
243
+ __( 'You can display the related %1$s if this View is set to display %2$s.', 'wpv-views' ),
244
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD, true ) . '</strong>',
245
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>'
246
+ ) . '</p><p>' . sprintf(
247
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
248
+ '<a href="'
249
+ . $this->get_documentation_link(
250
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
251
+ array(
252
+ 'utm_source' => 'postselector',
253
+ 'utm_campaign' => 'm2m',
254
+ 'utm_medium' => 'post-selector-documentation-link',
255
+ 'utm_term' => 'Documentation'
256
+ ),
257
+ 'displaying-many-related-items'
258
+ )
259
+ . '" target="_blank">',
260
+ '<i class="fa fa-external-link"></i>',
261
+ '</a>'
262
+ ) . '</p>'
263
+ );
264
+ $this->options[] = $option_child->get_option();
265
+
266
+ $option_intermediary = new Toolset_Shortcode_Attr_Item_Gui_Option(
267
+ $this->relationship_definition,
268
+ Toolset_Relationship_Role::INTERMEDIARY,
269
+ $this
270
+ );
271
+ $option_intermediary->set_property(
272
+ 'pointer_content',
273
+ '<h3>' . sprintf(
274
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
275
+ $this->relationship_definition->get_display_name()
276
+ ) . '</h3><p>' . sprintf(
277
+ __( 'You can display the related %1$s if this View is set to display %2$s or %3$s and has a filter by the %4$s relationship.', 'wpv-views' ),
278
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY, true ) . '</strong>',
279
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT ) . '</strong>',
280
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
281
+ $this->relationship_definition->get_display_name()
282
+ ) . '</p><p>' . sprintf(
283
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
284
+ '<a href="'
285
+ . $this->get_documentation_link(
286
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
287
+ array(
288
+ 'utm_source' => 'postselector',
289
+ 'utm_campaign' => 'm2m',
290
+ 'utm_medium' => 'post-selector-documentation-link',
291
+ 'utm_term' => 'Documentation'
292
+ ),
293
+ 'displaying-many-related-items'
294
+ )
295
+ . '" target="_blank">',
296
+ '<i class="fa fa-external-link"></i>',
297
+ '</a>'
298
+ ) . '</p>'
299
+ );
300
+ $this->options[] = $option_intermediary->get_option();
301
+ }
302
+
303
+
304
+ /**
305
+ * Set the post selector options in Content Templates.
306
+ *
307
+ * In this case, you can:
308
+ * - display parent and child data from the IPT.
309
+ *
310
+ * @since m2m
311
+ */
312
+ private function set_many_to_many_content_template() {
313
+ $option_parent = new Toolset_Shortcode_Attr_Item_Gui_Option(
314
+ $this->relationship_definition,
315
+ Toolset_Relationship_Role::PARENT,
316
+ $this
317
+ );
318
+ $option_parent->set_property(
319
+ 'pointer_content',
320
+ '<h3>' . sprintf(
321
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
322
+ $this->relationship_definition->get_display_name()
323
+ ) . '</h3><p>' . sprintf(
324
+ __( 'You can display the related %1$s if this Content Template is set to display %2$s.', 'wpv-views' ),
325
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT, true ) . '</strong>',
326
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>'
327
+ ) . '</p><p>' . sprintf(
328
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
329
+ '<a href="'
330
+ . $this->get_documentation_link(
331
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
332
+ array(
333
+ 'utm_source' => 'postselector',
334
+ 'utm_campaign' => 'm2m',
335
+ 'utm_medium' => 'post-selector-documentation-link',
336
+ 'utm_term' => 'Documentation'
337
+ ),
338
+ 'displaying-many-related-items'
339
+ )
340
+ . '" target="_blank">',
341
+ '<i class="fa fa-external-link"></i>',
342
+ '</a>'
343
+ ) . '</p>'
344
+ );
345
+ $this->options[] = $option_parent->get_option();
346
+
347
+ $option_child = new Toolset_Shortcode_Attr_Item_Gui_Option(
348
+ $this->relationship_definition,
349
+ Toolset_Relationship_Role::CHILD,
350
+ $this
351
+ );
352
+ $option_child->set_property(
353
+ 'pointer_content',
354
+ '<h3>' . sprintf(
355
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
356
+ $this->relationship_definition->get_display_name()
357
+ ) . '</h3><p>' . sprintf(
358
+ __( 'You can display the related %1$s if this Content Template is set to display %2$s.', 'wpv-views' ),
359
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD, true ) . '</strong>',
360
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>'
361
+ ) . '</p><p>' . sprintf(
362
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
363
+ '<a href="'
364
+ . $this->get_documentation_link(
365
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
366
+ array(
367
+ 'utm_source' => 'postselector',
368
+ 'utm_campaign' => 'm2m',
369
+ 'utm_medium' => 'post-selector-documentation-link',
370
+ 'utm_term' => 'Documentation'
371
+ ),
372
+ 'displaying-many-related-items'
373
+ )
374
+ . '" target="_blank">',
375
+ '<i class="fa fa-external-link"></i>',
376
+ '</a>'
377
+ ) . '</p>'
378
+ );
379
+ $this->options[] = $option_child->get_option();
380
+
381
+ if ( null != $this->intermediary_type ) {
382
+
383
+ $option_intermediary = new Toolset_Shortcode_Attr_Item_Gui_Option(
384
+ $this->relationship_definition,
385
+ Toolset_Relationship_Role::INTERMEDIARY,
386
+ $this
387
+ );
388
+ $option_intermediary->set_property( 'is_disabled', true );
389
+ $option_intermediary->set_property(
390
+ 'pointer_content',
391
+ '<h3>' . sprintf(
392
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
393
+ $this->relationship_definition->get_display_name()
394
+ ) . '</h3><p>' . sprintf(
395
+ __( '%1$s connects with %2$s through %3$s.', 'wpv-views' ),
396
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT ) . '</strong>',
397
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
398
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>'
399
+ ) . '</p><p>' . sprintf(
400
+ __( 'To display %1$s you need to use a View that will list %2$s or %3$s and include a filter by the %4$s relationship.', 'wpv-views' ),
401
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY ) . '</strong>',
402
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT ) . '</strong>',
403
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
404
+ $this->relationship_definition->get_display_name()
405
+ ) . '</p><p>' . sprintf(
406
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
407
+ '<a href="'
408
+ . $this->get_documentation_link(
409
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
410
+ array(
411
+ 'utm_source' => 'postselector',
412
+ 'utm_campaign' => 'm2m',
413
+ 'utm_medium' => 'post-selector-documentation-link',
414
+ 'utm_term' => 'Documentation'
415
+ )
416
+ )
417
+ . '" target="_blank">',
418
+ '<i class="fa fa-external-link"></i>',
419
+ '</a>'
420
+ ) . '</p>'
421
+ );
422
+ $this->options[] = $option_intermediary->get_option();
423
+
424
+ }
425
+ }
426
+
427
+
428
+ /**
429
+ * Set the post selector options when editing an IPT.
430
+ *
431
+ * In this case, you can:
432
+ * - display parent and child data from the IPT.
433
+ *
434
+ * @since m2m
435
+ */
436
+ private function set_many_to_many_current_intermediary() {
437
+ $option_parent = new Toolset_Shortcode_Attr_Item_Gui_Option(
438
+ $this->relationship_definition,
439
+ Toolset_Relationship_Role::PARENT,
440
+ $this
441
+ );
442
+ $option_parent->set_property(
443
+ 'pointer_content',
444
+ '<h3>' . sprintf(
445
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
446
+ $this->relationship_definition->get_display_name()
447
+ ) . '</h3><p>' . sprintf(
448
+ __( 'You can display the related %1$s for the current %2$s.', 'wpv-views' ),
449
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT, true ) . '</strong>',
450
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY, true ) . '</strong>'
451
+ ) . '</p>'
452
+ );
453
+ $this->options[] = $option_parent->get_option();
454
+
455
+ $option_child = new Toolset_Shortcode_Attr_Item_Gui_Option(
456
+ $this->relationship_definition,
457
+ Toolset_Relationship_Role::CHILD,
458
+ $this
459
+ );
460
+ $option_child->set_property(
461
+ 'pointer_content',
462
+ '<h3>' . sprintf(
463
+ __( '%1$s (many-to-many relationship)', 'wpv-views' ),
464
+ $this->relationship_definition->get_display_name()
465
+ ) . '</h3><p>' . sprintf(
466
+ __( 'You can display the related %1$s for the current %2$s.', 'wpv-views' ),
467
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD, true ) . '</strong>',
468
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::INTERMEDIARY, true ) . '</strong>'
469
+ ) . '</p>'
470
+ );
471
+ $this->options[] = $option_child->get_option();
472
+ }
473
+
474
+ }
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2m.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * item attribute GUI selector provider for one-to-many relationships.
5
+ *
6
+ * @since m2m
7
+ */
8
+ class Toolset_Shortcode_Attr_Item_Gui_O2m extends Toolset_Shortcode_Attr_Item_Gui_Base {
9
+
10
+
11
+ /**
12
+ * Set options for post selectors on O2M relationships.
13
+ *
14
+ * @since m2m
15
+ */
16
+ protected function set_options() {
17
+ $origin = $this->relationship_definition->get_origin()->get_origin_keyword();
18
+
19
+ if ( Toolset_Relationship_Origin_Post_Reference_Field::ORIGIN_KEYWORD === $origin ) {
20
+ $this->set_parent_reference_option();
21
+ } else {
22
+ $this->set_parent_option();
23
+ $this->set_child_option();
24
+ }
25
+ }
26
+
27
+ protected function set_parent_reference_option() {
28
+ if (
29
+ null === $this->current_post_object
30
+ || ! in_array( $this->current_post_object->name, $this->parent_types )
31
+ ) {
32
+ $option = new Toolset_Shortcode_Attr_Item_Gui_Option(
33
+ $this->relationship_definition,
34
+ Toolset_Relationship_Role::PARENT,
35
+ $this
36
+ );
37
+ $this->options[] = $option->get_option();
38
+
39
+ }
40
+ }
41
+
42
+ protected function set_parent_option() {
43
+ if (
44
+ null === $this->current_post_object
45
+ || ! in_array( $this->current_post_object->name, $this->parent_types )
46
+ ) {
47
+ $option = new Toolset_Shortcode_Attr_Item_Gui_Option(
48
+ $this->relationship_definition,
49
+ Toolset_Relationship_Role::PARENT,
50
+ $this
51
+ );
52
+
53
+ $this->options[] = $option->get_option();
54
+
55
+ }
56
+ }
57
+
58
+ private function set_child_option() {
59
+ $option = new Toolset_Shortcode_Attr_Item_Gui_Option(
60
+ $this->relationship_definition,
61
+ Toolset_Relationship_Role::CHILD,
62
+ $this
63
+ );
64
+ $option->set_property( 'is_disabled', true );
65
+ $option->set_property(
66
+ 'pointer_content',
67
+ '<h3>' . sprintf(
68
+ __( '%1$s (one-to-many relationship)', 'wpv-views' ),
69
+ $this->relationship_definition->get_display_name()
70
+ ) . '</h3><p>' . sprintf(
71
+ __( 'To display the %1$s that are connected to each %2$s, you will need to create a View.', 'wpv-views' ),
72
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::CHILD ) . '</strong>',
73
+ '<strong>' . $this->get_post_type_label_by_role( Toolset_Relationship_Role::PARENT, true ) . '</strong>'
74
+ ) . '</p><p>' . sprintf(
75
+ __( '%1$sDocumentation %2$s%3$s', 'wpv-views' ),
76
+ '<a href="'
77
+ . $this->get_documentation_link(
78
+ 'https://toolset.com/documentation/post-relationships/how-to-display-related-posts-with-toolset/',
79
+ array(
80
+ 'utm_source' => 'postselector',
81
+ 'utm_campaign' => 'm2m',
82
+ 'utm_medium' => 'post-selector-documentation-link',
83
+ 'utm_term' => 'Documentation'
84
+ ),
85
+ 'displaying-many-related-items'
86
+ )
87
+ . '" target="_blank">',
88
+ '<i class="fa fa-external-link"></i>',
89
+ '</a>'
90
+ ) . '</p>'
91
+ );
92
+
93
+ $this->options[] = $option->get_option();
94
+ }
95
+
96
+ }
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/o2o.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * item attribute GUI selector provider for one-to-one relationships.
5
+ *
6
+ * @since m2m
7
+ */
8
+ class Toolset_Shortcode_Attr_Item_Gui_O2o extends Toolset_Shortcode_Attr_Item_Gui_Base {
9
+
10
+
11
+ /**
12
+ * Set options for post selectors on O2O relationships.
13
+ *
14
+ * @since m2m
15
+ */
16
+ protected function set_options() {
17
+ if (
18
+ null != $this->current_post_object
19
+ && in_array( $this->current_post_object->name, $this->parent_types )
20
+ ) {
21
+ $this->set_one_to_one_current_parent();
22
+ return;
23
+ }
24
+
25
+ if (
26
+ null != $this->current_post_object
27
+ && in_array( $this->current_post_object->name, $this->child_types )
28
+ ) {
29
+ $this->set_one_to_one_current_child();
30
+ return;
31
+ }
32
+
33
+ $option_parent = new Toolset_Shortcode_Attr_Item_Gui_Option(
34
+ $this->relationship_definition,
35
+ Toolset_Relationship_Role::PARENT,
36
+ $this
37
+ );
38
+ $this->options[] = $option_parent->get_option();
39
+
40
+ $option_child = new Toolset_Shortcode_Attr_Item_Gui_Option(
41
+ $this->relationship_definition,
42
+ Toolset_Relationship_Role::CHILD,
43
+ $this
44
+ );
45
+ $this->options[] = $option_child->get_option();
46
+ return;
47
+ }
48
+
49
+
50
+ /**
51
+ * Set the post selector options when editing a parent post type.
52
+ *
53
+ * In this case, you can display the child post data.
54
+ *
55
+ * @since m2m
56
+ */
57
+ private function set_one_to_one_current_parent() {
58
+ $option_child = new Toolset_Shortcode_Attr_Item_Gui_Option(
59
+ $this->relationship_definition,
60
+ Toolset_Relationship_Role::CHILD,
61
+ $this
62
+ );
63
+ $this->options[] = $option_child->get_option();
64
+ }
65
+
66
+
67
+ /**
68
+ * Set the post selector options when editing a child post type.
69
+ *
70
+ * In this case, you can display the parent post data.
71
+ *
72
+ * @since m2m
73
+ */
74
+ private function set_one_to_one_current_child() {
75
+ $option_parent = new Toolset_Shortcode_Attr_Item_Gui_Option(
76
+ $this->relationship_definition,
77
+ Toolset_Relationship_Role::PARENT,
78
+ $this
79
+ );
80
+ $this->options[] = $option_parent->get_option();
81
+ }
82
+
83
+ }
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/gui/option.php ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Viewmodel for the item attribute GUI selector options.
5
+ *
6
+ * @since m2m
7
+ *
8
+ * @todo Remove the dependency of the Toolset_Shortcode_Attr_Item_Gui_Base $provider: it only passes a name and a label
9
+ * @todo This should include a method to return and/or print the output using a template, and
10
+ * Toolset_Shortcode_Attr_Item_Gui_Base::$options should be a Toolset_Shortcode_Attr_Item_Gui_Option[]
11
+ */
12
+ class Toolset_Shortcode_Attr_Item_Gui_Option {
13
+
14
+
15
+ /**
16
+ * @var string[]
17
+ */
18
+ private $public_properties = array(
19
+ 'is_checked', 'is_disabled', 'pointer_content'
20
+ );
21
+
22
+
23
+ /**
24
+ * @var string
25
+ */
26
+ private $id;
27
+
28
+
29
+ /**
30
+ * @var string
31
+ */
32
+ private $value;
33
+
34
+
35
+ /**
36
+ * @var bool
37
+ */
38
+ private $is_checked = false;
39
+
40
+
41
+ /**
42
+ * @var bool
43
+ */
44
+ private $is_disabled = false;
45
+
46
+
47
+ /**
48
+ * @var string
49
+ */
50
+ private $pointer_content = '';
51
+
52
+
53
+ /**
54
+ * @var Toolset_Relationship_Definition
55
+ */
56
+ private $relationship_definition;
57
+
58
+
59
+ /**
60
+ * @var string
61
+ */
62
+ private $role;
63
+
64
+
65
+ /**
66
+ * @var string
67
+ */
68
+ private $origin;
69
+
70
+
71
+ /**
72
+ * @var Toolset_Shortcode_Attr_Item_Gui_Base
73
+ */
74
+ private $provider;
75
+
76
+
77
+ function __construct(
78
+ Toolset_Relationship_Definition $relationship_definition,
79
+ $role,
80
+ Toolset_Shortcode_Attr_Item_Gui_Base $provider
81
+ ) {
82
+ $this->relationship_definition = $relationship_definition;
83
+ $this->role = $role;
84
+ $this->provider = $provider;
85
+
86
+ $this->origin = $this->relationship_definition->get_origin()->get_origin_keyword();
87
+
88
+ $this->set_data();
89
+ }
90
+
91
+
92
+ /**
93
+ * Set the basic option data: id and value.
94
+ *
95
+ * @since m2m
96
+ */
97
+ private function set_data() {
98
+ $this->id = $this->relationship_definition->get_slug() . '-' . $this->role;
99
+ $this->value = '@' . $this->relationship_definition->get_slug() . '.' . $this->role;
100
+ }
101
+
102
+
103
+ /**
104
+ * Public setter for expected properties.
105
+ *
106
+ * @param string $property
107
+ * @param mixed $value
108
+ *
109
+ * @since m2m
110
+ */
111
+ public function set_property( $property, $value ) {
112
+ if ( ! in_array( $property, $this->public_properties ) ) {
113
+ return;
114
+ }
115
+ $this->{$property} = $value;
116
+ }
117
+
118
+
119
+ /**
120
+ * Get the option name attribute.
121
+ *
122
+ * @return string
123
+ *
124
+ * @since m2m
125
+ */
126
+ private function get_option_name() {
127
+ return $this->provider->get_option_name();
128
+ }
129
+
130
+
131
+ /**
132
+ * Get the option label.
133
+ *
134
+ * @return string
135
+ *
136
+ * @since m2m
137
+ */
138
+ private function get_label() {
139
+ return ( Toolset_Relationship_Origin_Post_Reference_Field::ORIGIN_KEYWORD === $this->origin )
140
+ ? sprintf(
141
+ __( '%1$s (from %2$s)', 'wpv-views' ),
142
+ $this->provider->get_post_type_label_by_role( $this->role ),
143
+ $this->relationship_definition->get_display_name()
144
+ )
145
+ : $this->provider->get_post_type_label_by_role( $this->role );
146
+ }
147
+
148
+
149
+ /**
150
+ * Get the option output.
151
+ *
152
+ * @return string
153
+ *
154
+ * @since m2m
155
+ */
156
+ public function get_option() {
157
+ $option = '';
158
+
159
+ $option .= sprintf(
160
+ '<label for="toolset-shortcode-gui-item-selector-post-relationship-id-%1$s"%2$s>',
161
+ esc_attr( $this->id ),
162
+ ( $this->is_disabled ? ' class="toolset-option-label-disabled"' : '' )
163
+ );
164
+ $option .= sprintf(
165
+ '<input type="radio" name="%s" id="toolset-shortcode-gui-item-selector-post-relationship-id-%s" value="%s" %s %s />',
166
+ esc_attr( $this->get_option_name() ),
167
+ esc_attr( $this->id ),
168
+ esc_attr( $this->value ),
169
+ checked( $this->is_checked, true, false ),
170
+ disabled( $this->is_disabled, true, false )
171
+ );
172
+ $option .= esc_html( $this->get_label() );
173
+ if ( ! empty( $this->pointer_content ) ) {
174
+ $option .= ' <i class="fa fa-question-circle wp-toolset-pointer-trigger js-wp-toolset-shortcode-pointer-trigger" style="vertical-align:baseline"></i>';
175
+ }
176
+ $option .= '</label>';
177
+ if ( ! empty( $this->pointer_content ) ) {
178
+ $option .= '<div class="js-wp-toolset-shortcode-pointer-content" style="display:none">';
179
+ $option .= $this->pointer_content;
180
+ $option .= '</div>';
181
+ }
182
+
183
+ return $option;
184
+ }
185
+
186
+ }
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/legacy.php CHANGED
@@ -64,6 +64,39 @@ class Toolset_Shortcode_Attr_Item_Legacy extends Toolset_Shortcode_Attr_Item_Id
64
 
65
  return $this->chain_link->get( $data );
66
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
 
68
  if( ! apply_filters( 'toolset_is_m2m_enabled', false ) ) {
69
  // m2m disabled
64
 
65
  return $this->chain_link->get( $data );
66
  }
67
+
68
+ if( $role_slug == 'current_page' ) {
69
+ if ( is_single() || is_page() ) {
70
+ global $wp_query;
71
+ if ( isset( $wp_query->posts[0] ) ) {
72
+ $current_post = $wp_query->posts[0];
73
+ return $this->return_single_id( $current_post->ID );
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Get the current top post.
79
+ *
80
+ * Some Toolset plugins might need to set the top current post under some scenarios,
81
+ * like Toolset Views when doing AJAX pagination or AJAX custom search.
82
+ * In those cases, they can use this filter to get the top current post they are setting
83
+ * and override the ID to apply as the $current_page value.
84
+ *
85
+ * @not Toolset plugins should set this just in time, not globally, when needed, meaning AJAX calls or whatever.
86
+ *
87
+ * @param $top_post null
88
+ *
89
+ * @return $top_post null/WP_Post object The top current post, if set by any Toolset plugin.
90
+ *
91
+ * @since 2.3.0
92
+ */
93
+ $top_current_post = apply_filters( 'toolset_filter_get_top_current_post', null );
94
+ if ( $top_current_post ) {
95
+ return $this->return_single_id( $top_current_post->ID );
96
+ }
97
+
98
+ return $this->chain_link->get( $data );
99
+ }
100
 
101
  if( ! apply_filters( 'toolset_is_m2m_enabled', false ) ) {
102
  // m2m disabled
vendor/toolset/toolset-common/inc/autoloaded/shortcode/attr/item/m2m.php CHANGED
@@ -81,6 +81,11 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
81
  }
82
 
83
 
 
 
 
 
 
84
  // no child, check if intermediary is requested
85
  if ( $id = $this->get_intermediary_id( $request_relationship, $request_role_name, $post ) ) {
86
  return $this->return_single_id( $id );
@@ -99,7 +104,10 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
99
  private function get_parent_id( $request_relationship, $request_role_name, $post ) {
100
  $parent_types = $request_relationship->get_parent_type()->get_types();
101
 
102
- if ( $request_role_name == 'parent' && count( $parent_types ) == 1 ) {
 
 
 
103
  // 'parent' is used as item slug, only works if there is just one parent type
104
  $request_role_name = current( $parent_types );
105
  }
@@ -107,6 +115,18 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
107
  if ( array_key_exists( $request_role_name, $parent_types )
108
  || in_array( $request_role_name, $parent_types )
109
  ) {
 
 
 
 
 
 
 
 
 
 
 
 
110
  $parent_id = $this->service_relationship->find_parent_id_by_relationship_and_child_id(
111
  $request_relationship,
112
  $post->ID,
@@ -116,9 +136,13 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
116
  return $this->return_single_id( $parent_id );
117
  }
118
 
 
 
119
  return false;
120
  }
121
 
 
 
122
  /**
123
  * @param $request_relationship
124
  * @param $request_role_name
@@ -129,7 +153,10 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
129
  private function get_child_id( IToolset_Relationship_Definition $request_relationship, $request_role_name, $post ) {
130
  $child_types = $request_relationship->get_child_type()->get_types();
131
 
132
- if ( $request_role_name == 'child' && count( $child_types ) == 1 ) {
 
 
 
133
  // 'child' is used as item slug, only works if there is just one child type
134
  $request_role_name = current( $child_types );
135
  }
@@ -137,6 +164,17 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
137
  if ( array_key_exists( $request_role_name, $child_types )
138
  || in_array( $request_role_name, $child_types )
139
  ) {
 
 
 
 
 
 
 
 
 
 
 
140
  $child_id = $this->service_relationship->find_child_id_by_relationship_and_parent_id(
141
  $request_relationship,
142
  $post->ID,
@@ -145,6 +183,8 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
145
 
146
  return $this->return_single_id( $child_id );
147
  }
 
 
148
  }
149
 
150
  /**
@@ -154,9 +194,15 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
154
  *
155
  * @return bool|int
156
  */
157
- private function get_intermediary_id( IToolset_Relationship_Definition $request_relationship, $request_role_name, $post ) {
 
 
 
 
 
 
158
  if ( $request_role_name != 'association'
159
- && $request_role_name != $request_relationship->get_driver()->get_intermediary_post_type()
160
  ) {
161
  return false;
162
  }
@@ -197,6 +243,103 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
197
  return false;
198
  }
199
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  /**
201
  * @param $intermediary
202
  *
@@ -213,4 +356,4 @@ class Toolset_Shortcode_Attr_Item_M2M extends Toolset_Shortcode_Attr_Item_Id {
213
 
214
  return $intermediary->get_intermediary_id();
215
  }
216
- }
81
  }
82
 
83
 
84
+ // no child, check if association is requested
85
+ if ( $id = $this->get_association_id( $request_relationship, $request_role_name, $post ) ) {
86
+ return $this->return_single_id( $id );
87
+ }
88
+
89
  // no child, check if intermediary is requested
90
  if ( $id = $this->get_intermediary_id( $request_relationship, $request_role_name, $post ) ) {
91
  return $this->return_single_id( $id );
104
  private function get_parent_id( $request_relationship, $request_role_name, $post ) {
105
  $parent_types = $request_relationship->get_parent_type()->get_types();
106
 
107
+ if (
108
+ ( Toolset_Relationship_Role::PARENT === $request_role_name || $request_relationship->get_role_name( Toolset_Relationship_Role::PARENT ) === $request_role_name )
109
+ && count( $parent_types ) === 1
110
+ ) {
111
  // 'parent' is used as item slug, only works if there is just one parent type
112
  $request_role_name = current( $parent_types );
113
  }
115
  if ( array_key_exists( $request_role_name, $parent_types )
116
  || in_array( $request_role_name, $parent_types )
117
  ) {
118
+ $intermediary_post_type = $request_relationship->get_intermediary_post_type();
119
+
120
+ if ( $intermediary_post_type === $post->post_type ) {
121
+ $parent_id = $this->service_relationship->find_parent_id_by_relationship_and_intermediary_post_id(
122
+ $request_relationship,
123
+ $post->ID
124
+ );
125
+
126
+ return $this->return_single_id( $parent_id );
127
+ }
128
+
129
+
130
  $parent_id = $this->service_relationship->find_parent_id_by_relationship_and_child_id(
131
  $request_relationship,
132
  $post->ID,
136
  return $this->return_single_id( $parent_id );
137
  }
138
 
139
+
140
+
141
  return false;
142
  }
143
 
144
+
145
+
146
  /**
147
  * @param $request_relationship
148
  * @param $request_role_name
153
  private function get_child_id( IToolset_Relationship_Definition $request_relationship, $request_role_name, $post ) {
154
  $child_types = $request_relationship->get_child_type()->get_types();
155
 
156
+ if (
157
+ ( Toolset_Relationship_Role::CHILD === $request_role_name || $request_relationship->get_role_name( Toolset_Relationship_Role::CHILD ) === $request_role_name )
158
+ && count( $child_types ) === 1
159
+ ) {
160
  // 'child' is used as item slug, only works if there is just one child type
161
  $request_role_name = current( $child_types );
162
  }
164
  if ( array_key_exists( $request_role_name, $child_types )
165
  || in_array( $request_role_name, $child_types )
166
  ) {
167
+ $intermediary_post_type = $request_relationship->get_intermediary_post_type();
168
+
169
+ if ( $intermediary_post_type === $post->post_type ) {
170
+ $child_id = $this->service_relationship->find_child_id_by_relationship_and_intermediary_post_id(
171
+ $request_relationship,
172
+ $post->ID
173
+ );
174
+
175
+ return $this->return_single_id( $child_id );
176
+ }
177
+
178
  $child_id = $this->service_relationship->find_child_id_by_relationship_and_parent_id(
179
  $request_relationship,
180
  $post->ID,
183
 
184
  return $this->return_single_id( $child_id );
185
  }
186
+
187
+ return false;
188
  }
189
 
190
  /**
194
  *
195
  * @return bool|int
196
  */
197
+ private function get_association_id( IToolset_Relationship_Definition $request_relationship, $request_role_name, $post ) {
198
+ $intermediary_post_type = $request_relationship->get_driver()->get_intermediary_post_type();
199
+
200
+ if ( null === $intermediary_post_type ) {
201
+ return false;
202
+ }
203
+
204
  if ( $request_role_name != 'association'
205
+ && $request_role_name != $intermediary_post_type
206
  ) {
207
  return false;
208
  }
243
  return false;
244
  }
245
 
246
+ /**
247
+ * Get the intermediary post ID when in a View loop with a filter by post relationship.
248
+ *
249
+ * @param $request_relationship
250
+ * @param $request_role_name
251
+ * @param $post
252
+ *
253
+ * @return bool|int
254
+ */
255
+ private function get_intermediary_id( IToolset_Relationship_Definition $request_relationship, $request_role_name, $post ) {
256
+ $intermediary_post_type = $request_relationship->get_driver()->get_intermediary_post_type();
257
+
258
+ if ( null === $intermediary_post_type ) {
259
+ return false;
260
+ }
261
+
262
+ if (
263
+ $request_role_name != Toolset_Relationship_Role::INTERMEDIARY
264
+ && $request_role_name != $intermediary_post_type
265
+ ) {
266
+ return false;
267
+ }
268
+
269
+ // Try to guess the intermediary post by a Views filter by post relationship
270
+ $post_owner_data = apply_filters( 'wpv_filter_wpv_get_current_post_relationship_frontend_filter_post_owner_data', false );
271
+
272
+ if ( $post_owner_data ) {
273
+ $related_item_one = false;
274
+ foreach( $post_owner_data as $post_type => $post_candidate_list ) {
275
+ if ( count( $post_candidate_list ) > 0 ) {
276
+ $related_item_one = current( $post_candidate_list );
277
+ break;
278
+ }
279
+ }
280
+
281
+ if ( $related_item_one ) {
282
+ $related_item_two = $post->ID;
283
+
284
+ $association_query = new Toolset_Association_Query_V2();
285
+ $association_query->add( $association_query->relationship( $request_relationship ) );
286
+
287
+ // Get associations in this relationship where both:
288
+ // - item one is parent or intermediary or child
289
+ // - item two is parent or intermediary or child
290
+ // Deal with it :-P
291
+ $association_query->add(
292
+ $association_query->do_and(
293
+ $association_query->do_or(
294
+ $association_query->element_id_and_domain(
295
+ $related_item_one,
296
+ Toolset_Element_Domain::POSTS,
297
+ new Toolset_Relationship_Role_Parent()
298
+ ),
299
+ $association_query->element_id_and_domain(
300
+ $related_item_one,
301
+ Toolset_Element_Domain::POSTS,
302
+ new Toolset_Relationship_Role_Intermediary()
303
+ ),
304
+ $association_query->element_id_and_domain(
305
+ $related_item_one,
306
+ Toolset_Element_Domain::POSTS,
307
+ new Toolset_Relationship_Role_Child()
308
+ )
309
+ ),
310
+ $association_query->do_or(
311
+ $association_query->element_id_and_domain(
312
+ $related_item_two,
313
+ Toolset_Element_Domain::POSTS,
314
+ new Toolset_Relationship_Role_Parent()
315
+ ),
316
+ $association_query->element_id_and_domain(
317
+ $related_item_two,
318
+ Toolset_Element_Domain::POSTS,
319
+ new Toolset_Relationship_Role_Intermediary()
320
+ ),
321
+ $association_query->element_id_and_domain(
322
+ $related_item_two,
323
+ Toolset_Element_Domain::POSTS,
324
+ new Toolset_Relationship_Role_Child()
325
+ )
326
+ )
327
+ )
328
+ );
329
+ $association_query->limit( 1 );
330
+
331
+ $associations = $association_query->get_results();
332
+
333
+ if ( $intermediary = $this->get_single_intermediary_id( $associations ) ) {
334
+ return $intermediary;
335
+ };
336
+ }
337
+ }
338
+
339
+ // no unique intermediary post found
340
+ return false;
341
+ }
342
+
343
  /**
344
  * @param $intermediary
345
  *
356
 
357
  return $intermediary->get_intermediary_id();
358
  }
359
+ }
vendor/toolset/toolset-common/inc/autoloaded/upgrade/command/delete_obsolete_version_number_option.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Delete an options which were used in the previous upgrade mechanism implementation.
5
+ *
6
+ * @since 2.6.5
7
+ */
8
+ class Toolset_Upgrade_Command_Delete_Obsolete_Upgrade_Options implements IToolset_Upgrade_Command {
9
+
10
+
11
+ /**
12
+ * Run the command.
13
+ *
14
+ * @return Toolset_Result|Toolset_Result_Set
15
+ */
16
+ public function run() {
17
+ delete_option( 'toolset_database_version' );
18
+
19
+ // This is still used but we need to reset it.
20
+ /** @var Toolset_Upgrade_Executed_Commands $executed_commands */
21
+ $executed_commands = Toolset_Singleton_Factory::get( 'Toolset_Upgrade_Executed_Commands' );
22
+ $executed_commands->reset();
23
+
24
+ return new Toolset_Result( true );
25
+ }
26
+ }
vendor/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v1_database_structure_upgrade.php CHANGED
@@ -10,7 +10,7 @@
10
  * command aims at a specific database structure and by using hardcoded values (e.g. for table names)
11
  * we're becoming immune even to unlikely changes like future renaming of tables or columns.
12
  *
13
- * Note: This will fail terribly if executed for the second time.
14
  *
15
  * @since 2.5.4
16
  */
@@ -32,15 +32,20 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
32
  private $next_type_set_id = 1;
33
 
34
 
 
 
 
35
  /**
36
  * Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade constructor.
37
  *
38
  * @param wpdb|null $wpdb_di
39
  * @param Toolset_Relationship_Database_Operations|null $relationship_database_operations_di
 
40
  */
41
  public function __construct(
42
  wpdb $wpdb_di = null,
43
- Toolset_Relationship_Database_Operations $relationship_database_operations_di = null
 
44
  ) {
45
  if( null === $wpdb_di ) {
46
  global $wpdb;
@@ -50,6 +55,7 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
50
  }
51
 
52
  $this->_database_operations = $relationship_database_operations_di;
 
53
  }
54
 
55
 
@@ -75,24 +81,30 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
75
 
76
  $results = new Toolset_Result_Set();
77
 
78
- $this->create_post_type_set_table();
79
- $this->transform_post_type_sets();
80
- $this->change_relationship_type_column_datatypes();
81
 
82
- $this->add_extra_relationship_columns();
83
- $this->transform_extra_relationship_data();
84
- $this->drop_relationship_extra_column();
85
 
86
- $this->add_indexes_for_relationships_table();
87
 
88
- $this->add_relationship_id_column_for_associations();
89
- $this->transform_relationship_references_for_associations();
90
- $this->remove_relationship_slug_column_for_associations();
91
 
92
- $this->add_indexes_for_associations_table();
93
 
94
  error_log( 'The routine Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade::run() has finished' );
95
 
 
 
 
 
 
 
96
  return $results;
97
  }
98
 
@@ -104,13 +116,38 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
104
  * @return bool
105
  */
106
  private function is_database_already_up_to_date() {
 
 
 
 
 
 
 
 
107
  $table_name = $this->get_type_set_table_name();
108
- $query = $this->wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name );
109
- $type_set_table_already_exists = ( $this->wpdb->get_var( $query ) == $table_name );
 
110
  return $type_set_table_already_exists;
111
  }
112
 
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  private function create_post_type_set_table() {
115
 
116
  // Note that dbDelta is very sensitive about details, almost nothing here is arbitrary.
@@ -123,7 +160,9 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
123
  KEY type (type)
124
  ) {$this->wpdb->get_charset_collate()};";
125
 
126
- self::dbdelta( $query );
 
 
127
  }
128
 
129
 
@@ -132,11 +171,13 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
132
  "SELECT id, parent_types, child_types FROM {$this->get_relationships_table_name()}"
133
  );
134
 
 
 
135
  foreach( $relationships as $relationship ) {
136
  $parent_types = $this->save_post_type_set( maybe_unserialize( $relationship->parent_types ) );
137
  $child_types = $this->save_post_type_set( maybe_unserialize( $relationship->child_types ) );
138
 
139
- $this->wpdb->update(
140
  $this->get_relationships_table_name(),
141
  array(
142
  'parent_types' => $parent_types,
@@ -148,16 +189,22 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
148
  '%s',
149
  '%d'
150
  );
 
 
151
  }
 
 
152
  }
153
 
154
 
155
  private function change_relationship_type_column_datatypes() {
156
- $this->wpdb->query(
157
  "ALTER TABLE {$this->get_relationships_table_name()}
158
  MODIFY parent_types bigint(20) UNSIGNED NOT NULL DEFAULT 0,
159
  MODIFY child_types bigint(20) UNSIGNED NOT NULL DEFAULT 0"
160
  );
 
 
161
  }
162
 
163
 
@@ -208,7 +255,7 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
208
 
209
 
210
  private function add_extra_relationship_columns() {
211
- $this->wpdb->query(
212
  "ALTER TABLE {$this->get_relationships_table_name()}
213
  CHANGE COLUMN display_name display_name_plural varchar(255) NOT NULL DEFAULT '',
214
  ADD COLUMN display_name_singular varchar(255) NOT NULL DEFAULT '',
@@ -218,6 +265,8 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
218
  ADD COLUMN needs_legacy_support tinyint(1) NOT NULL DEFAULT 0,
219
  ADD COLUMN is_active tinyint(1) NOT NULL DEFAULT 0"
220
  );
 
 
221
  }
222
 
223
 
@@ -226,10 +275,12 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
226
  "SELECT id, extra FROM {$this->get_relationships_table_name()}"
227
  );
228
 
 
 
229
  foreach( $relationships as $relationship ) {
230
  $extra_data = maybe_unserialize( $relationship->extra );
231
 
232
- $this->wpdb->update(
233
  $this->get_relationships_table_name(),
234
  array(
235
  'role_name_parent' => 'parent',
@@ -243,34 +294,44 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
243
  array( '%s', '%s', '%s', '%d', '%d', '%s' ),
244
  '%d'
245
  );
 
 
246
  }
 
 
247
  }
248
 
249
 
250
  private function drop_relationship_extra_column() {
251
- $this->wpdb->query(
252
  "ALTER TABLE {$this->get_relationships_table_name()}
253
  DROP COLUMN extra"
254
  );
 
 
255
  }
256
 
257
 
258
  private function add_indexes_for_relationships_table() {
259
- $this->wpdb->query(
260
  "ALTER TABLE {$this->get_relationships_table_name()}
261
  ADD INDEX is_active (is_active),
262
  ADD INDEX needs_legacy_support (needs_legacy_support),
263
  ADD INDEX parent_type (parent_domain, parent_types),
264
  ADD INDEX child_type (child_domain, child_types)"
265
  );
 
 
266
  }
267
 
268
 
269
  private function add_relationship_id_column_for_associations() {
270
- $this->wpdb->query(
271
  "ALTER TABLE {$this->get_associations_table_name()}
272
  ADD COLUMN relationship_id bigint(20) UNSIGNED NOT NULL"
273
  );
 
 
274
  }
275
 
276
 
@@ -279,32 +340,42 @@ class Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade implements ITool
279
  "SELECT id, slug FROM {$this->get_relationships_table_name()}"
280
  );
281
 
 
 
282
  foreach( $relationships as $relationship ) {
283
- $this->wpdb->update(
284
  $this->get_associations_table_name(),
285
  array( 'relationship_id' => $relationship->id ),
286
  array( 'relationship' => $relationship->slug ),
287
  '%d',
288
  '%s'
289
  );
 
 
290
  }
 
 
291
  }
292
 
293
 
294
  private function remove_relationship_slug_column_for_associations() {
295
- $this->wpdb->query(
296
  "ALTER TABLE {$this->get_associations_table_name()}
297
  DROP COLUMN relationship"
298
  );
 
 
299
  }
300
 
301
 
302
  private function add_indexes_for_associations_table() {
303
- $this->wpdb->query(
304
  "ALTER TABLE {$this->get_associations_table_name()}
305
  ADD INDEX relationship_id (relationship_id),
306
  ADD INDEX parent_id (parent_id, relationship_id),
307
  ADD INDEX child_id (child_id, relationship_id)"
308
  );
 
 
309
  }
310
  }
10
  * command aims at a specific database structure and by using hardcoded values (e.g. for table names)
11
  * we're becoming immune even to unlikely changes like future renaming of tables or columns.
12
  *
13
+ * Note: This might fail terribly if executed for the second time.
14
  *
15
  * @since 2.5.4
16
  */
32
  private $next_type_set_id = 1;
33
 
34
 
35
+ private $constants;
36
+
37
+
38
  /**
39
  * Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade constructor.
40
  *
41
  * @param wpdb|null $wpdb_di
42
  * @param Toolset_Relationship_Database_Operations|null $relationship_database_operations_di
43
+ * @param Toolset_Constants|null $constants_di
44
  */
45
  public function __construct(
46
  wpdb $wpdb_di = null,
47
+ Toolset_Relationship_Database_Operations $relationship_database_operations_di = null,
48
+ Toolset_Constants $constants_di = null
49
  ) {
50
  if( null === $wpdb_di ) {
51
  global $wpdb;
55
  }
56
 
57
  $this->_database_operations = $relationship_database_operations_di;
58
+ $this->constants = $constants_di ?: new Toolset_Constants();
59
  }
60
 
61
 
81
 
82
  $results = new Toolset_Result_Set();
83
 
84
+ $results->add( $this->create_post_type_set_table() );
85
+ $results->add( $this->transform_post_type_sets() );
86
+ $results->add( $this->change_relationship_type_column_datatypes() );
87
 
88
+ $results->add( $this->add_extra_relationship_columns() );
89
+ $results->add( $this->transform_extra_relationship_data() );
90
+ $results->add( $this->drop_relationship_extra_column() );
91
 
92
+ $results->add( $this->add_indexes_for_relationships_table() );
93
 
94
+ $results->add( $this->add_relationship_id_column_for_associations() );
95
+ $results->add( $this->transform_relationship_references_for_associations() );
96
+ $results->add( $this->remove_relationship_slug_column_for_associations() );
97
 
98
+ $results->add( $this->add_indexes_for_associations_table() );
99
 
100
  error_log( 'The routine Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade::run() has finished' );
101
 
102
+ // This is a very basic check since dbDelta has a very bad way of reporting operation results.
103
+ // But if this detects a failure, we *know* for sure something went really wrong.
104
+ if( ! $this->is_database_already_up_to_date() ) {
105
+ $results->add( false, 'The m2m-v1 database structure upgrade to m2m-v2 seems to have failed.' );
106
+ }
107
+
108
  return $results;
109
  }
110
 
116
  * @return bool
117
  */
118
  private function is_database_already_up_to_date() {
119
+ return (
120
+ $this->is_type_set_table_present()
121
+ && $this->are_new_relationship_columns_present()
122
+ );
123
+ }
124
+
125
+
126
+ private function is_type_set_table_present() {
127
  $table_name = $this->get_type_set_table_name();
128
+ $type_set_table_query = $this->wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name );
129
+ $type_set_table_already_exists = ( $this->wpdb->get_var( $type_set_table_query ) == $table_name );
130
+
131
  return $type_set_table_already_exists;
132
  }
133
 
134
 
135
+ private function are_new_relationship_columns_present() {
136
+ $relationship_column_query = "SELECT *
137
+ FROM information_schema.COLUMNS
138
+ WHERE
139
+ TABLE_NAME = '{$this->get_relationships_table_name()}'
140
+ AND TABLE_SCHEMA = '{$this->constants->constant( 'DB_NAME' )}'
141
+ AND COLUMN_NAME IN (
142
+ 'display_name_plural', 'display_name_singular', 'role_name_parent', 'role_name_child',
143
+ 'role_name_intermediary', 'needs_legacy_support', 'is_active'
144
+ )";
145
+
146
+ $results = $this->wpdb->get_results( $relationship_column_query );
147
+ return ( count( $results ) === 7 );
148
+ }
149
+
150
+
151
  private function create_post_type_set_table() {
152
 
153
  // Note that dbDelta is very sensitive about details, almost nothing here is arbitrary.
160
  KEY type (type)
161
  ) {$this->wpdb->get_charset_collate()};";
162
 
163
+ $output = self::dbdelta( $query );
164
+
165
+ return new Toolset_Result( true, implode( "\n", $output ) );
166
  }
167
 
168
 
171
  "SELECT id, parent_types, child_types FROM {$this->get_relationships_table_name()}"
172
  );
173
 
174
+ $results = new Toolset_Result_Set();
175
+
176
  foreach( $relationships as $relationship ) {
177
  $parent_types = $this->save_post_type_set( maybe_unserialize( $relationship->parent_types ) );
178
  $child_types = $this->save_post_type_set( maybe_unserialize( $relationship->child_types ) );
179
 
180
+ $output = $this->wpdb->update(
181
  $this->get_relationships_table_name(),
182
  array(
183
  'parent_types' => $parent_types,
189
  '%s',
190
  '%d'
191
  );
192
+
193
+ $results->add( false !== $output, $this->wpdb->last_error );
194
  }
195
+
196
+ return $results;
197
  }
198
 
199
 
200
  private function change_relationship_type_column_datatypes() {
201
+ $output = $this->wpdb->query(
202
  "ALTER TABLE {$this->get_relationships_table_name()}
203
  MODIFY parent_types bigint(20) UNSIGNED NOT NULL DEFAULT 0,
204
  MODIFY child_types bigint(20) UNSIGNED NOT NULL DEFAULT 0"
205
  );
206
+
207
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
208
  }
209
 
210
 
255
 
256
 
257
  private function add_extra_relationship_columns() {
258
+ $output = $this->wpdb->query(
259
  "ALTER TABLE {$this->get_relationships_table_name()}
260
  CHANGE COLUMN display_name display_name_plural varchar(255) NOT NULL DEFAULT '',
261
  ADD COLUMN display_name_singular varchar(255) NOT NULL DEFAULT '',
265
  ADD COLUMN needs_legacy_support tinyint(1) NOT NULL DEFAULT 0,
266
  ADD COLUMN is_active tinyint(1) NOT NULL DEFAULT 0"
267
  );
268
+
269
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
270
  }
271
 
272
 
275
  "SELECT id, extra FROM {$this->get_relationships_table_name()}"
276
  );
277
 
278
+ $results = new Toolset_Result_Set();
279
+
280
  foreach( $relationships as $relationship ) {
281
  $extra_data = maybe_unserialize( $relationship->extra );
282
 
283
+ $output = $this->wpdb->update(
284
  $this->get_relationships_table_name(),
285
  array(
286
  'role_name_parent' => 'parent',
294
  array( '%s', '%s', '%s', '%d', '%d', '%s' ),
295
  '%d'
296
  );
297
+
298
+ $results->add( false !== $output, $this->wpdb->last_error );
299
  }
300
+
301
+ return $results;
302
  }
303
 
304
 
305
  private function drop_relationship_extra_column() {
306
+ $output = $this->wpdb->query(
307
  "ALTER TABLE {$this->get_relationships_table_name()}
308
  DROP COLUMN extra"
309
  );
310
+
311
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
312
  }
313
 
314
 
315
  private function add_indexes_for_relationships_table() {
316
+ $output = $this->wpdb->query(
317
  "ALTER TABLE {$this->get_relationships_table_name()}
318
  ADD INDEX is_active (is_active),
319
  ADD INDEX needs_legacy_support (needs_legacy_support),
320
  ADD INDEX parent_type (parent_domain, parent_types),
321
  ADD INDEX child_type (child_domain, child_types)"
322
  );
323
+
324
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
325
  }
326
 
327
 
328
  private function add_relationship_id_column_for_associations() {
329
+ $output = $this->wpdb->query(
330
  "ALTER TABLE {$this->get_associations_table_name()}
331
  ADD COLUMN relationship_id bigint(20) UNSIGNED NOT NULL"
332
  );
333
+
334
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
335
  }
336
 
337
 
340
  "SELECT id, slug FROM {$this->get_relationships_table_name()}"
341
  );
342
 
343
+ $results = new Toolset_Result_Set();
344
+
345
  foreach( $relationships as $relationship ) {
346
+ $output = $this->wpdb->update(
347
  $this->get_associations_table_name(),
348
  array( 'relationship_id' => $relationship->id ),
349
  array( 'relationship' => $relationship->slug ),
350
  '%d',
351
  '%s'
352
  );
353
+
354
+ $results->add( false !== $output, $this->wpdb->last_error );
355
  }
356
+
357
+ return $results;
358
  }
359
 
360
 
361
  private function remove_relationship_slug_column_for_associations() {
362
+ $output = $this->wpdb->query(
363
  "ALTER TABLE {$this->get_associations_table_name()}
364
  DROP COLUMN relationship"
365
  );
366
+
367
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
368
  }
369
 
370
 
371
  private function add_indexes_for_associations_table() {
372
+ $output = $this->wpdb->query(
373
  "ALTER TABLE {$this->get_associations_table_name()}
374
  ADD INDEX relationship_id (relationship_id),
375
  ADD INDEX parent_id (parent_id, relationship_id),
376
  ADD INDEX child_id (child_id, relationship_id)"
377
  );
378
+
379
+ return new Toolset_Result( false !== $output, $this->wpdb->last_error );
380
  }
381
  }
vendor/toolset/toolset-common/inc/autoloaded/upgrade/command/m2m_v2_database_structure_upgrade.php ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Transform the m2m table structures and data from the m2m-v2 beta release to m2m-v3 beta.
5
+ *
6
+ * Note: This will fail terribly if executed for the second time.
7
+ *
8
+ * @since m2m
9
+ */
10
+ class Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade implements IToolset_Upgrade_Command {
11
+
12
+
13
+ /** @var wpdb */
14
+ private $wpdb;
15
+
16
+
17
+ /** @var Toolset_Relationship_Database_Operations|null */
18
+ private $_database_operations;
19
+
20
+
21
+ /**
22
+ * Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade constructor.
23
+ *
24
+ * @param wpdb|null $wpdb_di
25
+ * @param Toolset_Relationship_Database_Operations|null $relationship_database_operations_di
26
+ */
27
+ public function __construct(
28
+ wpdb $wpdb_di = null,
29
+ Toolset_Relationship_Database_Operations $relationship_database_operations_di = null
30
+ ) {
31
+ if( null === $wpdb_di ) {
32
+ global $wpdb;
33
+ $this->wpdb = $wpdb;
34
+ } else {
35
+ $this->wpdb = $wpdb_di;
36
+ }
37
+
38
+ $this->_database_operations = $relationship_database_operations_di;
39
+ }
40
+
41
+
42
+ /**
43
+ * Run the command.
44
+ *
45
+ * @return Toolset_Result|Toolset_Result_Set
46
+ */
47
+ public function run() {
48
+
49
+ if( ! apply_filters( 'toolset_is_m2m_enabled', false ) ) {
50
+ // Nothing to do here: The tables will be created as soon as m2m is activated for the first time.
51
+ return new Toolset_Result( true );
52
+ }
53
+
54
+ if( $this->is_database_already_up_to_date() ) {
55
+ // Nothing to do here: This happens when Types is activated on a fresh site: It creates
56
+ // the tables according to the new structure but runs the upgrade routine at the same time.
57
+ return new Toolset_Result( true );
58
+ }
59
+
60
+ error_log( 'The routine Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade::run() is starting' );
61
+
62
+ $results = new Toolset_Result_Set();
63
+
64
+ $results->add( $this->update_relationships_table() );
65
+
66
+ error_log( 'The routine Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade::run() has finished' );
67
+
68
+ return $results;
69
+ }
70
+
71
+
72
+ /**
73
+ * If role_name_parent_plural exists in relationship database, it means that we're dealing with a more recent database structure than this
74
+ * command aims to improve.
75
+ *
76
+ * @return bool
77
+ * @since m2m
78
+ */
79
+ private function is_database_already_up_to_date() {
80
+ $table_name = $this->get_relationships_table_name();
81
+ $query = $this->wpdb->prepare( "SHOW COLUMNS FROM {$table_name} WHERE field = %s", 'role_label_parent_plural' );
82
+ $row = $this->wpdb->get_row( $query );
83
+ $is_updated = ! empty( $row );
84
+ return $is_updated;
85
+ }
86
+
87
+
88
+ private function update_relationships_table() {
89
+
90
+ $query = "ALTER TABLE `{$this->get_relationships_table_name()}`
91
+ ADD `role_label_parent_singular` VARCHAR(255) NOT NULL AFTER `role_name_intermediary`,
92
+ ADD `role_label_child_singular` VARCHAR(255) NOT NULL AFTER `role_label_parent_singular`,
93
+ ADD `role_label_parent_plural` VARCHAR(255) NOT NULL AFTER `role_label_child_singular`,
94
+ ADD `role_label_child_plural` VARCHAR(255) NOT NULL AFTER `role_label_parent_plural`";
95
+
96
+ $this->wpdb->query( $query );
97
+
98
+ return true;
99
+ }
100
+
101
+
102
+ /**
103
+ * Execute a dbDelta() query, ensuring that the function is available.
104
+ *
105
+ * @param string $query MySQL query.
106
+ *
107
+ * @return array dbDelta return value.
108
+ */
109
+ private static function dbdelta( $query ) {
110
+ require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
111
+ return dbDelta( $query );
112
+ }
113
+
114
+
115
+ private function get_relationships_table_name() {
116
+ return $this->wpdb->prefix . 'toolset_relationships';
117
+ }
118
+ }
vendor/toolset/toolset-common/inc/autoloaded/upgrade/command_definition.php CHANGED
@@ -52,7 +52,7 @@ class Toolset_Upgrade_Command_Definition {
52
  * @return bool
53
  */
54
  public function should_run( $from_version, /** @noinspection PhpUnusedParameterInspection */ $to_version ) {
55
- return ( $from_version < $this->upgrade_version );
56
  }
57
 
58
 
52
  * @return bool
53
  */
54
  public function should_run( $from_version, /** @noinspection PhpUnusedParameterInspection */ $to_version ) {
55
+ return ( $from_version < $this->upgrade_version && $this->upgrade_version <= $to_version );
56
  }
57
 
58
 
vendor/toolset/toolset-common/inc/autoloaded/upgrade/command_definition_repository.php CHANGED
@@ -12,13 +12,31 @@ class Toolset_Upgrade_Command_Definition_Repository {
12
  public function get_commands() {
13
 
14
  $upgrade_commands = array(
15
- new Toolset_Upgrade_Command_Definition(
 
 
 
16
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade',
17
- 254002
18
- )
 
 
19
  );
20
 
21
  return $upgrade_commands;
22
  }
23
 
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  public function get_commands() {
13
 
14
  $upgrade_commands = array(
15
+ $this->definition(
16
+ 'Toolset_Upgrade_Command_Delete_Obsolete_Upgrade_Options',
17
+ 1 ),
18
+ $this->definition(
19
  'Toolset_Upgrade_Command_M2M_V1_Database_Structure_Upgrade',
20
+ 2 ),
21
+ $this->definition(
22
+ 'Toolset_Upgrade_Command_M2M_V2_Database_Structure_Upgrade',
23
+ 3 ),
24
  );
25
 
26
  return $upgrade_commands;
27
  }
28
 
29
+
30
+ /**
31
+ * @param string $command_class_name
32
+ * @param int $upgrade_version
33
+ *
34
+ * @return Toolset_Upgrade_Command_Definition
35
+ */
36
+ private function definition( $command_class_name, $upgrade_version ) {
37
+ return new Toolset_Upgrade_Command_Definition(
38
+ $command_class_name, $upgrade_version
39
+ );
40
+ }
41
+
42
+ }
vendor/toolset/toolset-common/inc/autoloaded/upgrade/command_interface.php CHANGED
@@ -8,6 +8,8 @@
8
  * WARNING: Since it's very difficult to recover from any errors that occur during the upgrade, it is extremely
9
  * important to have the commands thoroughly covered by unit tests and well-tested.
10
  *
 
 
11
  * @since 2.5.3
12
  */
13
  interface IToolset_Upgrade_Command {
8
  * WARNING: Since it's very difficult to recover from any errors that occur during the upgrade, it is extremely
9
  * important to have the commands thoroughly covered by unit tests and well-tested.
10
  *
11
+ * Each command's run() method must be idempotent.
12
+ *
13
  * @since 2.5.3
14
  */
15
  interface IToolset_Upgrade_Command {
vendor/toolset/toolset-common/inc/autoloaded/upgrade/controller.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  /**
4
  * Toolset Common Library upgrade mechanism.
5
- *
6
  * Compares a number of the library version in database with the current one. If the current version is lower,
7
  * it executes all the commands defined in get_upgrade_commands() and updates the database.
8
  *
@@ -16,7 +16,7 @@ class Toolset_Upgrade_Controller {
16
 
17
 
18
  /** Name of the option used to store version number. */
19
- const DATABASE_VERSION_OPTION = 'toolset_database_version';
20
 
21
 
22
  /** @var Toolset_Upgrade_Controller */
@@ -92,9 +92,9 @@ class Toolset_Upgrade_Controller {
92
  }
93
 
94
  // This is required by the tcl-status plugin.
95
- if( apply_filters( 'toolset_disable_upgrade_routine', false ) ) {
96
- return;
97
- }
98
 
99
  $this->do_upgrade( $database_version, $library_version );
100
  }
@@ -109,8 +109,8 @@ class Toolset_Upgrade_Controller {
109
  */
110
  private function get_library_version() {
111
  $version = (
112
- $this->constants->defined( 'TOOLSET_COMMON_VERSION_NUMBER' )
113
- ? (int) $this->constants->constant( 'TOOLSET_COMMON_VERSION_NUMBER' )
114
  : 0
115
  );
116
 
@@ -125,7 +125,7 @@ class Toolset_Upgrade_Controller {
125
  * @since m2m
126
  */
127
  private function get_database_version() {
128
- $version = (int) get_option( self::DATABASE_VERSION_OPTION, 0 );
129
 
130
  return $version;
131
  }
@@ -139,22 +139,21 @@ class Toolset_Upgrade_Controller {
139
  */
140
  private function update_database_version( $version_number ) {
141
  if( is_numeric( $version_number ) ) {
142
- update_option( self::DATABASE_VERSION_OPTION, (int) $version_number, true );
143
  }
144
  }
145
 
146
 
147
  /**
148
  * Perform the actual upgrade.
149
- *
150
  * @param int $from_version
151
  * @param int $to_version
152
  */
153
  private function do_upgrade( $from_version, $to_version ) {
154
 
155
- $this->update_database_version( $to_version );
156
-
157
  $command_definitions = $this->get_upgrade_commands();
 
158
 
159
  foreach ( $command_definitions as $command_definition ) {
160
 
@@ -169,25 +168,73 @@ class Toolset_Upgrade_Controller {
169
  if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
170
 
171
  $command = $command_definition->get_command();
172
- $command->run();
173
 
174
  } else {
175
  // Ignore errors as we don't have a proper way to display any output from this yet.
176
  try {
177
  $command = $command_definition->get_command();
178
- $command->run();
179
  } catch ( Throwable $e ) {
180
  // PHP 7
181
- } catch ( Exception $e ) {
 
 
 
182
  // PHP 5
 
183
  }
184
  }
185
 
186
- $this->get_executed_commands()->add_executed_command( $command_definition->get_command_name() );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
  }
189
 
190
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  /**
192
  * Get the upgrade commands to consider.
193
  *
@@ -211,11 +258,11 @@ class Toolset_Upgrade_Controller {
211
  */
212
  public function get_executed_commands() {
213
  if( null === $this->_executed_commands ) {
214
- $this->_executed_commands = new Toolset_Upgrade_Executed_Commands();
215
  }
216
 
217
  return $this->_executed_commands;
218
  }
219
 
220
 
221
- }
2
 
3
  /**
4
  * Toolset Common Library upgrade mechanism.
5
+ *
6
  * Compares a number of the library version in database with the current one. If the current version is lower,
7
  * it executes all the commands defined in get_upgrade_commands() and updates the database.
8
  *
16
 
17
 
18
  /** Name of the option used to store version number. */
19
+ const DATABASE_VERSION_OPTION_NUMBER = 'toolset_data_structure_version';
20
 
21
 
22
  /** @var Toolset_Upgrade_Controller */
92
  }
93
 
94
  // This is required by the tcl-status plugin.
95
+ // if( apply_filters( 'toolset_disable_upgrade_routine', false ) ) {
96
+ // return;
97
+ // }
98
 
99
  $this->do_upgrade( $database_version, $library_version );
100
  }
109
  */
110
  private function get_library_version() {
111
  $version = (
112
+ $this->constants->defined( 'TOOLSET_DATA_STRUCTURE_VERSION' )
113
+ ? (int) $this->constants->constant( 'TOOLSET_DATA_STRUCTURE_VERSION' )
114
  : 0
115
  );
116
 
125
  * @since m2m
126
  */
127
  private function get_database_version() {
128
+ $version = (int) get_option( self::DATABASE_VERSION_OPTION_NUMBER, 0 );
129
 
130
  return $version;
131
  }
139
  */
140
  private function update_database_version( $version_number ) {
141
  if( is_numeric( $version_number ) ) {
142
+ update_option( self::DATABASE_VERSION_OPTION_NUMBER, (int) $version_number, true );
143
  }
144
  }
145
 
146
 
147
  /**
148
  * Perform the actual upgrade.
149
+ *
150
  * @param int $from_version
151
  * @param int $to_version
152
  */
153
  private function do_upgrade( $from_version, $to_version ) {
154
 
 
 
155
  $command_definitions = $this->get_upgrade_commands();
156
+ $final_result = new Toolset_Result_Set();
157
 
158
  foreach ( $command_definitions as $command_definition ) {
159
 
168
  if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
169
 
170
  $command = $command_definition->get_command();
171
+ $result = $command->run();
172
 
173
  } else {
174
  // Ignore errors as we don't have a proper way to display any output from this yet.
175
  try {
176
  $command = $command_definition->get_command();
177
+ $result = $command->run();
178
  } catch ( Throwable $e ) {
179
  // PHP 7
180
+ $result = new Toolset_Result( $e );
181
+ } /** @noinspection PhpRedundantCatchClauseInspection */
182
+ /** @noinspection PhpWrongCatchClausesOrderInspection */
183
+ catch ( Exception $e ) {
184
  // PHP 5
185
+ $result = new Toolset_Result( $e );
186
  }
187
  }
188
 
189
+ $is_success = (
190
+ ( $result instanceof Toolset_Result && $result->is_success() )
191
+ || ( $result instanceof Toolset_Result_Set && $result->is_complete_success() )
192
+ );
193
+
194
+ if( $is_success ) {
195
+ $this->get_executed_commands()->add_executed_command( $command_definition->get_command_name() );
196
+ }
197
+
198
+ $final_result->add( $result );
199
+ }
200
+
201
+ // Only consider the database updated when everything has succeeded.
202
+ if( ! $final_result->has_results() || $final_result->is_complete_success() ) {
203
+ $this->update_database_version( $to_version );
204
+ } else {
205
+ $this->show_error_notice( $final_result );
206
  }
207
  }
208
 
209
 
210
+ /**
211
+ * Show an undismissible temporary error message with upgrade results.
212
+ *
213
+ * @param Toolset_Result_Set $results
214
+ * @since 2.6.4
215
+ */
216
+ private function show_error_notice( Toolset_Result_Set $results ) {
217
+ $notice = new Toolset_Admin_Notice_Error(
218
+ 'toolset-database-upgrade-error',
219
+ '<p>'
220
+ . __( 'Oops! There\'s been a problem when upgrading Toolset data structures. Please make sure your current configuration allows WordPress to alter database tables.', 'wpcf' )
221
+ . sprintf(
222
+ __( 'If the problem persists, please don\'t hesitate to contact %sour support%s with this technical information:', 'wpcf' ),
223
+ '<a href="https://toolset.com/forums/forum/professional-support/" target="_blank">',
224
+ ' <i class="fa fa-external-link"></i></a>'
225
+ )
226
+ . '</p>'
227
+ . '<p><code>' . $results->concat_messages( "\n" ) . '</code></p>'
228
+ );
229
+
230
+ $notice->set_is_dismissible_permanent( false );
231
+ $notice->set_is_dismissible_globally( false );
232
+ $notice->set_is_only_for_administrators( true );
233
+
234
+ Toolset_Admin_Notices_Manager::add_notice( $notice );
235
+ }
236
+
237
+
238
  /**
239
  * Get the upgrade commands to consider.
240
  *
258
  */
259
  public function get_executed_commands() {
260
  if( null === $this->_executed_commands ) {
261
+ $this->_executed_commands = Toolset_Singleton_Factory::get( 'Toolset_Upgrade_Executed_Commands' );
262
  }
263
 
264
  return $this->_executed_commands;
265
  }
266
 
267
 
268
+ }
vendor/toolset/toolset-common/inc/autoloaded/upgrade/executed_commands.php CHANGED
@@ -55,4 +55,10 @@ class Toolset_Upgrade_Executed_Commands {
55
  return $this->executed_commands;
56
  }
57
 
 
 
 
 
 
 
58
  }
55
  return $this->executed_commands;
56
  }
57
 
58
+
59
+ public function reset() {
60
+ $this->executed_commands = null;
61
+ delete_option( self::OPTION_NAME );
62
+ }
63
+
64
  }
vendor/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/abstract.php CHANGED
@@ -70,15 +70,21 @@
70
  */
71
  abstract class Toolset_Wp_Query_Adjustments extends Toolset_Wpdb_User {
72
 
 
73
  // Must not be changed, third-party software depends on it.
74
  const RELATIONSHIP_QUERY_ARG = 'toolset_relationships';
75
 
76
 
 
 
 
 
 
77
  /**
78
  * Initialize the query adjustments.
79
  */
80
  public function initialize() {
81
- add_action( 'pre_get_posts', array( $this, 'check_custom_query_args' ) );
82
  }
83
 
84
 
70
  */
71
  abstract class Toolset_Wp_Query_Adjustments extends Toolset_Wpdb_User {
72
 
73
+
74
  // Must not be changed, third-party software depends on it.
75
  const RELATIONSHIP_QUERY_ARG = 'toolset_relationships';
76
 
77
 
78
+ // The time when we store the toolset_relationships query argument during pre_get_posts.
79
+ // It needs to happen late so that other query modifications (also meta_query ones) can happen before.
80
+ const TIME_TO_STORE_RELATIONSHIPS_ARG = 10000;
81
+
82
+
83
  /**
84
  * Initialize the query adjustments.
85
  */
86
  public function initialize() {
87
+ add_action( 'pre_get_posts', array( $this, 'check_custom_query_args' ), self::TIME_TO_STORE_RELATIONSHIPS_ARG );
88
  }
89
 
90
 
vendor/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/m2m.php CHANGED
@@ -7,6 +7,10 @@
7
  *
8
  * See the superclass for details.
9
  *
 
 
 
 
10
  * @since 2.6.1
11
  */
12
  class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
@@ -20,22 +24,28 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
20
  private $_element_factory;
21
 
22
 
 
 
 
 
23
  /**
24
  * Toolset_Wp_Query_Adjustments_M2m constructor.
25
  *
26
  * @param wpdb|null $wpdb_di
27
  * @param Toolset_Relationship_Database_Operations|null $database_operations_di
28
  * @param Toolset_Element_Factory|null $element_factory_di
 
29
  */
30
  public function __construct(
31
  wpdb $wpdb_di = null,
32
  Toolset_Relationship_Database_Operations $database_operations_di = null,
33
- Toolset_Element_Factory $element_factory_di = null
34
-
35
  ) {
36
  parent::__construct( $wpdb_di );
37
  $this->_database_operations = $database_operations_di;
38
  $this->_element_factory = $element_factory_di;
 
39
  }
40
 
41
 
@@ -45,7 +55,11 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
45
  public function initialize() {
46
  parent::initialize();
47
 
48
- do_action( 'toolset_do_m2m_full_init' );
 
 
 
 
49
 
50
  add_filter( 'posts_where', array( $this, 'posts_where' ), 10, 2 );
51
  add_filter( 'posts_join', array( $this, 'posts_join' ), 10, 2 );
@@ -59,9 +73,10 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
59
  * @param WP_Query $wp_query
60
  *
61
  * @return string
62
- * @throws Toolset_Element_Exception_Element_Doesnt_Exist
63
  */
64
  public function posts_where( $where, $wp_query ) {
 
 
65
  if( property_exists( $wp_query, self::RELATIONSHIP_QUERY_ARG ) ) {
66
  $where = $this->add_relationship_query_where( $where, $wp_query->{self::RELATIONSHIP_QUERY_ARG}, $wp_query );
67
  }
@@ -78,6 +93,8 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
78
  * @return string
79
  */
80
  public function posts_join( $join, $wp_query ) {
 
 
81
  if( property_exists( $wp_query, self::RELATIONSHIP_QUERY_ARG ) ) {
82
  $join = $this->add_relationship_query_join( $join, $wp_query );
83
  }
@@ -91,13 +108,12 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
91
  * @param WP_Query $wp_query
92
  *
93
  * @return string
94
- * @throws Toolset_Element_Exception_Element_Doesnt_Exist
95
  */
96
  private function add_relationship_query_where( $where, $relationship_query, WP_Query $wp_query ) {
97
  $relationship_query = $this->normalize_relationship_query_args( $relationship_query );
98
 
99
  foreach( $relationship_query as $query_condition ) {
100
- $where .= ' ' . $this->add_relationship_query_condition( $query_condition, $wp_query );
101
  }
102
 
103
  return $where;
@@ -110,7 +126,7 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
110
  *
111
  * @return string
112
  */
113
- private function add_relationship_query_condition( $query_condition, WP_Query $wp_query ) {
114
  $relationship_slug = $this->get_relationship_slug( $query_condition );
115
  $related_to_post = $this->get_post( $query_condition );
116
 
@@ -120,15 +136,20 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
120
  return ' AND 0 = 1 ';
121
  }
122
 
123
- $role_to_return = $this->get_role( $query_condition, 'role' );
124
- $associations_table = $this->get_table_join_manager( $wp_query )->associations_table( $relationship_slug, $role_to_return );
125
 
 
126
  $role_to_query_by = $this->get_role( $query_condition, 'role_to_query_by', $role_to_return );
 
 
 
 
 
127
  $role_to_query_by_column = $this->get_database_operations()->role_to_column( $role_to_query_by );
128
 
129
  $clause = $this->wpdb->prepare(
130
  " AND $associations_table.$role_to_query_by_column = %d ",
131
- $related_to_post->get_default_language_id()
132
  );
133
 
134
  return $clause;
@@ -222,6 +243,17 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
222
  }
223
 
224
 
 
 
 
 
 
 
 
 
 
 
 
225
  /**
226
  * Get the "related_to" post from the query condition array.
227
  *
@@ -248,4 +280,278 @@ class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
248
  return $post;
249
  }
250
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  }
7
  *
8
  * See the superclass for details.
9
  *
10
+ * Additionally, we also check for meta_key, meta_value, meta_value_num and meta_query
11
+ * for the legacy relationship postmeta and try to transform it into a toolset_relationships condition.
12
+ * See process_legacy_meta_query() for details.
13
+ *
14
  * @since 2.6.1
15
  */
16
  class Toolset_Wp_Query_Adjustments_M2m extends Toolset_Wp_Query_Adjustments {
24
  private $_element_factory;
25
 
26
 
27
+ /** @var null|Toolset_Relationship_Query_Factory */
28
+ private $_query_factory;
29
+
30
+
31
  /**
32
  * Toolset_Wp_Query_Adjustments_M2m constructor.
33
  *
34
  * @param wpdb|null $wpdb_di
35
  * @param Toolset_Relationship_Database_Operations|null $database_operations_di
36
  * @param Toolset_Element_Factory|null $element_factory_di
37
+ * @param Toolset_Relationship_Query_Factory|null $query_factory_di
38
  */
39
  public function __construct(
40
  wpdb $wpdb_di = null,
41
  Toolset_Relationship_Database_Operations $database_operations_di = null,
42
+ Toolset_Element_Factory $element_factory_di = null,
43
+ Toolset_Relationship_Query_Factory $query_factory_di = null
44
  ) {
45
  parent::__construct( $wpdb_di );
46
  $this->_database_operations = $database_operations_di;
47
  $this->_element_factory = $element_factory_di;
48
+ $this->_query_factory = $query_factory_di;
49
  }
50
 
51
 
55
  public function initialize() {
56
  parent::initialize();
57
 
58
+ add_action(
59
+ 'pre_get_posts',
60
+ array( $this, 'process_legacy_meta_query' ),
61
+ self::TIME_TO_STORE_RELATIONSHIPS_ARG - 1 // do not change this, third-party software might depend on it
62
+ );
63
 
64
  add_filter( 'posts_where', array( $this, 'posts_where' ), 10, 2 );
65
  add_filter( 'posts_join', array( $this, 'posts_join' ), 10, 2 );
73
  * @param WP_Query $wp_query
74
  *
75
  * @return string
 
76
  */
77
  public function posts_where( $where, $wp_query ) {
78
+ do_action( 'toolset_do_m2m_full_init' );
79
+
80
  if( property_exists( $wp_query, self::RELATIONSHIP_QUERY_ARG ) ) {
81
  $where = $this->add_relationship_query_where( $where, $wp_query->{self::RELATIONSHIP_QUERY_ARG}, $wp_query );
82
  }
93
  * @return string
94
  */
95
  public function posts_join( $join, $wp_query ) {
96
+ do_action( 'toolset_do_m2m_full_init' );
97
+
98
  if( property_exists( $wp_query, self::RELATIONSHIP_QUERY_ARG ) ) {
99
  $join = $this->add_relationship_query_join( $join, $wp_query );
100
  }
108
  * @param WP_Query $wp_query
109
  *
110
  * @return string
 
111
  */
112
  private function add_relationship_query_where( $where, $relationship_query, WP_Query $wp_query ) {
113
  $relationship_query = $this->normalize_relationship_query_args( $relationship_query );
114
 
115
  foreach( $relationship_query as $query_condition ) {
116
+ $where .= ' ' . $this->add_single_relationship_query_where_clause( $query_condition, $wp_query );
117
  }
118
 
119
  return $where;
126
  *
127
  * @return string
128
  */
129
+ private function add_single_relationship_query_where_clause( $query_condition, WP_Query $wp_query ) {
130
  $relationship_slug = $this->get_relationship_slug( $query_condition );
131
  $related_to_post = $this->get_post( $query_condition );
132
 
136
  return ' AND 0 = 1 ';
137
  }
138
 
139
+ $related_to_post_id = $related_to_post->get_default_language_id();
 
140
 
141
+ $role_to_return = $this->get_role( $query_condition, 'role' );
142
  $role_to_query_by = $this->get_role( $query_condition, 'role_to_query_by', $role_to_return );
143
+
144
+ $associations_table = $this->get_table_join_manager( $wp_query )->associations_table(
145
+ $relationship_slug, $role_to_return, $role_to_query_by, $related_to_post_id
146
+ );
147
+
148
  $role_to_query_by_column = $this->get_database_operations()->role_to_column( $role_to_query_by );
149
 
150
  $clause = $this->wpdb->prepare(
151
  " AND $associations_table.$role_to_query_by_column = %d ",
152
+ $related_to_post_id
153
  );
154
 
155
  return $clause;
243
  }
244
 
245
 
246
+ /**
247
+ * @return Toolset_Relationship_Query_Factory
248
+ */
249
+ private function get_query_factory() {
250
+ if( null === $this->_query_factory ) {
251
+ $this->_query_factory = new Toolset_Relationship_Query_Factory();
252
+ }
253
+ return $this->_query_factory;
254
+ }
255
+
256
+
257
  /**
258
  * Get the "related_to" post from the query condition array.
259
  *
280
  return $post;
281
  }
282
 
283
+
284
+ /**
285
+ * Check the postmeta query arguments and if we detect an understandable usage of
286
+ * the legacy relationship postmeta, transform it into a toolset_relationships query.
287
+ *
288
+ * We check for:
289
+ * - meta_key and meta_value or meta_value_num
290
+ * - meta_query
291
+ *
292
+ * There are several limitations as to what we can parse:
293
+ *
294
+ * - Only legacy (migrated) relationships are supported.
295
+ * - It must be possible to determine a single relationship from the information passed to the query:
296
+ * - The postmeta already contains the parent post type slug.
297
+ * - For the child slug, either there's some information in the "post_type" query argument, or
298
+ * we check against all post types.
299
+ *
300
+ * For example, if there are legacy relationships between CPTS: A >> B, A >> C, B >> C,
301
+ *
302
+ * we will always succeed with a meta_query for "_wpcf_belongs_b_id" (because there is only a
303
+ * single relationship that has B post type as a parent), but we will succeed with
304
+ * "_wpcf_belongs_a_id" only if the query also contains a post_type argument that doesn't contain
305
+ * both B and C post types.
306
+ *
307
+ * Non-legacy relationships are completely ignored here.
308
+ * - Only the topmost level of the 'meta_query' is processed, and we ignore anything nested.
309
+ * - 'meta_compare' argument or 'compare' within 'meta_query' must be '=' (or missing, since this is the default value)
310
+ * - 'relation' within 'meta_query' must be 'AND' (or missing).
311
+ *
312
+ * If we hit any of these limitations, we don't do anything and let the query run as-is.
313
+ *
314
+ * Otherwise, the condition is turned into a toolset_relationships one and removed.
315
+ *
316
+ * Note that we also remove meta_key together with meta_value/meta_value_num, which is necessary for the
317
+ * query to yield correct results. meta_key might be *theoretically* used for ordering, but it makes
318
+ * very little sense to order by IDs of parent post, so we take the risk.
319
+ *
320
+ * This is WPML-compatible and should yield results according to the allowed translation mode of post types
321
+ * involved in a relationship.
322
+ *
323
+ * @since 2.6.4
324
+ * @param WP_Query $query
325
+ */
326
+ public function process_legacy_meta_query( $query ) {
327
+ if( ! $query instanceof WP_Query ) {
328
+ // Something weird is happening.
329
+ return;
330
+ }
331
+
332
+ $this->maybe_process_meta_value( $query );
333
+ $this->maybe_process_meta_query( $query );
334
+ }
335
+
336
+
337
+ /**
338
+ * Try transforming meta_key + meta_value/meta_value_num into a toolset_relationships condition.
339
+ *
340
+ * @since 2.6.4
341
+ * @param WP_Query $query
342
+ */
343
+ private function maybe_process_meta_value( WP_Query $query ) {
344
+ if(
345
+ ! array_key_exists( 'meta_key', $query->query_vars )
346
+ ) {
347
+ return;
348
+ }
349
+
350
+ $parent_post_type = $this->parse_legacy_meta_key( $query->query_vars['meta_key'] );
351
+ if( null === $parent_post_type ) {
352
+ return; // not our legacy postmeta
353
+ }
354
+
355
+ if( array_key_exists( 'meta_value_num', $query->query_vars ) ) {
356
+ $post_id = (int) $query->query_vars['meta_value_num'];
357
+ } elseif( array_key_exists( 'meta_value', $query->query_vars ) ) {
358
+ $post_id = (int) $query->query_vars['meta_value'];
359
+ } else {
360
+ return;
361
+ }
362
+
363
+ if(
364
+ array_key_exists( 'meta_compare', $query->query_vars )
365
+ && '=' !== $query->query_vars['meta_compare']
366
+ ) {
367
+ return;
368
+ }
369
+
370
+ $was_transformed = $this->try_transforming_legacy_meta_query( $query, $parent_post_type, $post_id );
371
+
372
+ if( $was_transformed ) {
373
+ unset( $query->query_vars['meta_value'] );
374
+ unset( $query->query_vars['meta_value_num'] );
375
+
376
+ // Theoretically, meta_key could be also used for sorting, but it makes very little sense
377
+ // to sort by IDs of parent posts.
378
+ //
379
+ // We need to remove it because it would otherwise cause an inner join on the
380
+ // postmeta table with the legacy postmeta key, effectively excluding
381
+ // all posts with associations created after the migration to m2m.
382
+ unset( $query->query_vars['meta_key'] );
383
+ }
384
+ }
385
+
386
+
387
+ /**
388
+ * Try building a toolset_relationships condition out of the provided information.
389
+ *
390
+ * @param WP_Query $query
391
+ * @param string $parent_post_type
392
+ * @param int $parent_id
393
+ *
394
+ * @return bool True if the transformation took place, false if it couldn't be done.
395
+ * @since 2.6.4
396
+ */
397
+ private function try_transforming_legacy_meta_query( WP_Query $query, $parent_post_type, $parent_id ) {
398
+
399
+ if( 0 === (int) $parent_id ) {
400
+ return false;
401
+ }
402
+
403
+ do_action( 'toolset_do_m2m_full_init' );
404
+
405
+ $relationship = $this->determine_relationship( $query, $parent_post_type );
406
+
407
+ if( null === $relationship ) {
408
+ return false;
409
+ }
410
+
411
+ $relationship_query_arg = array(
412
+ 'role' => 'child', // legacy code had to be querying child posts
413
+ 'related_to' => (int) $parent_id,
414
+ 'relationship' => $relationship->get_slug(),
415
+ );
416
+
417
+ $this->add_relationship_query_condition( $query, $relationship_query_arg );
418
+
419
+ return true;
420
+ }
421
+
422
+
423
+ /**
424
+ * Look for a single matching relationship definition.
425
+ *
426
+ * Use the post_type query argument, parent post type and is_legacy flag of the relationship definition.
427
+ *
428
+ * @param WP_Query $query
429
+ * @param $parent_post_type
430
+ *
431
+ * @return IToolset_Relationship_Definition|null Relationship definition or null if there are more than
432
+ * one results or no results.
433
+ * @since 2.6.4
434
+ */
435
+ private function determine_relationship( WP_Query $query, $parent_post_type ) {
436
+ $child_post_types = toolset_getarr( $query->query_vars, 'post_type' );
437
+ if( ! is_array( $child_post_types ) ) {
438
+ $child_post_types = array( $child_post_types );
439
+ }
440
+ if( in_array( 'any', $child_post_types ) ) {
441
+ $child_post_types = array();
442
+ }
443
+
444
+ $relationship_query = $this->get_query_factory()->relationships_v2();
445
+ $relationships = $relationship_query
446
+ ->add( $relationship_query->is_legacy() )
447
+ ->add( $relationship_query->has_domain_and_type(
448
+ $parent_post_type, Toolset_Element_Domain::POSTS, new Toolset_Relationship_Role_Parent() )
449
+ )
450
+ ->add( $relationship_query->has_domain( Toolset_Element_Domain::POSTS, new Toolset_Relationship_Role_Child() ) )
451
+ ->add(
452
+ // we can afford to add empty or condition
453
+ $relationship_query->do_or(
454
+ array_map(
455
+ function ( $child_post_type ) use ( $relationship_query ) {
456
+ return $relationship_query->has_type( $child_post_type, new Toolset_Relationship_Role_Child() );
457
+ }, $child_post_types
458
+ )
459
+ )
460
+ )
461
+ ->get_results();
462
+
463
+ if( count( $relationships ) !== 1 ) {
464
+ return null;
465
+ }
466
+
467
+ return array_pop( $relationships );
468
+ }
469
+
470
+
471
+ /**
472
+ * Add a single condition to the toolset_relationships query argument.
473
+ *
474
+ * @param WP_Query $query
475
+ * @param $condition
476
+ * @since 2.6.4
477
+ */
478
+ private function add_relationship_query_condition( WP_Query $query, $condition ) {
479
+ if( ! array_key_exists( self::RELATIONSHIP_QUERY_ARG, $query->query_vars ) ) {
480
+ $query->query_vars[ self::RELATIONSHIP_QUERY_ARG ] = array();
481
+ } else {
482
+ $query->query_vars[ self::RELATIONSHIP_QUERY_ARG ] = $this->normalize_relationship_query_args(
483
+ $query->query_vars[ self::RELATIONSHIP_QUERY_ARG ]
484
+ );
485
+ }
486
+
487
+ $query->query_vars[ self::RELATIONSHIP_QUERY_ARG ][] = $condition;
488
+ }
489
+
490
+
491
+ /**
492
+ * Try transforming a top level meta_query into toolset_relationships conditions.
493
+ *
494
+ * @param WP_Query $query
495
+ * @since 2.6.4
496
+ */
497
+ private function maybe_process_meta_query( WP_Query $query ) {
498
+ if( ! array_key_exists( 'meta_query', $query->query_vars ) ) {
499
+ return;
500
+ }
501
+
502
+ $meta_query = $query->query_vars['meta_query'];
503
+
504
+ if( ! is_array( $meta_query ) ) {
505
+ return;
506
+ }
507
+
508
+ if( 'AND' !== toolset_getarr( $meta_query, 'relation', 'AND' ) ) {
509
+ return;
510
+ }
511
+
512
+ foreach( $meta_query as $single_meta_query_key => $single_meta_query ) {
513
+
514
+ if( '=' !== toolset_getarr( $single_meta_query, 'compare', '=' ) ) {
515
+ continue;
516
+ }
517
+
518
+ $parent_post_type = $this->parse_legacy_meta_key( toolset_getarr( $single_meta_query, 'key' ) );
519
+ if( null === $parent_post_type ) {
520
+ continue;
521
+ }
522
+
523
+ $parent_post_id = (int) toolset_getarr( $single_meta_query, 'value' );
524
+
525
+ $was_transformed = $this->try_transforming_legacy_meta_query( $query, $parent_post_type, $parent_post_id );
526
+
527
+ if( ! $was_transformed ) {
528
+ continue;
529
+ }
530
+
531
+ unset( $query->query_vars['meta_query'][ $single_meta_query_key ] );
532
+ }
533
+ }
534
+
535
+
536
+ /**
537
+ * Extract the parent post type from the legacy relationship postmeta key.
538
+ *
539
+ * @param string $meta_key
540
+ *
541
+ * @return string|null Parent post type slug or null if the meta_key stands for something else.
542
+ * @since 2.6.4
543
+ */
544
+ private function parse_legacy_meta_key( $meta_key ) {
545
+ $matches = array();
546
+ preg_match( '/^_wpcf_belongs_([a-z0-9_-]+)_id$/', $meta_key, $matches );
547
+
548
+ if( empty( $matches ) || count( $matches ) < 2 ) {
549
+ return null;
550
+ }
551
+
552
+ return $matches[1];
553
+ }
554
+
555
+
556
+
557
  }
vendor/toolset/toolset-common/inc/autoloaded/wp_query_adjustments/table_join_manager.php CHANGED
@@ -9,7 +9,11 @@ class Toolset_Wp_Query_Adjustments_Table_Join_Manager extends Toolset_Wpdb_User
9
 
10
 
11
  /**
12
- * @var string[][] Unique aliases for the associations table, indexed by a relationship slug and a role name.
 
 
 
 
13
  */
14
  private $joins = array();
15
 
@@ -69,9 +73,21 @@ class Toolset_Wp_Query_Adjustments_Table_Join_Manager extends Toolset_Wpdb_User
69
  public function get_join_clauses() {
70
  $results = '';
71
 
72
- foreach( $this->joins as $relationship_slug => $role_joins ) {
73
- foreach( $role_joins as $role_name => $table_alias ) {
74
- $results .= $this->get_single_join_clause( $relationship_slug, $table_alias, $role_name );
 
 
 
 
 
 
 
 
 
 
 
 
75
  }
76
  }
77
 
@@ -79,9 +95,27 @@ class Toolset_Wp_Query_Adjustments_Table_Join_Manager extends Toolset_Wpdb_User
79
  }
80
 
81
 
82
- private function get_single_join_clause( $relationship_slug, $associations_table_alias, $role_name ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
 
84
- $element_id_column = $this->database_operations->role_to_column( $role_name );
 
85
  $relationship_definition = $this->definition_repository->get_definition( $relationship_slug );
86
 
87
  if( null === $relationship_definition ) {
@@ -92,15 +126,19 @@ class Toolset_Wp_Query_Adjustments_Table_Join_Manager extends Toolset_Wpdb_User
92
  $relationship_id = $relationship_definition->get_row_id();
93
 
94
  if( $this->wpml_service->is_wpml_active_and_configured() ) {
95
- return $this->get_single_join_clause_for_wpml( $relationship_id, $associations_table_alias, $element_id_column );
 
 
96
  }
97
 
98
  return $this->wpdb->prepare(
99
  "JOIN {$this->table_name->association_table()} AS {$associations_table_alias} ON (
100
- wp_posts.ID = {$associations_table_alias}.{$element_id_column}
101
  AND {$associations_table_alias}.relationship_id = %d
 
102
  ) ",
103
- $relationship_id
 
104
  );
105
  }
106
 
@@ -111,35 +149,55 @@ class Toolset_Wp_Query_Adjustments_Table_Join_Manager extends Toolset_Wpdb_User
111
  *
112
  * @param int $relationship_id
113
  * @param string $associations_table_alias
114
- * @param string $element_id_column
 
 
115
  *
116
  * @return string
117
  */
118
- private function get_single_join_clause_for_wpml( $relationship_id, $associations_table_alias, $element_id_column ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
 
120
  $clause = $this->wpdb->prepare(
121
  "
122
  # join the icl_translations table independently from WPML's 't'
123
  # because that one may not be joined at all time, but we
124
  # need it always - this is safer than trying to reuse the 't' one
125
- LEFT JOIN {$this->wpml_service->icl_translations_table_name()} AS toolset_post_t ON (
126
- wp_posts.ID = toolset_post_t.element_id
127
- AND toolset_post_t.element_type = CONCAT('post_', wp_posts.post_type)
128
- ) LEFT JOIN {$this->wpml_service->icl_translations_table_name()} AS toolset_post_dl ON (
129
- toolset_post_t.trid = toolset_post_dl.trid
130
- AND toolset_post_dl.language_code = %s
131
  ) JOIN {$this->table_name->association_table()} AS {$associations_table_alias} ON (
132
  (
133
  # join the association row if either the post ID matches the
134
  # proper column in the associations table or if the ID of the default
135
  # language version of the post matches it
136
- wp_posts.ID = {$associations_table_alias}.{$element_id_column}
137
- OR toolset_post_dl.element_id = {$associations_table_alias}.{$element_id_column}
138
  )
139
  AND {$associations_table_alias}.relationship_id = %d
 
140
  )",
141
  $this->wpml_service->get_default_language(),
142
- $relationship_id
 
143
  );
144
 
145
  return $clause;
@@ -149,24 +207,34 @@ class Toolset_Wp_Query_Adjustments_Table_Join_Manager extends Toolset_Wpdb_User
149
  /**
150
  * Request an alias for the associations table.
151
  *
 
 
152
  * The table will be JOINed on wp_posts.ID by a given relationship slug and element role.
153
  *
154
  * @param string $relationship_slug
155
- * @param IToolset_Relationship_Role $role
 
 
 
156
  *
157
  * @return string
158
  */
159
- public function associations_table( $relationship_slug, IToolset_Relationship_Role $role ) {
160
- if( ! array_key_exists( $relationship_slug, $this->joins ) ) {
161
- $this->joins[ $relationship_slug ] = array();
162
- }
 
 
 
163
 
164
- if( ! array_key_exists( $role->get_name(), $this->joins[ $relationship_slug ] ) ) {
165
- $unique_alias = $this->uniqe_table_alias->generate( $this->table_name->association_table(), true );
166
- $this->joins[ $relationship_slug ][ $role->get_name() ] = $unique_alias;
167
  }
168
 
169
- return $this->joins[ $relationship_slug ][ $role->get_name() ];
 
 
 
170
  }
171
 
172
  }
9
 
10
 
11
  /**
12
+ * @var string[][][][] Unique aliases for the associations table, indexed by:
13
+ * 1. relationship slug,
14
+ * 2. role name to join the table on (to wp_posts.ID) ("role to return")
15
+ * 3. role name to constrain the results with ("role to query by")
16
+ * 4. ID of the associated element in the role to query by
17
  */
18
  private $joins = array();
19
 
73
  public function get_join_clauses() {
74
  $results = '';
75
 
76
+ foreach( $this->joins as $relationship_slug => $data_by_relationship_slug ) {
77
+ foreach( $data_by_relationship_slug as $role_to_return_name => $data_by_role_to_return ) {
78
+ foreach( $data_by_role_to_return as $role_to_query_by => $data_by_role_to_query ) {
79
+ foreach( $data_by_role_to_query as $post_to_query_by => $table_alias ) {
80
+
81
+ $results .= $this->get_single_join_clause(
82
+ $relationship_slug,
83
+ $role_to_return_name,
84
+ $role_to_query_by,
85
+ $post_to_query_by,
86
+ $table_alias
87
+ );
88
+
89
+ }
90
+ }
91
  }
92
  }
93
 
95
  }
96
 
97
 
98
+ /**
99
+ * Build a JOIN clause for one table alias.
100
+ *
101
+ * Note: We need to limit the query by a particular associated element, otherwise we couldn't
102
+ * work with multiple JOINs in one query. This is not a problem because of how this class is used -
103
+ * to query only posts that have associations to all the requested elements (always AND, no OR).
104
+ *
105
+ * @param string $relationship_slug
106
+ * @param string $role_to_return_name
107
+ * @param string $role_to_query_by
108
+ * @param int $element_to_query_by
109
+ * @param string $associations_table_alias
110
+ *
111
+ * @return string
112
+ */
113
+ private function get_single_join_clause(
114
+ $relationship_slug, $role_to_return_name, $role_to_query_by, $element_to_query_by, $associations_table_alias
115
+ ) {
116
 
117
+ $role_to_return_id_column = $this->database_operations->role_to_column( $role_to_return_name );
118
+ $role_to_query_by_id_column = $this->database_operations->role_to_column( $role_to_query_by );
119
  $relationship_definition = $this->definition_repository->get_definition( $relationship_slug );
120
 
121
  if( null === $relationship_definition ) {
126
  $relationship_id = $relationship_definition->get_row_id();
127
 
128
  if( $this->wpml_service->is_wpml_active_and_configured() ) {
129
+ return $this->get_single_join_clause_for_wpml(
130
+ $relationship_id, $associations_table_alias, $role_to_return_id_column, $role_to_query_by_id_column, $element_to_query_by
131
+ );
132
  }
133
 
134
  return $this->wpdb->prepare(
135
  "JOIN {$this->table_name->association_table()} AS {$associations_table_alias} ON (
136
+ wp_posts.ID = {$associations_table_alias}.{$role_to_return_id_column}
137
  AND {$associations_table_alias}.relationship_id = %d
138
+ AND {$associations_table_alias}.{$role_to_query_by_id_column} = %d
139
  ) ",
140
+ $relationship_id,
141
+ $element_to_query_by
142
  );
143
  }
144
 
149
  *
150
  * @param int $relationship_id
151
  * @param string $associations_table_alias
152
+ * @param string $role_to_return_column
153
+ * @param string $role_to_query_by_column
154
+ * @param int $element_to_query_by
155
  *
156
  * @return string
157
  */
158
+ private function get_single_join_clause_for_wpml(
159
+ $relationship_id,
160
+ $associations_table_alias,
161
+ $role_to_return_column,
162
+ $role_to_query_by_column,
163
+ $element_to_query_by
164
+ ) {
165
+
166
+ $alias_translation = 'toolset_t_' . $this->uniqe_table_alias->generate(
167
+ $this->wpml_service->icl_translations_table_name(),
168
+ true
169
+ );
170
+
171
+ $alias_default_lang = 'toolset_dl_' . $this->uniqe_table_alias->generate(
172
+ $this->wpml_service->icl_translations_table_name(),
173
+ true
174
+ );
175
 
176
  $clause = $this->wpdb->prepare(
177
  "
178
  # join the icl_translations table independently from WPML's 't'
179
  # because that one may not be joined at all time, but we
180
  # need it always - this is safer than trying to reuse the 't' one
181
+ LEFT JOIN {$this->wpml_service->icl_translations_table_name()} AS {$alias_translation} ON (
182
+ wp_posts.ID = {$alias_translation}.element_id
183
+ AND {$alias_translation}.element_type = CONCAT('post_', wp_posts.post_type)
184
+ ) LEFT JOIN {$this->wpml_service->icl_translations_table_name()} AS {$alias_default_lang} ON (
185
+ {$alias_translation}.trid = {$alias_default_lang}.trid
186
+ AND {$alias_default_lang}.language_code = %s
187
  ) JOIN {$this->table_name->association_table()} AS {$associations_table_alias} ON (
188
  (
189
  # join the association row if either the post ID matches the
190
  # proper column in the associations table or if the ID of the default
191
  # language version of the post matches it
192
+ wp_posts.ID = {$associations_table_alias}.{$role_to_return_column}
193
+ OR {$alias_default_lang}.element_id = {$associations_table_alias}.{$role_to_return_column}
194
  )
195
  AND {$associations_table_alias}.relationship_id = %d
196
+ AND {$associations_table_alias}.{$role_to_query_by_column} = %d
197
  )",
198
  $this->wpml_service->get_default_language(),
199
+ $relationship_id,
200
+ $element_to_query_by
201
  );
202
 
203
  return $clause;
207
  /**
208
  * Request an alias for the associations table.
209
  *
210
+ * Each call will cause a new JOIN and return a new unique table alias.
211
+ *
212
  * The table will be JOINed on wp_posts.ID by a given relationship slug and element role.
213
  *
214
  * @param string $relationship_slug
215
+ * @param IToolset_Relationship_Role $role_to_return
216
+ *
217
+ * @param IToolset_Relationship_Role $role_to_query_by
218
+ * @param $query_by_element_id
219
  *
220
  * @return string
221
  */
222
+ public function associations_table(
223
+ $relationship_slug, IToolset_Relationship_Role $role_to_return,
224
+ IToolset_Relationship_Role $role_to_query_by,
225
+ $query_by_element_id
226
+ ) {
227
+ $path_to_value = array( $relationship_slug, $role_to_return->get_name(), $role_to_query_by->get_name(), (int) $query_by_element_id );
228
+ $stored_alias = toolset_getnest( $this->joins, $path_to_value, null );
229
 
230
+ if( null !== $stored_alias ) {
231
+ return $stored_alias;
 
232
  }
233
 
234
+ $unique_alias = $this->uniqe_table_alias->generate( $this->table_name->association_table(), true );
235
+ $this->joins = Toolset_Utils::set_nested_value( $this->joins, $path_to_value, $unique_alias );
236
+
237
+ return $unique_alias;
238
  }
239
 
240
  }
vendor/toolset/toolset-common/inc/m2m/association/Repository.php ADDED
@@ -0,0 +1,193 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ namespace OTGS\Toolset\Common\M2M\Association;
5
+
6
+
7
+ /**
8
+ * Class Repository
9
+ *
10
+ * This is useful when you know you will have to do a lot of association request.
11
+ * Instead of doing a lot of small database queries you load them to this repository by doing bigger queries
12
+ * and use this for the smaller afterwards request instead of asking the database.
13
+ *
14
+ * Example of usage: Types_Import_Export::wp_export_before()
15
+ *
16
+ * It can also be (ab)used as a container of Assocation/Relationship_Query and Roles
17
+ * (to make sure you can still do very specific requests, without the need of additional injection).
18
+ * Always consider to extend this Repository class instead of abusing it as a container.
19
+ *
20
+ * @package OTGS\Toolset\Types\Relationship\Association
21
+ */
22
+ class Repository {
23
+ /** @var \Toolset_Relationship_Role_Parent */
24
+ private $role_parent;
25
+
26
+ /** @var \Toolset_Relationship_Role_Child */
27
+ private $role_child;
28
+
29
+ /** @var \Toolset_Relationship_Role_Intermediary */
30
+ private $role_intermediary;
31
+
32
+ /** @var \Toolset_Relationship_Query_Factory */
33
+ private $query_factory;
34
+
35
+ /** @var \Toolset_Element_Domain */
36
+ private $element_domain;
37
+
38
+ /** @var \Toolset_Association[] */
39
+ private $associations = array();
40
+
41
+ /** @var array log of what's already loaded */
42
+ private $alreadyLoaded = array(
43
+ 'posttype' => array(),
44
+ 'child' => array()
45
+ );
46
+
47
+ /**
48
+ * Repository constructor.
49
+ *
50
+ * @param \Toolset_Relationship_Query_Factory $query_factory
51
+ * @param \Toolset_Relationship_Role_Parent $role_parent
52
+ * @param \Toolset_Relationship_Role_Child $role_child
53
+ * @param \Toolset_Relationship_Role_Intermediary $role_Intermediary
54
+ * @param \Toolset_Element_Domain $element_domain
55
+ */
56
+ public function __construct(
57
+ \Toolset_Relationship_Query_Factory $query_factory,
58
+ \Toolset_Relationship_Role_Parent $role_parent,
59
+ \Toolset_Relationship_Role_Child $role_child,
60
+ \Toolset_Relationship_Role_Intermediary $role_Intermediary,
61
+ \Toolset_Element_Domain $element_domain
62
+ ) {
63
+ $this->query_factory = $query_factory;
64
+ $this->role_parent = $role_parent;
65
+ $this->role_child = $role_child;
66
+ $this->role_intermediary = $role_Intermediary;
67
+ $this->element_domain = $element_domain;
68
+ }
69
+
70
+ /**
71
+ * @param \IToolset_Post $toolset_post
72
+ *
73
+ * @return \Toolset_Association[]
74
+ * @throws \Toolset_Element_Exception_Element_Doesnt_Exist
75
+ */
76
+ public function getAssociationsByChildPost( \IToolset_Post $toolset_post ) {
77
+ $result = array();
78
+
79
+ foreach( $this->associations as $association ){
80
+ if( $association->get_element_id( $this->getRoleChild() ) == $toolset_post->get_id() ) {
81
+ $result[$association->get_uid()] = $association;
82
+ }
83
+ }
84
+
85
+ return $result;
86
+ }
87
+
88
+ /**
89
+ * @param \IToolset_Association $association
90
+ */
91
+ public function addAssociation( \IToolset_Association $association ) {
92
+ $this->associations[ $association->get_uid() ] = $association;
93
+ }
94
+
95
+ public function addAssociationsByChild( \IToolset_Element $child ) {
96
+ if( isset( $this->alreadyLoaded['child'][ $child->get_id() ] ) ) {
97
+ // Associations of $child already applied
98
+ return;
99
+ }
100
+
101
+ // get associations by $child
102
+ $qry = $this->getAssociationQuery();
103
+
104
+ $associations = $qry
105
+ ->add( $qry->element( $child, $this->getRoleChild(), false, false ) )
106
+ ->get_results();
107
+
108
+ foreach( $associations as $association ) {
109
+ $this->addAssociation( $association );
110
+ }
111
+
112
+ // mark $child asoociations $
113
+ $this->alreadyLoaded['child'][ $child->get_id() ] = true;
114
+ }
115
+
116
+ /**
117
+ * Load associations by given post type
118
+ * This methods also tracks what's already loaded, means you don't need to care about loading associations
119
+ * of a post type more than once.
120
+ *
121
+ * @param \IToolset_Post_Type $post_type
122
+ */
123
+ public function addAssociationsByPostType( \IToolset_Post_Type $post_type ) {
124
+ if( isset( $this->alreadyLoaded['posttype'][ $post_type->get_slug() ] ) ) {
125
+ // Associations of $post_type already applied
126
+ return;
127
+ }
128
+
129
+ // extra assignment is needed because PHP 5.3 does not support: $this->var::CONST, but $var::CONST is fine
130
+ $element_domain = $this->element_domain;
131
+
132
+ $qry = $this->getRelationshipQuery();
133
+ $relationships = $qry
134
+ ->add( $qry->has_domain_and_type( $post_type->get_slug(), $element_domain::POSTS ) )
135
+ ->add( $qry->origin( null ) )
136
+ ->get_results();
137
+
138
+ foreach( $relationships as $relationship ) {
139
+ $qry = $this->getAssociationQuery();
140
+ $associations = $qry
141
+ ->add( $qry->relationship( $relationship ) )
142
+ ->get_results();
143
+
144
+ foreach( $associations as $association ) {
145
+ $this->addAssociation( $association );
146
+ }
147
+ }
148
+
149
+ // mark $post_type as loaded
150
+ $this->alreadyLoaded['posttype'][ $post_type->get_slug() ] = true;
151
+ }
152
+
153
+ /**
154
+ * @param int|null $limit Optional (the best feature of Toolset_Association_Query is back)
155
+ *
156
+ * @return \Toolset_Association_Query_V2
157
+ */
158
+ public function getAssociationQuery( $limit = null ) {
159
+ $qry = $this->query_factory->associations_v2();
160
+ $qry->limit( $limit ?: 999999999 );
161
+ return $qry;
162
+ }
163
+
164
+ /**
165
+ * @return \Toolset_Relationship_Query_V2
166
+ */
167
+ public function getRelationshipQuery() {
168
+ return $this->query_factory->relationships_v2();
169
+ }
170
+
171
+ /**
172
+ * @return \Toolset_Relationship_Role_Parent
173
+ */
174
+ public function getRoleParent() {
175
+ return $this->role_parent;
176
+ }
177
+
178
+ /**
179
+ * @return \Toolset_Relationship_Role_Child
180
+ */
181
+ public function getRoleChild() {
182
+ return $this->role_child;
183
+ }
184
+
185
+ /**
186
+ * @return \Toolset_Relationship_Role_Intermediary
187
+ */
188
+ public function getRoleIntermediary() {
189
+ return $this->role_intermediary;
190
+ }
191
+
192
+
193
+ }
vendor/toolset/toolset-common/inc/m2m/association/association.php CHANGED
@@ -8,27 +8,20 @@
8
  * Not to be used directly outside of the m2m API.
9
  *
10
  * @since m2m
11
- * @refactoring!!!! Store intermediary ID and post object in the same way as the other elements.
12
  */
13
  class Toolset_Association implements IToolset_Association {
14
 
15
 
16
  /**
17
- * @var int[] IDs of elements, always complete.
18
  *
19
  * However, in case we deal with translatable elements, this will hold only the IDs
20
  * of the default language versions, so these values can't be always used directly.
21
  * get_element_id() will handle the translation if necessary.
22
- */
23
- private $element_ids = array();
24
-
25
-
26
- /**
27
- * @var int Intermediary post ID or zero if there is no intermediary post at all.
28
  *
29
- * See the note for $element_ids. Same goes here.
30
  */
31
- private $intermediary_id;
32
 
33
 
34
  /** @var Toolset_Relationship_Definition */
@@ -47,12 +40,6 @@ class Toolset_Association implements IToolset_Association {
47
  private $uid;
48
 
49
 
50
- /**
51
- * @var null|IToolset_Post
52
- */
53
- protected $intermediary_post;
54
-
55
-
56
  /** @var Toolset_WPML_Compatibility */
57
  private $wpml_service;
58
 
@@ -141,7 +128,7 @@ class Toolset_Association implements IToolset_Association {
141
  && 0 === (int) $element_source
142
  ) {
143
  // No intermediary post.
144
- $this->intermediary_id = 0;
145
  return;
146
  }
147
 
@@ -180,18 +167,10 @@ class Toolset_Association implements IToolset_Association {
180
  throw new InvalidArgumentException( 'Invalid or missing element source.' );
181
  }
182
 
183
- if( $is_intermediary ) {
184
- $this->intermediary_id = $element_id;
185
- if( null !== $element ) {
186
- $this->intermediary_post = $element;
187
- }
188
- } else {
189
- $this->element_ids[ $role_name ] = $element_id;
190
- if( null !== $element ) {
191
- $this->elements[ $role_name ] = $element;
192
- }
193
  }
194
-
195
  }
196
 
197
 
@@ -237,10 +216,6 @@ class Toolset_Association implements IToolset_Association {
237
  $element_role_name = Toolset_Relationship_Role::name_from_role( $element_role );
238
 
239
  if( ! $this->can_be_translated() ) {
240
- if( Toolset_Relationship_Role::INTERMEDIARY === $element_role_name ) {
241
- return $this->intermediary_id;
242
- }
243
-
244
  return $this->element_ids[ $element_role_name ];
245
  }
246
 
@@ -272,10 +247,15 @@ class Toolset_Association implements IToolset_Association {
272
  public function get_element( $element_role ) {
273
  $element_role_name = Toolset_Relationship_Role::name_from_role( $element_role );
274
 
275
- if( Toolset_Relationship_Role::INTERMEDIARY === $element_role_name ) {
276
- return $this->get_intermediary_post();
 
 
 
 
277
  }
278
 
 
279
  if(
280
  ! array_key_exists( $element_role_name, $this->elements )
281
  || null === $this->elements[ $element_role_name ]
@@ -349,20 +329,10 @@ class Toolset_Association implements IToolset_Association {
349
  * @return null|IToolset_Post
350
  */
351
  protected function get_intermediary_post() {
352
- if( 0 === $this->intermediary_id ) {
353
- return null;
354
- }
355
-
356
- if( null === $this->intermediary_post ) {
357
- try {
358
- $this->intermediary_post = $this->get_element_factory()->get_post( $this->intermediary_id );
359
- } catch( Exception $e ) {
360
- // We couldn't load the post, it probably doesn't exist. Reset the ID to avoid checking again.
361
- $this->intermediary_id = 0;
362
- }
363
- }
364
 
365
- return $this->intermediary_post;
366
  }
367
 
368
 
@@ -403,7 +373,7 @@ class Toolset_Association implements IToolset_Association {
403
  */
404
  public function get_intermediary_id() {
405
  if( ! $this->can_be_translated() ) {
406
- return $this->intermediary_id;
407
  }
408
 
409
  // We have to go through the post object because it might be translated.
8
  * Not to be used directly outside of the m2m API.
9
  *
10
  * @since m2m
 
11
  */
12
  class Toolset_Association implements IToolset_Association {
13
 
14
 
15
  /**
16
+ * @var int[] IDs of elements indexed by role names, always complete.
17
  *
18
  * However, in case we deal with translatable elements, this will hold only the IDs
19
  * of the default language versions, so these values can't be always used directly.
20
  * get_element_id() will handle the translation if necessary.
 
 
 
 
 
 
21
  *
22
+ * If the association has no intermediary post, zero will be stored as its ID.
23
  */
24
+ private $element_ids = array();
25
 
26
 
27
  /** @var Toolset_Relationship_Definition */
40
  private $uid;
41
 
42
 
 
 
 
 
 
 
43
  /** @var Toolset_WPML_Compatibility */
44
  private $wpml_service;
45
 
128
  && 0 === (int) $element_source
129
  ) {
130
  // No intermediary post.
131
+ $this->element_ids[ Toolset_Relationship_Role::INTERMEDIARY ] = 0;
132
  return;
133
  }
134
 
167
  throw new InvalidArgumentException( 'Invalid or missing element source.' );
168
  }
169
 
170
+ $this->element_ids[ $role_name ] = $element_id;
171
+ if( null !== $element ) {
172
+ $this->elements[ $role_name ] = $element;
 
 
 
 
 
 
 
173
  }
 
174
  }
175
 
176
 
216
  $element_role_name = Toolset_Relationship_Role::name_from_role( $element_role );
217
 
218
  if( ! $this->can_be_translated() ) {
 
 
 
 
219
  return $this->element_ids[ $element_role_name ];
220
  }
221
 
247
  public function get_element( $element_role ) {
248
  $element_role_name = Toolset_Relationship_Role::name_from_role( $element_role );
249
 
250
+ if(
251
+ Toolset_Relationship_Role::INTERMEDIARY === $element_role_name
252
+ && 0 === $this->element_ids[ Toolset_Relationship_Role::INTERMEDIARY ]
253
+ ) {
254
+ // If we know that there is no intermediary post at all, we'll not even try.
255
+ return null;
256
  }
257
 
258
+ // Load the element if missing.
259
  if(
260
  ! array_key_exists( $element_role_name, $this->elements )
261
  || null === $this->elements[ $element_role_name ]
329
  * @return null|IToolset_Post
330
  */
331
  protected function get_intermediary_post() {
332
+ /** @var IToolset_Post|null $post */
333
+ $post = $this->get_element( new Toolset_Relationship_Role_Intermediary() );
 
 
 
 
 
 
 
 
 
 
334
 
335
+ return $post;
336
  }
337
 
338
 
373
  */
374
  public function get_intermediary_id() {
375
  if( ! $this->can_be_translated() ) {
376
+ return $this->element_ids[ Toolset_Relationship_Role::INTERMEDIARY ];
377
  }
378
 
379
  // We have to go through the post object because it might be translated.
vendor/toolset/toolset-common/inc/m2m/association/cleanup/cron_handler.php CHANGED
@@ -51,7 +51,4 @@ class Toolset_Association_Cleanup_Cron_Handler {
51
  $event = $this->cleanup_factory->cron_event();
52
  $this->cron->unschedule_event( $event );
53
  }
54
-
55
-
56
-
57
  }
51
  $event = $this->cleanup_factory->cron_event();
52
  $this->cron->unschedule_event( $event );
53
  }
 
 
 
54
  }
vendor/toolset/toolset-common/inc/m2m/association/cleanup/post.php CHANGED
@@ -44,7 +44,7 @@ class Toolset_Association_Cleanup_Post extends Toolset_Wpdb_User {
44
  const DELETE_POSTS_PER_BATCH = 25;
45
 
46
 
47
- const IS_DELETING_FILTER = 'toolset_is_deleting_intermediary_post';
48
 
49
 
50
  /** @var Toolset_Element_Factory */
@@ -114,6 +114,12 @@ class Toolset_Association_Cleanup_Post extends Toolset_Wpdb_User {
114
  * @param int $post_id
115
  */
116
  public function cleanup( $post_id ) {
 
 
 
 
 
 
117
  $is_deleting_association = apply_filters( self::IS_DELETING_FILTER, false );
118
 
119
  if( $is_deleting_association ) {
@@ -121,6 +127,9 @@ class Toolset_Association_Cleanup_Post extends Toolset_Wpdb_User {
121
  // If we got here, it means that the association's intermediary post is about to
122
  // be deleted and everything else is already handled either
123
  // in Toolset_Association_Cleanup_Association, or within this class.
 
 
 
124
  return;
125
  }
126
 
44
  const DELETE_POSTS_PER_BATCH = 25;
45
 
46
 
47
+ const IS_DELETING_FILTER = 'toolset_is_deleting_intermediary_post_purposefully';
48
 
49
 
50
  /** @var Toolset_Element_Factory */
114
  * @param int $post_id
115
  */
116
  public function cleanup( $post_id ) {
117
+ /**
118
+ * Filter that can be used to indicate that an intermediary post is deleted
119
+ * purposefully, and that the association shouldn't be removed.
120
+ *
121
+ * @since 2.6.8
122
+ */
123
  $is_deleting_association = apply_filters( self::IS_DELETING_FILTER, false );
124
 
125
  if( $is_deleting_association ) {
127
  // If we got here, it means that the association's intermediary post is about to
128
  // be deleted and everything else is already handled either
129
  // in Toolset_Association_Cleanup_Association, or within this class.
130
+ //
131
+ // Or there is a different situation where an intermediary post is being deleted
132
+ // but we want to preserve the association.
133
  return;
134
  }
135
 
vendor/toolset/toolset-common/inc/m2m/association/cleanup/post_type.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * The class fetches all post ids of all published posts given a post type and deletes them programmatically, without letting m2m API run
5
+ * additional filters to delete Asociations and their data too.
6
+ *
7
+ * Class Toolset_Association_Cleanup_Post_Type
8
+ */
9
+ class Toolset_Association_Cleanup_Post_Type extends Toolset_Wpdb_User {
10
+
11
+
12
+ const DELETE_POSTS_PER_BATCH = 25;
13
+
14
+
15
+ /** @var int */
16
+ private $found_rows = 0;
17
+
18
+
19
+ /**
20
+ * Toolset_Association_Cleanup_Post_Type constructor.
21
+ *
22
+ * @param wpdb|null $wpdb_di
23
+ */
24
+ public function __construct( wpdb $wpdb_di = null ) {
25
+ parent::__construct( $wpdb_di );
26
+ }
27
+
28
+
29
+ /**
30
+ * @param $post_type
31
+ *
32
+ * @return array
33
+ */
34
+ protected function get_post_type_posts_ids( $post_type ) {
35
+
36
+ $limit = (int) self::DELETE_POSTS_PER_BATCH;
37
+
38
+ $query = $this->wpdb->prepare(
39
+ "SELECT SQL_CALC_FOUND_ROWS post.ID FROM {$this->wpdb->posts} AS post
40
+ WHERE post.post_type = %s LIMIT %d", $post_type, $limit
41
+ );
42
+
43
+ $posts_ids = $this->wpdb->get_col( $query );
44
+
45
+ $this->found_rows = (int) $this->wpdb->get_var( 'SELECT FOUND_ROWS()' );
46
+
47
+ return $posts_ids;
48
+ }
49
+
50
+ /**
51
+ * @param $post_type
52
+ *
53
+ * @return array
54
+ */
55
+ public function clean_up_posts( $post_type ) {
56
+ $post_ids = array_map( 'intval', $this->get_post_type_posts_ids( $post_type ) );
57
+
58
+ add_filter( Toolset_Association_Cleanup_Post::IS_DELETING_FILTER, '__return_true' );
59
+
60
+ foreach ( $post_ids as $post_id ) {
61
+ wp_delete_post( $post_id, true );
62
+ }
63
+
64
+ remove_filter( Toolset_Association_Cleanup_Post::IS_DELETING_FILTER, '__return_true' );
65
+
66
+ $results = array();
67
+
68
+ $results['total_posts'] = $this->found_rows;
69
+
70
+ $results['deleted_posts'] = count( $post_ids );
71
+
72
+ return $results;
73
+ }
74
+
75
+ }
vendor/toolset/toolset-common/inc/m2m/association/intermediary_post_persistence.php CHANGED
@@ -180,6 +180,33 @@ class Toolset_Association_Intermediary_Post_Persistence {
180
  }
181
 
182
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
 
184
  /**
185
  * Creates an empty association intermediary post
180
  }
181
 
182
 
183
+ /**
184
+ * Removes intermediary post from associations.
185
+ *
186
+ * @param int $limit The number of associations in a loop.
187
+ * @return int Number of associations updated.
188
+ * @since 2.3
189
+ */
190
+ public function remove_associations_intermediary_posts( $limit = 0 ) {
191
+ if ( (int) $limit <= 0 ) {
192
+ $limit = self::DEFAULT_LIMIT;
193
+ }
194
+
195
+ $association_query = new Toolset_Association_Query_V2();
196
+ $association_query->add( $association_query->relationship( $this->relationship ) )
197
+ ->add( $association_query->has_intermediary_id() )
198
+ ->limit( $limit );
199
+ $associations = $association_query->get_results();
200
+ foreach ( $associations as $association ) {
201
+ // Don't use `maybe_delete_intermediary_post` because it tries to access an object it doesn't exist.
202
+ $intermediary_id = $association->get_intermediary_id();
203
+ if ( $intermediary_id ) {
204
+ $database_operations = new Toolset_Relationship_Database_Operations();
205
+ $database_operations->update_association_intermediary_id( $association->get_uid(), 0 );
206
+ }
207
+ }
208
+ return count( $associations );
209
+ }
210
 
211
  /**
212
  * Creates an empty association intermediary post
vendor/toolset/toolset-common/inc/m2m/association/persistence.php CHANGED
@@ -124,6 +124,8 @@ class Toolset_Association_Persistence {
124
 
125
  $updated_association = $this->association_translator->from_database_row( (object) $row );
126
 
 
 
127
  return $updated_association;
128
  }
129
 
@@ -139,6 +141,7 @@ class Toolset_Association_Persistence {
139
  * @since m2m
140
  */
141
  public function delete_association( IToolset_Association $association ) {
 
142
  $cleanup = $this->get_cleanup_factory()->association();
143
  return $cleanup->delete( $association );
144
  }
@@ -156,5 +159,64 @@ class Toolset_Association_Persistence {
156
  }
157
 
158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
  }
124
 
125
  $updated_association = $this->association_translator->from_database_row( (object) $row );
126
 
127
+ $this->report_inserted_association( $updated_association );
128
+
129
  return $updated_association;
130
  }
131
 
141
  * @since m2m
142
  */
143
  public function delete_association( IToolset_Association $association ) {
144
+ $this->report_before_association_delete( $association );
145
  $cleanup = $this->get_cleanup_factory()->association();
146
  return $cleanup->delete( $association );
147
  }
159
  }
160
 
161
 
162
+ /**
163
+ * Do the toolset_association_created action.
164
+ *
165
+ * See report_association_change() for action parameter information.
166
+ *
167
+ * @param IToolset_Association $association
168
+ * @since 2.7
169
+ */
170
+ private function report_inserted_association( IToolset_Association $association ) {
171
+ $this->report_association_change( $association, 'toolset_association_created' );
172
+ }
173
+
174
+
175
+
176
+ /**
177
+ * Do the toolset_before_association_delete action.
178
+ *
179
+ * See report_association_change() for action parameter information.
180
+ *
181
+ * @param IToolset_Association $association
182
+ * @since 2.7
183
+ */
184
+ public function report_before_association_delete( IToolset_Association $association ) {
185
+ $this->report_association_change( $association, 'toolset_before_association_delete' );
186
+ }
187
+
188
+
189
+ /**
190
+ * Do an action that indicates a change to an association.
191
+ *
192
+ * Action parameters:
193
+ * - (string) $relationship_slug
194
+ * - (int) $parent_id
195
+ * - (int) $child_id
196
+ * - (int) $intermediary_id, zero if there is none.
197
+ * - (int) $association_uid: An internal identifier for the association. May become useful in the future.
198
+ *
199
+ * Note that all element IDs will come in their default language version.
200
+ *
201
+ * @param IToolset_Association $association
202
+ * @param string $action_name Name of the hook.
203
+ * @since 2.7
204
+ */
205
+ private function report_association_change( IToolset_Association $association, $action_name ) {
206
+
207
+ $intermediary_post_id = ( $association->has_intermediary_post()
208
+ ? $association->get_element( new Toolset_Relationship_Role_Intermediary() )->get_default_language_id()
209
+ : 0
210
+ );
211
+
212
+ do_action(
213
+ $action_name,
214
+ $association->get_definition()->get_slug(),
215
+ $association->get_element( new Toolset_Relationship_Role_Parent() )->get_default_language_id(),
216
+ $association->get_element( new Toolset_Relationship_Role_Child() )->get_default_language_id(),
217
+ $intermediary_post_id,
218
+ $association->get_uid()
219
+ );
220
+ }
221
 
222
  }
vendor/toolset/toolset-common/inc/m2m/association/query/association_query.php CHANGED
@@ -35,6 +35,7 @@ class Toolset_Association_Query extends Toolset_Relationship_Query_Base {
35
  const QUERY_LIMIT = 'limit';
36
  const QUERY_SELECT_FIELDS = 'select_fields';
37
  const QUERY_RELATIONSHIP_SLUG = 'relationship_slug';
 
38
  const QUERY_RELATIONSHIP_ID = 'relationship_id';
39
  const QUERY_PARENT_ID = 'parent_id';
40
  const QUERY_CHILD_ID = 'child_id';
@@ -71,6 +72,7 @@ class Toolset_Association_Query extends Toolset_Relationship_Query_Base {
71
  $this->parse_query_arg( $query, self::QUERY_RELATIONSHIP_ID, 'absint' );
72
  $this->parse_query_arg( $query, self::QUERY_PARENT_ID, 'absint' );
73
  $this->parse_query_arg( $query, self::QUERY_CHILD_ID, 'absint' );
 
74
  $this->parse_query_arg( $query, self::QUERY_LIMIT, 'absint' );
75
  $this->parse_query_arg( $query, self::QUERY_OFFSET, 'absint' );
76
  $this->parse_query_arg( $query, self::QUERY_SELECT_FIELDS, null, array() );
@@ -102,6 +104,11 @@ class Toolset_Association_Query extends Toolset_Relationship_Query_Base {
102
  $q->add( $q->relationship_id( $relationship_id ) );
103
  }
104
 
 
 
 
 
 
105
  if ( $this->has_query_var( self::QUERY_PARENT_ID ) ) {
106
  $q->add( $q->parent_id( $this->get_query_var( self::QUERY_PARENT_ID ) ) );
107
  }
35
  const QUERY_LIMIT = 'limit';
36
  const QUERY_SELECT_FIELDS = 'select_fields';
37
  const QUERY_RELATIONSHIP_SLUG = 'relationship_slug';
38
+ const QUERY_INTERMEDIARY_ID = 'intermediary_id';
39
  const QUERY_RELATIONSHIP_ID = 'relationship_id';
40
  const QUERY_PARENT_ID = 'parent_id';
41
  const QUERY_CHILD_ID = 'child_id';
72
  $this->parse_query_arg( $query, self::QUERY_RELATIONSHIP_ID, 'absint' );
73
  $this->parse_query_arg( $query, self::QUERY_PARENT_ID, 'absint' );
74
  $this->parse_query_arg( $query, self::QUERY_CHILD_ID, 'absint' );
75
+ $this->parse_query_arg( $query, self::QUERY_INTERMEDIARY_ID, 'absint' );
76
  $this->parse_query_arg( $query, self::QUERY_LIMIT, 'absint' );
77
  $this->parse_query_arg( $query, self::QUERY_OFFSET, 'absint' );
78
  $this->parse_query_arg( $query, self::QUERY_SELECT_FIELDS, null, array() );
104
  $q->add( $q->relationship_id( $relationship_id ) );
105
  }
106
 
107
+ if ( $this->has_query_var( self::QUERY_INTERMEDIARY_ID ) ) {
108
+ $intermediary_id = $this->get_query_var( self::QUERY_INTERMEDIARY_ID );
109
+ $q->add( $q->intermediary_id( $intermediary_id ) );
110
+ }
111
+
112
  if ( $this->has_query_var( self::QUERY_PARENT_ID ) ) {
113
  $q->add( $q->parent_id( $this->get_query_var( self::QUERY_PARENT_ID ) ) );
114
  }
vendor/toolset/toolset-common/inc/m2m/association/query/association_query_v2.php CHANGED
@@ -49,7 +49,7 @@
49
  *
50
  * @since 2.5.8
51
  */
52
- class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset_Query {
53
 
54
 
55
  /** @var IToolset_Association_Query_Condition[] */
@@ -115,6 +115,12 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
115
  /** @var IToolset_Association_Query_Restriction[] */
116
  private $restrictions = array();
117
 
 
 
 
 
 
 
118
 
119
  /**
120
  * Toolset_Association_Query_V2 constructor.
@@ -128,6 +134,7 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
128
  * @param Toolset_Association_Query_Table_Join_Manager|null $join_manager_di
129
  * @param Toolset_Association_Query_Orderby_Factory|null $orderby_factory_di
130
  * @param Toolset_Association_Query_Element_Selector_Provider|null $element_selector_provider_di
 
131
  */
132
  public function __construct(
133
  wpdb $wpdb_di = null,
@@ -138,7 +145,8 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
138
  Toolset_Relationship_Definition_Repository $definition_repository_di = null,
139
  Toolset_Association_Query_Table_Join_Manager $join_manager_di = null,
140
  Toolset_Association_Query_Orderby_Factory $orderby_factory_di = null,
141
- Toolset_Association_Query_Element_Selector_Provider $element_selector_provider_di = null
 
142
  ) {
143
  parent::__construct( $wpdb_di );
144
  $this->unique_table_alias = $unique_table_alias_di ?: new Toolset_Relationship_Database_Unique_Table_Alias();
@@ -149,6 +157,7 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
149
  $this->orderby_factory = $orderby_factory_di ?: new Toolset_Association_Query_Orderby_Factory();
150
  $this->element_selector_provider = $element_selector_provider_di ?: new Toolset_Association_Query_Element_Selector_Provider();
151
  $this->_definition_repository = $definition_repository_di;
 
152
  }
153
 
154
 
@@ -273,6 +282,9 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
273
  $this->return_association_instances();
274
  }
275
 
 
 
 
276
  $this->apply_restrictions();
277
 
278
  // We do this only after restrictions have been applied.
@@ -356,6 +368,10 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
356
  }
357
 
358
 
 
 
 
 
359
  /**
360
  * Query by a row ID of a relationship definition.
361
  *
@@ -366,6 +382,16 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
366
  return $this->condition_factory->relationship_id( $relationship_id );
367
  }
368
 
 
 
 
 
 
 
 
 
 
 
369
 
370
  /**
371
  * Query by a relationship definition.
@@ -444,6 +470,8 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
444
  * as stored in the association table. Default is false.
445
  * @param bool $translate_provided_id If true, this will try to translate the element ID (if
446
  * applicable on the domain) and use the translated one in the final condition. Default is true.
 
 
447
  *
448
  * @return Toolset_Association_Query_Condition_Element_Id_And_Domain
449
  * @since 2.5.10
@@ -453,8 +481,13 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
453
  $domain,
454
  IToolset_Relationship_Role $for_role,
455
  $query_original_element = false,
456
- $translate_provided_id = true
 
457
  ) {
 
 
 
 
458
  return $this->condition_factory->element_id_and_domain(
459
  $element_id,
460
  $domain,
@@ -475,6 +508,8 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
475
  * as stored in the association table. Default is false.
476
  * @param bool $translate_provided_id If true, this will try to translate the element ID (if
477
  * applicable on the domain) and use the translated one in the final condition. Default is true.
 
 
478
  *
479
  * @return IToolset_Association_Query_Condition
480
  */
@@ -482,14 +517,18 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
482
  IToolset_Element $element,
483
  IToolset_Relationship_Role $for_role = null,
484
  $query_original_element = false,
485
- $translate_provided_id = true
 
486
  ) {
 
 
 
487
 
488
  if( null === $for_role ) {
489
  $conditions = array();
490
  foreach( Toolset_Relationship_Role::all() as $role ) {
491
  $conditions[] = $this->element(
492
- $element, $role, $query_original_element, $translate_provided_id
493
  );
494
  }
495
  return $this->do_or( $conditions );
@@ -686,6 +725,28 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
686
  }
687
 
688
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
689
  /**
690
  * Query by a WP_Query arguments applied on an element of a specified role.
691
  *
@@ -977,6 +1038,92 @@ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User implements IToolset
977
  }
978
 
979
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
980
  /**
981
  * Perform the query to only return the number of found rows, if we're not interested in
982
  * the actual results.
49
  *
50
  * @since 2.5.8
51
  */
52
+ class Toolset_Association_Query_V2 extends Toolset_Wpdb_User {
53
 
54
 
55
  /** @var IToolset_Association_Query_Condition[] */
115
  /** @var IToolset_Association_Query_Restriction[] */
116
  private $restrictions = array();
117
 
118
+ /** @var string|null */
119
+ private $translation_language;
120
+
121
+ /** @var Toolset_WPML_Compatibility */
122
+ private $wpml_service;
123
+
124
 
125
  /**
126
  * Toolset_Association_Query_V2 constructor.
134
  * @param Toolset_Association_Query_Table_Join_Manager|null $join_manager_di
135
  * @param Toolset_Association_Query_Orderby_Factory|null $orderby_factory_di
136
  * @param Toolset_Association_Query_Element_Selector_Provider|null $element_selector_provider_di
137
+ * @param Toolset_WPML_Compatibility|null $wpml_service_di
138
  */
139
  public function __construct(
140
  wpdb $wpdb_di = null,
145
  Toolset_Relationship_Definition_Repository $definition_repository_di = null,
146
  Toolset_Association_Query_Table_Join_Manager $join_manager_di = null,
147
  Toolset_Association_Query_Orderby_Factory $orderby_factory_di = null,
148
+ Toolset_Association_Query_Element_Selector_Provider $element_selector_provider_di = null,
149
+ Toolset_WPML_Compatibility $wpml_service_di = null
150
  ) {
151
  parent::__construct( $wpdb_di );
152
  $this->unique_table_alias = $unique_table_alias_di ?: new Toolset_Relationship_Database_Unique_Table_Alias();
157
  $this->orderby_factory = $orderby_factory_di ?: new Toolset_Association_Query_Orderby_Factory();
158
  $this->element_selector_provider = $element_selector_provider_di ?: new Toolset_Association_Query_Element_Selector_Provider();
159
  $this->_definition_repository = $definition_repository_di;
160
+ $this->wpml_service = $wpml_service_di ?: Toolset_WPML_Compatibility::get_instance();
161
  }
162
 
163
 
282
  $this->return_association_instances();
283
  }
284
 
285
+ // Sometimes it's not as straightforward as "get current language"
286
+ $this->determine_translation_language();
287
+
288
  $this->apply_restrictions();
289
 
290
  // We do this only after restrictions have been applied.
368
  }
369
 
370
 
371
+ public function not( IToolset_Association_Query_Condition $condition ) {
372
+ return $this->condition_factory->not( $condition );
373
+ }
374
+
375
  /**
376
  * Query by a row ID of a relationship definition.
377
  *
382
  return $this->condition_factory->relationship_id( $relationship_id );
383
  }
384
 
385
+ /**
386
+ * Query by a row intermediary_id of a relationship definition.
387
+ *
388
+ * @param int $relationship_id
389
+ * @return IToolset_Association_Query_Condition
390
+ */
391
+ public function intermediary_id( $relationship_id ) {
392
+ return $this->condition_factory->intermediary_id( $relationship_id );
393
+ }
394
+
395
 
396
  /**
397
  * Query by a relationship definition.
470
  * as stored in the association table. Default is false.
471
  * @param bool $translate_provided_id If true, this will try to translate the element ID (if
472
  * applicable on the domain) and use the translated one in the final condition. Default is true.
473
+ * @param bool $set_its_translation_language If true, the query may try to use the element's language
474
+ * to determine the desired language of the results (see determine_translation_language() for details)
475
  *
476
  * @return Toolset_Association_Query_Condition_Element_Id_And_Domain
477
  * @since 2.5.10
481
  $domain,
482
  IToolset_Relationship_Role $for_role,
483
  $query_original_element = false,
484
+ $translate_provided_id = true,
485
+ $set_its_translation_language = true
486
  ) {
487
+ if( $set_its_translation_language ) {
488
+ $this->set_translation_language_by_element_id_and_domain( $element_id, $domain );
489
+ }
490
+
491
  return $this->condition_factory->element_id_and_domain(
492
  $element_id,
493
  $domain,
508
  * as stored in the association table. Default is false.
509
  * @param bool $translate_provided_id If true, this will try to translate the element ID (if
510
  * applicable on the domain) and use the translated one in the final condition. Default is true.
511
+ * @param bool $set_its_translation_language If true, the query may try to use the element's language
512
+ * to determine the desired language of the results (see determine_translation_language() for details)
513
  *
514
  * @return IToolset_Association_Query_Condition
515
  */
517
  IToolset_Element $element,
518
  IToolset_Relationship_Role $for_role = null,
519
  $query_original_element = false,
520
+ $translate_provided_id = true,
521
+ $set_its_translation_language = true
522
  ) {
523
+ if( $set_its_translation_language ) {
524
+ $this->set_translation_language_by_element_id_and_domain( $element->get_id(), $element->get_domain() );
525
+ }
526
 
527
  if( null === $for_role ) {
528
  $conditions = array();
529
  foreach( Toolset_Relationship_Role::all() as $role ) {
530
  $conditions[] = $this->element(
531
+ $element, $role, $query_original_element, $translate_provided_id, false
532
  );
533
  }
534
  return $this->do_or( $conditions );
725
  }
726
 
727
 
728
+ /**
729
+ * Condition that a relationship has a certain origin.
730
+ *
731
+ * @param String $origin Origin.
732
+ *
733
+ * @return IToolset_Relationship_Query_Condition
734
+ */
735
+ public function has_origin( $origin ) {
736
+ return $this->condition_factory->has_origin( $origin, $this->join_manager );
737
+ }
738
+
739
+
740
+ /**
741
+ * Condition that the association has an intermediary id.
742
+ *
743
+ * @return IToolset_Relationship_Query_Condition
744
+ */
745
+ public function has_intermediary_id() {
746
+ return $this->condition_factory->has_intermediary_id();
747
+ }
748
+
749
+
750
  /**
751
  * Query by a WP_Query arguments applied on an element of a specified role.
752
  *
1038
  }
1039
 
1040
 
1041
+ /**
1042
+ * Make sure that the elements in results will never get translated.
1043
+ *
1044
+ * @since 2.6.4
1045
+ * @return $this
1046
+ */
1047
+ public function dont_translate_results() {
1048
+ $this->element_selector_provider->attempt_translating_elements( false );
1049
+ return $this;
1050
+ }
1051
+
1052
+
1053
+ /**
1054
+ * Set the preferred translation language.
1055
+ *
1056
+ * See determine_translation_language() for details.
1057
+ *
1058
+ * @param string $lang_code Valid language code.
1059
+ *
1060
+ * @return $this
1061
+ */
1062
+ public function set_translation_language( $lang_code ) {
1063
+ if( ! is_string( $lang_code ) ) {
1064
+ throw new InvalidArgumentException();
1065
+ }
1066
+
1067
+ $this->translation_language = $lang_code;
1068
+
1069
+ return $this;
1070
+ }
1071
+
1072
+
1073
+ /**
1074
+ * Set the preferred translation language from a given element ID and domain.
1075
+ *
1076
+ * See determine_translation_language() for details.
1077
+ *
1078
+ * @param int $element_id ID of the element to take the language from.
1079
+ * @param string $domain Element domain.
1080
+ *
1081
+ * @return $this
1082
+ * @since 2.6.8
1083
+ */
1084
+ public function set_translation_language_by_element_id_and_domain( $element_id, $domain ) {
1085
+ if( Toolset_Element_Domain::POSTS !== $domain ) {
1086
+ // no language information there
1087
+ return $this;
1088
+ }
1089
+
1090
+ $post_language = $this->wpml_service->get_post_language( $element_id );
1091
+ if( ! empty( $post_language ) ) {
1092
+ $this->set_translation_language( $post_language );
1093
+ }
1094
+
1095
+ return $this;
1096
+ }
1097
+
1098
+
1099
+ /**
1100
+ * Determine an alternative to the translation language (what language version of the results should be chosen).
1101
+ *
1102
+ * This will be used only if applicable - if WPML is active and the current language is set to "All languages",
1103
+ * in which case we're forced to pick one.
1104
+ *
1105
+ * If we have a valid lang code, we'll pass it to the element selector. Otherwise, it will use the default language.
1106
+ *
1107
+ * @since 2.6.8
1108
+ */
1109
+ private function determine_translation_language() {
1110
+ if( ! $this->wpml_service->is_wpml_active_and_configured() ) {
1111
+ return;
1112
+ }
1113
+
1114
+ if( ! $this->wpml_service->is_showing_all_languages() ) {
1115
+ return;
1116
+ }
1117
+
1118
+ if( null === $this->translation_language ) {
1119
+ // Here, we may try to determine the language by some other means.
1120
+ return;
1121
+ }
1122
+
1123
+ $this->element_selector_provider->set_translation_language( $this->translation_language );
1124
+ }
1125
+
1126
+
1127
  /**
1128
  * Perform the query to only return the number of found rows, if we're not interested in
1129
  * the actual results.
vendor/toolset/toolset-common/inc/m2m/association/query/condition/exclude_relationship.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Condition to query associations that don't belong to a relationship.
5
+ *
6
+ * @since 2.5.8
7
+ */
8
+ class Toolset_Association_Query_Condition_Exclude_Relationship extends Toolset_Association_Query_Condition_Relationship_Id {
9
+
10
+
11
+ /**
12
+ * Returns condition operator
13
+ *
14
+ * @return string
15
+ * @since m2m
16
+ */
17
+ protected function get_operator() {
18
+ return '!=';
19
+ }
20
+
21
+ }
vendor/toolset/toolset-common/inc/m2m/association/query/condition/has_intermediary_id.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Condition to query associations by a specific intermediary post (row) ID.
5
+ *
6
+ * @since 2.6.7
7
+ */
8
+ class Toolset_Association_Query_Condition_Has_Intermediary_Id extends Toolset_Association_Query_Condition {
9
+
10
+
11
+ /**
12
+ * Get a part of the WHERE clause that applies the condition.
13
+ *
14
+ * @return string Valid part of a MySQL query, so that it can be
15
+ * used in WHERE ( $condition1 ) AND ( $condition2 ) AND ( $condition3 ) ...
16
+ */
17
+ public function get_where_clause() {
18
+ return sprintf( ' ( associations.intermediary_id IS NOT NULL and associations.intermediary_id > 0 ) ' );
19
+ }
20
+ }
vendor/toolset/toolset-common/inc/m2m/association/query/condition/intermediary_id.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Condition to query associations by a specific intermediary post (row) ID.
5
+ *
6
+ * @since 2.6.7
7
+ */
8
+ class Toolset_Association_Query_Condition_Intermediary_Id extends Toolset_Association_Query_Condition {
9
+
10
+
11
+ /** @var int */
12
+ private $intermediary_id;
13
+
14
+
15
+ /**
16
+ * Toolset_Association_Query_Condition_Intermediary_Id constructor.
17
+ *
18
+ * @param int $intermediary_id
19
+ * @throws InvalidArgumentException
20
+ */
21
+ public function __construct( $intermediary_id ) {
22
+ if( ! Toolset_Utils::is_nonnegative_integer( $intermediary_id ) ) {
23
+ throw new InvalidArgumentException();
24
+ }
25
+
26
+ $this->intermediary_id = (int) $intermediary_id;
27
+ }
28
+
29
+
30
+ /**
31
+ * Get a part of the WHERE clause that applies the condition.
32
+ *
33
+ * @return string Valid part of a MySQL query, so that it can be
34
+ * used in WHERE ( $condition1 ) AND ( $condition2 ) AND ( $condition3 ) ...
35
+ */
36
+ public function get_where_clause() {
37
+ return sprintf( 'associations.intermediary_id = %d', $this->intermediary_id );
38
+ }
39
+
40
+
41
+ }
vendor/toolset/toolset-common/inc/m2m/association/query/condition/relationship_id.php CHANGED
@@ -34,8 +34,18 @@ class Toolset_Association_Query_Condition_Relationship_Id extends Toolset_Associ
34
  * used in WHERE ( $condition1 ) AND ( $condition2 ) AND ( $condition3 ) ...
35
  */
36
  public function get_where_clause() {
37
- return sprintf( 'associations.relationship_id = %d', $this->relationship_id );
38
  }
39
 
40
 
41
- }
 
 
 
 
 
 
 
 
 
 
34
  * used in WHERE ( $condition1 ) AND ( $condition2 ) AND ( $condition3 ) ...
35
  */
36
  public function get_where_clause() {
37
+ return sprintf( 'associations.relationship_id %s %d', $this->get_operator(), $this->relationship_id );
38
  }
39
 
40
 
41
+ /**
42
+ * Returns condition operator
43
+ *
44
+ * @return string
45
+ * @since m2m
46
+ */
47
+ protected function get_operator() {
48
+ return '=';
49
+ }
50
+
51
+ }
vendor/toolset/toolset-common/inc/m2m/association/query/condition/relationship_origin.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Query associations by the origin value of a relationship they belong to.
5
+ *
6
+ * @since m2m
7
+ */
8
+ class Toolset_Association_Query_Condition_Relationship_Origin extends Toolset_Association_Query_Condition {
9
+
10
+ /** @var Toolset_Association_Query_Table_Join_Manager */
11
+ private $join_manager;
12
+
13
+
14
+ /** @var bool */
15
+ private $expected_value;
16
+
17
+
18
+ /**
19
+ * Toolset_Association_Query_Condition_Has_Active_Relationship constructor.
20
+ *
21
+ * @param bool $expected_value
22
+ * @param Toolset_Association_Query_Table_Join_Manager $join_manager
23
+ */
24
+ public function __construct( $expected_value, Toolset_Association_Query_Table_Join_Manager $join_manager ) {
25
+ $this->expected_value = $expected_value;
26
+ $this->join_manager = $join_manager;
27
+ }
28
+
29
+
30
+ /**
31
+ * Get a part of the WHERE clause that applies the condition.
32
+ *
33
+ * @return string Valid part of a MySQL query, so that it can be
34
+ * used in WHERE ( $condition1 ) AND ( $condition2 ) AND ( $condition3 ) ...
35
+ */
36
+ public function get_where_clause() {
37
+ $relationships_table = $this->join_manager->relationships();
38
+
39
+ return sprintf(
40
+ '%s.origin = %d',
41
+ $relationships_table,
42
+ esc_sql( $this->expected_value )
43
+ );
44
+ }
45
+ }
vendor/toolset/toolset-common/inc/m2m/association/query/condition_factory.php CHANGED
@@ -65,6 +65,27 @@ class Toolset_Association_Query_Condition_Factory {
65
  return new Toolset_Association_Query_Condition_Relationship_Id( $relationship_id );
66
  }
67
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
  /**
70
  * Condition to query associations by a particular element involved in a particular role.
@@ -109,7 +130,7 @@ class Toolset_Association_Query_Condition_Factory {
109
  $element_id, $domain, $for_role, $element_selector_provider, $query_original_element, $translate_provided_id
110
  );
111
  }
112
-
113
 
114
 
115
  /**
@@ -319,4 +340,27 @@ class Toolset_Association_Query_Condition_Factory {
319
  $join_manager
320
  );
321
  }
322
- }
 
 
 
 
 
 
 
 
 
 
65
  return new Toolset_Association_Query_Condition_Relationship_Id( $relationship_id );
66
  }
67
 
68
+ /**
69
+ * Condition to query associations by a specific intermediary (row) ID.
70
+ *
71
+ * @param int $intermediary_id
72
+ *
73
+ * @return IToolset_Association_Query_Condition
74
+ */
75
+ public function intermediary_id( $intermediary_id ) {
76
+ return new Toolset_Association_Query_Condition_Intermediary_Id( $intermediary_id );
77
+ }
78
+
79
+
80
+ /**
81
+ * Condition to query associations having intermediary id.
82
+ *
83
+ * @return IToolset_Association_Query_Condition
84
+ */
85
+ public function has_intermediary_id() {
86
+ return new Toolset_Association_Query_Condition_Has_Intermediary_Id();
87
+ }
88
+
89
 
90
  /**
91
  * Condition to query associations by a particular element involved in a particular role.
130
  $element_id, $domain, $for_role, $element_selector_provider, $query_original_element, $translate_provided_id
131
  );
132
  }
133
+
134
 
135
 
136
  /**
340
  $join_manager
341
  );
342
  }
343
+
344
+
345
+ /**
346
+ * Condition that a relationship has a certain origin.
347
+ *
348
+ * @param string $origin Origin: wizard, ...
349
+ * @param Toolset_Association_Query_Table_Join_Manager $join_manager Join manager.
350
+ *
351
+ * @return IToolset_Relationship_Query_Condition
352
+ */
353
+ public function has_origin( $origin, Toolset_Association_Query_Table_Join_Manager $join_