Social Media Share Buttons & Social Sharing Icons - Version 2.4.5

Version Description

  • Updated Export section and success message after export
  • Corrected so that responsive icons don't show on homepage
  • Added Lazy load css to reduce conflicts
Download this release

Release Info

Developer socialdude
Plugin Icon 128x128 Social Media Share Buttons & Social Sharing Icons
Version 2.4.5
Comparing to
See all releases

Code changes from version 2.4.4 to 2.4.5

analyst/src/Account/Account.php CHANGED
@@ -1,584 +1,584 @@
1
- <?php
2
-
3
- namespace Account;
4
-
5
- use Analyst\Analyst;
6
- use Analyst\ApiRequestor;
7
- use Analyst\Cache\DatabaseCache;
8
- use Analyst\Collector;
9
- use Analyst\Http\Requests\ActivateRequest;
10
- use Analyst\Http\Requests\DeactivateRequest;
11
- use Analyst\Http\Requests\InstallRequest;
12
- use Analyst\Http\Requests\OptInRequest;
13
- use Analyst\Http\Requests\OptOutRequest;
14
- use Analyst\Http\Requests\UninstallRequest;
15
- use Analyst\Notices\Notice;
16
- use Analyst\Notices\NoticeFactory;
17
- use Analyst\Contracts\TrackerContract;
18
- use Analyst\Contracts\RequestorContract;
19
-
20
- /**
21
- * Class Account
22
- *
23
- * This is plugin's account object
24
- */
25
- class Account implements TrackerContract
26
- {
27
- /**
28
- * Account id
29
- *
30
- * @var string
31
- */
32
- protected $id;
33
-
34
- /**
35
- * Basename of plugin
36
- *
37
- * @var string
38
- */
39
- protected $path;
40
-
41
- /**
42
- * Whether plugin is active or not
43
- *
44
- * @var bool
45
- */
46
- protected $isInstalled = false;
47
-
48
- /**
49
- * Is user sign in for data tracking
50
- *
51
- * @var bool
52
- */
53
- protected $isOptedIn = false;
54
-
55
- /**
56
- * Is user accepted permissions grant
57
- * for collection site data
58
- *
59
- * @var bool
60
- */
61
- protected $isSigned = false;
62
-
63
- /**
64
- * Is user ever resolved install modal window?
65
- *
66
- * @var bool
67
- */
68
- protected $isInstallResolved = false;
69
-
70
- /**
71
- * Public secret code
72
- *
73
- * @var string
74
- */
75
- protected $clientSecret;
76
-
77
- /**
78
- * @var AccountData
79
- */
80
- protected $data;
81
-
82
- /**
83
- * Base plugin path
84
- *
85
- * @var string
86
- */
87
- protected $basePluginPath;
88
-
89
- /**
90
- * @var RequestorContract
91
- */
92
- protected $requestor;
93
-
94
- /**
95
- * @var Collector
96
- */
97
- protected $collector;
98
-
99
- /**
100
- * Account constructor.
101
- * @param $id
102
- * @param $secret
103
- * @param $baseDir
104
- */
105
- public function __construct($id, $secret, $baseDir)
106
- {
107
- $this->id = $id;
108
- $this->clientSecret = $secret;
109
-
110
- $this->path = $baseDir;
111
-
112
- $this->basePluginPath = plugin_basename($baseDir);
113
- }
114
-
115
- /**
116
- * @return string
117
- */
118
- public function getPath()
119
- {
120
- return $this->path;
121
- }
122
-
123
- /**
124
- * @param string $path
125
- */
126
- public function setPath($path)
127
- {
128
- $this->data->setPath($path);
129
-
130
- $this->path = $path;
131
- }
132
-
133
- /**
134
- * @return bool
135
- */
136
- public function isOptedIn()
137
- {
138
- return $this->isOptedIn;
139
- }
140
-
141
- /**
142
- * @param bool $isOptedIn
143
- */
144
- public function setIsOptedIn($isOptedIn)
145
- {
146
- $this->data->setIsOptedIn($isOptedIn);
147
-
148
- $this->isOptedIn = $isOptedIn;
149
- }
150
-
151
- /**
152
- * Whether plugin is active
153
- *
154
- * @return bool
155
- */
156
- public function isActive()
157
- {
158
- return is_plugin_active($this->path);
159
- }
160
-
161
- /**
162
- * @param string $id
163
- */
164
- public function setId($id)
165
- {
166
- $this->id = $id;
167
- }
168
-
169
- /**
170
- * @return string
171
- */
172
- public function getId()
173
- {
174
- return $this->id;
175
- }
176
-
177
- /**
178
- * @return bool
179
- */
180
- public function isInstalled()
181
- {
182
- return $this->isInstalled;
183
- }
184
-
185
- /**
186
- * @param bool $isInstalled
187
- */
188
- public function setIsInstalled($isInstalled)
189
- {
190
- $this->data->setIsInstalled($isInstalled);
191
-
192
- $this->isInstalled = $isInstalled;
193
- }
194
-
195
- /**
196
- * Should register activation and deactivation
197
- * event hooks
198
- *
199
- * @return void
200
- */
201
- public function registerHooks()
202
- {
203
- register_activation_hook($this->basePluginPath, [&$this, 'onActivePluginListener']);
204
- register_uninstall_hook($this->basePluginPath, ['Account\Account', 'onUninstallPluginListener']);
205
-
206
- $this->addFilter('plugin_action_links', [&$this, 'onRenderActionLinksHook']);
207
-
208
- $this->addAjax('analyst_opt_in', [&$this, 'onOptInListener']);
209
- $this->addAjax('analyst_opt_out', [&$this, 'onOptOutListener']);
210
- $this->addAjax('analyst_plugin_deactivate', [&$this, 'onDeactivatePluginListener']);
211
- $this->addAjax('analyst_install', [&$this, 'onInstallListener']);
212
- $this->addAjax('analyst_skip_install', [&$this, 'onSkipInstallListener']);
213
- $this->addAjax('analyst_install_verified', [&$this, 'onInstallVerifiedListener']);
214
- }
215
-
216
- /**
217
- * Will fire when admin activates plugin
218
- *
219
- * @return void
220
- */
221
- public function onActivePluginListener()
222
- {
223
- if (!$this->isInstallResolved()) {
224
- DatabaseCache::getInstance()->put('plugin_to_install', $this->id);
225
- }
226
-
227
- if (!$this->isAllowingLogging()) return;
228
-
229
- ActivateRequest::make($this->collector, $this->id, $this->path)
230
- ->execute($this->requestor);
231
-
232
- $this->setIsInstalled(true);
233
-
234
- AccountDataFactory::syncData();
235
- }
236
-
237
- /**
238
- * Will fire when admin deactivates plugin
239
- *
240
- * @return void
241
- */
242
- public function onDeactivatePluginListener()
243
- {
244
- if (!$this->isAllowingLogging()) return;
245
-
246
- $question = isset($_POST['question']) ? stripslashes($_POST['question']) : null;
247
- $reason = isset($_POST['reason']) ? stripslashes($_POST['reason']) : null;
248
-
249
- DeactivateRequest::make($this->collector, $this->id, $this->path, $question, $reason)
250
- ->execute($this->requestor);
251
-
252
- $this->setIsInstalled(false);
253
-
254
- AccountDataFactory::syncData();
255
-
256
- wp_send_json_success();
257
- }
258
-
259
- /**
260
- * Will fire when user opted in
261
- *
262
- * @return void
263
- */
264
- public function onOptInListener()
265
- {
266
- OptInRequest::make($this->collector, $this->id, $this->path)->execute($this->requestor);
267
-
268
- $this->setIsOptedIn(true);
269
-
270
- AccountDataFactory::syncData();
271
-
272
- wp_die();
273
- }
274
-
275
- /**
276
- * Will fire when user opted out
277
- *
278
- * @return void
279
- */
280
- public function onOptOutListener()
281
- {
282
- OptOutRequest::make($this->collector, $this->id, $this->path)->execute($this->requestor);
283
-
284
- $this->setIsOptedIn(false);
285
-
286
- AccountDataFactory::syncData();
287
-
288
- wp_send_json_success();
289
- }
290
-
291
- /**
292
- * Will fire when user accept opt-in
293
- * at first time
294
- *
295
- * @return void
296
- */
297
- public function onInstallListener()
298
- {
299
- $cache = DatabaseCache::getInstance();
300
-
301
- // Set flag to true which indicates that install is resolved
302
- // also remove install plugin id from cache
303
- $this->setIsInstallResolved(true);
304
- $cache->delete('plugin_to_install');
305
-
306
- InstallRequest::make($this->collector, $this->id, $this->path)->execute($this->requestor);
307
-
308
- $this->setIsSigned(true);
309
-
310
- $this->setIsOptedIn(true);
311
-
312
- $factory = NoticeFactory::instance();
313
-
314
- $message = sprintf('Please confirm your email by clicking on the link we sent to %s. This makes sure you’re not a bot.', $this->collector->getGeneralEmailAddress());
315
-
316
- $notificationId = uniqid();
317
-
318
- $notice = Notice::make(
319
- $notificationId,
320
- $this->getId(),
321
- $message,
322
- $this->collector->getPluginName($this->path)
323
- );
324
-
325
- $factory->addNotice($notice);
326
-
327
- AccountDataFactory::syncData();
328
-
329
- // Set email confirmation notification id to cache
330
- // se we can extract and remove it when user confirmed email
331
- $cache->put(
332
- sprintf('account_email_confirmation_%s', $this->getId()),
333
- $notificationId
334
- );
335
-
336
- wp_send_json_success();
337
- }
338
-
339
- /**
340
- * Will fire when user skipped installation
341
- *
342
- * @return void
343
- */
344
- public function onSkipInstallListener()
345
- {
346
- // Set flag to true which indicates that install is resolved
347
- // also remove install plugin id from cache
348
- $this->setIsInstallResolved(true);
349
- DatabaseCache::getInstance()->delete('plugin_to_install');
350
- }
351
-
352
- /**
353
- * Will fire when user delete plugin through admin panel.
354
- * This action will happen if admin at least once
355
- * activated the plugin.
356
- *
357
- * @return void
358
- * @throws \Exception
359
- */
360
- public static function onUninstallPluginListener()
361
- {
362
- $factory = AccountDataFactory::instance();
363
-
364
- $pluginFile = substr(current_filter(), strlen( 'uninstall_' ));
365
-
366
- $account = $factory->getAccountDataByBasePath($pluginFile);
367
-
368
- // If account somehow is not found, exit the execution
369
- if (!$account) return;
370
-
371
- $analyst = Analyst::getInstance();
372
-
373
- $collector = new Collector($analyst);
374
-
375
- $requestor = new ApiRequestor($account->getId(), $account->getSecret(), $analyst->getApiBase());
376
-
377
- // Just send request to log uninstall event not caring about response
378
- UninstallRequest::make($collector, $account->getId(), $account->getPath())->execute($requestor);
379
-
380
- $factory->sync();
381
- }
382
-
383
- /**
384
- * Fires when used verified his account
385
- */
386
- public function onInstallVerifiedListener()
387
- {
388
- $factory = NoticeFactory::instance();
389
-
390
- $notice = Notice::make(
391
- uniqid(),
392
- $this->getId(),
393
- 'Thank you for confirming your email.',
394
- $this->collector->getPluginName($this->path)
395
- );
396
-
397
- $factory->addNotice($notice);
398
-
399
- // Remove confirmation notification
400
- $confirmationNotificationId = DatabaseCache::getInstance()->pop(sprintf('account_email_confirmation_%s', $this->getId()));
401
- $factory->remove($confirmationNotificationId);
402
-
403
- AccountDataFactory::syncData();
404
-
405
- wp_send_json_success();
406
- }
407
-
408
- /**
409
- * Will fire when wp renders plugin
410
- * action buttons
411
- *
412
- * @param $defaultLinks
413
- * @return array
414
- */
415
- public function onRenderActionLinksHook($defaultLinks)
416
- {
417
- $customLinks = [];
418
-
419
- $customLinks[] = $this->isOptedIn()
420
- ? '<a class="analyst-action-opt analyst-opt-out" analyst-plugin-id="' . $this->getId() . '" analyst-plugin-signed="' . (int) $this->isSigned() . '">Opt Out</a>'
421
- : '<a class="analyst-action-opt analyst-opt-in" analyst-plugin-id="' . $this->getId() . '" analyst-plugin-signed="' . (int) $this->isSigned() . '">Opt In</a>';
422
-
423
- // Append anchor to find specific deactivation link
424
- if (isset($defaultLinks['deactivate'])) {
425
- $defaultLinks['deactivate'] .= '<span analyst-plugin-id="' . $this->getId() . '" analyst-plugin-opted-in="' . (int) $this->isOptedIn() . '"></span>';
426
- }
427
-
428
- return array_merge($customLinks, $defaultLinks);
429
- }
430
-
431
- /**
432
- * @return AccountData
433
- */
434
- public function getData()
435
- {
436
- return $this->data;
437
- }
438
-
439
- /**
440
- * @param AccountData $data
441
- */
442
- public function setData(AccountData $data)
443
- {
444
- $this->data = $data;
445
-
446
- $this->setIsOptedIn($data->isOptedIn());
447
- $this->setIsInstalled($data->isInstalled());
448
- $this->setIsSigned($data->isSigned());
449
- $this->setIsInstallResolved($data->isInstallResolved());
450
- }
451
-
452
- /**
453
- * Resolves valid action name
454
- * based on client id
455
- *
456
- * @param $action
457
- * @return string
458
- */
459
- private function resolveActionName($action)
460
- {
461
- return sprintf('%s_%s', $action, $this->id);
462
- }
463
-
464
- /**
465
- * Register action for current plugin
466
- *
467
- * @param $action
468
- * @param $callback
469
- */
470
- private function addFilter($action, $callback)
471
- {
472
- $validAction = sprintf('%s_%s', $action, $this->basePluginPath);
473
-
474
- add_filter($validAction, $callback, 10);
475
- }
476
-
477
- /**
478
- * Add ajax action for current plugin
479
- *
480
- * @param $action
481
- * @param $callback
482
- * @param bool $raw Format action ??
483
- */
484
- private function addAjax($action, $callback, $raw = false)
485
- {
486
- $validAction = $raw ? $action : sprintf('%s%s', 'wp_ajax_', $this->resolveActionName($action));
487
-
488
- add_action($validAction, $callback);
489
- }
490
-
491
- /**
492
- * @return bool
493
- */
494
- public function isSigned()
495
- {
496
- return $this->isSigned;
497
- }
498
-
499
- /**
500
- * @param bool $isSigned
501
- */
502
- public function setIsSigned($isSigned)
503
- {
504
- $this->data->setIsSigned($isSigned);
505
-
506
- $this->isSigned = $isSigned;
507
- }
508
-
509
- /**
510
- * @return RequestorContract
511
- */
512
- public function getRequestor()
513
- {
514
- return $this->requestor;
515
- }
516
-
517
- /**
518
- * @param RequestorContract $requestor
519
- */
520
- public function setRequestor(RequestorContract $requestor)
521
- {
522
- $this->requestor = $requestor;
523
- }
524
-
525
- /**
526
- * @return string
527
- */
528
- public function getClientSecret()
529
- {
530
- return $this->clientSecret;
531
- }
532
-
533
- /**
534
- * @return Collector
535
- */
536
- public function getCollector()
537
- {
538
- return $this->collector;
539
- }
540
-
541
- /**
542
- * @param Collector $collector
543
- */
544
- public function setCollector(Collector $collector)
545
- {
546
- $this->collector = $collector;
547
- }
548
-
549
- /**
550
- * Do we allowing logging
551
- *
552
- * @return bool
553
- */
554
- public function isAllowingLogging()
555
- {
556
- return $this->isOptedIn;
557
- }
558
-
559
- /**
560
- * @return string
561
- */
562
- public function getBasePluginPath()
563
- {
564
- return $this->basePluginPath;
565
- }
566
-
567
- /**
568
- * @return bool
569
- */
570
- public function isInstallResolved()
571
- {
572
- return $this->isInstallResolved;
573
- }
574
-
575
- /**
576
- * @param bool $isInstallResolved
577
- */
578
- public function setIsInstallResolved($isInstallResolved)
579
- {
580
- $this->data->setIsInstallResolved($isInstallResolved);
581
-
582
- $this->isInstallResolved = $isInstallResolved;
583
- }
584
- }
1
+ <?php
2
+
3
+ namespace Account;
4
+
5
+ use Analyst\Analyst;
6
+ use Analyst\ApiRequestor;
7
+ use Analyst\Cache\DatabaseCache;
8
+ use Analyst\Collector;
9
+ use Analyst\Http\Requests\ActivateRequest;
10
+ use Analyst\Http\Requests\DeactivateRequest;
11
+ use Analyst\Http\Requests\InstallRequest;
12
+ use Analyst\Http\Requests\OptInRequest;
13
+ use Analyst\Http\Requests\OptOutRequest;
14
+ use Analyst\Http\Requests\UninstallRequest;
15
+ use Analyst\Notices\Notice;
16
+ use Analyst\Notices\NoticeFactory;
17
+ use Analyst\Contracts\TrackerContract;
18
+ use Analyst\Contracts\RequestorContract;
19
+
20
+ /**
21
+ * Class Account
22
+ *
23
+ * This is plugin's account object
24
+ */
25
+ class Account implements TrackerContract
26
+ {
27
+ /**
28
+ * Account id
29
+ *
30
+ * @var string
31
+ */
32
+ protected $id;
33
+
34
+ /**
35
+ * Basename of plugin
36
+ *
37
+ * @var string
38
+ */
39
+ protected $path;
40
+
41
+ /**
42
+ * Whether plugin is active or not
43
+ *
44
+ * @var bool
45
+ */
46
+ protected $isInstalled = false;
47
+
48
+ /**
49
+ * Is user sign in for data tracking
50
+ *
51
+ * @var bool
52
+ */
53
+ protected $isOptedIn = false;
54
+
55
+ /**
56
+ * Is user accepted permissions grant
57
+ * for collection site data
58
+ *
59
+ * @var bool
60
+ */
61
+ protected $isSigned = false;
62
+
63
+ /**
64
+ * Is user ever resolved install modal window?
65
+ *
66
+ * @var bool
67
+ */
68
+ protected $isInstallResolved = false;
69
+
70
+ /**
71
+ * Public secret code
72
+ *
73
+ * @var string
74
+ */
75
+ protected $clientSecret;
76
+
77
+ /**
78
+ * @var AccountData
79
+ */
80
+ protected $data;
81
+
82
+ /**
83
+ * Base plugin path
84
+ *
85
+ * @var string
86
+ */
87
+ protected $basePluginPath;
88
+
89
+ /**
90
+ * @var RequestorContract
91
+ */
92
+ protected $requestor;
93
+
94
+ /**
95
+ * @var Collector
96
+ */
97
+ protected $collector;
98
+
99
+ /**
100
+ * Account constructor.
101
+ * @param $id
102
+ * @param $secret
103
+ * @param $baseDir
104
+ */
105
+ public function __construct($id, $secret, $baseDir)
106
+ {
107
+ $this->id = $id;
108
+ $this->clientSecret = $secret;
109
+
110
+ $this->path = $baseDir;
111
+
112
+ $this->basePluginPath = plugin_basename($baseDir);
113
+ }
114
+
115
+ /**
116
+ * @return string
117
+ */
118
+ public function getPath()
119
+ {
120
+ return $this->path;
121
+ }
122
+
123
+ /**
124
+ * @param string $path
125
+ */
126
+ public function setPath($path)
127
+ {
128
+ $this->data->setPath($path);
129
+
130
+ $this->path = $path;
131
+ }
132
+
133
+ /**
134
+ * @return bool
135
+ */
136
+ public function isOptedIn()
137
+ {
138
+ return $this->isOptedIn;
139
+ }
140
+
141
+ /**
142
+ * @param bool $isOptedIn
143
+ */
144
+ public function setIsOptedIn($isOptedIn)
145
+ {
146
+ $this->data->setIsOptedIn($isOptedIn);
147
+
148
+ $this->isOptedIn = $isOptedIn;
149
+ }
150
+
151
+ /**
152
+ * Whether plugin is active
153
+ *
154
+ * @return bool
155
+ */
156
+ public function isActive()
157
+ {
158
+ return is_plugin_active($this->path);
159
+ }
160
+
161
+ /**
162
+ * @param string $id
163
+ */
164
+ public function setId($id)
165
+ {
166
+ $this->id = $id;
167
+ }
168
+
169
+ /**
170
+ * @return string
171
+ */
172
+ public function getId()
173
+ {
174
+ return $this->id;
175
+ }
176
+
177
+ /**
178
+ * @return bool
179
+ */
180
+ public function isInstalled()
181
+ {
182
+ return $this->isInstalled;
183
+ }
184
+
185
+ /**
186
+ * @param bool $isInstalled
187
+ */
188
+ public function setIsInstalled($isInstalled)
189
+ {
190
+ $this->data->setIsInstalled($isInstalled);
191
+
192
+ $this->isInstalled = $isInstalled;
193
+ }
194
+
195
+ /**
196
+ * Should register activation and deactivation
197
+ * event hooks
198
+ *
199
+ * @return void
200
+ */
201
+ public function registerHooks()
202
+ {
203
+ register_activation_hook($this->basePluginPath, [&$this, 'onActivePluginListener']);
204
+ register_uninstall_hook($this->basePluginPath, ['Account\Account', 'onUninstallPluginListener']);
205
+
206
+ $this->addFilter('plugin_action_links', [&$this, 'onRenderActionLinksHook']);
207
+
208
+ $this->addAjax('analyst_opt_in', [&$this, 'onOptInListener']);
209
+ $this->addAjax('analyst_opt_out', [&$this, 'onOptOutListener']);
210
+ $this->addAjax('analyst_plugin_deactivate', [&$this, 'onDeactivatePluginListener']);
211
+ $this->addAjax('analyst_install', [&$this, 'onInstallListener']);
212
+ $this->addAjax('analyst_skip_install', [&$this, 'onSkipInstallListener']);
213
+ $this->addAjax('analyst_install_verified', [&$this, 'onInstallVerifiedListener']);
214
+ }
215
+
216
+ /**
217
+ * Will fire when admin activates plugin
218
+ *
219
+ * @return void
220
+ */
221
+ public function onActivePluginListener()
222
+ {
223
+ if (!$this->isInstallResolved()) {
224
+ DatabaseCache::getInstance()->put('plugin_to_install', $this->id);
225
+ }
226
+
227
+ if (!$this->isAllowingLogging()) return;
228
+
229
+ ActivateRequest::make($this->collector, $this->id, $this->path)
230
+ ->execute($this->requestor);
231
+
232
+ $this->setIsInstalled(true);
233
+
234
+ AccountDataFactory::syncData();
235
+ }
236
+
237
+ /**
238
+ * Will fire when admin deactivates plugin
239
+ *
240
+ * @return void
241
+ */
242
+ public function onDeactivatePluginListener()
243
+ {
244
+ if (!$this->isAllowingLogging()) return;
245
+
246
+ $question = isset($_POST['question']) ? stripslashes($_POST['question']) : null;
247
+ $reason = isset($_POST['reason']) ? stripslashes($_POST['reason']) : null;
248
+
249
+ DeactivateRequest::make($this->collector, $this->id, $this->path, $question, $reason)
250
+ ->execute($this->requestor);
251
+
252
+ $this->setIsInstalled(false);
253
+
254
+ AccountDataFactory::syncData();
255
+
256
+ wp_send_json_success();
257
+ }
258
+
259
+ /**
260
+ * Will fire when user opted in
261
+ *
262
+ * @return void
263
+ */
264
+ public function onOptInListener()
265
+ {
266
+ OptInRequest::make($this->collector, $this->id, $this->path)->execute($this->requestor);
267
+
268
+ $this->setIsOptedIn(true);
269
+
270
+ AccountDataFactory::syncData();
271
+
272
+ wp_die();
273
+ }
274
+
275
+ /**
276
+ * Will fire when user opted out
277
+ *
278
+ * @return void
279
+ */
280
+ public function onOptOutListener()
281
+ {
282
+ OptOutRequest::make($this->collector, $this->id, $this->path)->execute($this->requestor);
283
+
284
+ $this->setIsOptedIn(false);
285
+
286
+ AccountDataFactory::syncData();
287
+
288
+ wp_send_json_success();
289
+ }
290
+
291
+ /**
292
+ * Will fire when user accept opt-in
293
+ * at first time
294
+ *
295
+ * @return void
296
+ */
297
+ public function onInstallListener()
298
+ {
299
+ $cache = DatabaseCache::getInstance();
300
+
301
+ // Set flag to true which indicates that install is resolved
302
+ // also remove install plugin id from cache
303
+ $this->setIsInstallResolved(true);
304
+ $cache->delete('plugin_to_install');
305
+
306
+ InstallRequest::make($this->collector, $this->id, $this->path)->execute($this->requestor);
307
+
308
+ $this->setIsSigned(true);
309
+
310
+ $this->setIsOptedIn(true);
311
+
312
+ $factory = NoticeFactory::instance();
313
+
314
+ $message = sprintf('Please confirm your email by clicking on the link we sent to %s. This makes sure you’re not a bot.', $this->collector->getGeneralEmailAddress());
315
+
316
+ $notificationId = uniqid();
317
+
318
+ $notice = Notice::make(
319
+ $notificationId,
320
+ $this->getId(),
321
+ $message,
322
+ $this->collector->getPluginName($this->path)
323
+ );
324
+
325
+ $factory->addNotice($notice);
326
+
327
+ AccountDataFactory::syncData();
328
+
329
+ // Set email confirmation notification id to cache
330
+ // se we can extract and remove it when user confirmed email
331
+ $cache->put(
332
+ sprintf('account_email_confirmation_%s', $this->getId()),
333
+ $notificationId
334
+ );
335
+
336
+ wp_send_json_success();
337
+ }
338
+
339
+ /**
340
+ * Will fire when user skipped installation
341
+ *
342
+ * @return void
343
+ */
344
+ public function onSkipInstallListener()
345
+ {
346
+ // Set flag to true which indicates that install is resolved
347
+ // also remove install plugin id from cache
348
+ $this->setIsInstallResolved(true);
349
+ DatabaseCache::getInstance()->delete('plugin_to_install');
350
+ }
351
+
352
+ /**
353
+ * Will fire when user delete plugin through admin panel.
354
+ * This action will happen if admin at least once
355
+ * activated the plugin.
356
+ *
357
+ * @return void
358
+ * @throws \Exception
359
+ */
360
+ public static function onUninstallPluginListener()
361
+ {
362
+ $factory = AccountDataFactory::instance();
363
+
364
+ $pluginFile = substr(current_filter(), strlen( 'uninstall_' ));
365
+
366
+ $account = $factory->getAccountDataByBasePath($pluginFile);
367
+
368
+ // If account somehow is not found, exit the execution
369
+ if (!$account) return;
370
+
371
+ $analyst = Analyst::getInstance();
372
+
373
+ $collector = new Collector($analyst);
374
+
375
+ $requestor = new ApiRequestor($account->getId(), $account->getSecret(), $analyst->getApiBase());
376
+
377
+ // Just send request to log uninstall event not caring about response
378
+ UninstallRequest::make($collector, $account->getId(), $account->getPath())->execute($requestor);
379
+
380
+ $factory->sync();
381
+ }
382
+
383
+ /**
384
+ * Fires when used verified his account
385
+ */
386
+ public function onInstallVerifiedListener()
387
+ {
388
+ $factory = NoticeFactory::instance();
389
+
390
+ $notice = Notice::make(
391
+ uniqid(),
392
+ $this->getId(),
393
+ 'Thank you for confirming your email.',
394
+ $this->collector->getPluginName($this->path)
395
+ );
396
+
397
+ $factory->addNotice($notice);
398
+
399
+ // Remove confirmation notification
400
+ $confirmationNotificationId = DatabaseCache::getInstance()->pop(sprintf('account_email_confirmation_%s', $this->getId()));
401
+ $factory->remove($confirmationNotificationId);
402
+
403
+ AccountDataFactory::syncData();
404
+
405
+ wp_send_json_success();
406
+ }
407
+
408
+ /**
409
+ * Will fire when wp renders plugin
410
+ * action buttons
411
+ *
412
+ * @param $defaultLinks
413
+ * @return array
414
+ */
415
+ public function onRenderActionLinksHook($defaultLinks)
416
+ {
417
+ $customLinks = [];
418
+
419
+ $customLinks[] = $this->isOptedIn()
420
+ ? '<a class="analyst-action-opt analyst-opt-out" analyst-plugin-id="' . $this->getId() . '" analyst-plugin-signed="' . (int) $this->isSigned() . '">Opt Out</a>'
421
+ : '<a class="analyst-action-opt analyst-opt-in" analyst-plugin-id="' . $this->getId() . '" analyst-plugin-signed="' . (int) $this->isSigned() . '">Opt In</a>';
422
+
423
+ // Append anchor to find specific deactivation link
424
+ if (isset($defaultLinks['deactivate'])) {
425
+ $defaultLinks['deactivate'] .= '<span analyst-plugin-id="' . $this->getId() . '" analyst-plugin-opted-in="' . (int) $this->isOptedIn() . '"></span>';
426
+ }
427
+
428
+ return array_merge($customLinks, $defaultLinks);
429
+ }
430
+
431
+ /**
432
+ * @return AccountData
433
+ */
434
+ public function getData()
435
+ {
436
+ return $this->data;
437
+ }
438
+
439
+ /**
440
+ * @param AccountData $data
441
+ */
442
+ public function setData(AccountData $data)
443
+ {
444
+ $this->data = $data;
445
+
446
+ $this->setIsOptedIn($data->isOptedIn());
447
+ $this->setIsInstalled($data->isInstalled());
448
+ $this->setIsSigned($data->isSigned());
449
+ $this->setIsInstallResolved($data->isInstallResolved());
450
+ }
451
+
452
+ /**
453
+ * Resolves valid action name
454
+ * based on client id
455
+ *
456
+ * @param $action
457
+ * @return string
458
+ */
459
+ private function resolveActionName($action)
460
+ {
461
+ return sprintf('%s_%s', $action, $this->id);
462
+ }
463
+
464
+ /**
465
+ * Register action for current plugin
466
+ *
467
+ * @param $action
468
+ * @param $callback
469
+ */
470
+ private function addFilter($action, $callback)
471
+ {
472
+ $validAction = sprintf('%s_%s', $action, $this->basePluginPath);
473
+
474
+ add_filter($validAction, $callback, 10);
475
+ }
476
+
477
+ /**
478
+ * Add ajax action for current plugin
479
+ *
480
+ * @param $action
481
+ * @param $callback
482
+ * @param bool $raw Format action ??
483
+ */
484
+ private function addAjax($action, $callback, $raw = false)
485
+ {
486
+ $validAction = $raw ? $action : sprintf('%s%s', 'wp_ajax_', $this->resolveActionName($action));
487
+
488
+ add_action($validAction, $callback);
489
+ }
490
+
491
+ /**
492
+ * @return bool
493
+ */
494
+ public function isSigned()
495
+ {
496
+ return $this->isSigned;
497
+ }
498
+
499
+ /**
500
+ * @param bool $isSigned
501
+ */
502
+ public function setIsSigned($isSigned)
503
+ {
504
+ $this->data->setIsSigned($isSigned);
505
+
506
+ $this->isSigned = $isSigned;
507
+ }
508
+
509
+ /**
510
+ * @return RequestorContract
511
+ */
512
+ public function getRequestor()
513
+ {
514
+ return $this->requestor;
515
+ }
516
+
517
+ /**
518
+ * @param RequestorContract $requestor
519
+ */
520
+ public function setRequestor(RequestorContract $requestor)
521
+ {
522
+ $this->requestor = $requestor;
523
+ }
524
+
525
+ /**
526
+ * @return string
527
+ */
528
+ public function getClientSecret()
529
+ {
530
+ return $this->clientSecret;
531
+ }
532
+
533
+ /**
534
+ * @return Collector
535
+ */
536
+ public function getCollector()
537
+ {
538
+ return $this->collector;
539
+ }
540
+
541
+ /**
542
+ * @param Collector $collector
543
+ */
544
+ public function setCollector(Collector $collector)
545
+ {
546
+ $this->collector = $collector;
547
+ }
548
+
549
+ /**
550
+ * Do we allowing logging
551
+ *
552
+ * @return bool
553
+ */
554
+ public function isAllowingLogging()
555
+ {
556
+ return $this->isOptedIn;
557
+ }
558
+
559
+ /**
560
+ * @return string
561
+ */
562
+ public function getBasePluginPath()
563
+ {
564
+ return $this->basePluginPath;
565
+ }
566
+
567
+ /**
568
+ * @return bool
569
+ */
570
+ public function isInstallResolved()
571
+ {
572
+ return $this->isInstallResolved;
573
+ }
574
+
575
+ /**
576
+ * @param bool $isInstallResolved
577
+ */
578
+ public function setIsInstallResolved($isInstallResolved)
579
+ {
580
+ $this->data->setIsInstallResolved($isInstallResolved);
581
+
582
+ $this->isInstallResolved = $isInstallResolved;
583
+ }
584
+ }
analyst/src/helpers.php CHANGED
@@ -1,84 +1,84 @@
1
- <?php
2
-
3
- if (! function_exists('analyst_assets_path')) {
4
- /**
5
- * Generates path to file in assets folder
6
- *
7
- * @param $file
8
- * @return string
9
- */
10
- function analyst_assets_path($file)
11
- {
12
- $path = sprintf('%s/assets/%s', realpath(__DIR__ . '/..'), trim($file, '/'));
13
-
14
- return wp_normalize_path($path);
15
- }
16
- }
17
-
18
-
19
- if (! function_exists('analyst_assets_url')) {
20
- /**
21
- * Generates url to file in assets folder
22
- *
23
- * @param $file
24
- * @return string
25
- */
26
- function analyst_assets_url($file)
27
- {
28
- $absolutePath = analyst_assets_path($file);
29
-
30
- // We can always rely on WP_PLUGIN_DIR, because that's where
31
- // wordpress install it's plugin's. So we remove last segment
32
- // of that path to get the content dir AKA directly where
33
- // plugins are installed and make the magic...
34
- $contentDir = is_link(WP_PLUGIN_DIR) ?
35
- dirname(wp_normalize_path(readlink(WP_PLUGIN_DIR))) :
36
- dirname(wp_normalize_path(WP_PLUGIN_DIR));
37
-
38
- $relativePath = str_replace( $contentDir, '', $absolutePath);
39
-
40
- return content_url(wp_normalize_path($relativePath));
41
- }
42
- }
43
-
44
- if (! function_exists('analyst_templates_path')) {
45
- /**
46
- * Generates path to file in templates folder
47
- *
48
- * @param $file
49
- * @return string
50
- */
51
- function analyst_templates_path($file)
52
- {
53
- $path = sprintf('%s/templates/%s', realpath(__DIR__ . '/..'), trim($file, '/'));
54
-
55
- return wp_normalize_path($path);
56
- }
57
- }
58
-
59
- if (! function_exists('analyst_require_template')) {
60
- /**
61
- * Require certain template with data
62
- *
63
- * @param $file
64
- * @param array $data
65
- */
66
- function analyst_require_template($file, $data = [])
67
- {
68
- // Extract data to current scope table
69
- extract($data);
70
-
71
- require analyst_templates_path($file);
72
- }
73
- }
74
-
75
- if (! function_exists('dd')) {
76
- /**
77
- * Dump some data
78
- */
79
- function dd ()
80
- {
81
- // var_dump(func_get_args());
82
- die();
83
- }
84
- }
1
+ <?php
2
+
3
+ if (! function_exists('analyst_assets_path')) {
4
+ /**
5
+ * Generates path to file in assets folder
6
+ *
7
+ * @param $file
8
+ * @return string
9
+ */
10
+ function analyst_assets_path($file)
11
+ {
12
+ $path = sprintf('%s/assets/%s', realpath(__DIR__ . '/..'), trim($file, '/'));
13
+
14
+ return wp_normalize_path($path);
15
+ }
16
+ }
17
+
18
+
19
+ if (! function_exists('analyst_assets_url')) {
20
+ /**
21
+ * Generates url to file in assets folder
22
+ *
23
+ * @param $file
24
+ * @return string
25
+ */
26
+ function analyst_assets_url($file)
27
+ {
28
+ $absolutePath = analyst_assets_path($file);
29
+
30
+ // We can always rely on WP_PLUGIN_DIR, because that's where
31
+ // wordpress install it's plugin's. So we remove last segment
32
+ // of that path to get the content dir AKA directly where
33
+ // plugins are installed and make the magic...
34
+ $contentDir = is_link(WP_PLUGIN_DIR) ?
35
+ dirname(wp_normalize_path(readlink(WP_PLUGIN_DIR))) :
36
+ dirname(wp_normalize_path(WP_PLUGIN_DIR));
37
+
38
+ $relativePath = str_replace( $contentDir, '', $absolutePath);
39
+
40
+ return content_url(wp_normalize_path($relativePath));
41
+ }
42
+ }
43
+
44
+ if (! function_exists('analyst_templates_path')) {
45
+ /**
46
+ * Generates path to file in templates folder
47
+ *
48
+ * @param $file
49
+ * @return string
50
+ */
51
+ function analyst_templates_path($file)
52
+ {
53
+ $path = sprintf('%s/templates/%s', realpath(__DIR__ . '/..'), trim($file, '/'));
54
+
55
+ return wp_normalize_path($path);
56
+ }
57
+ }
58
+
59
+ if (! function_exists('analyst_require_template')) {
60
+ /**
61
+ * Require certain template with data
62
+ *
63
+ * @param $file
64
+ * @param array $data
65
+ */
66
+ function analyst_require_template($file, $data = [])
67
+ {
68
+ // Extract data to current scope table
69
+ extract($data);
70
+
71
+ require analyst_templates_path($file);
72
+ }
73
+ }
74
+
75
+ if (! function_exists('dd')) {
76
+ /**
77
+ * Dump some data
78
+ */
79
+ function dd ()
80
+ {
81
+ // var_dump(func_get_args());
82
+ die();
83
+ }
84
+ }
analyst/version.php CHANGED
@@ -1,15 +1,15 @@
1
- <?php
2
-
3
- return array(
4
- // The sdk version
5
- 'sdk' => '1.3.30',
6
-
7
- // Minimum supported WordPress version
8
- 'wp' => '4.7',
9
-
10
- // Supported PHP version
11
- 'php' => '5.4',
12
-
13
- // Path to current SDK$
14
- 'path' => __DIR__,
15
- );
1
+ <?php
2
+
3
+ return array(
4
+ // The sdk version
5
+ 'sdk' => '1.3.30',
6
+
7
+ // Minimum supported WordPress version
8
+ 'wp' => '4.7',
9
+
10
+ // Supported PHP version
11
+ 'php' => '5.4',
12
+
13
+ // Path to current SDK$
14
+ 'path' => __DIR__,
15
+ );
css/sfsi-admin-style.css CHANGED
@@ -1,5323 +1,5306 @@
1
- @charset "utf-8";
2
- @font-face {
3
- font-family: helveticabold;
4
- src: url(fonts/helvetica_bold_0-webfont.eot);
5
- src: url(fonts/helvetica_bold_0-webfont.eot?#iefix) format('embedded-opentype'), url(fonts/helvetica_bold_0-webfont.woff) format('woff'), url(fonts/helvetica_bold_0-webfont.ttf) format('truetype'), url(fonts/helvetica_bold_0-webfont.svg#helveticabold) format('svg');
6
- font-weight: 400;
7
- font-style: normal;
8
- }
9
- @font-face {
10
- font-family: helveticaregular;
11
- src: url(fonts/helvetica_0-webfont.eot);
12
- src: url(fonts/helvetica_0-webfont.eot?#iefix) format('embedded-opentype'), url(fonts/helvetica_0-webfont.woff) format('woff'), url(fonts/helvetica_0-webfont.ttf) format('truetype'), url(fonts/helvetica_0-webfont.svg#helveticaregular) format('svg');
13
- font-weight: 400;
14
- font-style: normal;
15
- }
16
- @font-face {
17
- font-family: helveticaneue-light;
18
- src: url(fonts/helveticaneue-light.eot);
19
- src: url(fonts/helveticaneue-light.eot?#iefix) format('embedded-opentype'),
20
- url(fonts/helveticaneue-light.woff) format('woff'),
21
- url(fonts/helveticaneue-light.ttf) format('truetype'),
22
- url(fonts/helveticaneue-light.svg#helveticaneue-light) format('svg');
23
- font-weight: 400;
24
- font-style: normal;
25
- }
26
- body {
27
- margin: 0;
28
- padding: 0;
29
- }
30
- .sfsi_mainContainer {
31
- font-family: helveticaregular;
32
- }
33
- .sfsi_mainContainer h1,
34
- .sfsi_mainContainer h2,
35
- .sfsi_mainContainer h3,
36
- .sfsi_mainContainer h4,
37
- .sfsi_mainContainer h5,
38
- .sfsi_mainContainer h6,
39
- .sfsi_mainContainer li,
40
- .sfsi_mainContainer p,
41
- .sfsi_mainContainer ul {
42
- margin: 0;
43
- padding: 0;
44
- font-weight: 400;
45
- }
46
- .sfsi_mainContainer img {
47
- border: 0;
48
- vertical-align: middle;
49
- }
50
- .main_contant p,
51
- .ui-accordion .ui-accordion-header {
52
- /*font-family: helveticaregular;*/
53
- font-family: 'helveticaneue-light';
54
- }
55
- .sfsi_mainContainer input,
56
- .sfsi_mainContainer select {
57
- outline: 0;
58
- }
59
- .wapper {
60
- padding: 30px 40px 40px 40px;
61
- display: block;
62
- background: #f1f1f1;
63
- }
64
- .main_contant {
65
- margin: 0;
66
- padding: 20px 0 0 0;
67
- width: 100%;
68
- float: left;
69
- }
70
- .main_contant h1 {
71
- padding: 0;
72
- color: #1a1d20;
73
- font-family: helveticabold;
74
- font-size: 28px;
75
- }
76
- .main_contant p {
77
- padding: 0;
78
- color: #414951;
79
- font-size: 17px;
80
- line-height: 26px;
81
- }
82
- .main_contant p span {
83
- text-decoration: underline;
84
- font-family: helveticabold;
85
- }
86
- a#save_all_settings {
87
- padding: 15px 10px;
88
- }
89
- #accordion p,
90
- #accordion1 p {
91
- color: #5a6570;
92
- text-align: left;
93
- /*font-family: helveticaregular;*/
94
- font-family: 'helveticaneue-light';
95
- font-size: 17px;
96
- line-height: 26px;
97
- padding-top: 19px;
98
- }
99
- #accordion p:first-child,
100
- #accordion1 p:first-child {
101
- padding-top: 5px;
102
-
103
- /* padding-bottom: 10px;*/
104
-
105
- padding-bottom: 5px;
106
- }
107
- #accordion h4,
108
- #accordion1 h4 {
109
- margin: 0;
110
- padding: 30px 0 0;
111
- color: #414951 !important;
112
- font-size: 20px;
113
- line-height: 22px;
114
- font-family: helveticaregular;
115
- }
116
- #accordion1 h4.sfsi_dsplyatend {
117
- width: 47%;
118
- float: left;
119
- }
120
- #accordion h4:first-child,
121
- #accordion1 h4:first-child {
122
- padding-top: 0;
123
- }
124
- .tab1,
125
- .tab2,
126
- .tab3,
127
- .tab4,
128
- .tab5,
129
- .tab6,
130
- .tab7 {
131
- color: #5a6570;
132
- text-align: left;
133
- font-family: helveticaneue-light;
134
- font-size: 18px;
135
- line-height: 26px;
136
- }
137
-
138
- /*Admin menu*/
139
- ul#adminmenu li.toplevel_page_sfsi-options div.wp-menu-image {
140
- display: none;
141
- }
142
- #adminmenu li.toplevel_page_sfsi-options a.toplevel_page_sfsi-options {
143
- padding: 0 0 0 38px;
144
- font-family: Arial, Helvetica, sans-serif !important;
145
-
146
- /* font-family: helveticabold; */
147
- }
148
- ul#adminmenu li.toplevel_page_sfsi-options a.toplevel_page_sfsi-options {
149
- color: #e12522;
150
- transition: 0s;
151
- background: url(images/left_log_icn.png) 6px 15px no-repeat #000;
152
- background: url(images/left_log_icn.png) 6px -43px no-repeat #444444;
153
- color: #e12522;
154
- font-family: Arial, Helvetica, sans-serif !important;
155
-
156
- }
157
- ul#adminmenu li.toplevel_page_sfsi-options a.toplevel_page_sfsi-options:hover {
158
- background: url(images/left_log_icn.png) 6px -43px no-repeat #444444;
159
- color: #e12522;
160
-
161
- }
162
-
163
- ul#adminmenu li.toplevel_page_sfsi-options a.current,
164
- ul#adminmenu li.toplevel_page_sfsi-options a.current:hover {
165
- background: url(images/left_log_icn.png) 6px 15px no-repeat #000000;
166
- /*background: url(images/left_log_icn.png) 6px -43px no-repeat #444444;*/
167
- color: #e12522;
168
- }
169
- /*Tab1*/
170
- .tab1 ul.icn_listing {
171
- list-style: none;
172
- overflow: hidden;
173
- border-top: #e7e8eb solid 1px;
174
- margin: 35px 0 0;
175
- }
176
- .tab1 ul.icn_listing li {
177
- border-bottom: #eaebed solid 1px;
178
- padding: 11px 0 11px 8px;
179
- float: left;
180
- width: 100%
181
- }
182
- ul.icn_listing li .tb_4_ck {
183
- float: left;
184
- margin: 10px 0 0;
185
- }
186
- .tab1 ul.icn_listing li .custom,
187
- .tab1 ul.icn_listing li .sfsicls_email,
188
- .tab1 ul.icn_listing li .sfsicls_facebook,
189
- .tab1 ul.icn_listing li .sfsicls_instagram,
190
- .tab1 ul.icn_listing li .sfsicls_telegram,
191
- .tab1 ul.icn_listing li .sfsicls_vk,
192
- .tab1 ul.icn_listing li .sfsicls_ok,
193
- .tab1 ul.icn_listing li .sfsicls_wechat,
194
- .tab1 ul.icn_listing li .sfsicls_weibo,
195
- .sfsicls_linkdin,
196
- .tab1 ul.icn_listing li .sfsicls_pinterest,
197
- .tab1 ul.icn_listing li .sfsicls_rs_s,
198
- .tab1 ul.icn_listing li .sfsicls_share,
199
- .tab1 ul.icn_listing li .sfsicls_twt,
200
- .tab1 ul.icn_listing li .sfsicls_utube {
201
- background: url(../images/tab_1_icn_list.png) no-repeat;
202
- float: left;
203
- padding: 0 0 0 59px;
204
- margin: 0 0 0 17px;
205
- height: 52px;
206
- line-height: 51px;
207
- font-family: helveticaregular;
208
- font-size: 22px;
209
- }
210
- .tab1 ul.icn_listing li .sfsicls_telegram {
211
- background: url(../images/icons_theme/default/default_telegram.png) no-repeat;
212
- background-size: contain;
213
- }
214
- .tab1 ul.icn_listing li .sfsicls_vk {
215
- background: url(../images/icons_theme/default/default_vk.png) no-repeat;
216
- background-size: contain;
217
- }
218
- .tab1 ul.icn_listing li .sfsicls_ok {
219
- background: url(../images/icons_theme/default/default_ok.png) no-repeat;
220
- background-size: contain;
221
- }
222
- .tab1 ul.icn_listing li .sfsicls_wechat {
223
- background: url(../images/icons_theme/default/default_wechat.png) no-repeat;
224
- background-size: contain;
225
- }
226
- .tab1 ul.icn_listing li .sfsicls_weibo {
227
- background: url(../images/icons_theme/default/default_weibo.png) no-repeat;
228
- background-size: contain;
229
- }
230
-
231
- .tab1 ul.icn_listing li .sfsicls_rs_s {
232
- background-position: 0 0;
233
- color: #f7941d;
234
- }
235
- .tab1 ul.icn_listing li .sfsicls_email {
236
- background-position: 0 -73px;
237
- color: #d1c800;
238
- }
239
- .tab1 ul.icn_listing li .sfsicls_facebook {
240
- background-position: 0 -145px;
241
- color: #004088;
242
- }
243
- .tab1 ul.icn_listing li .sfsicls_twt {
244
- background-position: 0 -221px;
245
- color: #00abe3;
246
- }
247
-
248
- .tab1 ul.icn_listing li .sfsicls_share {
249
- background-position: 0 -372px;
250
- color: #ef4746;
251
- }
252
- .tab1 ul.icn_listing li .sfsicls_utube {
253
- background-position: 0 -448px;
254
- color: #f07963;
255
- }
256
- .tab1 ul.icn_listing li .sfsicls_linkdin {
257
- background-position: 0 -548px;
258
- color: #1e88c9;
259
- }
260
- .tab1 ul.icn_listing li .sfsicls_pinterest {
261
- background-position: 0 -623px;
262
- color: #f15f5d;
263
- }
264
- .tab1 ul.icn_listing li .sfsicls_instagram {
265
- background-position: 0 -781px;
266
- color: #369;
267
- }
268
- .tab1 ul.icn_listing li .custom {
269
- background-position: 0 -702px;
270
- color: #5a6570;
271
- }
272
- .tab1 ul.icn_listing li .right_info {
273
- width: 70%;
274
- float: right;
275
- font-family: helveticaregular;
276
- margin-right: 13px;
277
- }
278
- ul.icn_listing li .right_info a {
279
- text-decoration: underline;
280
- color: #a4a9ad;
281
- font-size: 16px;
282
- }
283
- .tab1 .tab_2_sav {
284
- padding-top: 30px;
285
- }
286
- /*Tab2*/
287
- .tab2 {
288
- overflow: hidden;
289
- }
290
- .tab2 .rss_url_row {
291
- width: 100%;
292
- float: left;
293
- margin: 0 0 10px;
294
- }
295
- .tab2 .rss_url_row h4 {
296
- float: left;
297
- line-height: 43px;
298
- }
299
- .tab2 .inr_cont input.add,
300
- .tab2 .inr_cont textarea.add_txt,
301
- .tab2 .rss_url_row input.add {
302
- width: 363px;
303
- float: left;
304
- background: #e5e5e5;
305
- box-shadow: 2px 2px 3px #dcdcdc inset;
306
- border: 0;
307
- padding: 12px 10px 11px;
308
- margin-left: 10px;
309
- }
310
- .tab2 .rss_url_row a.rit_link {
311
- float: left;
312
- margin: 10px 0 0 16px;
313
- font-size: 17px;
314
- }
315
- .tab2 .row {
316
- float: left;
317
- border-top: 2px solid #f2f3f4;
318
- clear: both;
319
- padding: 0 0 15px;
320
- width: 100%
321
- }
322
- .tab2 .row .tab_2_email_sec {
323
- list-style: none;
324
- margin: 17px 0 0;
325
- overflow: hidden;
326
- }
327
- .row ul.tab_2_email_sec li {
328
- float: left;
329
- margin-right: 10px;
330
- width: 32%;
331
- }
332
- .row ul.tab_2_email_sec li label span {
333
- font-size: 15px;
334
- color: #808080;
335
- width: 100%;
336
- float: left;
337
- }
338
- .row ul.tab_2_email_sec:first-child {
339
- margin-right: 2%
340
- }
341
- .tab2 .row h2.sfsicls_email,
342
- .tab2 .row h2.sfsicls_facebook,
343
- .tab2 .row h2.sfsicls_telegram,
344
- .tab2 .row h2.sfsicls_vk,
345
- .tab2 .row h2.sfsicls_ok,
346
- .tab2 .row h2.sfsicls_wechat,
347
- .tab2 .row h2.sfsicls_weibo,
348
- .tab2 .row h2.sfsicls_instagram,
349
- .tab2 .row h2.sfsicls_linkdin,
350
- .tab2 .row h2.sfsicls_pinterest,
351
- .tab2 .row h2.sfsicls_rs_s,
352
- .tab2 .row h2.sfsicls_share,
353
- .tab2 .row h2.sfsicls_twt,
354
- .tab2 .row h2.sfsicls_utube {
355
- background: url(../images/tab_1_icn_list.png) no-repeat;
356
- padding: 0 0 0 70px;
357
- margin: 15px 0 7px 21px;
358
- height: 52px;
359
- line-height: 51px;
360
- font-family: helveticaregular;
361
- font-size: 22px;
362
- }
363
- .tab2 .row h2.sfsicls_rs_s {
364
- background-position: 0 0;
365
- color: #f7941d;
366
- }
367
- .tab2 .row h2.sfsicls_telegram {
368
- background: url(../images/icons_theme/default/default_telegram.png) no-repeat;
369
- background-size: contain;
370
- }
371
- .tab2 .row h2.sfsicls_vk {
372
- background: url(../images/icons_theme/default/default_vk.png) no-repeat;
373
- background-size: contain;
374
- }
375
- .tab2 .row h2.sfsicls_ok {
376
- background: url(../images/icons_theme/default/default_ok.png) no-repeat;
377
- background-size: contain;
378
- }
379
- .tab2 .row h2.sfsicls_wechat {
380
- background: url(../images/icons_theme/default/default_wechat.png) no-repeat;
381
- background-size: contain;
382
- }
383
- .tab2 .row h2.sfsicls_weibo {
384
- background: url(../images/icons_theme/default/default_weibo.png) no-repeat;
385
- background-size: contain;
386
- }
387
- .tab2 .row h2.sfsicls_email {
388
- background-position: 0 -71px;
389
- color: #d1c800;
390
- }
391
- .tab2 .row h2.sfsicls_facebook {
392
- background-position: 0 -145px;
393
- color: #004088;
394
- }
395
- .tab2 .row h2.sfsicls_twt {
396
- background-position: 0 -221px;
397
- color: #00abe3;
398
- }
399
-
400
- .tab2 .row h2.sfsicls_share {
401
- background-position: 0 -372px;
402
- color: #ef4746;
403
- }
404
- .tab2 .row h2.sfsicls_utube {
405
- background-position: 0 -448px;
406
- color: #f07963;
407
- }
408
- .tab2 .row h2.sfsicls_linkdin {
409
- background-position: 0 -548px;
410
- color: #1e88c9;
411
- width: 100%;
412
- }
413
- .tab2 .row h2.sfsicls_pinterest {
414
- background-position: 0 -623px;
415
- color: #f15f5d;
416
- }
417
- .tab2 .row h2.sfsicls_instagram {
418
- background-position: 0 -781px;
419
- color: #369;
420
- }
421
- .tab2 .inr_cont {
422
- margin: 0 0 12px 94px;
423
- }
424
- ul.tab_2_email_sec .sf_arow {
425
- width: 52px;
426
- height: 52px;
427
- float: left;
428
- background: url(../images/sf_arow_icn.png) no-repeat;
429
- margin: 0 8px 0 6px;
430
- }
431
- ul.tab_2_email_sec .email_icn {
432
- background: url(../images/tab_1_icn_list.png) 0 -71px no-repeat;
433
- width: 52px;
434
- height: 52px;
435
- float: left;
436
- margin: 0 8px;
437
- }
438
- ul.tab_2_email_sec .subscribe_icn {
439
- background: url(../images/tab_1_icn_list.png) 0 -860px no-repeat;
440
- width: 52px;
441
- height: 52px;
442
- float: left;
443
- margin: 0 0 0 5px;
444
- }
445
- ul.tab_2_email_sec li .radio {
446
- float: left;
447
- margin: 8px 0 0;
448
- }
449
- .row ul.tab_2_email_sec li label {
450
- margin: 13px 0 0 7px;
451
- font-size: 16px;
452
- float: left;
453
- width: 160px;
454
- }
455
- /*Tab 3*/
456
- .icns_tab_3 .row_10_1,
457
- .icns_tab_3 .row_10_10,
458
- .icns_tab_3 .row_10_11,
459
- .icns_tab_3 .row_10_2,
460
- .icns_tab_3 .row_10_3,
461
- .icns_tab_3 .row_10_4,
462
- .icns_tab_3 .row_10_5,
463
- .icns_tab_3 .row_10_6,
464
- .icns_tab_3 .row_10_7,
465
- .icns_tab_3 .row_10_8,
466
- .icns_tab_3 .row_10_9,
467
- .icns_tab_3 .row_11_1,
468
- .icns_tab_3 .row_11_10,
469
- .icns_tab_3 .row_11_11,
470
- .icns_tab_3 .row_11_2,
471
- .icns_tab_3 .row_11_3,
472
- .icns_tab_3 .row_11_4,
473
- .icns_tab_3 .row_11_5,
474
- .icns_tab_3 .row_11_6,
475
- .icns_tab_3 .row_11_7,
476
- .icns_tab_3 .row_11_8,
477
- .icns_tab_3 .row_11_9,
478
- .icns_tab_3 .row_12_1,
479
- .icns_tab_3 .row_12_10,
480
- .icns_tab_3 .row_12_11,
481
- .icns_tab_3 .row_12_2,
482
- .icns_tab_3 .row_12_3,
483
- .icns_tab_3 .row_12_4,
484
- .icns_tab_3 .row_12_5,
485
- .icns_tab_3 .row_12_6,
486
- .icns_tab_3 .row_12_7,
487
- .icns_tab_3 .row_12_8,
488
- .icns_tab_3 .row_12_9,
489
- .icns_tab_3 .row_13_1,
490
- .icns_tab_3 .row_13_10,
491
- .icns_tab_3 .row_13_11,
492
- .icns_tab_3 .row_13_2,
493
- .icns_tab_3 .row_13_3,
494
- .icns_tab_3 .row_13_4,
495
- .icns_tab_3 .row_13_5,
496
- .icns_tab_3 .row_13_6,
497
- .icns_tab_3 .row_13_7,
498
- .icns_tab_3 .row_13_8,
499
- .icns_tab_3 .row_13_9,
500
- .icns_tab_3 .row_14_1,
501
- .icns_tab_3 .row_14_10,
502
- .icns_tab_3 .row_14_11,
503
- .icns_tab_3 .row_14_2,
504
- .icns_tab_3 .row_14_3,
505
- .icns_tab_3 .row_14_4,
506
- .icns_tab_3 .row_14_5,
507
- .icns_tab_3 .row_14_6,
508
- .icns_tab_3 .row_14_7,
509
- .icns_tab_3 .row_14_8,
510
- .icns_tab_3 .row_14_9,
511
- .icns_tab_3 .row_15_1,
512
- .icns_tab_3 .row_15_10,
513
- .icns_tab_3 .row_15_11,
514
- .icns_tab_3 .row_15_2,
515
- .icns_tab_3 .row_15_3,
516
- .icns_tab_3 .row_15_4,
517
- .icns_tab_3 .row_15_5,
518
- .icns_tab_3 .row_15_6,
519
- .icns_tab_3 .row_15_7,
520
- .icns_tab_3 .row_15_8,
521
- .icns_tab_3 .row_15_9,
522
- .icns_tab_3 .row_16_1,
523
- .icns_tab_3 .row_16_10,
524
- .icns_tab_3 .row_16_11,
525
- .icns_tab_3 .row_16_2,
526
- .icns_tab_3 .row_16_3,
527
- .icns_tab_3 .row_16_4,
528
- .icns_tab_3 .row_16_5,
529
- .icns_tab_3 .row_16_6,
530
- .icns_tab_3 .row_16_7,
531
- .icns_tab_3 .row_16_8,
532
- .icns_tab_3 .row_16_9,
533
- .icns_tab_3 .row_1_1,
534
- .icns_tab_3 .row_1_10,
535
- .icns_tab_3 .row_1_11,
536
- .icns_tab_3 .row_1_14,
537
- .icns_tab_3 .row_1_2,
538
- .icns_tab_3 .row_1_3,
539
- .icns_tab_3 .row_1_4,
540
- .icns_tab_3 .row_1_5,
541
- .icns_tab_3 .row_1_6,
542
- .icns_tab_3 .row_1_7,
543
- .icns_tab_3 .row_1_8,
544
- .icns_tab_3 .row_1_9,
545
- .icns_tab_3 .row_2_1,
546
- .icns_tab_3 .row_2_10,
547
- .icns_tab_3 .row_2_11,
548
- .icns_tab_3 .row_2_14,
549
- .icns_tab_3 .row_2_2,
550
- .icns_tab_3 .row_2_3,
551
- .icns_tab_3 .row_2_4,
552
- .icns_tab_3 .row_2_5,
553
- .icns_tab_3 .row_2_6,
554
- .icns_tab_3 .row_2_7,
555
- .icns_tab_3 .row_2_8,
556
- .icns_tab_3 .row_2_9,
557
- .icns_tab_3 .row_3_1,
558
- .icns_tab_3 .row_3_10,
559
- .icns_tab_3 .row_3_11,
560
- .icns_tab_3 .row_3_14,
561
- .icns_tab_3 .row_3_2,
562
- .icns_tab_3 .row_3_3,
563
- .icns_tab_3 .row_3_4,
564
- .icns_tab_3 .row_3_5,
565
- .icns_tab_3 .row_3_6,
566
- .icns_tab_3 .row_3_7,
567
- .icns_tab_3 .row_3_8,
568
- .icns_tab_3 .row_3_9,
569
- .icns_tab_3 .row_4_1,
570
- .icns_tab_3 .row_4_10,
571
- .icns_tab_3 .row_4_11,
572
- .icns_tab_3 .row_4_14,
573
- .icns_tab_3 .row_4_2,
574
- .icns_tab_3 .row_4_3,
575
- .icns_tab_3 .row_4_4,
576
- .icns_tab_3 .row_4_5,
577
- .icns_tab_3 .row_4_6,
578
- .icns_tab_3 .row_4_7,
579
- .icns_tab_3 .row_4_8,
580
- .icns_tab_3 .row_4_9,
581
- .icns_tab_3 .row_5_1,
582
- .icns_tab_3 .row_5_10,
583
- .icns_tab_3 .row_5_11,
584
- .icns_tab_3 .row_5_14,
585
- .icns_tab_3 .row_5_2,
586
- .icns_tab_3 .row_5_3,
587
- .icns_tab_3 .row_5_4,
588
- .icns_tab_3 .row_5_5,
589
- .icns_tab_3 .row_5_6,
590
- .icns_tab_3 .row_5_7,
591
- .icns_tab_3 .row_5_8,
592
- .icns_tab_3 .row_5_9,
593
- .icns_tab_3 .row_6_1,
594
- .icns_tab_3 .row_6_10,
595
- .icns_tab_3 .row_6_11,
596
- .icns_tab_3 .row_6_14,
597
- .icns_tab_3 .row_6_2,
598
- .icns_tab_3 .row_6_3,
599
- .icns_tab_3 .row_6_4,
600
- .icns_tab_3 .row_6_5,
601
- .icns_tab_3 .row_6_6,
602
- .icns_tab_3 .row_6_7,
603
- .icns_tab_3 .row_6_8,
604
- .icns_tab_3 .row_6_9,
605
- .icns_tab_3 .row_7_1,
606
- .icns_tab_3 .row_7_10,
607
- .icns_tab_3 .row_7_11,
608
- .icns_tab_3 .row_7_2,
609
- .icns_tab_3 .row_7_3,
610
- .icns_tab_3 .row_7_4,
611
- .icns_tab_3 .row_7_5,
612
- .icns_tab_3 .row_7_6,
613
- .icns_tab_3 .row_7_7,
614
- .icns_tab_3 .row_7_8,
615
- .icns_tab_3 .row_7_9,
616
- .icns_tab_3 .row_8_1,
617
- .icns_tab_3 .row_8_10,
618
- .icns_tab_3 .row_8_11,
619
- .icns_tab_3 .row_8_2,
620
- .icns_tab_3 .row_8_3,
621
- .icns_tab_3 .row_8_4,
622
- .icns_tab_3 .row_8_5,
623
- .icns_tab_3 .row_8_6,
624
- .icns_tab_3 .row_8_7,
625
- .icns_tab_3 .row_8_8,
626
- .icns_tab_3 .row_8_9,
627
- .icns_tab_3 .row_9_1,
628
- .icns_tab_3 .row_9_10,
629
- .icns_tab_3 .row_9_11,
630
- .icns_tab_3 .row_9_2,
631
- .icns_tab_3 .row_9_3,
632
- .icns_tab_3 .row_9_4,
633
- .icns_tab_3 .row_9_5,
634
- .icns_tab_3 .row_9_6,
635
- .icns_tab_3 .row_9_7,
636
- .icns_tab_3 .row_9_8,
637
- .icns_tab_3 .row_9_9,
638
- .icns_tab_3 .row_17_1,
639
- .icns_tab_3 .row_17_2,
640
- .icns_tab_3 .row_17_3,
641
- .icns_tab_3 .row_17_4,
642
- .icns_tab_3 .row_17_5,
643
- .icns_tab_3 .row_17_6,
644
- .icns_tab_3 .row_17_7,
645
- .icns_tab_3 .row_17_8,
646
- .icns_tab_3 .row_17_9,
647
- .icns_tab_3 .row_17_10,
648
- .icns_tab_3 .row_17_14,
649
- .icns_tab_3 .row_17_15,
650
- .icns_tab_3 .row_17_16,
651
- .icns_tab_3 .row_17_17,
652
- .icns_tab_3 .row_17_18,
653
- .icns_tab_3 .row_17_11,
654
- .icns_tab_3 .row_7_14,
655
- .icns_tab_3 .row_8_14,
656
- .icns_tab_3 .row_9_14,
657
- .icns_tab_3 .row_10_14,
658
- .icns_tab_3 .row_11_14,
659
- .icns_tab_3 .row_12_14,
660
- .icns_tab_3 .row_13_14,
661
- .icns_tab_3 .row_14_14,
662
- .icns_tab_3 .row_15_22,
663
- .icns_tab_3 .row_16_22,
664
- .icns_tab_3 .row_17_22,
665
- .icns_tab_3 .row_17_15,
666
- .icns_tab_3 .row_17_16,
667
- .icns_tab_3 .row_17_17,
668
- .icns_tab_3 .row_1_15,
669
- .icns_tab_3 .row_2_15,
670
- .icns_tab_3 .row_3_15,
671
- .icns_tab_3 .row_4_15,
672
- .icns_tab_3 .row_5_15,
673
- .icns_tab_3 .row_6_15,
674
- .icns_tab_3 .row_7_15,
675
- .icns_tab_3 .row_8_15,
676
- .icns_tab_3 .row_9_15,
677
- .icns_tab_3 .row_10_15,
678
- .icns_tab_3 .row_11_15,
679
- .icns_tab_3 .row_12_15,
680
- .icns_tab_3 .row_13_15,
681
- .icns_tab_3 .row_14_15,
682
- .icns_tab_3 .row_15_15,
683
- .icns_tab_3 .row_16_15,
684
-
685
- .icns_tab_3 .row_1_16,
686
- .icns_tab_3 .row_2_16,
687
- .icns_tab_3 .row_3_16,
688
- .icns_tab_3 .row_4_16,
689
- .icns_tab_3 .row_5_16,
690
- .icns_tab_3 .row_6_16,
691
- .icns_tab_3 .row_7_16,
692
- .icns_tab_3 .row_8_16,
693
- .icns_tab_3 .row_9_16,
694
- .icns_tab_3 .row_10_16,
695
- .icns_tab_3 .row_11_16,
696
- .icns_tab_3 .row_12_16,
697
- .icns_tab_3 .row_13_16,
698
- .icns_tab_3 .row_14_16,
699
- .icns_tab_3 .row_15_16,
700
- .icns_tab_3 .row_16_16,
701
-
702
- .icns_tab_3 .row_1_17,
703
- .icns_tab_3 .row_2_17,
704
- .icns_tab_3 .row_3_17,
705
- .icns_tab_3 .row_4_17,
706
- .icns_tab_3 .row_5_17,
707
- .icns_tab_3 .row_6_17,
708
- .icns_tab_3 .row_7_17,
709
- .icns_tab_3 .row_8_17,
710
- .icns_tab_3 .row_9_17,
711
- .icns_tab_3 .row_10_17,
712
- .icns_tab_3 .row_11_17,
713
- .icns_tab_3 .row_12_17,
714
- .icns_tab_3 .row_13_17,
715
- .icns_tab_3 .row_14_17,
716
- .icns_tab_3 .row_15_17,
717
- .icns_tab_3 .row_16_17,
718
-
719
- .icns_tab_3 .row_1_18,
720
- .icns_tab_3 .row_2_18,
721
- .icns_tab_3 .row_3_18,
722
- .icns_tab_3 .row_4_18,
723
- .icns_tab_3 .row_5_18,
724
- .icns_tab_3 .row_6_18,
725
- .icns_tab_3 .row_7_18,
726
- .icns_tab_3 .row_8_18,
727
- .icns_tab_3 .row_9_18,
728
- .icns_tab_3 .row_10_18,
729
- .icns_tab_3 .row_11_18,
730
- .icns_tab_3 .row_12_18,
731
- .icns_tab_3 .row_13_18,
732
- .icns_tab_3 .row_14_18,
733
- .icns_tab_3 .row_15_18,
734
- .icns_tab_3 .row_16_18,
735
- .icns_tab_3 .row_17_18,
736
- .icns_tab_3 .row_15_14,
737
- .icns_tab_3 .row_16_14 {
738
- background: url(../images/tab_3_icns.png) no-repeat;
739
- width: 53px;
740
- height: 52px;
741
- float: left;
742
- margin: 0 4px 0 0;
743
- }
744
- .icns_tab_3 .row_1_1 {
745
- background-position: -1px 0;
746
- }
747
- .icns_tab_3 .row_1_2 {
748
- background-position: -60px 0;
749
- }
750
- .icns_tab_3 .row_1_3 {
751
- background-position: -118px 0;
752
- }
753
- .icns_tab_3 .row_1_4 {
754
- background-position: -176px 0;
755
- }
756
- .icns_tab_3 .row_1_5 {
757
- background-position: -235px 0;
758
- }
759
- .icns_tab_3 .row_1_6 {
760
- background-position: -293px 0;
761
- }
762
- .icns_tab_3 .row_1_7 {
763
- background-position: -350px 0;
764
- }
765
- .icns_tab_3 .row_1_8 {
766
- background-position: -409px 0;
767
- }
768
- .icns_tab_3 .row_1_9 {
769
- background-position: -467px 0;
770
- }
771
- .icns_tab_3 .row_1_10 {
772
- background-position: -526px 0;
773
- }
774
- .icns_tab_3 .row_1_11 {
775
- background-position: -711px 0;
776
- }
777
-
778
- .icns_tab_3 .row_1_14 {
779
- background-position: -773px 0;
780
- }
781
- .icns_tab_3 .row_1_15 {
782
- background-position: -838px 0;
783
- }
784
- .icns_tab_3 .row_1_16 {
785
- background-position: -909px 0;
786
- }
787
- .icns_tab_3 .row_1_17 {
788
- background-position: -977px 0;
789
- }
790
- .icns_tab_3 .row_1_18 {
791
- background: url(../images/icons_theme/default/default_wechat.png) no-repeat;
792
- background-size: contain;
793
- }.icns_tab_3 .row_2_1 {
794
- background-position: 0 -74px;
795
- }
796
- .icns_tab_3 .row_2_2 {
797
- background-position: -60px -74px;
798
- }
799
- .icns_tab_3 .row_2_3 {
800
- background-position: -118px -74px;
801
- }
802
- .icns_tab_3 .row_2_4 {
803
- background-position: -176px -74px;
804
- }
805
- .icns_tab_3 .row_2_5 {
806
- background-position: -235px -74px;
807
- }
808
- .icns_tab_3 .row_2_6 {
809
- background-position: -293px -74px;
810
- }
811
- .icns_tab_3 .row_2_7 {
812
- background-position: -350px -74px;
813
- }
814
- .icns_tab_3 .row_2_8 {
815
- background-position: -409px -74px;
816
- }
817
- .icns_tab_3 .row_2_9 {
818
- background-position: -467px -74px;
819
- }
820
- .icns_tab_3 .row_2_10 {
821
- background-position: -526px -74px;
822
- }
823
- .icns_tab_3 .row_2_11 {
824
- background-position: -711px -74px;
825
- }
826
- .icns_tab_3 .row_2_14 {
827
- background-position: -773px -74px;
828
- }
829
- .icns_tab_3 .row_2_15 {
830
- background-position: -838px -74px;
831
- }
832
- .icns_tab_3 .row_2_16 {
833
- background-position: -909px -74px;
834
- }
835
- .icns_tab_3 .row_2_17 {
836
- background-position: -977px -74px;
837
- }
838
- .icns_tab_3 .row_2_18 {
839
- background: url(../images/icons_theme/flat/flat_wechat.png) no-repeat;
840
- background-size: contain;
841
- }
842
- .icns_tab_3 .row_3_1 {
843
- background-position: 0 -146px;
844
- }
845
- .icns_tab_3 .row_3_2 {
846
- background-position: -60px -146px;
847
- }
848
- .icns_tab_3 .row_3_3 {
849
- background-position: -118px -146px;
850
- }
851
- .icns_tab_3 .row_3_4 {
852
- background-position: -176px -146px;
853
- }
854
- .icns_tab_3 .row_3_5 {
855
- background-position: -235px -146px;
856
- }
857
- .icns_tab_3 .row_3_6 {
858
- background-position: -293px -146px;
859
- }
860
- .icns_tab_3 .row_3_7 {
861
- background-position: -350px -146px;
862
- }
863
- .icns_tab_3 .row_3_8 {
864
- background-position: -409px -146px;
865
- }
866
- .icns_tab_3 .row_3_9 {
867
- background-position: -467px -146px;
868
- }
869
- .icns_tab_3 .row_3_10 {
870
- background-position: -526px -146px;
871
- }
872
- .icns_tab_3 .row_3_11 {
873
- background-position: -711px -147px;
874
- }
875
- .icns_tab_3 .row_3_14 {
876
- background-position: -773px -147px;
877
- }
878
- .icns_tab_3 .row_3_15 {
879
- background-position: -838px -147px;
880
- }
881
- .icns_tab_3 .row_3_16 {
882
- background-position: -909px -147px;
883
- }
884
- .icns_tab_3 .row_3_17 {
885
- background-position: -977px -147px;
886
- }
887
- .icns_tab_3 .row_3_18 {
888
- background: url(../images/icons_theme/thin/thin_wechat.png) no-repeat;
889
- background-size: contain;
890
- }
891
- .icns_tab_3 .row_4_1 {
892
- background-position: 0 -222px;
893
- }
894
- .icns_tab_3 .row_4_2 {
895
- background-position: -60px -222px;
896
- }
897
- .icns_tab_3 .row_4_3 {
898
- background-position: -118px -222px;
899
- }
900
- .icns_tab_3 .row_4_4 {
901
- background-position: -176px -222px;
902
- }
903
- .icns_tab_3 .row_4_5 {
904
- background-position: -235px -222px;
905
- }
906
- .icns_tab_3 .row_4_6 {
907
- background-position: -293px -222px;
908
- }
909
- .icns_tab_3 .row_4_7 {
910
- background-position: -350px -222px;
911
- }
912
- .icns_tab_3 .row_4_8 {
913
- background-position: -409px -222px;
914
- }
915
- .icns_tab_3 .row_4_9 {
916
- background-position: -467px -222px;
917
- }
918
- .icns_tab_3 .row_4_10 {
919
- background-position: -526px -222px;
920
- }
921
- .icns_tab_3 .row_4_11 {
922
- background-position: -711px -222px;
923
- }
924
- .icns_tab_3 .row_4_14 {
925
- background-position: -773px -222px;
926
- }
927
- .icns_tab_3 .row_4_15 {
928
- background-position: -838px -222px;
929
- }
930
- .icns_tab_3 .row_4_16 {
931
- background-position: -909px -222px;
932
- }
933
- .icns_tab_3 .row_4_17 {
934
- background-position: -977px -222px;
935
- }
936
- .icns_tab_3 .row_4_18 {
937
- background: url(../images/icons_theme/cute/cute_wechat.png) no-repeat;
938
- background-size: contain;
939
- }
940
- .icns_tab_3 .row_5_1 {
941
- background-position: 0 -296px;
942
- }
943
- .icns_tab_3 .row_5_2 {
944
- background-position: -60px -296px;
945
- }
946
- .icns_tab_3 .row_5_3 {
947
- background-position: -118px -296px;
948
- }
949
- .icns_tab_3 .row_5_4 {
950
- background-position: -176px -296px;
951
- }
952
- .icns_tab_3 .row_5_5 {
953
- background-position: -235px -296px;
954
- }
955
- .icns_tab_3 .row_5_6 {
956
- background-position: -293px -296px;
957
- }
958
- .icns_tab_3 .row_5_7 {
959
- background-position: -350px -296px;
960
- }
961
- .icns_tab_3 .row_5_8 {
962
- background-position: -409px -296px;
963
- }
964
- .icns_tab_3 .row_5_9 {
965
- background-position: -467px -296px;
966
- }
967
- .icns_tab_3 .row_5_10 {
968
- background-position: -526px -296px;
969
- }
970
- .icns_tab_3 .row_5_11 {
971
- background-position: -711px -296px;
972
- }
973
- .icns_tab_3 .row_5_14 {
974
- background-position: -773px -296px;
975
- }
976
- .icns_tab_3 .row_5_15 {
977
- background-position: -838px -296px;
978
- }
979
- .icns_tab_3 .row_5_16 {
980
- background-position: -909px -296px;
981
- }
982
- .icns_tab_3 .row_5_17 {
983
- background-position: -977px -296px;
984
- }
985
- .icns_tab_3 .row_5_18 {
986
- background: url(../images/icons_theme/cubes/cubes_wechat.png);
987
- background-size: contain;
988
- }
989
- .icns_tab_3 .row_6_1 {
990
- background-position: 0 -370px;
991
- }
992
- .icns_tab_3 .row_6_2 {
993
- background-position: -60px -370px;
994
- }
995
- .icns_tab_3 .row_6_3 {
996
- background-position: -118px -370px;
997
- }
998
- .icns_tab_3 .row_6_4 {
999
- background-position: -176px -370px;
1000
- }
1001
- .icns_tab_3 .row_6_5 {
1002
- background-position: -235px -370px;
1003
- }
1004
- .icns_tab_3 .row_6_6 {
1005
- background-position: -293px -370px;
1006
- }
1007
- .icns_tab_3 .row_6_7 {
1008
- background-position: -350px -370px;
1009
- }
1010
- .icns_tab_3 .row_6_8 {
1011
- background-position: -409px -370px;
1012
- }
1013
- .icns_tab_3 .row_6_9 {
1014
- background-position: -468px -370px;
1015
- }
1016
- .icns_tab_3 .row_6_10 {
1017
- background-position: -526px -370px;
1018
- }
1019
- .icns_tab_3 .row_6_11 {
1020
- background-position: -711px -370px;
1021
- }
1022
- .icns_tab_3 .row_6_14 {
1023
- background-position: -773px -370px;
1024
- }
1025
- .icns_tab_3 .row_6_15 {
1026
- background-position: -838px -370px;
1027
- }
1028
- .icns_tab_3 .row_6_16 {
1029
- background-position: -909px -370px;
1030
- }
1031
- .icns_tab_3 .row_6_17 {
1032
- background-position: -977px -370px;
1033
- }
1034
- .icns_tab_3 .row_6_18 {
1035
- background: url(../images/icons_theme/chrome_blue/chrome_blue_wechat.png);
1036
- background-size: contain;
1037
- }
1038
- .icns_tab_3 .row_7_1 {
1039
- background-position: 0 -444px;
1040
- }
1041
- .icns_tab_3 .row_7_2 {
1042
- background-position: -60px -444px;
1043
- }
1044
- .icns_tab_3 .row_7_3 {
1045
- background-position: -118px -444px;
1046
- }
1047
- .icns_tab_3 .row_7_4 {
1048
- background-position: -176px -444px;
1049
- }
1050
- .icns_tab_3 .row_7_5 {
1051
- background-position: -235px -444px;
1052
- }
1053
- .icns_tab_3 .row_7_6 {
1054
- background-position: -293px -444px;
1055
- }
1056
- .icns_tab_3 .row_7_7 {
1057
- background-position: -350px -444px;
1058
- }
1059
- .icns_tab_3 .row_7_8 {
1060
- background-position: -409px -444px;
1061
- }
1062
- .icns_tab_3 .row_7_9 {
1063
- background-position: -466px -444px;
1064
- }
1065
- .icns_tab_3 .row_7_10 {
1066
- background-position: -526px -444px;
1067
- }
1068
- .icns_tab_3 .row_7_11 {
1069
- background-position: -711px -444px;
1070
- }
1071
- .icns_tab_3 .row_7_14 {
1072
- background-position: -773px -444px;
1073
- }
1074
- .icns_tab_3 .row_7_15 {
1075
- background-position: -838px -444px;
1076
- }
1077
- .icns_tab_3 .row_7_16 {
1078
- background-position: -909px -444px;
1079
- }
1080
- .icns_tab_3 .row_7_17 {
1081
- background-position: -977px -444px;
1082
- }
1083
- .icns_tab_3 .row_7_18 {
1084
- background: url(../images/icons_theme/chrome_grey/chrome_grey_wechat.png);
1085
- background-size: contain;
1086
- }
1087
- .icns_tab_3 .row_8_1 {
1088
- background-position: 0 -518px;
1089
- }
1090
- .icns_tab_3 .row_8_2 {
1091
- background-position: -60px -518px;
1092
- }
1093
- .icns_tab_3 .row_8_3 {
1094
- background-position: -118px -518px;
1095
- }
1096
- .icns_tab_3 .row_8_4 {
1097
- background-position: -176px -518px;
1098
- }
1099
- .icns_tab_3 .row_8_5 {
1100
- background-position: -235px -518px;
1101
- }
1102
- .icns_tab_3 .row_8_6 {
1103
- background-position: -293px -518px;
1104
- }
1105
- .icns_tab_3 .row_8_7 {
1106
- background-position: -350px -518px;
1107
- }
1108
- .icns_tab_3 .row_8_8 {
1109
- background-position: -409px -518px;
1110
- }
1111
- .icns_tab_3 .row_8_9 {
1112
- background-position: -467px -518px;
1113
- }
1114
- .icns_tab_3 .row_8_10 {
1115
- background-position: -526px -518px;
1116
- }
1117
- .icns_tab_3 .row_8_11 {
1118
- background-position: -711px -518px;
1119
- }
1120
- .icns_tab_3 .row_8_14 {
1121
- background-position: -773px -518px;
1122
- }
1123
- .icns_tab_3 .row_8_15 {
1124
- background-position: -838px -518px;
1125
- }
1126
- .icns_tab_3 .row_8_16 {
1127
- background-position: -909px -518px;
1128
- }
1129
- .icns_tab_3 .row_8_17 {
1130
- background-position: -977px -518px;
1131
- }
1132
- .icns_tab_3 .row_8_18 {
1133
- background: url(../images/icons_theme/splash/splash_wechat.png);
1134
- background-size: contain;
1135
- }
1136
- .icns_tab_3 .row_9_1 {
1137
- background-position: 0 -592px;
1138
- }
1139
- .icns_tab_3 .row_9_2 {
1140
- background-position: -60px -592px;
1141
- }
1142
- .icns_tab_3 .row_9_3 {
1143
- background-position: -118px -592px;
1144
- }
1145
- .icns_tab_3 .row_9_4 {
1146
- background-position: -176px -592px;
1147
- }
1148
- .icns_tab_3 .row_9_5 {
1149
- background-position: -235px -592px;
1150
- }
1151
- .icns_tab_3 .row_9_6 {
1152
- background-position: -293px -592px;
1153
- }
1154
- .icns_tab_3 .row_9_7 {
1155
- background-position: -350px -592px;
1156
- }
1157
- .icns_tab_3 .row_9_8 {
1158
- background-position: -409px -592px;
1159
- }
1160
- .icns_tab_3 .row_9_9 {
1161
- background-position: -467px -592px;
1162
- }
1163
- .icns_tab_3 .row_9_10 {
1164
- background-position: -526px -592px;
1165
- }
1166
- .icns_tab_3 .row_9_11 {
1167
- background-position: -711px -592px;
1168
- }
1169
- .icns_tab_3 .row_9_14 {
1170
- background-position: -773px -592px;
1171
- }
1172
- .icns_tab_3 .row_9_15 {
1173
- background-position: -838px -592px;
1174
- }
1175
- .icns_tab_3 .row_9_16 {
1176
- background-position: -909px -592px;
1177
- }
1178
- .icns_tab_3 .row_9_17 {
1179
- background-position: -977px -592px;
1180
- }
1181
- .icns_tab_3 .row_9_18 {
1182
- background: url(../images/icons_theme/orange/orange_wechat.png);
1183
- background-size: contain;
1184
- }
1185
- .icns_tab_3 .row_10_1 {
1186
- background-position: 0 -666px;
1187
- }
1188
- .icns_tab_3 .row_10_2 {
1189
- background-position: -60px -666px;
1190
- }
1191
- .icns_tab_3 .row_10_3 {
1192
- background-position: -118px -666px;
1193
- }
1194
- .icns_tab_3 .row_10_4 {
1195
- background-position: -176px -666px;
1196
- }
1197
- .icns_tab_3 .row_10_5 {
1198
- background-position: -235px -666px;
1199
- }
1200
- .icns_tab_3 .row_10_6 {
1201
- background-position: -293px -666px;
1202
- }
1203
- .icns_tab_3 .row_10_7 {
1204
- background-position: -350px -666px;
1205
- }
1206
- .icns_tab_3 .row_10_8 {
1207
- background-position: -409px -666px;
1208
- }
1209
- .icns_tab_3 .row_10_9 {
1210
- background-position: -467px -666px;
1211
- }
1212
- .icns_tab_3 .row_10_10 {
1213
- background-position: -526px -666px;
1214
- }
1215
- .icns_tab_3 .row_10_11 {
1216
- background-position: -711px -666px;
1217
- }
1218
- .icns_tab_3 .row_10_14 {
1219
- background-position: -773px -666px;
1220
- }
1221
- .icns_tab_3 .row_10_15 {
1222
- background-position: -838px -666px;
1223
- }
1224
- .icns_tab_3 .row_10_16 {
1225
- background-position: -909px -666px;
1226
- }
1227
- .icns_tab_3 .row_10_17 {
1228
- background-position: -977px -666px;
1229
- }
1230
- .icns_tab_3 .row_10_18 {
1231
- background: url(../images/icons_theme/crystal/crystal_wechat.png);
1232
- background-size: contain;
1233
- }
1234
- .icns_tab_3 .row_11_1 {
1235
- background-position: 0 -740px;
1236
- }
1237
- .icns_tab_3 .row_11_2 {
1238
- background-position: -60px -740px;
1239
- }
1240
- .icns_tab_3 .row_11_3 {
1241
- background-position: -118px -740px;
1242
- }
1243
- .icns_tab_3 .row_11_4 {
1244
- background-position: -176px -740px;
1245
- }
1246
- .icns_tab_3 .row_11_5 {
1247
- background-position: -235px -740px;
1248
- }
1249
- .icns_tab_3 .row_11_6 {
1250
- background-position: -293px -740px;
1251
- }
1252
- .icns_tab_3 .row_11_7 {
1253
- background-position: -350px -740px;
1254
- }
1255
- .icns_tab_3 .row_11_8 {
1256
- background-position: -409px -740px;
1257
- }
1258
- .icns_tab_3 .row_11_9 {
1259
- background-position: -467px -740px;
1260
- }
1261
- .icns_tab_3 .row_11_10 {
1262
- background-position: -526px -740px;
1263
- }
1264
- .icns_tab_3 .row_11_11 {
1265
- background-position: -711px -740px;
1266
- }
1267
- .icns_tab_3 .row_11_14 {
1268
- background-position: -773px -740px;
1269
- }
1270
- .icns_tab_3 .row_11_15 {
1271
- background-position: -838px -740px;
1272
- }
1273
- .icns_tab_3 .row_11_16 {
1274
- background-position: -909px -740px;
1275
- }
1276
- .icns_tab_3 .row_11_17 {
1277
- background-position: -977px -740px;
1278
- }
1279
- .icns_tab_3 .row_11_18 {
1280
- background: url(../images/icons_theme/glossy/glossy_wechat.png);
1281
- background-size: contain;
1282
- }
1283
- .icns_tab_3 .row_12_1 {
1284
- background-position: 0 -814px;
1285
- }
1286
- .icns_tab_3 .row_12_2 {
1287
- background-position: -60px -814px;
1288
- }
1289
- .icns_tab_3 .row_12_3 {
1290
- background-position: -118px -814px;
1291
- }
1292
- .icns_tab_3 .row_12_4 {
1293
- background-position: -176px -814px;
1294
- }
1295
- .icns_tab_3 .row_12_5 {
1296
- background-position: -235px -814px;
1297
- }
1298
- .icns_tab_3 .row_12_6 {
1299
- background-position: -293px -814px;
1300
- }
1301
- .icns_tab_3 .row_12_7 {
1302
- background-position: -350px -814px;
1303
- }
1304
- .icns_tab_3 .row_12_8 {
1305
- background-position: -409px -814px;
1306
- }
1307
- .icns_tab_3 .row_12_9 {
1308
- background-position: -467px -814px;
1309
- }
1310
- .icns_tab_3 .row_12_10 {
1311
- background-position: -526px -814px;
1312
- }
1313
- .icns_tab_3 .row_12_11 {
1314
- background-position: -711px -814px;
1315
- }
1316
- .icns_tab_3 .row_12_14 {
1317
- background-position: -773px -814px;
1318
- }
1319
- .icns_tab_3 .row_12_15 {
1320
- background-position: -838px -814px;
1321
- }
1322
- .icns_tab_3 .row_12_16 {
1323
- background-position: -909px -814px;
1324
- }
1325
- .icns_tab_3 .row_12_17 {
1326
- background-position: -977px -814px;
1327
- }
1328
- .icns_tab_3 .row_12_18 {
1329
- background: url(../images/icons_theme/black/black_wechat.png);
1330
- background-size: contain;
1331
- }
1332
- .icns_tab_3 .row_13_1 {
1333
- background-position: 0 -888px;
1334
- }
1335
- .icns_tab_3 .row_13_2 {
1336
- background-position: -60px -888px;
1337
- }
1338
- .icns_tab_3 .row_13_3 {
1339
- background-position: -118px -888px;
1340
- }
1341
- .icns_tab_3 .row_13_4 {
1342
- background-position: -176px -888px;
1343
- }
1344
- .icns_tab_3 .row_13_5 {
1345
- background-position: -235px -888px;
1346
- }
1347
- .icns_tab_3 .row_13_6 {
1348
- background-position: -293px -888px;
1349
- }
1350
- .icns_tab_3 .row_13_7 {
1351
- background-position: -350px -888px;
1352
- }
1353
- .icns_tab_3 .row_13_8 {
1354
- background-position: -409px -888px;
1355
- }
1356
- .icns_tab_3 .row_13_9 {
1357
- background-position: -467px -888px;
1358
- }
1359
- .icns_tab_3 .row_13_10 {
1360
- background-position: -526px -888px;
1361
- }
1362
- .icns_tab_3 .row_13_11 {
1363
- background-position: -711px -888px;
1364
- }
1365
- .icns_tab_3 .row_13_14 {
1366
- background-position: -773px -888px;
1367
- }
1368
- .icns_tab_3 .row_13_15 {
1369
- background-position: -838px -888px;
1370
- }
1371
- .icns_tab_3 .row_13_16 {
1372
- background-position: -909px -888px;
1373
- }
1374
- .icns_tab_3 .row_13_17 {
1375
- background-position: -977px -888px;
1376
- }
1377
- .icns_tab_3 .row_13_18 {
1378
- background: url(../images/icons_theme/silver/silver_wechat.png);
1379
-
1380
- background-size: contain;
1381
- }
1382
- .icns_tab_3 .row_14_1 {
1383
- background-position: 0 -962px;
1384
- }
1385
- .icns_tab_3 .row_14_2 {
1386
- background-position: -60px -962px;
1387
- }
1388
- .icns_tab_3 .row_14_3 {
1389
- background-position: -118px -962px;
1390
- }
1391
- .icns_tab_3 .row_14_4 {
1392
- background-position: -176px -962px;
1393
- }
1394
- .icns_tab_3 .row_14_5 {
1395
- background-position: -235px -962px;
1396
- }
1397
- .icns_tab_3 .row_14_6 {
1398
- background-position: -293px -962px;
1399
- }
1400
- .icns_tab_3 .row_14_7 {
1401
- background-position: -350px -962px;
1402
- }
1403
- .icns_tab_3 .row_14_8 {
1404
- background-position: -409px -962px;
1405
- }
1406
- .icns_tab_3 .row_14_9 {
1407
- background-position: -467px -962px;
1408
- }
1409
- .icns_tab_3 .row_14_10 {
1410
- background-position: -526px -962px;
1411
- }
1412
- .icns_tab_3 .row_14_11 {
1413
- background-position: -711px -962px;
1414
- }
1415
- .icns_tab_3 .row_14_14 {
1416
- background-position: -773px -962px;
1417
- }
1418
- .icns_tab_3 .row_14_15 {
1419
- background-position: -838px -962px;
1420
- }
1421
- .icns_tab_3 .row_14_16 {
1422
- background-position: -909px -962px;
1423
- }
1424
- .icns_tab_3 .row_14_17 {
1425
- background-position: -977px -962px;
1426
- }
1427
- .icns_tab_3 .row_14_18 {
1428
- background: url(../images/icons_theme/shaded_dark/shaded_dark_wechat.png);
1429
-
1430
- background-size: contain;
1431
- }
1432
- .icns_tab_3 .row_15_1 {
1433
- background-position: 0 -1036px;
1434
- }
1435
- .icns_tab_3 .row_15_2 {
1436
- background-position: -60px -1036px;
1437
- }
1438
- .icns_tab_3 .row_15_3 {
1439
- background-position: -118px -1036px;
1440
- }
1441
- .icns_tab_3 .row_15_4 {
1442
- background-position: -176px -1036px;
1443
- }
1444
- .icns_tab_3 .row_15_5 {
1445
- background-position: -235px -1036px;
1446
- }
1447
- .icns_tab_3 .row_15_6 {
1448
- background-position: -293px -1036px;
1449
- }
1450
- .icns_tab_3 .row_15_7 {
1451
- background-position: -350px -1036px;
1452
- }
1453
- .icns_tab_3 .row_15_8 {
1454
- background-position: -409px -1036px;
1455
- }
1456
- .icns_tab_3 .row_15_9 {
1457
- background-position: -467px -1036px;
1458
- }
1459
- .icns_tab_3 .row_15_10 {
1460
- background-position: -526px -1036px;
1461
- }
1462
- .icns_tab_3 .row_15_11 {
1463
- background-position: -711px -1036px;
1464
- }
1465
- .icns_tab_3 .row_15_14 {
1466
- background-position: -773px -1036px;
1467
- }
1468
- .icns_tab_3 .row_15_15 {
1469
- background-position: -838px -1036px;
1470
- }
1471
- .icns_tab_3 .row_15_16 {
1472
- background-position: -909px -1036px;
1473
- }
1474
- .icns_tab_3 .row_15_17 {
1475
- background-position: -977px -1036px;
1476
- }
1477
- .icns_tab_3 .row_15_18 {
1478
- background: url(../images/icons_theme/shaded_light/shaded_light_wechat.png);
1479
- background-size: contain;
1480
- }
1481
- .icns_tab_3 .row_16_1 {
1482
- background-position: 0 -1109px;
1483
- }
1484
- .icns_tab_3 .row_16_2 {
1485
- background-position: -60px -1109px;
1486
- }
1487
- .icns_tab_3 .row_16_3 {
1488
- background-position: -118px -1109px;
1489
- }
1490
- .icns_tab_3 .row_16_4 {
1491
- background-position: -176px -1109px;
1492
- }
1493
- .icns_tab_3 .row_16_5 {
1494
- background-position: -235px -1109px;
1495
- }
1496
- .icns_tab_3 .row_16_6 {
1497
- background-position: -293px -1109px;
1498
- }
1499
- .icns_tab_3 .row_16_7 {
1500
- background-position: -350px -1109px;
1501
- }
1502
- .icns_tab_3 .row_16_8 {
1503
- background-position: -409px -1109px;
1504
- }
1505
- .icns_tab_3 .row_16_9 {
1506
- background-position: -467px -1109px;
1507
- }
1508
- .icns_tab_3 .row_16_10 {
1509
- background-position: -526px -1109px;
1510
- }
1511
- .icns_tab_3 .row_16_11 {
1512
- background-position: -711px -1109px;
1513
- }
1514
- .icns_tab_3 .row_16_14 {
1515
- background-position: -773px -1109px;
1516
- }
1517
- .icns_tab_3 .row_16_15 {
1518
- background-position: -838px -1109px;
1519
- }
1520
- .icns_tab_3 .row_16_16 {
1521
- background-position: -909px -1109px;
1522
- }
1523
- .icns_tab_3 .row_16_17 {
1524
- background-position: -977px -1109px;
1525
- }
1526
- .icns_tab_3 .row_16_18 {
1527
- background: url(../images/icons_theme/transparent/transparent_wechat.png);
1528
- background-size: contain;
1529
- }
1530
-
1531
- /*tab 6 css*/
1532
- .tab6 .social_icon_like1 {
1533
- width: 100%;
1534
- float: left;
1535
- margin: 0;
1536
- text-align: center;
1537
- }
1538
- .tab6 .social_icon_like1 ul {
1539
- margin: 0;
1540
- padding: 0;
1541
- list-style: none;
1542
- text-align: center;
1543
- }
1544
- .tab6 .social_icon_like1 li {
1545
- margin: 0 10px 0 0;
1546
- padding: 0;
1547
- width: auto;
1548
- list-style: none;
1549
- display: inline-block;
1550
- }
1551
- .tab6 .social_icon_like1 li span {
1552
- margin: 0;
1553
- width: 44px;
1554
- display: block;
1555
- background: url(../images/count_bg1.png) no-repeat;
1556
- height: 22px;
1557
- overflow: hidden;
1558
- padding: 2px 2px 2px 10px;
1559
- font-family: helveticaregular;
1560
- font-size: 15px;
1561
- text-align: center;
1562
- line-height: 20px;
1563
- color: #5a6570;
1564
- float: left;
1565
- }
1566
- .tab6 .social_icon_like1 li img {
1567
- float: left;
1568
- margin-right: 5px;
1569
- display: block;
1570
- }
1571
- .tab6 .social_icon_like1 li a {
1572
- color: #5a6570;
1573
- text-decoration: none;
1574
- display: block;
1575
- }
1576
- .tab6 ul.usually {
1577
- margin: 7px 0 6px 30px;
1578
- padding: 0;
1579
- list-style: none;
1580
- }
1581
- .tab6 ul.usually li {
1582
- margin: 0;
1583
- padding: 0;
1584
- width: auto;
1585
- list-style: none;
1586
- text-align: left;
1587
- font-size: 17px;
1588
- color: #5a6570;
1589
- }
1590