Flexible Checkout Fields for WooCommerce – WooCommerce Checkout Manager - Version 1.6.6

Version Description

  • 2018-06-25 =
  • Tweaked tracker data anonymization
  • Fixed tracker notice
Download this release

Release Info

Developer jablonowski
Plugin Icon wp plugin Flexible Checkout Fields for WooCommerce – WooCommerce Checkout Manager
Version 1.6.6
Comparing to
See all releases

Code changes from version 1.6.5 to 1.6.6

Files changed (47) hide show
  1. acceptance/reports/html/cucumber_reporter.html +1217 -0
  2. acceptance/reports/html/plugins_tests_report.html +1107 -0
  3. acceptance/reports/html/screenshot/After_2464.png +0 -0
  4. acceptance/reports/html/screenshot/screenShot1.png +0 -0
  5. acceptance/reports/html/screenshot/screenShot2.png +0 -0
  6. acceptance/reports/html/screenshot/screenShot3.png +0 -0
  7. acceptance/reports/html/screenshot/screenShot4.png +0 -0
  8. acceptance/reports/html/tracker_long_message_is_visible-14-1.png +0 -0
  9. acceptance/reports/json/cucumber_report.json +467 -0
  10. flexible-checkout-fields.php +17 -6
  11. inc/wpdesk-tracker/class-wpdesk-tracker-factory.php +91 -0
  12. inc/wpdesk-tracker/class-wpdesk-tracker.php +199 -632
  13. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-gateways.php +43 -0
  14. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification-gdpr.php +62 -0
  15. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification.php +39 -0
  16. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-jetpack.php +42 -0
  17. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-license-emails.php +54 -0
  18. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-country.php +53 -0
  19. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-month.php +57 -0
  20. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders.php +42 -0
  21. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-plugins.php +84 -0
  22. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products-variations.php +39 -0
  23. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products.php +43 -0
  24. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-server.php +61 -0
  25. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-settings.php +55 -0
  26. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-classes.php +41 -0
  27. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods-zones.php +60 -0
  28. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods.php +47 -0
  29. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-templates.php +65 -0
  30. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-theme.php +44 -0
  31. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-user-agent.php +35 -0
  32. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-users.php +44 -0
  33. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-wordpress.php +50 -0
  34. inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider.php +30 -0
  35. inc/wpdesk-tracker/sender/Exception/class-wpdesk-tracker-sender-exception-wperror.php +17 -0
  36. inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-logged.php +56 -0
  37. inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-wordpress-to-wpdesk.php +60 -0
  38. inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender.php +23 -0
  39. inc/wpdesk-tracker/views/tracker-connect.php +3 -10
  40. inc/wpdesk-tracker/views/tracker-notice.php +11 -56
  41. lang/flexible-checkout-fields-pl_PL.mo +0 -0
  42. lang/flexible-checkout-fields-pl_PL.po +121 -132
  43. readme.txt +5 -1
  44. vendor/autoload.php +1 -1
  45. vendor/composer/autoload_classmap.php +40 -0
  46. vendor/composer/autoload_real.php +4 -4
  47. vendor/composer/autoload_static.php +45 -1
acceptance/reports/html/cucumber_reporter.html ADDED
@@ -0,0 +1,1217 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Cucumber Feature Report</title>
5
+ <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" >
6
+ <style type="text/css">
7
+ .panel-heading {
8
+ padding: 0;
9
+ }
10
+
11
+ .panel-heading a {
12
+ padding: 10px 15px;
13
+ display: block;
14
+ position: relative;
15
+ text-decoration: none;
16
+ }
17
+
18
+ .panel-heading i.glyphicon-chevron-down {
19
+ display: none;
20
+ }
21
+
22
+ .panel-heading i.glyphicon-chevron-right {
23
+ display: inline-block;
24
+ }
25
+
26
+ .panel-heading.open i.glyphicon-chevron-down {
27
+ display: inline-block;
28
+ }
29
+
30
+ .panel-heading.open i.glyphicon-chevron-right {
31
+ display: none;
32
+ }
33
+
34
+ .generated-on {
35
+ text-align: right;
36
+ padding-bottom: 10px;
37
+ }
38
+
39
+ .panel-title b {
40
+ padding-right: 10px;
41
+ }
42
+
43
+ .panel-heading .label-container {
44
+ position: absolute;
45
+ top: 8px;
46
+ right: 8px;
47
+ }
48
+
49
+ .panel-heading .label-container label {
50
+ margin-left: 5px;
51
+ padding: 5px;
52
+ }
53
+
54
+ .navbar .label-container {
55
+ position: absolute;
56
+ right: 10px;
57
+ top: 14px;
58
+ }
59
+
60
+ .navbar {
61
+ margin-bottom: 10px;
62
+ }
63
+
64
+ .navbar .label {
65
+ font-size: 20px;
66
+ }
67
+
68
+ .navbar .project-name {
69
+ position: absolute;
70
+ top: 10px;
71
+ left: 50%;
72
+ margin-left: -100px;
73
+ text-align: center;
74
+ font-size: 20px;
75
+ font-weight: bold;
76
+ }
77
+
78
+ .tags {
79
+ margin-left: 18px;
80
+ margin-right: 20px;
81
+ padding-top: 5px;
82
+ margin-bottom: -4px;
83
+ }
84
+
85
+ .tag {
86
+ font-size: 13px;
87
+ color: #696969;
88
+ letter-spacing: 0.3px;
89
+ font-weight: bold;
90
+ font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
91
+ }
92
+
93
+ .chart {
94
+ padding-bottom: 15px;
95
+ }
96
+
97
+ div.chart div div svg rect {
98
+ fill: #f5f5f5;
99
+ }
100
+
101
+ table.arguments {
102
+ margin-left: 30px;
103
+ }
104
+
105
+ .screenshot {
106
+ padding: 2% 0 2% 0;
107
+ }
108
+
109
+ .scenarioTitle {
110
+ width: 80%
111
+ }
112
+
113
+ .description {
114
+ background-color: white;
115
+ border-color: white;
116
+ line-height: 1.6;
117
+ color: #6f6f6f;
118
+ font-weight: 400;
119
+ font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
120
+ font-size: 14px;
121
+ padding: 0.1em 0.5em 1.2em 1.5em
122
+ }
123
+
124
+ #scenario-description {
125
+ padding-bottom: 1em;
126
+ padding-left: 0.2em;
127
+ }
128
+
129
+ .scrollBar {
130
+ overflow-x: scroll;
131
+ }
132
+
133
+ table {
134
+ border-collapse: collapse;
135
+ }
136
+
137
+ table, th, td {
138
+ border: 1px solid black;
139
+ }
140
+
141
+ th, td {
142
+ text-align: left;
143
+ padding: 8px;
144
+ }
145
+
146
+ th {
147
+ background-color: #f5f5f5;
148
+ color: black;
149
+ }
150
+
151
+ .info {
152
+ background-color: #fbfbfb;
153
+ }
154
+
155
+ .step-duration {
156
+ float: right;
157
+ }
158
+
159
+ .footer-div {
160
+ text-align: right;
161
+ vertical-align: middle;
162
+ height:3.5%;
163
+ width:100%;
164
+ }
165
+
166
+ .footer-container {
167
+ margin-right: 10px;
168
+ margin-top: 5px;
169
+ width:18%;
170
+ z-index: 10;
171
+ position: absolute;
172
+ right: 0;
173
+ bottom: 10px;
174
+ text-align: center;
175
+ background-color: transparent;
176
+ }
177
+
178
+ .footer-link {
179
+ font-size: 13px;
180
+ float: right;
181
+ }
182
+
183
+ .footer-link:hover {
184
+ color: darkgray;
185
+ }
186
+ </style>
187
+ <meta charset="UTF-8">
188
+ </head>
189
+ <body>
190
+
191
+ <div class="navbar navbar-default navbar-static-top" role="navigation">
192
+ <div class="container">
193
+ <div class="navbar-header">
194
+ <a class="navbar-brand">Cucumberjs Report</a>
195
+ <div class="project-name visible-md visible-lg">WPDESK_PLUGINS_TESTS</div>
196
+ <div class="label-container">
197
+ <span class="label label-success" title=scenarios>Passed: 3</span>
198
+ <span class="label label-danger" title=scenarios>Failed: 1</span>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </div>
203
+
204
+ <div class="container">
205
+
206
+ <div class="generated-on">Mon Jun 25 2018 11:11:11 GMT+0000 (UTC)</div>
207
+
208
+ <div class="row">
209
+ <div class="chart col-lg-6 col-md-6" id="piechart_features"></div>
210
+ <div class="chart col-lg-6 col-md-6" id="piechart_scenarios"></div>
211
+ </div>
212
+
213
+
214
+
215
+ <div class="row">
216
+
217
+ <div class="col-lg-6 col-md-6">
218
+ <div class="panel panel-default">
219
+ <div class="panel-heading">
220
+ <h4 class="panel-title">
221
+ <div class="tags"> <span class="tag">@flexible-checkout-fields</span> </div>
222
+ <a data-toggle="collapse" href="#collapseFeature0">
223
+ <i class="glyphicon glyphicon-chevron-right"></i>
224
+ <i class="glyphicon glyphicon-chevron-down"></i>
225
+ <b>Feature:</b>Activate and Deactivate plugin Flexible Checkout Fields tests
226
+ <span class="label-container">
227
+ <span class="label label-success">2</span>
228
+
229
+
230
+
231
+
232
+ </span>
233
+ </a>
234
+ </h4>
235
+ </div>
236
+ <div id="collapseFeature0" class="panel-collapse collapse">
237
+ <div class="panel-body">
238
+
239
+
240
+ <div class="panel panel-default">
241
+ <div class="panel-heading">
242
+ <h4 class="panel-title">
243
+ <div class="tags"> </div>
244
+ <a data-toggle="collapse" href="#collapseScenario0_0">
245
+ <i class="glyphicon glyphicon-chevron-right"></i>
246
+ <i class="glyphicon glyphicon-chevron-down"></i>
247
+ <b>Scenario:</b>Plugin Flexible Checkout Fields is active
248
+ <span class="label-container">
249
+ <span class="label label-success" title="Passed">6</span>
250
+
251
+
252
+
253
+
254
+ </span>
255
+ </a>
256
+ </h4>
257
+ </div>
258
+ <div id="collapseScenario0_0" class="panel-collapse collapse">
259
+ <div class="panel-body">
260
+
261
+
262
+
263
+
264
+
265
+ <p class="scenario-container">
266
+
267
+
268
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
269
+
270
+
271
+ <span class="text">
272
+ <span class="keyword highlight">Given </span>
273
+ user is logged in to wordPress
274
+
275
+ <span class="step-duration">
276
+ 0s
277
+ </span>
278
+
279
+
280
+
281
+
282
+ </span>
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+ </p>
294
+
295
+
296
+
297
+ <p class="scenario-container">
298
+
299
+
300
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
301
+
302
+
303
+ <span class="text">
304
+ <span class="keyword highlight">And </span>
305
+ i resets the consent to collect data in the database
306
+
307
+ <span class="step-duration">
308
+ 0s
309
+ </span>
310
+
311
+
312
+
313
+
314
+ </span>
315
+
316
+
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+ </p>
326
+
327
+
328
+
329
+ <p class="scenario-container">
330
+
331
+
332
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
333
+
334
+
335
+ <span class="text">
336
+ <span class="keyword highlight">When </span>
337
+ i open "menu-plugins" and activate plugin with slug "flexible-checkout-fields"
338
+
339
+ <span class="step-duration">
340
+ 2s
341
+ </span>
342
+
343
+
344
+
345
+
346
+ </span>
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+ </p>
358
+
359
+
360
+
361
+ <p class="scenario-container">
362
+
363
+
364
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
365
+
366
+
367
+ <span class="text">
368
+ <span class="keyword highlight">Then </span>
369
+ check if plugin with slug "flexible-checkout-fields" is Active
370
+
371
+ <span class="step-duration">
372
+ 0s
373
+ </span>
374
+
375
+
376
+
377
+
378
+ </span>
379
+
380
+
381
+
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+ </p>
390
+
391
+
392
+
393
+
394
+ </div>
395
+ </div>
396
+ </div>
397
+
398
+ <div class="panel panel-default">
399
+ <div class="panel-heading">
400
+ <h4 class="panel-title">
401
+ <div class="tags"> </div>
402
+ <a data-toggle="collapse" href="#collapseScenario0_1">
403
+ <i class="glyphicon glyphicon-chevron-right"></i>
404
+ <i class="glyphicon glyphicon-chevron-down"></i>
405
+ <b>Scenario:</b>Plugin Flexible Checkout Fields is inactive
406
+ <span class="label-container">
407
+ <span class="label label-success" title="Passed">6</span>
408
+
409
+
410
+
411
+
412
+ </span>
413
+ </a>
414
+ </h4>
415
+ </div>
416
+ <div id="collapseScenario0_1" class="panel-collapse collapse">
417
+ <div class="panel-body">
418
+
419
+
420
+
421
+
422
+
423
+ <p class="scenario-container">
424
+
425
+
426
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
427
+
428
+
429
+ <span class="text">
430
+ <span class="keyword highlight">Given </span>
431
+ user is logged in to wordPress
432
+
433
+ <span class="step-duration">
434
+ 0s
435
+ </span>
436
+
437
+
438
+
439
+
440
+ </span>
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+ </p>
452
+
453
+
454
+
455
+ <p class="scenario-container">
456
+
457
+
458
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
459
+
460
+
461
+ <span class="text">
462
+ <span class="keyword highlight">And </span>
463
+ i resets the consent to collect data in the database
464
+
465
+ <span class="step-duration">
466
+ 0s
467
+ </span>
468
+
469
+
470
+
471
+
472
+ </span>
473
+
474
+
475
+
476
+
477
+
478
+
479
+
480
+
481
+
482
+
483
+ </p>
484
+
485
+
486
+
487
+ <p class="scenario-container">
488
+
489
+
490
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
491
+
492
+
493
+ <span class="text">
494
+ <span class="keyword highlight">When </span>
495
+ i open "menu-plugins" and deactivate plugin with slug "flexible-checkout-fields"
496
+
497
+ <span class="step-duration">
498
+ 1s
499
+ </span>
500
+
501
+
502
+
503
+
504
+ </span>
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+ </p>
516
+
517
+
518
+
519
+ <p class="scenario-container">
520
+
521
+
522
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
523
+
524
+
525
+ <span class="text">
526
+ <span class="keyword highlight">Then </span>
527
+ check if plugin with slug "flexible-checkout-fields" is Inactive
528
+
529
+ <span class="step-duration">
530
+ 0s
531
+ </span>
532
+
533
+
534
+
535
+
536
+ </span>
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+ </p>
548
+
549
+
550
+
551
+
552
+ </div>
553
+ </div>
554
+ </div>
555
+
556
+ </div>
557
+ </div>
558
+ </div>
559
+ </div>
560
+
561
+
562
+
563
+ <div class="col-lg-6 col-md-6">
564
+ <div class="panel panel-default">
565
+ <div class="panel-heading">
566
+ <h4 class="panel-title">
567
+ <div class="tags"> <span class="tag">@flexible-checkout-fields</span> </div>
568
+ <a data-toggle="collapse" href="#collapseFeature1">
569
+ <i class="glyphicon glyphicon-chevron-right"></i>
570
+ <i class="glyphicon glyphicon-chevron-down"></i>
571
+ <b>Feature:</b>Tracker message Flexible Checkout Fields tests
572
+ <span class="label-container">
573
+ <span class="label label-success">1</span>
574
+ <span class="label label-danger">1</span>
575
+
576
+
577
+
578
+ </span>
579
+ </a>
580
+ </h4>
581
+ </div>
582
+ <div id="collapseFeature1" class="panel-collapse collapse">
583
+ <div class="panel-body">
584
+
585
+
586
+ <div class="panel panel-default">
587
+ <div class="panel-heading">
588
+ <h4 class="panel-title">
589
+ <div class="tags"> </div>
590
+ <a data-toggle="collapse" href="#collapseScenario1_0">
591
+ <i class="glyphicon glyphicon-chevron-right"></i>
592
+ <i class="glyphicon glyphicon-chevron-down"></i>
593
+ <b>Scenario:</b>Tracker message is Visible
594
+ <span class="label-container">
595
+ <span class="label label-success" title="Passed">8</span>
596
+
597
+
598
+
599
+
600
+ </span>
601
+ </a>
602
+ </h4>
603
+ </div>
604
+ <div id="collapseScenario1_0" class="panel-collapse collapse">
605
+ <div class="panel-body">
606
+
607
+
608
+
609
+
610
+
611
+ <p class="scenario-container">
612
+
613
+
614
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
615
+
616
+
617
+ <span class="text">
618
+ <span class="keyword highlight">Given </span>
619
+ user is logged in to wordPress
620
+
621
+ <span class="step-duration">
622
+ 0s
623
+ </span>
624
+
625
+
626
+
627
+
628
+ </span>
629
+
630
+
631
+
632
+
633
+
634
+
635
+
636
+
637
+
638
+
639
+ </p>
640
+
641
+
642
+
643
+ <p class="scenario-container">
644
+
645
+
646
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
647
+
648
+
649
+ <span class="text">
650
+ <span class="keyword highlight">And </span>
651
+ i resets the consent to collect data in the database
652
+
653
+ <span class="step-duration">
654
+ 0s
655
+ </span>
656
+
657
+
658
+
659
+
660
+ </span>
661
+
662
+
663
+
664
+
665
+
666
+
667
+
668
+
669
+
670
+
671
+ </p>
672
+
673
+
674
+
675
+ <p class="scenario-container">
676
+
677
+
678
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
679
+
680
+
681
+ <span class="text">
682
+ <span class="keyword highlight">When </span>
683
+ i open "menu-plugins" and activate plugin with slug "flexible-checkout-fields"
684
+
685
+ <span class="step-duration">
686
+ 1s
687
+ </span>
688
+
689
+
690
+
691
+
692
+ </span>
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+ </p>
704
+
705
+
706
+
707
+ <p class="scenario-container">
708
+
709
+
710
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
711
+
712
+
713
+ <span class="text">
714
+ <span class="keyword highlight">Then </span>
715
+ tracker message type "short" visible
716
+
717
+ <span class="step-duration">
718
+ 0s
719
+ </span>
720
+
721
+
722
+
723
+
724
+ </span>
725
+
726
+
727
+
728
+
729
+
730
+
731
+
732
+
733
+
734
+
735
+ </p>
736
+
737
+
738
+
739
+ <p class="scenario-container">
740
+
741
+
742
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
743
+
744
+
745
+ <span class="text">
746
+ <span class="keyword highlight">And </span>
747
+ Check if buttons skip and Allow & Continue visible in tracker message
748
+
749
+ <span class="step-duration">
750
+ 0s
751
+ </span>
752
+
753
+
754
+
755
+
756
+ </span>
757
+
758
+
759
+
760
+
761
+
762
+
763
+
764
+
765
+
766
+
767
+ </p>
768
+
769
+
770
+
771
+ <p class="scenario-container">
772
+
773
+
774
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
775
+
776
+
777
+ <span class="text">
778
+ <span class="keyword highlight">But </span>
779
+ i open "menu-plugins" and deactivate plugin with slug "flexible-checkout-fields"
780
+
781
+ <span class="step-duration">
782
+ 1s
783
+ </span>
784
+
785
+
786
+
787
+
788
+ </span>
789
+
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+ </p>
800
+
801
+
802
+
803
+
804
+ </div>
805
+ </div>
806
+ </div>
807
+
808
+ <div class="panel panel-default">
809
+ <div class="panel-heading">
810
+ <h4 class="panel-title">
811
+ <div class="tags"> </div>
812
+ <a data-toggle="collapse" href="#collapseScenario1_1">
813
+ <i class="glyphicon glyphicon-chevron-right"></i>
814
+ <i class="glyphicon glyphicon-chevron-down"></i>
815
+ <b>Scenario:</b>Tracker long message is Visible
816
+ <span class="label-container">
817
+ <span class="label label-success" title="Passed">7</span>
818
+
819
+
820
+ <span class="label label-warning" title="Skipped">1</span>
821
+ <span class="label label-danger" title="Failed">1</span>
822
+ </span>
823
+ </a>
824
+ </h4>
825
+ </div>
826
+ <div id="collapseScenario1_1" class="panel-collapse collapse">
827
+ <div class="panel-body">
828
+
829
+
830
+
831
+
832
+
833
+ <p class="scenario-container">
834
+
835
+
836
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
837
+
838
+
839
+ <span class="text">
840
+ <span class="keyword highlight">Given </span>
841
+ user is logged in to wordPress
842
+
843
+ <span class="step-duration">
844
+ 0s
845
+ </span>
846
+
847
+
848
+
849
+
850
+ </span>
851
+
852
+
853
+
854
+
855
+
856
+
857
+
858
+
859
+
860
+
861
+ </p>
862
+
863
+
864
+
865
+ <p class="scenario-container">
866
+
867
+
868
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
869
+
870
+
871
+ <span class="text">
872
+ <span class="keyword highlight">And </span>
873
+ i resets the consent to collect data in the database
874
+
875
+ <span class="step-duration">
876
+ 0s
877
+ </span>
878
+
879
+
880
+
881
+
882
+ </span>
883
+
884
+
885
+
886
+
887
+
888
+
889
+
890
+
891
+
892
+
893
+ </p>
894
+
895
+
896
+
897
+ <p class="scenario-container">
898
+
899
+
900
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
901
+
902
+
903
+ <span class="text">
904
+ <span class="keyword highlight">When </span>
905
+ i open "menu-plugins" and activate plugin with slug "flexible-checkout-fields"
906
+
907
+ <span class="step-duration">
908
+ 1s
909
+ </span>
910
+
911
+
912
+
913
+
914
+ </span>
915
+
916
+
917
+
918
+
919
+
920
+
921
+
922
+
923
+
924
+
925
+ </p>
926
+
927
+
928
+
929
+ <p class="scenario-container">
930
+
931
+
932
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
933
+
934
+
935
+ <span class="text">
936
+ <span class="keyword highlight">And </span>
937
+ Skip tracker message
938
+
939
+ <span class="step-duration">
940
+ 2s
941
+ </span>
942
+
943
+
944
+
945
+
946
+ </span>
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+ </p>
958
+
959
+
960
+
961
+ <p class="scenario-container">
962
+
963
+
964
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
965
+
966
+
967
+ <span class="text">
968
+ <span class="keyword highlight">And </span>
969
+ i open submenu "Checkout Fields" from menu "toplevel_page_woocommerce"
970
+
971
+ <span class="step-duration">
972
+ 1s
973
+ </span>
974
+
975
+
976
+
977
+
978
+ </span>
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+ </p>
990
+
991
+
992
+
993
+ <p class="scenario-container">
994
+
995
+
996
+ <span class="label label-danger" title="Failed"><i class="glyphicon glyphicon-remove"></i></span>
997
+
998
+
999
+ <span class="text">
1000
+ <span class="keyword highlight">Then </span>
1001
+ tracker message type "long" visible
1002
+
1003
+ <span class="step-duration">
1004
+ 0s
1005
+ </span>
1006
+
1007
+
1008
+
1009
+
1010
+ </span>
1011
+
1012
+
1013
+
1014
+
1015
+ <a href="#error1_16" data-toggle="collapse">+ Show Error</a>
1016
+ <div id="error1_16" class="collapse">
1017
+ <pre class=info>AssertionError: expected 'Hey admin,\nWe need your help to improve WP Desk plugins, so they are more useful for you and the rest of 30,000+ users. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. Find out more »\nAllow\nDismiss this notice.' to include '\nWe need your help to improve WP Desk plugins, so they are more useful for you and the rest of 18,000+ users. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. Find out more'</pre>
1018
+ </div>
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+ </p>
1027
+
1028
+
1029
+
1030
+ <p class="scenario-container">
1031
+
1032
+
1033
+ <span class="label label-warning" title="Skipped"><i class="glyphicon glyphicon-minus"></i></span>
1034
+
1035
+
1036
+ <span class="text">
1037
+ <span class="keyword highlight">And </span>
1038
+ i open "menu-plugins" and deactivate plugin with slug "flexible-checkout-fields"
1039
+
1040
+
1041
+
1042
+
1043
+ </span>
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+ </p>
1055
+
1056
+
1057
+
1058
+ <p class="scenario-container">
1059
+
1060
+
1061
+ <span class="label label-success" title="Success"><i class="glyphicon glyphicon-ok"></i></span>
1062
+
1063
+
1064
+ <span class="text">
1065
+ <span class="keyword highlight">After </span>
1066
+
1067
+
1068
+ <span class="step-duration">
1069
+ 2s
1070
+ </span>
1071
+
1072
+
1073
+
1074
+
1075
+ </span>
1076
+
1077
+
1078
+
1079
+
1080
+
1081
+
1082
+
1083
+
1084
+ <a class="toggle" href="#">Screenshot -</a>
1085
+ <a class="screenshot" href="screenshot/After_2464.png">
1086
+ <img class="screenshot" style="height:100%;width:100%" id="my_images" src="screenshot/After_2464.png"/>
1087
+ </a>
1088
+
1089
+
1090
+
1091
+ </p>
1092
+
1093
+
1094
+ </div>
1095
+ </div>
1096
+ </div>
1097
+
1098
+ </div>
1099
+ </div>
1100
+ </div>
1101
+ </div>
1102
+
1103
+ </div>
1104
+
1105
+
1106
+
1107
+
1108
+ </div>
1109
+
1110
+ <!--<footer class="footer">-->
1111
+ <!--<div class="footer-text">-->
1112
+ <!--<p class="text-muted"> Report generated by cucumber-html-reporter</p>-->
1113
+ <!--</div>-->
1114
+ <!--</footer>-->
1115
+
1116
+ <div class="navbar-fixed-bottom row-fluid footer-div ">
1117
+ <div class="navbar-inner">
1118
+ <div class="footer-container">
1119
+ <a target="_blank" href="https://www.npmjs.com/package/cucumber-html-reporter">
1120
+ <div class="text-muted footer-link">
1121
+ generated by @cucumber-html-reporter
1122
+ </div>
1123
+ </a>
1124
+ </div>
1125
+ </div>
1126
+ </div>
1127
+
1128
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
1129
+ <script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
1130
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.5.1/moment.min.js"></script>
1131
+ <script type="text/javascript" src="https://www.google.com/jsapi"></script>
1132
+ <script type="text/javascript">
1133
+ google.load("visualization", "1", {packages: ["corechart"]});
1134
+ google.setOnLoadCallback(function() {drawChart({
1135
+ "title" : "Features",
1136
+ "failed" : 1,
1137
+ "passed" : 1
1138
+ })
1139
+ });
1140
+ google.setOnLoadCallback(function() {drawChart({
1141
+ "title" : "Scenarios",
1142
+ "failed" : 1,
1143
+ "passed" : 3,
1144
+ "notdefined" : 0,
1145
+ "skipped" : 0
1146
+ })
1147
+ });
1148
+ </script>
1149
+ <script>
1150
+ $(document).ready(function() {
1151
+ $('.collapse').on('hide.bs.collapse', function(e) {
1152
+ e.stopPropagation();
1153
+ $(this).prev().removeClass('open');
1154
+ }).on('show.bs.collapse', function(e) {
1155
+ e.stopPropagation();
1156
+ $(this).prev().addClass('open');
1157
+ });
1158
+
1159
+ $('a.toggle').on('click', function() {
1160
+ if ($(this).text() === 'Screenshot -') {
1161
+ $(this).text('Screenshot +');
1162
+ $(this).siblings('a.screenshot').find('img').hide();
1163
+ } else {
1164
+ $(this).text('Screenshot -');
1165
+ $(this).siblings('a.screenshot').find('img').show();
1166
+ }
1167
+ });
1168
+ var $generated = $('.generated-on');
1169
+
1170
+ $generated.text('Generated ' + moment($generated.text()).fromNow());
1171
+
1172
+
1173
+ });
1174
+
1175
+ function drawChart(chartData) {
1176
+ var data = google.visualization.arrayToDataTable([
1177
+ ['Task', 'Cucumber Results'],
1178
+ ['Passed', chartData.passed],
1179
+ ['Failed', chartData.failed],
1180
+ ['Pending', chartData.notdefined],
1181
+ ['Skipped', chartData.skipped]
1182
+ ]);
1183
+
1184
+ var total = chartData.passed + chartData.failed + (chartData.notdefined || 0) + (chartData.skipped || 0);
1185
+ var title;
1186
+
1187
+ if (total === 1) {
1188
+ title = total + ' ' + chartData.title.slice(0, -1)
1189
+ } else {
1190
+ title = total + ' ' + chartData.title;
1191
+ }
1192
+
1193
+ var options = {
1194
+ width: '100%',
1195
+ height: 240,
1196
+ title: title,
1197
+ is3D: true,
1198
+ colors: ['#5cb85c', '#d9534f', '#5bc0de', '#f0ad4e'],
1199
+ fontSize: '13',
1200
+ fontName: '"Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif',
1201
+ slices: {
1202
+ 1: {offset: 0.4},
1203
+ 2: {offset: 0.4},
1204
+ 3: {offset: 0.4}
1205
+ },
1206
+ titleTextStyle: {
1207
+ fontSize: '13',
1208
+ color: '#5e5e5e'
1209
+ }
1210
+ };
1211
+
1212
+ var chart = new google.visualization.PieChart(document.getElementById('piechart_' + chartData.title.toLowerCase()));
1213
+ chart.draw(data, options);
1214
+ }
1215
+ </script>
1216
+ </body>
1217
+ </html>
acceptance/reports/html/plugins_tests_report.html ADDED
@@ -0,0 +1,1107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>Cucumber Report</title>
5
+ <meta charset="UTF-8"/>
6
+
7
+ <style type="text/css">
8
+ body {
9
+ font-family: Arial, sans-serif;
10
+ margin: 0;
11
+ background-color: #fff;
12
+ color: #282828;
13
+ }
14
+
15
+ .feature-navigator {
16
+ position: fixed;
17
+ overflow-y: auto;
18
+ height: 100%;
19
+ width: 20%;
20
+ float: left;
21
+ }
22
+
23
+ .report-container {
24
+ margin-top: 60px;
25
+ margin-left: 20%;
26
+ width: 75%;
27
+ float: left;
28
+ padding-left: 20px;
29
+ }
30
+
31
+ a, a:hover, a:visited {
32
+ color: #000;
33
+ text-decoration: none;
34
+ }
35
+
36
+ table {
37
+ width: 100%;
38
+ border-collapse: collapse;
39
+ }
40
+
41
+ th {
42
+ text-align: left;
43
+ background-color: #eee;
44
+ color: #999;
45
+ text-transform: capitalize;
46
+ }
47
+
48
+ th, td {
49
+ padding: 5px 10px;
50
+ border-bottom: rgba(162, 162, 162, 0.16) 1px solid;
51
+ }
52
+
53
+ tr.failed { cursor: pointer; }
54
+
55
+ tr td.passed,
56
+ .passed,
57
+ tr.passed,
58
+ .summary .passed {
59
+ background-color: rgb(150, 250, 150);
60
+ }
61
+
62
+ tr td.failed,
63
+ tr.failed,
64
+ .summary .failed {
65
+ background-color: rgb(250, 150, 150);
66
+ }
67
+
68
+ td.status {
69
+ text-transform: capitalize;
70
+ }
71
+
72
+ .datatable {
73
+ margin-left: 2em;
74
+ width: auto;
75
+ border-width: 1pt;
76
+ margin-top: 0.6em;
77
+ font-size: 80%;
78
+ }
79
+ .datatable td {
80
+ border: rgba(162, 162, 162, 0.16) 1px solid;
81
+ }
82
+
83
+ h1 {
84
+ margin: 0;
85
+ padding: 20px 10px 10px 10px;
86
+ color: #282828;
87
+ }
88
+
89
+ h2 {
90
+ margin-top: 5px;
91
+ margin-bottom: 5px;
92
+ }
93
+
94
+ h2.component {
95
+ color: #282828;
96
+ padding: 0 10px 10px 10px;
97
+ }
98
+
99
+ h3 { margin: 25px 0 10px 0; }
100
+
101
+ img {
102
+ max-width: 100%;
103
+ margin-top: 10px;
104
+ }
105
+
106
+ .filename {
107
+ margin: 0 0 10px 0;
108
+ color: #999;
109
+ }
110
+
111
+ span.tags {
112
+ float: right;
113
+ font-size: 15px;
114
+ color: #888;
115
+ }
116
+
117
+ span.scenario-tag {
118
+ float: right;
119
+ font-size: 15px;
120
+ color: #888;
121
+ margin-left: 0.5em;
122
+ }
123
+
124
+ p.story {
125
+ font-size: 20px;
126
+ color: #888;
127
+ font-style: italic;
128
+ padding-left: 20px;
129
+ }
130
+
131
+ div.report {
132
+ width: 100%;
133
+ float: left;
134
+ padding: 10px;
135
+ background: #fff;
136
+ }
137
+
138
+ td.result,
139
+ .duration { text-align: right; }
140
+
141
+ .hidden { display: none; }
142
+
143
+ .header {
144
+ width: 100%;
145
+ float: left;
146
+ }
147
+
148
+ .header .logo {
149
+ margin: 0 auto;
150
+ max-width: 90%;
151
+ padding-left: 10px;
152
+ }
153
+
154
+ .summary,
155
+ .feature-list,
156
+ .scenario-list {
157
+ list-style-type: none;
158
+ margin: 0;
159
+ padding: 10px;
160
+ }
161
+
162
+ .summary li,
163
+ .feature-list li,
164
+ .scenario-list li { padding: 10px; }
165
+
166
+ .scenario-list li a { color: #999; }
167
+
168
+ .summary li { padding: 5px 10px; }
169
+
170
+ .feature-list li {
171
+ border-top: rgba(162, 162, 162, 0.16) 1px solid;
172
+ border-bottom: rgba(162, 162, 162, 0.16) 1px solid;
173
+ }
174
+
175
+ .scenario-list li { border: none; }
176
+
177
+ .scenario-list { padding: 10px 0; }
178
+
179
+ .summary li,
180
+ .feature-list li { font-weight: bold; }
181
+
182
+ .scenario-list li { font-weight: normal; }
183
+
184
+ .feature-list > li.passed { border-left: 5px solid rgb(150, 250, 150); }
185
+ .feature-list > li.failed { border-left: 5px solid rgb(250, 150, 150); }
186
+
187
+ .scenario-list > li.passed a { color: #999; }
188
+ .scenario-list > li.failed a { color: rgb(250, 150, 150); }
189
+
190
+ .summary span.passed {
191
+ color: rgb(150, 250, 150);
192
+ background-color: transparent;
193
+ text-transform: capitalize;
194
+ }
195
+
196
+ .summary span.failed {
197
+ color: rgb(250, 150, 150);
198
+ background-color: transparent;
199
+ text-transform: capitalize;
200
+ }
201
+
202
+ .footer {
203
+ color: #3C494C;
204
+ text-align: center;
205
+ padding: 20px 0;
206
+ float: left;
207
+ width: 100%;
208
+ }
209
+
210
+ .footer a, footer a:visited { color: #3C494C; }
211
+
212
+ .copy-to-clipboard { /* as small as possible - when hidden, copy will not work */
213
+ width: 2em;
214
+ height: 2em;
215
+ position: fixed;
216
+ top: 0;
217
+ left: 0;
218
+ border: none;
219
+ outline: none;
220
+ box-shadow: none;
221
+ }
222
+
223
+ tr td.skipped,
224
+ .skipped {
225
+ background-color: rgb(250, 250, 150);
226
+ }
227
+
228
+ @media (max-width: 500px) {
229
+ .feature-navigator {
230
+ position: relative;
231
+ height: auto;
232
+ width: 100%;
233
+ clear: both;
234
+ overflow: auto;
235
+ }
236
+ .report-container {
237
+ margin-top: 1em;
238
+ margin-left: auto;
239
+ width: 100%
240
+ }
241
+ }
242
+
243
+ .print-button {
244
+ background-color: transparent;
245
+ color: #428bca;
246
+ transition: all .5s;
247
+ display: inline-block;
248
+ padding: .375rem 1rem;
249
+ font-size: 1rem;
250
+ font-weight: normal;
251
+ line-height: 1.5;
252
+ text-align: center;
253
+ white-space: nowrap;
254
+ vertical-align: middle;
255
+ cursor: pointer;
256
+ -webkit-user-select: none;
257
+ -moz-user-select: none;
258
+ -ms-user-select: none;
259
+ user-select: none;
260
+ border: 1px solid #428bca;
261
+ border-radius: .25rem;
262
+ margin: 20px 0 0 20px;
263
+ }
264
+
265
+ .print-button:hover {
266
+ background-color: #428bca;
267
+ color: #fff;
268
+ border-color: #428bca;
269
+ text-decoration: none;
270
+ }
271
+
272
+ .print-button:focus {
273
+ outline: none;
274
+ }
275
+
276
+ @media print {
277
+ .print-button {
278
+ display: none;
279
+ }
280
+ }
281
+ .print-button {
282
+ background-color: transparent;
283
+ color: #428bca;
284
+ transition: all .5s;
285
+ display: inline-block;
286
+ padding: .375rem 1rem;
287
+ font-size: 1rem;
288
+ font-weight: normal;
289
+ line-height: 1.5;
290
+ text-align: center;
291
+ white-space: nowrap;
292
+ vertical-align: middle;
293
+ cursor: pointer;
294
+ -webkit-user-select: none;
295
+ -moz-user-select: none;
296
+ -ms-user-select: none;
297
+ user-select: none;
298
+ border: 1px solid #428bca;
299
+ border-radius: .25rem;
300
+ margin: 20px 0 0 20px;
301
+ }
302
+
303
+ .print-button:hover {
304
+ background-color: #428bca;
305
+ color: #fff;
306
+ border-color: #428bca;
307
+ text-decoration: none;
308
+ }
309
+
310
+ .print-button:focus {
311
+ outline: none;
312
+ }
313
+
314
+ .summary-table .main-header th,
315
+ .summary-table .sub-header th:nth-child(2),
316
+ .summary-table table tr td:nth-child(2),
317
+ .summary-table .sub-header th:nth-child(5),
318
+ .summary-table table tr td:nth-child(5),
319
+ .summary-table .sub-header th:nth-child(9),
320
+ .summary-table table tr td:nth-child(9) {
321
+ border-left: 1px solid #999999;
322
+ }
323
+
324
+ .summary-table .main-header th:first-child {
325
+ border-left: none;
326
+ }
327
+
328
+ .screenshots {
329
+ display: block;
330
+ position: relative;
331
+ margin-top: 60px;
332
+ margin-left: 20%;
333
+ max-width: 75%;
334
+ float: left;
335
+ }
336
+
337
+ .screenshots .image-container {
338
+ padding: 10px;
339
+ }
340
+
341
+ .screenshot-link a {
342
+ text-decoration: underline;
343
+ color: #0000ff;
344
+ }
345
+
346
+ @media print {
347
+
348
+ .feature-navigator {
349
+ position: relative;
350
+ height: auto;
351
+ width: 100%;
352
+ float: none;
353
+ display:block;
354
+ clear: both;
355
+ }
356
+
357
+ .report-container {
358
+ margin-top: 20px;
359
+ margin-left:0;
360
+ width: 100%;
361
+ float: none;
362
+ }
363
+
364
+ .feature-navigator .logo {
365
+ max-height:72px;
366
+ display:block;
367
+ }
368
+
369
+ .feature-navigator h1, .feature-navigator h2 {
370
+ display: block;
371
+ text-align:center;
372
+ }
373
+
374
+ .feature-navigator h2 {
375
+ font-size:18px;
376
+ }
377
+
378
+ .feature-navigator .summary {
379
+ border-top: 3px solid #333;
380
+ border-bottom: 3px solid #333;
381
+ display: table;
382
+ width: 100%;
383
+ }
384
+
385
+ .feature-navigator .summary > li {
386
+ display: table-cell;
387
+ text-align: center;
388
+ }
389
+
390
+ .print-button {
391
+ display: none;
392
+ }
393
+
394
+ .hidden.failed {
395
+ display: table-row;
396
+ }
397
+
398
+ .print-hide {
399
+ display: none !important;
400
+ }
401
+ }
402
+ </style></head>
403
+ <body>
404
+ <aside class="feature-navigator">
405
+ <header class="header">
406
+ <button class="print-button" type="button" onclick="window.scrollTo(0, 0); window.print();">Print Report</button>
407
+
408
+ <img class="logo" src="data:image&#x2F;svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjU5OXB4IiBoZWlnaHQ9IjE1MHB4IiB2aWV3Qm94PSIwIDAgNTk5IDE1MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczpza2V0Y2g9Imh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaC9ucyI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDMuMi4yICg5OTgzKSAtIGh0dHA6Ly93d3cuYm9oZW1pYW5jb2RpbmcuY29tL3NrZXRjaCAtLT4KICAgIDx0aXRsZT5jdWN1bWJlcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJMb2dvcyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc2tldGNoOnR5cGU9Ik1TUGFnZSI+CiAgICAgICAgPGcgaWQ9ImN1Y3VtYmVyIiBza2V0Y2g6dHlwZT0iTVNMYXllckdyb3VwIj4KICAgICAgICAgICAgPGcgaWQ9Imc2MDUzIiBza2V0Y2g6dHlwZT0iTVNTaGFwZUdyb3VwIj4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01MjQuNzExNzYxLDg3LjAwMTg4NzYgQzUxNy42NTI4NTksODcuMDAxODg3NiA1MTMuMTgyMjIsOTAuNTQxMTA3NCA1MDkuODg4MDY2LDk1Ljk2NzkxMTEgQzUwOS44ODgwNjYsOTQuNTUyMjIzMiA1MTAuNTkzOTU2LDkyLjkwMDU4NzIgNTEwLjU5Mzk1Niw5MS43MjA4NDczIEw1MTAuNTkzOTU2LDg5LjM2MTM2NzQgTDQ5OC44MjkxMTgsODkuMzYxMzY3NCBMNDk4LjgyOTExOCwxNDguMzQ4MzY0IEw1MTAuNTkzOTU2LDE0OC4zNDgzNjQgTDUxMC41OTM5NTYsMTE0LjM3MTg1NCBDNTEwLjU5Mzk1NiwxMDQuNjk3OTg3IDUxNS43NzA0ODUsOTguNzk5Mjg2OSA1MjQuNzExNzYxLDk4Ljc5OTI4NjkgTDUyNy4wNjQ3MjksOTguNzk5Mjg2OSBMNTI3LjA2NDcyOSw4Ny4wMDE4ODc2IEw1MjQuNzExNzYxLDg3LjAwMTg4NzYgTDUyNC43MTE3NjEsODcuMDAxODg3NiBaIiBpZD0icGF0aDU0NDMiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00Ni4zNTM0NjA1LDEwOC43MDkxMDIgQzQzLjA1OTMwNiwxMDMuNTE4MjQ3IDM4LjM1MzM3MDksOTkuOTc5MDI2OCAzMS41Mjk3NjUsOTkuOTc5MDI2OCBDMjAuNzA2MTE0NCw5OS45NzkwMjY4IDEyLjk0MTMyMTUsMTA4LjIzNzIwNiAxMi45NDEzMjE1LDExOC42MTg5MTggQzEyLjk0MTMyMTUsMTI5LjAwMDYyOSAyMC43MDYxMTQ0LDEzNy4yNTg4MDkgMzEuNTI5NzY1LDEzNy4yNTg4MDkgQzM4LjM1MzM3MDksMTM3LjI1ODgwOSA0My4wNTkzMDYsMTMzLjk1NTUzNyA0Ni4zNTM0NjA1LDEyOC43NjQ2ODEgTDU3LjE3NzExMTIsMTM1LjEzNTI3NyBDNTIuMDAwNTgyNiwxNDMuMTU3NTA4IDQyLjM1MzQxNTcsMTQ5LjA1NjIwOCAzMS41Mjk3NjUsMTQ5LjA1NjIwOCBDMTEuNTI5NTQwOSwxNDkuMDU2MjA4IDcuMTA1NDI3MzZlLTE1LDEzMy45NTU1MzcgNy4xMDU0MjczNmUtMTUsMTE4Ljg1NDg2NiBDNy4xMDU0MjczNmUtMTUsMTAzLjc1NDE5NSAxMS43NjQ4Mzc3LDg4LjY1MzUyMzUgMzEuNTI5NzY1LDg4LjY1MzUyMzUgQzQzLjc2NTE5NjIsODguNjUzNTIzNSA1MS41Mjk5ODkxLDk0LjU1MjIyMzIgNTcuMTc3MTExMiwxMDIuNTc0NDU1IEw0Ni4zNTM0NjA1LDEwOC43MDkxMDIgTDQ2LjM1MzQ2MDUsMTA4LjcwOTEwMiBaIiBpZD0icGF0aDU0NDUiIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02Ny41MzAxNjg0LDkwLjA2OTIxMTQgTDc5Ljc2NTU5OTYsOTAuMDY5MjExNCBMNzkuNzY1NTk5NiwxMjIuMTU4MTM4IEM3OS43NjU1OTk2LDEzMC42NTIyNjUgODUuODgzMzE1MiwxMzYuNTUwOTY1IDkzLjY0ODEwODEsMTM2LjU1MDk2NSBDMTAxLjE3NzYwNCwxMzYuNTUwOTY1IDEwNy41MzA2MTcsMTMwLjQxNjMxNyAxMDcuNTMwNjE3LDEyMi4xNTgxMzggTDEwNy41MzA2MTcsOTAuMDY5MjExNCBMMTE5Ljc2NjA0OCw5MC4wNjkyMTE0IEwxMTkuNzY2MDQ4LDEyMy4xMDE5MyBDMTE5Ljc2NjA0OCwxMzkuMTQ2MzkzIDEwNy4yOTUzMiwxNDguODIwMjYgOTMuNjQ4MTA4MSwxNDguODIwMjYgQzgwLjAwMDg5NjQsMTQ4LjgyMDI2IDY3LjUzMDE2ODQsMTM5LjE0NjM5MyA2Ny41MzAxNjg0LDEyMy4xMDE5MyBMNjcuNTMwMTY4NCw5MC4wNjkyMTE0IEw2Ny41MzAxNjg0LDkwLjA2OTIxMTQgWiIgaWQ9InBhdGg1NDQ3IiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTc3LjE3ODQ1NiwxMDguNzA5MTAyIEMxNzMuODg0MzAxLDEwMy41MTgyNDcgMTY5LjE3ODM2Niw5OS45NzkwMjY4IDE2Mi4zNTQ3Niw5OS45NzkwMjY4IEMxNTEuNTMxMTEsOTkuOTc5MDI2OCAxNDMuNzY2MzE3LDEwOC4yMzcyMDYgMTQzLjc2NjMxNywxMTguNjE4OTE4IEMxNDMuNzY2MzE3LDEyOS4wMDA2MjkgMTUxLjUzMTExLDEzNy4yNTg4MDkgMTYyLjM1NDc2LDEzNy4yNTg4MDkgQzE2OS4xNzgzNjYsMTM3LjI1ODgwOSAxNzMuODg0MzAxLDEzMy45NTU1MzcgMTc3LjE3ODQ1NiwxMjguNzY0NjgxIEwxODguMDAyMTA2LDEzNS4xMzUyNzcgQzE4Mi44MjU1NzgsMTQzLjE1NzUwOCAxNzMuMTc4NDExLDE0OS4wNTYyMDggMTYyLjM1NDc2LDE0OS4wNTYyMDggQzE0Mi4zNTQ1MzYsMTQ5LjA1NjIwOCAxMzAuODI0OTk1LDEzMy45NTU1MzcgMTMwLjgyNDk5NSwxMTguODU0ODY2IEMxMzAuODI0OTk1LDEwMy43NTQxOTUgMTQyLjM1NDUzNiw4OC42NTM1MjM1IDE2Mi4zNTQ3Niw4OC42NTM1MjM1IEMxNzQuNTkwMTkxLDg4LjY1MzUyMzUgMTgyLjM1NDk4NCw5NC41NTIyMjMyIDE4OC4wMDIxMDYsMTAyLjU3NDQ1NSBMMTc3LjE3ODQ1NiwxMDguNzA5MTAyIEwxNzcuMTc4NDU2LDEwOC43MDkxMDIgWiIgaWQ9InBhdGg1NDQ5IiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTk4LjM1NTE2NCw5MC4wNjkyMTE0IEwyMTAuNTkwNTk1LDkwLjA2OTIxMTQgTDIxMC41OTA1OTUsMTIyLjE1ODEzOCBDMjEwLjU5MDU5NSwxMzAuNjUyMjY1IDIxNi43MDgzMSwxMzYuNTUwOTY1IDIyNC40NzMxMDMsMTM2LjU1MDk2NSBDMjMyLjAwMjU5OSwxMzYuNTUwOTY1IDIzOC4zNTU2MTIsMTMwLjQxNjMxNyAyMzguMzU1NjEyLDEyMi4xNTgxMzggTDIzOC4zNTU2MTIsOTAuMDY5MjExNCBMMjUwLjU5MTA0Myw5MC4wNjkyMTE0IEwyNTAuNTkxMDQzLDEyMy4xMDE5MyBDMjUwLjU5MTA0MywxMzkuMTQ2MzkzIDIzOC4xMjAzMTUsMTQ4LjgyMDI2IDIyNC40NzMxMDMsMTQ4LjgyMDI2IEMyMTAuODI1ODkyLDE0OC44MjAyNiAxOTguMzU1MTY0LDEzOS4xNDYzOTMgMTk4LjM1NTE2NCwxMjMuMTAxOTMgTDE5OC4zNTUxNjQsOTAuMDY5MjExNCBMMTk4LjM1NTE2NCw5MC4wNjkyMTE0IFoiIGlkPSJwYXRoNTQ1MSIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTI2NS44ODUzMzIsMTExLjU0MDQ3OCBDMjY1Ljg4NTMzMiw5Ni45MTE3MDMgMjc1LjUzMjQ5OSw4OC42NTM1MjM1IDI4Ni44MjY3NDMsODguNjUzNTIzNSBDMjk1LjUzMjcyMyw4OC42NTM1MjM1IDMwMS42NTA0MzksOTIuOTAwNTg3MiAzMDQuMDAzNDA2LDk4Ljc5OTI4NjkgTDMwNC4yMzg3MDMsOTguNzk5Mjg2OSBDMzA2LjU5MTY3LDkyLjY2NDYzOTMgMzEyLjcwOTM4Niw4OC42NTM1MjM1IDMyMS40MTUzNjYsODguNjUzNTIzNSBDMzMyLjcwOTYxLDg4LjY1MzUyMzUgMzQyLjM1Njc3Nyw5Ny4xNDc2NTEgMzQyLjM1Njc3NywxMTEuNTQwNDc4IEwzNDIuMzU2Nzc3LDE0Ny40MDQ1NzIgTDMzMC4xMjEzNDYsMTQ3LjQwNDU3MiBMMzMwLjEyMTM0NiwxMTEuNTQwNDc4IEMzMzAuMTIxMzQ2LDEwNC42OTc5ODcgMzI1Ljg4NjAwNCwxMDAuNjg2ODcxIDMyMC43MDk0NzYsMTAwLjY4Njg3MSBDMzE0LjgyNzA1NywxMDAuNjg2ODcxIDMxMC41OTE3MTUsMTA0LjIyNjA5MSAzMTAuNTkxNzE1LDExMy4xOTIxMTQgTDMxMC41OTE3MTUsMTQ3LjE2ODYyNCBMMjk4LjM1NjI4NCwxNDcuMTY4NjI0IEwyOTguMzU2Mjg0LDExMy4xOTIxMTQgQzI5OC4zNTYyODQsMTA0LjIyNjA5MSAyOTQuMTIwOTQyLDEwMC42ODY4NzEgMjg4LjIzODUyNCwxMDAuNjg2ODcxIEMyODMuMDYxOTk1LDEwMC42ODY4NzEgMjc4LjgyNjY1MywxMDQuNjk3OTg3IDI3OC44MjY2NTMsMTExLjU0MDQ3OCBMMjc4LjgyNjY1MywxNDcuMTY4NjI0IEwyNjUuODg1MzMyLDE0Ny4xNjg2MjQgTDI2NS44ODUzMzIsMTExLjU0MDQ3OCBMMjY1Ljg4NTMzMiwxMTEuNTQwNDc4IFoiIGlkPSJwYXRoNTQ1MyIgZmlsbD0iIzAwMDAwMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPHBhdGggZD0iTTM1Ny40MTU3NjksNzMuMDgwOTU2NCBMMzY5LjY1MTIwMSw3My4wODA5NTY0IEwzNjkuNjUxMjAxLDk3LjE0NzY1MSBMMzY5Ljg4NjQ5Nyw5Ny4xNDc2NTEgQzM3Mi43MTAwNTgsOTIuNDI4NjkxMyAzODAuNDc0ODUxLDg4LjY1MzUyMzUgMzg4LjQ3NDk0MSw4OC42NTM1MjM1IEM0MDMuMjk4NjM2LDg4LjY1MzUyMzUgNDE4LjEyMjMzMiw5OS43NDMwNzg5IDQxOC4xMjIzMzIsMTE4Ljg1NDg2NiBDNDE4LjEyMjMzMiwxMzcuOTY2NjUzIDQwMy4yOTg2MzYsMTQ5LjA1NjIwOCAzODguNDc0OTQxLDE0OS4wNTYyMDggQzM4MC40NzQ4NTEsMTQ5LjA1NjIwOCAzNzIuNzEwMDU4LDE0NS4yODEwNCAzNjkuODg2NDk3LDE0MC41NjIwODEgTDM2OS42NTEyMDEsMTQwLjU2MjA4MSBMMzY5LjY1MTIwMSwxNDcuNjQwNTIgTDM1Ny40MTU3NjksMTQ3LjY0MDUyIEwzNTcuNDE1NzY5LDczLjA4MDk1NjQgTDM1Ny40MTU3NjksNzMuMDgwOTU2NCBaIE0zODcuMjk4NDU3LDEwMC4yMTQ5NzUgQzM3Ny4xODA2OTcsMTAwLjIxNDk3NSAzNjkuNjUxMjAxLDEwOC4yMzcyMDYgMzY5LjY1MTIwMSwxMTguODU0ODY2IEMzNjkuNjUxMjAxLDEyOS40NzI1MjUgMzc3LjE4MDY5NywxMzcuNDk0NzU3IDM4Ny4yOTg0NTcsMTM3LjQ5NDc1NyBDMzk3LjY1MTUxNCwxMzcuNDk0NzU3IDQwNS4xODEwMSwxMjkuNDcyNTI1IDQwNS4xODEwMSwxMTguODU0ODY2IEM0MDUuMTgxMDEsMTA4LjAwMTI1OCAzOTcuNjUxNTE0LDEwMC4yMTQ5NzUgMzg3LjI5ODQ1NywxMDAuMjE0OTc1IEwzODcuMjk4NDU3LDEwMC4yMTQ5NzUgWiIgaWQ9InBhdGg1NDU1IiBmaWxsPSIjMDAwMDAwIj48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDg0LjAwNTQyMywxMzQuODk5MzI5IEM0NzcuMTgxODE3LDE0My42Mjk0MDQgNDY3Ljc2OTk0NywxNDguODIwMjYgNDU3LjQxNjg5LDE0OC44MjAyNiBDNDM3LjQxNjY2NiwxNDguODIwMjYgNDI1Ljg4NzEyNSwxMzMuNzE5NTg5IDQyNS44ODcxMjUsMTE4LjYxODkxOCBDNDI1Ljg4NzEyNSwxMDMuNTE4MjQ3IDQzNy42NTE5NjIsODguNjUzNTIzNSA0NTcuNDE2ODksODguNjUzNTIzNSBDNDY5LjE4MTcyNyw4OC42NTM1MjM1IDQ4Ny4wNjQyODEsOTguNTYzMzM4OSA0ODcuMDY0MjgxLDEyMC43NDI0NSBMNDg3LjA2NDI4MSwxMjIuODY1OTgyIEw0MzkuNzY5NjMzLDEyMi44NjU5ODIgQzQ0MC40NzU1MjMsMTMxLjU5NjA1NyA0NDguNzEwOTEsMTM3Ljk2NjY1MyA0NTcuMTgxNTkzLDEzNy45NjY2NTMgQzQ2My43Njk5MDIsMTM3Ljk2NjY1MyA0NjkuNDE3MDI0LDEzNC42NjMzODEgNDczLjY1MjM2NiwxMjkuMDAwNjI5IEw0ODQuMDA1NDIzLDEzNC44OTkzMjkgTDQ4NC4wMDU0MjMsMTM0Ljg5OTMyOSBaIE00NzIuNzExMTc5LDExMi43MjAyMTggQzQ3MC4xMjI5MTQsMTAzLjk5MDE0MyA0NjMuNzY5OTAyLDk5LjI3MTE4MjkgNDU1Ljc2OTgxMiw5OS4yNzExODI5IEM0NDguMDA1MDIsOTkuMjcxMTgyOSA0NDEuNjUyMDA3LDEwNC4yMjYwOTEgNDM5LjUzNDMzNiwxMTIuNzIwMjE4IEw0NzIuNzExMTc5LDExMi43MjAyMTggTDQ3Mi43MTExNzksMTEyLjcyMDIxOCBaIiBpZD0icGF0aDU0NTciIGZpbGw9IiMwMDAwMDAiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01NjAuNDU4MjMzLDAuOTI3MTcwMTk3IEM1MzkuMTYyNjIxLDAuOTI3MTcwMTk3IDUyMS45MjgzODksMTguMjA5MTAxNyA1MjEuOTI4Mzg5LDM5LjU2MzY1MyBDNTIxLjkyODM4OSw1OC4zNjUwMjIgNTM1LjM2ODY1NCw3My45ODcwNjc0IDU1My4xMDUyMDksNzcuNDYyNzk4MyBMNTUzLjEwNTIwOSw4OC41MjI4NjAyIEM1NzYuMTY0NTEyLDg1LjAzNjcyNCA1OTYuNTgyMTMxLDY2LjY4MTQ2NDIgNTk4LjEwNTcxMyw0Mi41ODY3MzY2IEM1OTkuMDIyNzgyLDI4LjA4MzcyODggNTkxLjgxMTYzMSwxMy4yNzc5MTA3IDU3OS42NDk2MjQsNi4wODg1MzI0IEM1NzguOTUzMjk5LDUuNjc2OTExIDU3OC4yNDU4MzQsNS4yNjgyNzcxNiA1NzcuNTE3MjQ3LDQuOTA4NzkyNDcgQzU3Ni43NzQ4NDgsNC41NDI0OTMxMyA1NzYuMDEyNDk5LDQuMTg1NDkwMTQgNTc1LjIzNzgxLDMuODc2NTIwMDMgQzU3NC45OTE5MDEsMy43NzMzNjc4MiA1NzQuNzUwOTQ4LDMuNjc5NzkyMjYgNTc0LjUwMjUwOCwzLjU4MTU4NTA1IEM1NzMuODI1ODk1LDMuMzMxMTIyNzIgNTczLjE0MzE2OCwzLjA0OTA4MyA1NzIuNDQzNjYxLDIuODQ0MjQ3NTkgQzU2OC42NzM0MzgsMS41OTgxNDUxNiA1NjQuNjQzMTI2LDAuOTI3MTcwMTk3IDU2MC40NTgyMzMsMC45MjcxNzAxOTcgTDU2MC40NTgyMzMsMC45MjcxNzAxOTcgWiIgaWQ9InBhdGgzOTQzIiBmaWxsPSIjMDBBODE4Ij48L3BhdGg+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNTY4LjM5OTQ5OCwxNS4yMzE1MTY5IEM1NjcuMDgxNDY5LDE1LjA5NjAzMDggNTY1LjY5MzU4NSwxNS41NTU5NDU0IDU2NC43MjI5ODYsMTYuNzA2MTkxOCBDNTY0LjAxNzA5NiwxNy42NDk5ODM3IDU2My41NzU5MTUsMTguNTY0MjgyMiA1NjMuMTA1MzIxLDE5LjUwODA3NDEgQzU2MS42OTM1NCwyMi44MTEzNDYgNTYyLjE2NDEzNCwyNi4zNTA1NjU4IDU2NC4yODE4MDUsMjguOTQ1OTkzNiBDNTY3LjU3NTk1OSwyOC4yMzgxNDk2IDU3MC4zNzAxMDgsMjYuMTI5MzY0NSA1NzEuNzgxODg5LDIyLjgyNjA5MjcgQzU3Mi4yNTI0ODIsMjEuODgyMzAwOCA1NzIuNTE3MTkxLDIwLjY3MzA2NzMgNTcyLjUxNzE5MSwxOS43MjkyNzU0IEM1NzIuNjY0MjUyLDE3LjIyMjMyOCA1NzAuNTk2MjE0LDE1LjQ1NzMyNjQgNTY4LjM5OTQ5OCwxNS4yMzE1MTY5IEw1NjguMzk5NDk4LDE1LjIzMTUxNjkgWiBNNTUxLjI2Njk1MywxNS40NTI3MTgxIEM1NDkuMTE4NDkxLDE1LjY1Nzc5MDIgNTQ3LjA3NTczLDE3LjM2OTc5NTUgNTQ3LjA3NTczLDE5LjcyOTI3NTQgQzU0Ny4wNzU3MywyMC42NzMwNjczIDU0Ny4zNDA0MzgsMjEuODgyMzAwOCA1NDcuODExMDMyLDIyLjgyNjA5MjcgQzU0OS4yMjI4MTMsMjYuMTI5MzY0NSA1NTIuMjM3NTUyLDI4LjIzODE0OTYgNTU1LjUzMTcwNywyOC45NDU5OTM2IEM1NTcuNDE0MDgxLDI2LjM1MDU2NTggNTU3Ljg5OTM4LDIyLjgxMTM0NiA1NTYuNDg3NiwxOS41MDgwNzQxIEM1NTYuMDE3MDA2LDE4LjU2NDI4MjIgNTU1LjU3NTgyNSwxNy42MzUyMzcgNTU0Ljg2OTkzNSwxNi45MjczOTMgQzU1My44OTkzMzUsMTUuNzc3MTQ2NiA1NTIuNTU2MDMxLDE1LjMyOTY3NSA1NTEuMjY2OTUzLDE1LjQ1MjcxODEgTDU1MS4yNjY5NTMsMTUuNDUyNzE4MSBaIE01MzkuNzIyNzA2LDI2LjgwNzcxNSBDNTM2LjAxMjMwMSwyNi45OTg2Njc3IDUzNC4zNTQ5OTksMzEuNjc0MTQyMiA1MzcuNDQzMjY5LDM0LjEwNzM1NTggQzUzOC4zODQ0NTYsMzQuODE1MTk5OCA1MzkuMjk2MjMxLDM1LjMzMTMzNiA1NDAuMjM3NDE4LDM1LjgwMzIzMiBDNTQzLjUzMTU3MiwzNy4yMTg5MTk5IDU0Ny4zNDA0MzgsMzYuNzMyMjc3MiA1NTAuMTY0LDM0Ljg0NDY5MzMgQzU0OS40NTgxMDksMzEuNzc3MzY5NCA1NDcuMDYxMDI0LDI4Ljk2MDc0MDQgNTQzLjc2Njg2OSwyNy41NDUwNTI0IEM1NDIuNTkwMzg1LDI3LjA3MzE1NjUgNTQxLjYzNDQ5MiwyNi44MDc3MTUgNTQwLjQ1ODAwOCwyNi44MDc3MTUgQzU0MC4xOTMzLDI2Ljc3ODIyMTUgNTM5Ljk3MDA2NiwyNi43OTQ5NzM4IDUzOS43MjI3MDYsMjYuODA3NzE1IEw1MzkuNzIyNzA2LDI2LjgwNzcxNSBaIE01NzUuOTczMTEyLDQxLjExMjA2MTcgQzU3My44MTc3NTYsNDEuMDcwNTgyIDU3MS42MzQ4MjgsNDEuNzAxOTMxNiA1NjkuODcwMTAzLDQyLjg4MTY3MTYgQzU3MC41NzU5OTMsNDUuOTQ4OTk1NCA1NzIuOTczMDc5LDQ4Ljc2NTYyNDUgNTc2LjI2NzIzMyw1MC4xODEzMTI0IEM1NzcuNDQzNzE3LDUwLjY1MzIwODQgNTc4LjM5OTYxLDUwLjkxODY0OTkgNTc5LjU3NjA5NCw1MC45MTg2NDk5IEM1ODMuODExNDM1LDUxLjE1NDU5NzggNTg1Ljg4NDk4OCw0NS45MDQ3NTUxIDU4Mi41OTA4MzMsNDMuNTQ1Mjc1MyBDNTgxLjY0OTY0Niw0Mi44Mzc0MzEzIDU4MC43Mzc4NzEsNDIuMzk1MDI4OCA1NzkuNzk2Njg0LDQxLjkyMzEzMjkgQzU3OC41NjEzNzcsNDEuMzkyMjQ5OSA1NzcuMjY2MzI0LDQxLjEzNjk0NzEgNTc1Ljk3MzExMiw0MS4xMTIwNjE3IEw1NzUuOTczMTEyLDQxLjExMjA2MTcgWiBNNTQzLjg0MDM5OSw0MS4zMzMyNjI5IEM1NDIuNTQ3MTg2LDQxLjM1ODE1NTQgNTQxLjI1MjEzNSw0MS42MTM0NTExIDU0MC4wMTY4MjcsNDIuMTQ0MzM0MSBDNTM4Ljg0MDM0Myw0Mi42MTYyMzAxIDUzNy45Mjg1NjgsNDMuMTMyMzY2MyA1MzcuMjIyNjc4LDQzLjg0MDIxMDMgQzUzNC4xNjM4Miw0Ni40MzU2MzgxIDUzNi4yMjI2NjcsNTEuMzc1Nzk5MSA1NDAuNDU4MDA4LDUxLjEzOTg1MTEgQzU0MS42MzQ0OTIsNTEuMTM5ODUxMSA1NDIuODI1NjgyLDUwLjg3NDQwOTYgNTQzLjc2Njg2OSw1MC40MDI1MTM2IEM1NDcuMDYxMDI0LDQ4Ljk4NjgyNTcgNTQ5LjM5OTI4NSw0Ni4xNzAxOTY2IDU0OS44Njk4NzksNDMuMTAyODcyOCBDNTQ4LjEwNTE1Myw0MS45MjMxMzI5IDU0NS45OTU3NTUsNDEuMjkxNzg4IDU0My44NDAzOTksNDEuMzMzMjYyOSBMNTQzLjg0MDM5OSw0MS4zMzMyNjI5IFogTTU1NS43NTIyOTcsNDguNTU5MTcgQzU1Mi40NTgxNDMsNDkuMjY3MDEzOSA1NDkuNjYzOTk0LDUxLjM3NTc5OTEgNTQ4LjI1MjIxMyw1NC42NzkwNzA5IEM1NDcuNzgxNjIsNTUuNjIyODYyOCA1NDcuNTE2OTExLDU2Ljc1ODM2MjUgNTQ3LjUxNjkxMSw1Ny43MDIxNTQ1IEM1NDcuMjgxNjE0LDYxLjcxMzI3MDIgNTUyLjczNzU1OCw2My44NjYyOTU2IDU1NS4wOTA1MjUsNjAuNzk4OTcxOCBDNTU1Ljc5NjQxNiw1OS44NTUxNzk4IDU1Ni4yMzc1OTcsNTguOTQwODgxNCA1NTYuNzA4MTksNTcuOTk3MDg5NSBDNTU4LjExOTk3MSw1NC45Mjk3NjU2IDU1Ny42MzQ2NzEsNTEuMzkwNTQ1OCA1NTUuNzUyMjk3LDQ4LjU1OTE3IEw1NTUuNzUyMjk3LDQ4LjU1OTE3IFogTTU2NC41MDIzOTUsNDguNzgwMzcxMiBDNTYyLjYyMDAyMSw1MS4zNzU3OTkxIDU2Mi4xMzQ3MjIsNTQuOTE1MDE4OSA1NjMuNTQ2NTAyLDU4LjIxODI5MDcgQzU2NC4wMTcwOTYsNTkuMTYyMDgyNiA1NjQuNDU4Mjc3LDYwLjA5MTEyNzggNTY1LjE2NDE2OCw2MC43OTg5NzE4IEM1NjcuNzUyNDMyLDYzLjYzMDM0NzYgNTczLjE5MzY2OSw2MS41MzYzMDkyIDU3Mi45NTgzNzMsNTcuOTk3MDg5NSBDNTcyLjk1ODM3Myw1Ny4wNTMyOTc1IDU3Mi42OTM2NjQsNTUuODQ0MDY0MSA1NzIuMjIzMDcsNTQuOTAwMjcyMSBDNTcwLjgxMTI5LDUxLjU5NzAwMDMgNTY3Ljc5NjU1LDQ5LjQ4ODIxNTIgNTY0LjUwMjM5NSw0OC43ODAzNzEyIEw1NjQuNTAyMzk1LDQ4Ljc4MDM3MTIgWiIgaWQ9InJlY3Q0MDA1IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPg&#x3D;&#x3D;" alt="" />
409
+
410
+ <h1>Plugins tests report</h1>
411
+
412
+ <h2 class="component"></h2>
413
+ </header>
414
+ <ul class="summary">
415
+ <li>2 Features</li>
416
+ <li>4 Scenarios</li>
417
+ <li> Steps</li>
418
+ <li class="passed print-hide">3 Passed scenarios</li>
419
+ <li class="failed print-hide">1 Failing scenarios</li>
420
+ <li class="passed print-hide"> Passed steps</li>
421
+ <li class="failed print-hide"> Failing steps</li>
422
+ <li class="skipped print-hide"> Skipped steps</li>
423
+ <li>Status <span class="failed">failed</span></li>
424
+ </ul>
425
+
426
+ <ul class="feature-list print-hide">
427
+ <li class="failed">
428
+ <a href="#F_tracker-message-flexible-checkout-fields-tests" title="Tracker message Flexible Checkout Fields tests">Tracker message Flexible Checkout Fields tests</a>
429
+ <ul class="scenario-list">
430
+ <li class="failed"><a href="#S_tracker-message-flexible-checkout-fields-tests;tracker-long-message-is-visible" title="Tracker long message is Visible">Tracker long message is Visible</a></li>
431
+ <li class="passed"><a href="#S_tracker-message-flexible-checkout-fields-tests;tracker-message-is-visible" title="Tracker message is Visible">Tracker message is Visible</a></li>
432
+ </ul>
433
+ </li>
434
+ <li class="passed">
435
+ <a href="#F_activate-and-deactivate-plugin-flexible-checkout-fields-tests" title="Activate and Deactivate plugin Flexible Checkout Fields tests">Activate and Deactivate plugin Flexible Checkout Fields tests</a>
436
+ <ul class="scenario-list">
437
+ <li class="passed"><a href="#S_activate-and-deactivate-plugin-flexible-checkout-fields-tests;plugin-flexible-checkout-fields--is-active" title="Plugin Flexible Checkout Fields is active">Plugin Flexible Checkout Fields is active</a></li>
438
+ <li class="passed"><a href="#S_activate-and-deactivate-plugin-flexible-checkout-fields-tests;plugin-flexible-checkout-fields-is-inactive" title="Plugin Flexible Checkout Fields is inactive">Plugin Flexible Checkout Fields is inactive</a></li>
439
+ </ul>
440
+ </li>
441
+ </ul>
442
+ </aside><main class="report-container">
443
+
444
+ <!--
445
+ <div class="summary-table">
446
+ <table>
447
+ <tr class="main-header">
448
+ <th>Feature</th>
449
+ <th colspan="3">Scenarios</th>
450
+ <th colspan="4">Steps</th>
451
+ <th colspan="2"></th>
452
+ </tr>
453
+ <tr class="sub-header">
454
+ <th></th>
455
+ <th>Total</th>
456
+ <th>Passed</th>
457
+ <th>Failed</th>
458
+ <th>Total</th>
459
+ <th>Passed</th>
460
+ <th>Failed</th>
461
+ <th>Skipped</th>
462
+ <th>Duration</th>
463
+ <th>Status</th>
464
+ </tr>
465
+
466
+ <tr class="failed">
467
+ <td>Tracker message Flexible Checkout Fields tests</td>
468
+ <td class="scenarios-all"></td>
469
+ <td class="scenarios-passed passed"></td>
470
+ <td class="scenarios-failed failed"></td>
471
+ <td class="steps-all"></td>
472
+ <td class="steps-passed passed"></td>
473
+ <td class="steps-failed failed"></td>
474
+ <td class="steps-skipped skipped"></td>
475
+ <td class="duration">6.43 s</td>
476
+ <td class="status">failed</td>
477
+ </tr>
478
+ <tr class="passed">
479
+ <td>Activate and Deactivate plugin Flexible Checkout Fields tests</td>
480
+ <td class="scenarios-all"></td>
481
+ <td class="scenarios-passed passed"></td>
482
+ <td class="scenarios-failed failed"></td>
483
+ <td class="steps-all"></td>
484
+ <td class="steps-passed passed"></td>
485
+ <td class="steps-failed failed"></td>
486
+ <td class="steps-skipped skipped"></td>
487
+ <td class="duration">4.73 s</td>
488
+ <td class="status">passed</td>
489
+ </tr>
490
+
491
+ </table>
492
+ </div>
493
+ -->
494
+
495
+ <section class="report" id="F_tracker-message-flexible-checkout-fields-tests">
496
+ <h2>Feature: Tracker message Flexible Checkout Fields tests <span class="tags">@flexible-checkout-fields</span></h2>
497
+
498
+ <p class="filename">&#x2F;tmp&#x2F;tests&#x2F;test-acceptance&#x2F;features&#x2F;tests_scenario&#x2F;flexible-checkout-fields&#x2F;trackerMessageIsVisibleWhenActivatePluginFlexibleCheckoutFieldsTests.feature</p>
499
+
500
+ <p class="story"></p>
501
+ <h3 id="S_tracker-message-flexible-checkout-fields-tests;tracker-long-message-is-visible">
502
+ Scenario: Tracker long message is Visible
503
+ <span class="scenario-tag">@flexible-checkout-fields</span>
504
+ </h3>
505
+
506
+ <table>
507
+ <tr class="header-row">
508
+ <th style="width: 100px;">Condition</th>
509
+ <th>Step</th>
510
+ <th style="width: 100px;">Line</th>
511
+ <th class="duration" style="width: 100px;">Duration</th>
512
+ <th style="width: 100px;">Status</th>
513
+ </tr>
514
+
515
+ <tr class="passed">
516
+ <td>Given </td>
517
+ <td>
518
+ user is logged in to wordPress
519
+ <table class="datatable">
520
+ <!-- -->
521
+ </table>
522
+ </td>
523
+ <td>5</td>
524
+ <td class="duration">0.28 s</td>
525
+ <td class="status">passed</td>
526
+ </tr>
527
+
528
+ <tr class="hidden passed">
529
+ <td class="trace" colspan="4">
530
+ <pre></pre>
531
+ </td>
532
+ <td class="screenshot-link" data-index="0"></td>
533
+ </tr>
534
+ <tr class="passed">
535
+ <td>And </td>
536
+ <td>
537
+ i resets the consent to collect data in the database
538
+ <table class="datatable">
539
+ <!-- -->
540
+ </table>
541
+ </td>
542
+ <td>6</td>
543
+ <td class="duration">0.02 s</td>
544
+ <td class="status">passed</td>
545
+ </tr>
546
+
547
+ <tr class="hidden passed">
548
+ <td class="trace" colspan="4">
549
+ <pre></pre>
550
+ </td>
551
+ <td class="screenshot-link" data-index="0"></td>
552
+ </tr>
553
+ <tr class="passed">
554
+ <td>When </td>
555
+ <td>
556
+ i open &quot;menu-plugins&quot; and activate plugin with slug &quot;flexible-checkout-fields&quot;
557
+ <table class="datatable">
558
+ <!-- -->
559
+ </table>
560
+ </td>
561
+ <td>15</td>
562
+ <td class="duration">0.66 s</td>
563
+ <td class="status">passed</td>
564
+ </tr>
565
+
566
+ <tr class="hidden passed">
567
+ <td class="trace" colspan="4">
568
+ <pre></pre>
569
+ </td>
570
+ <td class="screenshot-link" data-index="0"></td>
571
+ </tr>
572
+ <tr class="passed">
573
+ <td>And </td>
574
+ <td>
575
+ Skip tracker message
576
+ <table class="datatable">
577
+ <!-- -->
578
+ </table>
579
+ </td>
580
+ <td>16</td>
581
+ <td class="duration">2.3 s</td>
582
+ <td class="status">passed</td>
583
+ </tr>
584
+
585
+ <tr class="hidden passed">
586
+ <td class="trace" colspan="4">
587
+ <pre></pre>
588
+ </td>
589
+ <td class="screenshot-link" data-index="0"></td>
590
+ </tr>
591
+ <tr class="passed">
592
+ <td>And </td>
593
+ <td>
594
+ i open submenu &quot;Checkout Fields&quot; from menu &quot;toplevel_page_woocommerce&quot;
595
+ <table class="datatable">
596
+ <!-- -->
597
+ </table>
598
+ </td>
599
+ <td>17</td>
600
+ <td class="duration">0.79 s</td>
601
+ <td class="status">passed</td>
602
+ </tr>
603
+
604
+ <tr class="hidden passed">
605
+ <td class="trace" colspan="4">
606
+ <pre></pre>
607
+ </td>
608
+ <td class="screenshot-link" data-index="0"></td>
609
+ </tr>
610
+ <tr class="failed">
611
+ <td>Then </td>
612
+ <td>
613
+ tracker message type &quot;long&quot; visible
614
+ <table class="datatable">
615
+ <!-- -->
616
+ </table>
617
+ </td>
618
+ <td>18</td>
619
+ <td class="duration">0.1 s</td>
620
+ <td class="status">failed</td>
621
+ </tr>
622
+
623
+ <tr class="hidden failed">
624
+ <td class="trace" colspan="4">
625
+ <pre>AssertionError: expected &#39;Hey admin,\nWe need your help to improve WP Desk plugins, so they are more useful for you and the rest of 30,000+ users. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. Find out more »\nAllow\nDismiss this notice.&#39; to include &#39;\nWe need your help to improve WP Desk plugins, so they are more useful for you and the rest of 18,000+ users. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. Find out more&#39;</pre>
626
+ </td>
627
+ <td class="screenshot-link" data-index="0"></td>
628
+ </tr>
629
+ <tr class="skipped">
630
+ <td>And </td>
631
+ <td>
632
+ i open &quot;menu-plugins&quot; and deactivate plugin with slug &quot;flexible-checkout-fields&quot;
633
+ <table class="datatable">
634
+ <!-- -->
635
+ </table>
636
+ </td>
637
+ <td>19</td>
638
+ <td class="duration"></td>
639
+ <td class="status">skipped</td>
640
+ </tr>
641
+
642
+ <tr class="hidden skipped">
643
+ <td class="trace" colspan="4">
644
+ <pre></pre>
645
+ </td>
646
+ <td class="screenshot-link" data-index="0"></td>
647
+ </tr>
648
+
649
+ </table>
650
+
651
+
652
+
653
+ <img src="tracker_long_message_is_visible-14-1.png" />
654
+ <h3 id="S_tracker-message-flexible-checkout-fields-tests;tracker-message-is-visible">
655
+ Scenario: Tracker message is Visible
656
+ <span class="scenario-tag">@flexible-checkout-fields</span>
657
+ </h3>
658
+
659
+ <table>
660
+ <tr class="header-row">
661
+ <th style="width: 100px;">Condition</th>
662
+ <th>Step</th>
663
+ <th style="width: 100px;">Line</th>
664
+ <th class="duration" style="width: 100px;">Duration</th>
665
+ <th style="width: 100px;">Status</th>
666
+ </tr>
667
+
668
+ <tr class="passed">
669
+ <td>Given </td>
670
+ <td>
671
+ user is logged in to wordPress
672
+ <table class="datatable">
673
+ <!-- -->
674
+ </table>
675
+ </td>
676
+ <td>5</td>
677
+ <td class="duration">0.28 s</td>
678
+ <td class="status">passed</td>
679
+ </tr>
680
+
681
+ <tr class="hidden passed">
682
+ <td class="trace" colspan="4">
683
+ <pre></pre>
684
+ </td>
685
+ <td class="screenshot-link" data-index="0"></td>
686
+ </tr>
687
+ <tr class="passed">
688
+ <td>And </td>
689
+ <td>
690
+ i resets the consent to collect data in the database
691
+ <table class="datatable">
692
+ <!-- -->
693
+ </table>
694
+ </td>
695
+ <td>6</td>
696
+ <td class="duration">0 s</td>
697
+ <td class="status">passed</td>
698
+ </tr>
699
+
700
+ <tr class="hidden passed">
701
+ <td class="trace" colspan="4">
702
+ <pre></pre>
703
+ </td>
704
+ <td class="screenshot-link" data-index="0"></td>
705
+ </tr>
706
+ <tr class="passed">
707
+ <td>When </td>
708
+ <td>
709
+ i open &quot;menu-plugins&quot; and activate plugin with slug &quot;flexible-checkout-fields&quot;
710
+ <table class="datatable">
711
+ <!-- -->
712
+ </table>
713
+ </td>
714
+ <td>9</td>
715
+ <td class="duration">0.71 s</td>
716
+ <td class="status">passed</td>
717
+ </tr>
718
+
719
+ <tr class="hidden passed">
720
+ <td class="trace" colspan="4">
721
+ <pre></pre>
722
+ </td>
723
+ <td class="screenshot-link" data-index="0"></td>
724
+ </tr>
725
+ <tr class="passed">
726
+ <td>Then </td>
727
+ <td>
728
+ tracker message type &quot;short&quot; visible
729
+ <table class="datatable">
730
+ <!-- -->
731
+ </table>
732
+ </td>
733
+ <td>10</td>
734
+ <td class="duration">0.12 s</td>
735
+ <td class="status">passed</td>
736
+ </tr>
737
+
738
+ <tr class="hidden passed">
739
+ <td class="trace" colspan="4">
740
+ <pre></pre>
741
+ </td>
742
+ <td class="screenshot-link" data-index="0"></td>
743
+ </tr>
744
+ <tr class="passed">
745
+ <td>And </td>
746
+ <td>
747
+ Check if buttons skip and Allow &amp; Continue visible in tracker message
748
+ <table class="datatable">
749
+ <!-- -->
750
+ </table>
751
+ </td>
752
+ <td>11</td>
753
+ <td class="duration">0.13 s</td>
754
+ <td class="status">passed</td>
755
+ </tr>
756
+
757
+ <tr class="hidden passed">
758
+ <td class="trace" colspan="4">
759
+ <pre></pre>
760
+ </td>
761
+ <td class="screenshot-link" data-index="0"></td>
762
+ </tr>
763
+ <tr class="passed">
764
+ <td>But </td>
765
+ <td>
766
+ i open &quot;menu-plugins&quot; and deactivate plugin with slug &quot;flexible-checkout-fields&quot;
767
+ <table class="datatable">
768
+ <!-- -->
769
+ </table>
770
+ </td>
771
+ <td>12</td>
772
+ <td class="duration">1.03 s</td>
773
+ <td class="status">passed</td>
774
+ </tr>
775
+
776
+ <tr class="hidden passed">
777
+ <td class="trace" colspan="4">
778
+ <pre></pre>
779
+ </td>
780
+ <td class="screenshot-link" data-index="0"></td>
781
+ </tr>
782
+
783
+ </table>
784
+
785
+
786
+
787
+
788
+ </section>
789
+ <section class="report" id="F_activate-and-deactivate-plugin-flexible-checkout-fields-tests">
790
+ <h2>Feature: Activate and Deactivate plugin Flexible Checkout Fields tests <span class="tags">@flexible-checkout-fields</span></h2>
791
+
792
+ <p class="filename">&#x2F;tmp&#x2F;tests&#x2F;test-acceptance&#x2F;features&#x2F;tests_scenario&#x2F;flexible-checkout-fields&#x2F;activateAndDeactivateFlexibleCheckoutFieldsTests.feature</p>
793
+
794
+ <p class="story"></p>
795
+ <h3 id="S_activate-and-deactivate-plugin-flexible-checkout-fields-tests;plugin-flexible-checkout-fields--is-active">
796
+ Scenario: Plugin Flexible Checkout Fields is active
797
+ <span class="scenario-tag">@flexible-checkout-fields</span>
798
+ </h3>
799
+
800
+ <table>
801
+ <tr class="header-row">
802
+ <th style="width: 100px;">Condition</th>
803
+ <th>Step</th>
804
+ <th style="width: 100px;">Line</th>
805
+ <th class="duration" style="width: 100px;">Duration</th>
806
+ <th style="width: 100px;">Status</th>
807
+ </tr>
808
+
809
+ <tr class="passed">
810
+ <td>Given </td>
811
+ <td>
812
+ user is logged in to wordPress
813
+ <table class="datatable">
814
+ <!-- -->
815
+ </table>
816
+ </td>
817
+ <td>5</td>
818
+ <td class="duration">0.29 s</td>
819
+ <td class="status">passed</td>
820
+ </tr>
821
+
822
+ <tr class="hidden passed">
823
+ <td class="trace" colspan="4">
824
+ <pre></pre>
825
+ </td>
826
+ <td class="screenshot-link" data-index="1"></td>
827
+ </tr>
828
+ <tr class="passed">
829
+ <td>And </td>
830
+ <td>
831
+ i resets the consent to collect data in the database
832
+ <table class="datatable">
833
+ <!-- -->
834
+ </table>
835
+ </td>
836
+ <td>6</td>
837
+ <td class="duration">0.03 s</td>
838
+ <td class="status">passed</td>
839
+ </tr>
840
+
841
+ <tr class="hidden passed">
842
+ <td class="trace" colspan="4">
843
+ <pre></pre>
844
+ </td>
845
+ <td class="screenshot-link" data-index="1"></td>
846
+ </tr>
847
+ <tr class="passed">
848
+ <td>When </td>
849
+ <td>
850
+ i open &quot;menu-plugins&quot; and activate plugin with slug &quot;flexible-checkout-fields&quot;
851
+ <table class="datatable">
852
+ <!-- -->
853
+ </table>
854
+ </td>
855
+ <td>9</td>
856
+ <td class="duration">2.13 s</td>
857
+ <td class="status">passed</td>
858
+ </tr>
859
+
860
+ <tr class="hidden passed">
861
+ <td class="trace" colspan="4">
862
+ <pre></pre>
863
+ </td>
864
+ <td class="screenshot-link" data-index="1"></td>
865
+ </tr>
866
+ <tr class="passed">
867
+ <td>Then </td>
868
+ <td>
869
+ check if plugin with slug &quot;flexible-checkout-fields&quot; is Active
870
+ <table class="datatable">
871
+ <!-- -->
872
+ </table>
873
+ </td>
874
+ <td>10</td>
875
+ <td class="duration">0.42 s</td>
876
+ <td class="status">passed</td>
877
+ </tr>
878
+
879
+ <tr class="hidden passed">
880
+ <td class="trace" colspan="4">
881
+ <pre></pre>
882
+ </td>
883
+ <td class="screenshot-link" data-index="1"></td>
884
+ </tr>
885
+
886
+ </table>
887
+
888
+
889
+
890
+
891
+ <h3 id="S_activate-and-deactivate-plugin-flexible-checkout-fields-tests;plugin-flexible-checkout-fields-is-inactive">
892
+ Scenario: Plugin Flexible Checkout Fields is inactive
893
+ <span class="scenario-tag">@flexible-checkout-fields</span>
894
+ </h3>
895
+
896
+ <table>
897
+ <tr class="header-row">
898
+ <th style="width: 100px;">Condition</th>
899
+ <th>Step</th>
900
+ <th style="width: 100px;">Line</th>
901
+ <th class="duration" style="width: 100px;">Duration</th>
902
+ <th style="width: 100px;">Status</th>
903
+ </tr>
904
+
905
+ <tr class="passed">
906
+ <td>Given </td>
907
+ <td>
908
+ user is logged in to wordPress
909
+ <table class="datatable">
910
+ <!-- -->
911
+ </table>
912
+ </td>
913
+ <td>5</td>
914
+ <td class="duration">0.28 s</td>
915
+ <td class="status">passed</td>
916
+ </tr>
917
+
918
+ <tr class="hidden passed">
919
+ <td class="trace" colspan="4">
920
+ <pre></pre>
921
+ </td>
922
+ <td class="screenshot-link" data-index="1"></td>
923
+ </tr>
924
+ <tr class="passed">
925
+ <td>And </td>
926
+ <td>
927
+ i resets the consent to collect data in the database
928
+ <table class="datatable">
929
+ <!-- -->
930
+ </table>
931
+ </td>
932
+ <td>6</td>
933
+ <td class="duration">0.03 s</td>
934
+ <td class="status">passed</td>
935
+ </tr>
936
+
937
+ <tr class="hidden passed">
938
+ <td class="trace" colspan="4">
939
+ <pre></pre>
940
+ </td>
941
+ <td class="screenshot-link" data-index="1"></td>
942
+ </tr>
943
+ <tr class="passed">
944
+ <td>When </td>
945
+ <td>
946
+ i open &quot;menu-plugins&quot; and deactivate plugin with slug &quot;flexible-checkout-fields&quot;
947
+ <table class="datatable">
948
+ <!-- -->
949
+ </table>
950
+ </td>
951
+ <td>13</td>
952
+ <td class="duration">1.16 s</td>
953
+ <td class="status">passed</td>
954
+ </tr>
955
+
956
+ <tr class="hidden passed">
957
+ <td class="trace" colspan="4">
958
+ <pre></pre>
959
+ </td>
960
+ <td class="screenshot-link" data-index="1"></td>
961
+ </tr>
962
+ <tr class="passed">
963
+ <td>Then </td>
964
+ <td>
965
+ check if plugin with slug &quot;flexible-checkout-fields&quot; is Inactive
966
+ <table class="datatable">
967
+ <!-- -->
968
+ </table>
969
+ </td>
970
+ <td>14</td>
971
+ <td class="duration">0.39 s</td>
972
+ <td class="status">passed</td>
973
+ </tr>
974
+
975
+ <tr class="hidden passed">
976
+ <td class="trace" colspan="4">
977
+ <pre></pre>
978
+ </td>
979
+ <td class="screenshot-link" data-index="1"></td>
980
+ </tr>
981
+
982
+ </table>
983
+
984
+
985
+
986
+
987
+ </section>
988
+
989
+ <section class="report">
990
+ <h2>Tags statistics</h2>
991
+
992
+ <div class="summary-table">
993
+ <table>
994
+ <tr class="main-header">
995
+ <th>Tags</th>
996
+ <th colspan="3">Scenarios</th>
997
+ <th colspan="4">Steps</th>
998
+ <th colspan="2"></th>
999
+ </tr>
1000
+ <tr class="sub-header">
1001
+ <th></th>
1002
+ <th>Total</th>
1003
+ <th>Passed</th>
1004
+ <th>Failed</th>
1005
+ <th>Total</th>
1006
+ <th>Passed</th>
1007
+ <th>Failed</th>
1008
+ <th>Skipped</th>
1009
+ <th>Duration</th>
1010
+ <th>Status</th>
1011
+ </tr>
1012
+
1013
+ <tr class="failed">
1014
+ <td>@flexible-checkout-fields</td>
1015
+ <td class="scenarios-all">4</td>
1016
+ <td class="scenarios-passed passed">3</td>
1017
+ <td class="scenarios-failed failed">1</td>
1018
+ <td class="steps-all">21</td>
1019
+ <td class="steps-passed passed">19</td>
1020
+ <td class="steps-failed failed">1</td>
1021
+ <td class="steps-skipped skipped">1</td>
1022
+ <td class="duration">11.16 s</td>
1023
+ <td class="status">failed</td>
1024
+ </tr>
1025
+
1026
+ </table>
1027
+ </div>
1028
+ </section>
1029
+ </main>
1030
+
1031
+ <div class="screenshots">
1032
+ </div>
1033
+ <div class="footer">
1034
+ <p><a href="https://github.com/leinonen/cucumber-html-report">Cucumber HTML Report Generator</a> by <a
1035
+ href="http://leinonen.se">Peter Leinonen</a> 2016.</p>
1036
+ </div>
1037
+
1038
+ <script>
1039
+ (function() {
1040
+ "use strict";
1041
+
1042
+ // Thanks to http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript/30810322#30810322
1043
+ function copyTextToClipboard(text) {
1044
+ // Puts the supplied text into a hidden text area to select it and copy it the clipboard
1045
+ var textArea = document.createElement("textarea");
1046
+ textArea.class = "copy-to-clipboard";
1047
+ textArea.value = text;
1048
+ document.body.appendChild(textArea);
1049
+ textArea.select();
1050
+ try {
1051
+ document.execCommand("copy");
1052
+ } finally {
1053
+ document.body.removeChild(textArea);
1054
+ }
1055
+ }
1056
+
1057
+ var failed = document.getElementsByClassName("failed");
1058
+ for (var i = 0; i < failed.length; i += 1) {
1059
+ if (failed[i].className === "failed" && !failed[i].classList.contains("hidden")) {
1060
+ failed[i].addEventListener("click", (function(i) {
1061
+ return function() {
1062
+ if (failed[i].nextElementSibling.classList.contains("hidden")) {
1063
+ failed[i].nextElementSibling.classList.remove("hidden");
1064
+ } else {
1065
+ failed[i].nextElementSibling.classList.add("hidden");
1066
+ }
1067
+ copyTextToClipboard(failed[i].nextElementSibling.textContent);
1068
+ }
1069
+ })(i));
1070
+ }
1071
+ else if (failed[i].classList.contains("hidden")) {
1072
+ var children = failed[i].children;
1073
+ Array.prototype.filter.call(children, function(child) {
1074
+ return child.classList.contains("trace");
1075
+ })[0].addEventListener("click", (function(i) {
1076
+ return function() {
1077
+ if (failed[i].classList.contains("hidden")) {
1078
+ failed[i].classList.remove("hidden");
1079
+ } else {
1080
+ failed[i].classList.add("hidden");
1081
+ }
1082
+ }
1083
+ })(i));
1084
+ }
1085
+ }
1086
+ })(window);
1087
+
1088
+ /**
1089
+ * Rouds a number to the supplied decimals. Only makes sense for floats!
1090
+ * @param number The number to round
1091
+ * @param decimals The maximum number of decimals expected.
1092
+ * @returns {number} The rounded number. Always returns a float!
1093
+ */
1094
+ var round = function(number, decimals) {
1095
+ return Math.round(number * Math.pow(10, decimals)) / parseFloat(Math.pow(10, decimals));
1096
+ };
1097
+
1098
+
1099
+ document.addEventListener("DOMContentLoaded", function() {
1100
+ var screenshotLinks = document.getElementsByClassName("screenshot-link");
1101
+ Array.prototype.forEach.call(screenshotLinks, function(failure) {
1102
+ var index = failure.getAttribute("data-index");
1103
+ var href = JSON.parse(failure.getAttribute("data-features"))[index].replace(/\s/g, "_");
1104
+ failure.innerHTML = "<a href='#" + href + "'>Screenshot</a>"
1105
+ });
1106
+ });
1107
+ </script></body>
acceptance/reports/html/screenshot/After_2464.png ADDED
Binary file
acceptance/reports/html/screenshot/screenShot1.png ADDED
Binary file
acceptance/reports/html/screenshot/screenShot2.png ADDED
Binary file
acceptance/reports/html/screenshot/screenShot3.png ADDED
Binary file
acceptance/reports/html/screenshot/screenShot4.png ADDED
Binary file
acceptance/reports/html/tracker_long_message_is_visible-14-1.png ADDED
Binary file
acceptance/reports/json/cucumber_report.json ADDED
@@ -0,0 +1,467 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "elements": [
4
+ {
5
+ "id": "activate-and-deactivate-plugin-flexible-checkout-fields-tests;plugin-flexible-checkout-fields--is-active",
6
+ "keyword": "Scenario",
7
+ "line": 8,
8
+ "name": "Plugin Flexible Checkout Fields is active",
9
+ "steps": [
10
+ {
11
+ "arguments": [],
12
+ "keyword": "Before ",
13
+ "result": {
14
+ "status": "passed",
15
+ "duration": 3776260858
16
+ },
17
+ "hidden": true,
18
+ "match": {
19
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:21"
20
+ }
21
+ },
22
+ {
23
+ "arguments": [],
24
+ "keyword": "Given ",
25
+ "name": "user is logged in to wordPress",
26
+ "result": {
27
+ "status": "passed",
28
+ "duration": 286095171
29
+ },
30
+ "line": 5,
31
+ "match": {
32
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/commonResults.js:9"
33
+ }
34
+ },
35
+ {
36
+ "arguments": [],
37
+ "keyword": "And ",
38
+ "name": "i resets the consent to collect data in the database",
39
+ "result": {
40
+ "status": "passed",
41
+ "duration": 27081581
42
+ },
43
+ "line": 6,
44
+ "match": {
45
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/wpdesk-helper/wpdeskHelperSettingsSteps.js:11"
46
+ }
47
+ },
48
+ {
49
+ "arguments": [],
50
+ "keyword": "When ",
51
+ "name": "i open \"menu-plugins\" and activate plugin with slug \"flexible-checkout-fields\"",
52
+ "result": {
53
+ "status": "passed",
54
+ "duration": 2133878763
55
+ },
56
+ "line": 9,
57
+ "match": {
58
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:9"
59
+ }
60
+ },
61
+ {
62
+ "arguments": [],
63
+ "keyword": "Then ",
64
+ "name": "check if plugin with slug \"flexible-checkout-fields\" is Active",
65
+ "result": {
66
+ "status": "passed",
67
+ "duration": 420396337
68
+ },
69
+ "line": 10,
70
+ "match": {
71
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:13"
72
+ }
73
+ },
74
+ {
75
+ "arguments": [],
76
+ "keyword": "After ",
77
+ "result": {
78
+ "status": "passed",
79
+ "duration": 2017470121
80
+ },
81
+ "hidden": true,
82
+ "match": {
83
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:35"
84
+ }
85
+ }
86
+ ],
87
+ "tags": [
88
+ {
89
+ "name": "@flexible-checkout-fields",
90
+ "line": 1
91
+ }
92
+ ],
93
+ "type": "scenario"
94
+ },
95
+ {
96
+ "id": "activate-and-deactivate-plugin-flexible-checkout-fields-tests;plugin-flexible-checkout-fields-is-inactive",
97
+ "keyword": "Scenario",
98
+ "line": 12,
99
+ "name": "Plugin Flexible Checkout Fields is inactive",
100
+ "steps": [
101
+ {
102
+ "arguments": [],
103
+ "keyword": "Before ",
104
+ "result": {
105
+ "status": "passed",
106
+ "duration": 943170015
107
+ },
108
+ "hidden": true,
109
+ "match": {
110
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:21"
111
+ }
112
+ },
113
+ {
114
+ "arguments": [],
115
+ "keyword": "Given ",
116
+ "name": "user is logged in to wordPress",
117
+ "result": {
118
+ "status": "passed",
119
+ "duration": 282878745
120
+ },
121
+ "line": 5,
122
+ "match": {
123
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/commonResults.js:9"
124
+ }
125
+ },
126
+ {
127
+ "arguments": [],
128
+ "keyword": "And ",
129
+ "name": "i resets the consent to collect data in the database",
130
+ "result": {
131
+ "status": "passed",
132
+ "duration": 30187140
133
+ },
134
+ "line": 6,
135
+ "match": {
136
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/wpdesk-helper/wpdeskHelperSettingsSteps.js:11"
137
+ }
138
+ },
139
+ {
140
+ "arguments": [],
141
+ "keyword": "When ",
142
+ "name": "i open \"menu-plugins\" and deactivate plugin with slug \"flexible-checkout-fields\"",
143
+ "result": {
144
+ "status": "passed",
145
+ "duration": 1161572176
146
+ },
147
+ "line": 13,
148
+ "match": {
149
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:17"
150
+ }
151
+ },
152
+ {
153
+ "arguments": [],
154
+ "keyword": "Then ",
155
+ "name": "check if plugin with slug \"flexible-checkout-fields\" is Inactive",
156
+ "result": {
157
+ "status": "passed",
158
+ "duration": 386512389
159
+ },
160
+ "line": 14,
161
+ "match": {
162
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:21"
163
+ }
164
+ },
165
+ {
166
+ "arguments": [],
167
+ "keyword": "After ",
168
+ "result": {
169
+ "status": "passed",
170
+ "duration": 1988750662
171
+ },
172
+ "hidden": true,
173
+ "match": {
174
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:35"
175
+ }
176
+ }
177
+ ],
178
+ "tags": [
179
+ {
180
+ "name": "@flexible-checkout-fields",
181
+ "line": 1
182
+ }
183
+ ],
184
+ "type": "scenario"
185
+ }
186
+ ],
187
+ "id": "activate-and-deactivate-plugin-flexible-checkout-fields-tests",
188
+ "keyword": "Feature",
189
+ "line": 2,
190
+ "name": "Activate and Deactivate plugin Flexible Checkout Fields tests",
191
+ "tags": [
192
+ {
193
+ "name": "@flexible-checkout-fields",
194
+ "line": 1
195
+ }
196
+ ],
197
+ "uri": "/tmp/tests/test-acceptance/features/tests_scenario/flexible-checkout-fields/activateAndDeactivateFlexibleCheckoutFieldsTests.feature"
198
+ },
199
+ {
200
+ "elements": [
201
+ {
202
+ "id": "tracker-message-flexible-checkout-fields-tests;tracker-message-is-visible",
203
+ "keyword": "Scenario",
204
+ "line": 8,
205
+ "name": "Tracker message is Visible",
206
+ "steps": [
207
+ {
208
+ "arguments": [],
209
+ "keyword": "Before ",
210
+ "result": {
211
+ "status": "passed",
212
+ "duration": 1056677632
213
+ },
214
+ "hidden": true,
215
+ "match": {
216
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:21"
217
+ }
218
+ },
219
+ {
220
+ "arguments": [],
221
+ "keyword": "Given ",
222
+ "name": "user is logged in to wordPress",
223
+ "result": {
224
+ "status": "passed",
225
+ "duration": 275564761
226
+ },
227
+ "line": 5,
228
+ "match": {
229
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/commonResults.js:9"
230
+ }
231
+ },
232
+ {
233
+ "arguments": [],
234
+ "keyword": "And ",
235
+ "name": "i resets the consent to collect data in the database",
236
+ "result": {
237
+ "status": "passed",
238
+ "duration": 1439808
239
+ },
240
+ "line": 6,
241
+ "match": {
242
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/wpdesk-helper/wpdeskHelperSettingsSteps.js:11"
243
+ }
244
+ },
245
+ {
246
+ "arguments": [],
247
+ "keyword": "When ",
248
+ "name": "i open \"menu-plugins\" and activate plugin with slug \"flexible-checkout-fields\"",
249
+ "result": {
250
+ "status": "passed",
251
+ "duration": 709212176
252
+ },
253
+ "line": 9,
254
+ "match": {
255
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:9"
256
+ }
257
+ },
258
+ {
259
+ "arguments": [],
260
+ "keyword": "Then ",
261
+ "name": "tracker message type \"short\" visible",
262
+ "result": {
263
+ "status": "passed",
264
+ "duration": 119925513
265
+ },
266
+ "line": 10,
267
+ "match": {
268
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/tracker/trackerResults.js:4"
269
+ }
270
+ },
271
+ {
272
+ "arguments": [],
273
+ "keyword": "And ",
274
+ "name": "Check if buttons skip and Allow & Continue visible in tracker message",
275
+ "result": {
276
+ "status": "passed",
277
+ "duration": 134937195
278
+ },
279
+ "line": 11,
280
+ "match": {
281
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/tracker/trackerResults.js:8"
282
+ }
283
+ },
284
+ {
285
+ "arguments": [],
286
+ "keyword": "But ",
287
+ "name": "i open \"menu-plugins\" and deactivate plugin with slug \"flexible-checkout-fields\"",
288
+ "result": {
289
+ "status": "passed",
290
+ "duration": 1033105179
291
+ },
292
+ "line": 12,
293
+ "match": {
294
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:17"
295
+ }
296
+ },
297
+ {
298
+ "arguments": [],
299
+ "keyword": "After ",
300
+ "result": {
301
+ "status": "passed",
302
+ "duration": 1977393669
303
+ },
304
+ "hidden": true,
305
+ "match": {
306
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:35"
307
+ }
308
+ }
309
+ ],
310
+ "tags": [
311
+ {
312
+ "name": "@flexible-checkout-fields",
313
+ "line": 1
314
+ }
315
+ ],
316
+ "type": "scenario"
317
+ },
318
+ {
319
+ "id": "tracker-message-flexible-checkout-fields-tests;tracker-long-message-is-visible",
320
+ "keyword": "Scenario",
321
+ "line": 14,
322
+ "name": "Tracker long message is Visible",
323
+ "steps": [
324
+ {
325
+ "arguments": [],
326
+ "keyword": "Before ",
327
+ "result": {
328
+ "status": "passed",
329
+ "duration": 958458537
330
+ },
331
+ "hidden": true,
332
+ "match": {
333
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:21"
334
+ }
335
+ },
336
+ {
337
+ "arguments": [],
338
+ "keyword": "Given ",
339
+ "name": "user is logged in to wordPress",
340
+ "result": {
341
+ "status": "passed",
342
+ "duration": 278898719
343
+ },
344
+ "line": 5,
345
+ "match": {
346
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/commonResults.js:9"
347
+ }
348
+ },
349
+ {
350
+ "arguments": [],
351
+ "keyword": "And ",
352
+ "name": "i resets the consent to collect data in the database",
353
+ "result": {
354
+ "status": "passed",
355
+ "duration": 19224355
356
+ },
357
+ "line": 6,
358
+ "match": {
359
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/wpdesk-helper/wpdeskHelperSettingsSteps.js:11"
360
+ }
361
+ },
362
+ {
363
+ "arguments": [],
364
+ "keyword": "When ",
365
+ "name": "i open \"menu-plugins\" and activate plugin with slug \"flexible-checkout-fields\"",
366
+ "result": {
367
+ "status": "passed",
368
+ "duration": 663565075
369
+ },
370
+ "line": 15,
371
+ "match": {
372
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:9"
373
+ }
374
+ },
375
+ {
376
+ "arguments": [],
377
+ "keyword": "And ",
378
+ "name": "Skip tracker message",
379
+ "result": {
380
+ "status": "passed",
381
+ "duration": 2302524439
382
+ },
383
+ "line": 16,
384
+ "match": {
385
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/tracker/trackerMessageSteps.js:4"
386
+ }
387
+ },
388
+ {
389
+ "arguments": [],
390
+ "keyword": "And ",
391
+ "name": "i open submenu \"Checkout Fields\" from menu \"toplevel_page_woocommerce\"",
392
+ "result": {
393
+ "status": "passed",
394
+ "duration": 794096829
395
+ },
396
+ "line": 17,
397
+ "match": {
398
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/menu/menuSteps.js:19"
399
+ }
400
+ },
401
+ {
402
+ "arguments": [],
403
+ "keyword": "Then ",
404
+ "name": "tracker message type \"long\" visible",
405
+ "result": {
406
+ "status": "failed",
407
+ "duration": 101550236,
408
+ "error_message": "AssertionError: expected 'Hey admin,\\nWe need your help to improve WP Desk plugins, so they are more useful for you and the rest of 30,000+ users. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. Find out more »\\nAllow\\nDismiss this notice.' to include '\\nWe need your help to improve WP Desk plugins, so they are more useful for you and the rest of 18,000+ users. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. Find out more'"
409
+ },
410
+ "line": 18,
411
+ "match": {
412
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/tracker/trackerResults.js:4"
413
+ }
414
+ },
415
+ {
416
+ "arguments": [],
417
+ "keyword": "And ",
418
+ "name": "i open \"menu-plugins\" and deactivate plugin with slug \"flexible-checkout-fields\"",
419
+ "result": {
420
+ "status": "skipped"
421
+ },
422
+ "line": 19,
423
+ "match": {
424
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/plugins/pluginsSteps.js:17"
425
+ }
426
+ },
427
+ {
428
+ "arguments": [],
429
+ "keyword": "After ",
430
+ "result": {
431
+ "status": "passed",
432
+ "duration": 2171911573
433
+ },
434
+ "hidden": true,
435
+ "embeddings": [
436
+ {
437
+ "data": "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iIiIiIiIiMjDZ+DAgUWynfy6gC5UAhjAysoKb28vPD1r4l7RHXsHe0wmE4mJSQQHB+Hv78/pM2cwZmTcVeAiIiIiIiIiIiIiIiIiIlI4hU4Ai4iIiIiIiIiIiIiIiIjIg8miuAMQEREREREREREREREREZGioQSwiIiIiIiIiIiIiIiIiMgjQglgEREREREREREREREREZFHhBLAIiIiIiIiIiIiIiIiIiKPCCWARUREREREREREREREREQeEVbFHYD8sx3Zv7u4QxARERERERERERERERF5ZKgFsIiIiIiIiIiIiIiIiIjII0IJYBERERERERERERERERGRR4QSwCIiIiIiIiIiIiIiIiIijwiNASwCmEym4g5BRERERERERERERERExMxgMNzRekoAyz+eyWTCZDLRe8+gLNM3dVtdTBGJiIiIiIiIiIiIiIjIP1lMTAxwZ0lgdQEtAqSnpxd3CCIiIiIiIiIiIiIiIiLA3eWulAAWAYxGY3GHICIiIiIiIiIiIiIiIgLcXe5KCWARERERERERERERERERkUeEEsAiIiIiIiIiIiIiIiIiIo8IJYBFRERERERERERERERERB4RSgCLiIiIiIiIiIiIiIiIiDwilAAWEREREREREREREREREXlEKAEsIiIiIiIiIiIiIiIiIvKIUAJYREREREREREREREREROQRoQSwiIiIiIiIiIiIiIiIiMgjQglgEREREREREREREREREZFHhFVxByAiIiIiIiIiIiIiIiIi8rCJjYvj4OGjBAReJikpCScnR2rX9KRJo8ewtbUttriUABb5h0hKSsJkMmFvb1/coYiIiIiIiIiIiIiIiDzUdu7ay4ZNW0hPT88y/dTps2zaso3ePXtQ16tOscSmLqBF/iGGDh3K33//Xej1li1bxieffHIPIhIREREREREREREREXn4bNm2g7W+G7G1tcHezi7LPGfnsiSnpPDLgiWcOnO2WOJTAljkHujbty+bNm3KMu3MmTN06tSJ5OTkYonJZDLd0Xr169enffv2RRyNiIiIiIiIiIiIiIjIwyckNIxNW7Zhb2/HkDcGM+TNweYkcIUKrrz77zd5tV8fDAYDy1as5saNG/c9RiWARSRP3t7edOnSpbjDEBERERERERERERERKXY7d+3FZDLh7uZGeZdyuFVwZcibg/GsXo0hbwzCwd6eKlUqU6ZMaRKTkjh05Nh9j/GOxwB2LufMYw0eo7pndUqXKoXJBLFxsQRcCODYiWNERUYVZZxF5olWLSjv4sKqNWtznN+yRTPKu7iwZu36+xxZVm2ffAIHBwfWb/ijWOOQeyc1NZV58+axbds2TCYTnTp14vXXXyc8PJz+/fvz66+/4u7uDsC4ceNwcHDg3XffzbKN6dOns3nzZjIyMvD29uajjz7CxcUFgOPHjzNlyhRCQkKoUqUK0dHR5vV++eUXtm7dSkxMDHZ2dnTp0oXg4GCOHDmCyWSie/fuDB48GIAVK1awb98+vvvuO4KDgxkzZgxhYWEkJSXh5ubGsGHDaNCgwX3aayIiIiIiIiIiIiIiIsXn/IULAPhfuMiCxcsY0Le3OQkMkJCYyIyffyEq6joA585foFWLZvc1xkK3ALawtKRzly68+cabNG/RnPIu5Vm6dCnLli2lvEt5mrdozptvvEnnzp2xsHjwGhh3aNeGx5s2znV+pw7taN6s6X2MKGdPdelE40aPFXcYcg/Nnz+fQ4cOMWnSJCZMmMC2bdvYtGkTFSpUoFatWuzfv9+87LFjx2jWLHvl8OyzzzJ37lx+/vlnkpKS+OWXXwCIjIxk5MiRtG/fnnnz5jFo0CAMBoN5vYsXL9KyZUsWL17MRx99xIoVK3BxcWH69OmMGjWKZcuWcfr06WzlJSQkcOHCBaZPn86vv/5Ks2bNGDNmDGlpafdgD4mIiIiIiIiIiIiIiDxY4hMSzX+fPH2GjZu3Zpm/cPEyQkPDzK/j4uLvW2w3FaoFsIWlJa/0eZkqVarmvZyFBU2bNqVcuXIsXboUo9FYqKC+HT+WJ1q1wMrKisSkJC5dusyf23ey/LdVxdJPtsid+PHHH/npp5/Mr289D4xGI2vXrmX48OF4eHgA0KlTJ/bt28fTTz9N27Zt2bFjBy+88AKBgYEkJCTw2GPZfxBQuXJl899PPfUU69atA2DHjh24u7vTt29fACpUqEDp0qWzrOvo6Ejp0qVp1qwZnp6euLq6UrFiRSpWrEi1atXw9/fH29s7x/dWoUIFAAYMGMDKlSu5du0a1apVu5PdJCIiIiIiIiIiIiIi8tAoWbIECf9NArtVcKVdm9ZZ5j//XDdmzJ5HYlISAHb/HR/4fipUArhTx05UqVKVBQvmAzBgwMAs/9906/yOHTuyefPmQgXl6lqenbt283/LfsPZuSw1a9Rg8MB+dH2qM/8a+h6xsXGF2p5IcRg4cCBPPPGE+fXFixcZM2YMAImJiaSkpDBu3Dhzy1yTyUTNmjUBaNu2LXPnzuXatWvs3buXRo0aYWtrm2X7RqOR+fPns3XrVuLi4rC1tTUneSMiInB1dS1wrI6OjsCJneMAACAASURBVCQnJ2d5nZiYmMcamezs7LCxsSE+/v7/ekVEREREREREREREROR+q1rFg5OnzlChgitD3hiMvZ0diUlJbN+5i6c7dzR3B30zCVy9WpX7HmOBE8Au5Vxo1Mgnz2WOnzhBw9vGAm3cuDGHjxwu9JjA4eERHD/hB8C27TtZ67uBJQvmMXTIW3z9zbcATPj6q8zunA0GTp48zYRJ33MtKBiAni/2oH/fl3F2diY8PIIPPxlFQEAgAD4NG/LHutU4Ojly9pw/X439hstXrpjL9qxRnYW//Ey1qlUICgpm/Lffc+z4CfP86tWrMfqTj6hTuxZhYeH8NHM227bvNM/PK65uT3ehd88XqeReEQtLS7797gd8N27C57GGjPhoGBUrunHp8hVKliyB38lThdpn8mApXbq0eQxfgLi4//1wwdHRkZIlSzJ69Ogcu3Z2cXGhXbt2/P777/j5+dGnT59sy+zdu5d169bxww8/4OHhwYYNG1i1ahUArq6u7N+/H5PJlKXr59zcvkxB1rnJwsICk8lU4OVFREREREREREREREQeVq2aP87JU2fMrxMTk5jx8zxCQsOIiIhiQN/emTMMYGVlRdPGeedX74UCD9L7mE9D85i+AwYMzNbqNzIykk0b/8g238LCgsca3P1YtiEhofy2cg2dO3bA2jozb73WdwMfj/iUkZ9+QalSTowc/iGQmaAd/uH7LP6/5bw55B1mzJ5DWFj4/2KNimLchEl8MuozLAwGJo77KktZDvYOrF2/gU9Gf87FgECmTfmeim5uAJQtW4a5s6YRHhHB8FGfsfnPbYwf8x9atWxuXj+3uACa/PdDHvHpfxgx6nOOHfejciV3pv34PecvXmTEp1+wdv0GHOwd7nqfyYOtS5cuzJkzBz8/P6Kiojh//nyWlrR9+vThjz/+IDw8nJYtW2Zb32g0YjAYMBqN2bpGb9euHTExMcycOZPg4GDCwsJITU295+9p+PDhzJo1656XIyIiIiIiIiIiIiIiUhxq1fSksU9DQkPDmP7zPKb/N/kLmWMCz/llITN+nkdiYhJdu3SilJPTfY+xwC2Aq1Wrnuu8tLQ0Vq1aRVp6Wo7zq3tW589tfxY+utv4nz+PnV1JXMq5EBwSwp69+8zzbKxt+PqrzwEoW6YMJpOJv3bvISQklFOnz2TZztVr1/hr9x4AYmJi+eXnGVRyr2hupXvsxAlWrFwNwJ69+1i5dBE9X+rBj1On07vni8TFxTH6868wGo3s2bsP1/LleX3QQHM8ucV1U3BICAcOHjK//uC9oYSEhPDpF2PM0xo3uvukuTzY3njjDX799VcmTpxIVFQUzs7OfPbZZzg6OgLg4eGBl5cXVapUwdraOtv6rVq14vDhw3zwwQckJiZib2+Pj0/mDwzKlCnDpEmTmDlzJkOGDMFoNFK+fHnKly9/T99TYmIiFStWvKdliIiIiIiIiIiIiIiIFKdeLz4PwOGjx7PN879wEYPBwFOdO9CmdfYGfvdDgRPApUo5ZRv796bNmzcTERGRbZ2by/fu/fLdxPg/N8dKJbO72cED+9P16c44ly1LYlISJUqUwNLSkuMnTnDs+AkW/zqH1b+vY9mKVYTnEB/AtWtBAJQtW9acAL7diZOnqF61KgC1PD05dtwPo9Fonn/46DE6tm9rfp1bXBkZGTluv0oVD06cPFnInSEPssWLF2eb5uXlxZYtW8yvbWxsePPNN3nzzTezLJeSkgLAqVOnCAgI4OOPP86xDEtLS4YNG8awYcNynO/p6cmkSZNynDd27Ngsr8ePH5/l9cSJE81/9+zZk549ewJQq1atLO8BYN26dea4L1++TKNGjXIsU0RERERERERERERE5FFgZWXFK71fokmjx9iz7wCXLl8hOTkFRwd7anp60qZ1S9wquBZffAVe0pBzb9GnT5/m2LFj+axa4J6m81S7Zk2SkpKJjIykR/dn6d+vD99M/J4LFwN4vGljPnhvKABpaen8a+j7tGvzJAP7v8KLLzzPu8M+5oRf9iRralpmt7g3u5XOibW1lXm+wWDIc7zTvOLKjclowtKy4B+FPNr27dvHhAkTqFixIiNHjsTFxaW4QyqQtLQ0hgwZkmXcYxERERERERERERERkUdVrZqe1KrpWdxhZFPgrGN8bFy2lr8AW7duZUD//gAsWLgwy7yby0dE5tz6tjDcK1bkpRefZ+u27aSlpVOndi38Tp5i05atAJQunbX/bKPRyJ/bd7Btx05+njGVF3t0zzEBnB8bGxsaNmjAlq2ZXVhfuBhAxw5tsbCwMLcCbuzTkIDASwD5xpWTCxcDeKpzR2ysrUlNy7kbbfnnaNu2LW3bts1/wQeMo6Mj3bp1K+4wRERERERERERERERE/tEKnAAOvHQJ53LOeS7jmMsgxpcvXy5cVIBr+fI0bvQYZUqXplatmvR66QVCQkKZMm0GAAEBgXTu1IFOHdtz5cpVqlerZl63ahUP6tWrS0BAII6ODjg7O3Py1JncisqmgqsrjzdtQskSJej1Ug8c7O1YuGQZAMtWrOSlF59n7H8+Y63vBurXq0vXp7owfORn+caVm6UrfuPFHs/x3cTxrFi5mhupN6jg6krgpUuF2WUiIiIiIiIiIiIiIiIi8g9X4ATwkSOHady4EYb/jsN7U7du3Vi9Zo3579uZTCaOHDpSqKDCwsJ5snUr2rdrQ2JSEpcuXWbuvPksX7maGzduALByzVqqVq3Cx8PexcnJifiEBM6cPYfRaMTZuSyDB/bHrYIriYlJHDh4iDm/zC9Q2afPnKOutzcTxn2FtZUVx0/4MeiNIURHRwMQERnJm0PeYcTHH/DdxPFERETw6RdfsXPX7nzjyk1kZBSD3/w3Hw17l3FjviAtPZ3w8AhOnT5bqP0mIiIiIiIiIiIiIiIiIv9shhp16uc+oO1tOnfuTNOmTQtVwMGDB9m8eXOhA5N/hiP7dxd3CJhMJm7cuEH/g29lmb6p2+piikhERERERERERERERET+ycLDw7G1tc3WOLcgCtwCGGDz5s1K5oqIiIiIiIiIiIiIiIiIPKAsijsAEREREREREREREREREREpGkoAi0g26enpxMTEFHcYZikpKXccz4ULF4iPjy/iiORhcv369SI5BoxGI1FRUUUQ0cMrNjaW5OTk4g5D7kJ8fDwXL14s7jAeSNHR0aSnpxdo2YyMDCIiIu5xRCL3T1paGidPnjS/Dg0NJSQkpBgjujuFOZ+L2918z5X762E/L4rT7d8/crtHu5vr64P++fxTvoM9zNeThzl2ebiu/ZLdP+18C4tPIS3DWNxhiMg/gBLAIpLNtGnTmDt3bnGHYTZ27FjWrl17R+u+/fbbXLt2rdDrmUwm0tLS7qjM5ORk+vTpw9GjR+9ofSk6P/30E7179+bQoUN3tZ2YmBieffZZPvrooyKJa8GCBXTv3v2u47qXbty4kW1av3798Pf3L4ZoJDdXrlxh2LBhPPPMM/Ts2ZOUlJQ8l1+7di1z5swpkm09SqKjo+nVqxfR0dHZ5uV0PVi1ahXffPPN/QovX3dzzYLM69a4ceN4/vnnee655zh+/HgRRicPg3PnzjF8+HDz6++//56dO3fe1TYzMjLIyMjIMm306NEsXrz4rrabn7zO59vlFOP9djffc+X+KorzAsDPz4+XX36ZhISEIojqwXT7/dDt3z9yu0e7m+trUX0+90pe38FyktN38QfVsmXL+OSTT4B7cz3Jyb2ov+/XtfBRdPv1/fbj917Xew/btf9RsWjRInr37k3Xrl3v+vtdUdYV9+PeZldAJJW+Wk9McuHvwcLiU6jw5TrCEoq2njeZ4Ea6ksoiklWhxgAWkfzNmjWLU6dOMWXKlDyX+/LLL7G3ty+yhFJRMplMxR1Csfvwww958sknef755wu9bokSJejWrRuVKlW6B5HdX5s2bWLSpEnUqlWLadOmAZk3TKmpqdjY2GBpaQlAnz59iIyMZPr06QQEBDBjxgwSExOxtramTJkyNGjQgF69elGtWrVsZQwePJigoCCMRiOlSpXC1dWVJk2a0KtXL+zt7e8q/qL6BbDRaCQ1NbVItgUQGBhIUlIS165do0mTJkW23aJy9OhRvv76a3777bfiDkXyMW3aNCpUqMDnn39OamoqJUqUeCC29bDJ67p3N9eD++VuY1y9ejWXLl1i2rRplChRIkvdm5iYyPz589m9ezcxMTG4ubnRs2dPnnrqKfMyK1asYOXKlcTHx9OkSRPef/99ypQpk62c4OBgJk+ezKlTpyhbtiz9+/enS5cuBdpOfus+Cn7++WfWrl1LSkoK9vb2eHh40KNHD9q1a1fcoRVaWloazz33HNOnT89y7W/bti1ubm73tOyCfo/NLUaRe61ixYp069YNOzu74g7lnnmU7oeKQ2G+i+/bt4/PP/+ctWvX5vndbc2aNaxcuZKFCxcWZagA1K9fn9KlSxf5dnPzsNTfD0ucReHW6/v8+fO5fPkyn3/+uXn+va73dO2//06dOsXSpUv55ptv8PDweKCeI+Z1b1MYl64nUm3chmzT1w1+gsaVyvBmi+o4lSh8auVe7am2M7bTs0Flhj7heY9KEJGHkVoAixSxGjVqEBgYiNH4v19dTZ48mVGjRmVZLjAwEE9PXZQfVHfTkspgMNCvXz9cXFyKMKLiUbduXYAsx/TcuXN57rnnWLp0KQAJCQlERkZSokQJatSoQVxcHImJiVSoUIFGjRphYWHB1q1bee+997h+/Xq2MiIiIjAajTRt2hR3d3euXLnCkiVLGDp06CPbfffw4cP54YcfeO6554o7lBylp6dnqcPkwXXhwgU6depEmTJlcHV1fWC29Si5m+vB/XK3MV64cIEWLVrg7u6Os7NzlgfINjY2/P3335QrV47HH3+c0NBQvvvuO06dOgXAli1bmD17NhkZGXh4eLB3714mTpyYrYz09HRGjRrFsWPHqFmzJvHx8UyaNInTp0/nu5381n1UREdH07JlS1avXs2MGTNo0aIF48ePfyh7FDGZTDn+CKtTp07Uq1evGCLKLrcYRe41Z2dn+vfvj4XFo/s45lG6HyoOhfkuXqNGDUwmE5cuXTJP27JlS7beXO7l8wdvb+/7+qOsh6X+fljiLAq3Xt/T0tKyJQMflHrvn/SZ3GsXLlzA09OTevXq4eTkRKlSpYo7JLO87m3uxIH3OhDyxbPmf51queLmVILPO3ljYTAUUdR3T61/RSQnagEsUsRq1qxJSkoK165dw8PDg/T0dHbu3Gke36t06dIkJSURHBxMzZo1gcxfzs2cOZNLly7h4eHBe++9R61atbJte8SIEQQGBhIXF4eDgwN9+/bN0tpn48aNLFu2jJiYGBo2bMiwYcPMv8TNq4zw8HC+++47/Pz8cHZ2xtLSkvr162crv2/fvvTt25euXbsC4Ovry6pVq5g7dy5paWksWLCArVu3kpaWRvPmzRkyZAj29vYcPHiQ8ePHs2rVKgBSU1Pp1q0bs2fPplq1aixbtgxfX18iIyMpWbIkCxcuzPbL0A0bNph/Ad2uXTvefvttbGxsCrX/9u7dy9y5c4mIiMDKyor69evz1ltvUbFixRw/y2nTpjFt2jQsLCzYtGlTnu/xds8++yxjx46lYcOG/PLLL2zdupWYmBjs7Ozo0qULwcHBHDlyBJPJRPfu3Rk8eHCBYhw7diwnT54kNjaWBg0aMGHCBKKjo5k2bRpHjhzB3t6ebt260atXL0JCQnj11VeZP3++ef1p06YRExPD6NGjiYiIYNq0aRw7dgwnJycGDBhAx44ds7yPSpUq4eTkRFxcHFeuXKFq1armbosPHDhA3759CQgIAKBOnTpZbuhatGjBv//9b4xGI0OGDCEgIIDDhw/TqVOnHPf3qFGjcHBwICYmhhEjRnDx4kWWLFnCW2+9BcC2bdtYsmQJYWFhVKtWjSFDhuDl5QXA4cOHmT17NlevXsXOzo7nn3+efv36Zdl+QkICQ4cOJSgoiI8++ijbQ4offviBw4cPExUVhb29vXnf55QIu3LlCq+99hp16tRh6tSpXLx4kX/96180aNCA7777DoBDhw6xYMECAgMDAXB1daVnz5506dKFWbNm4evry6hRo2jXrp257JiYGDIyMmjYsCHvv/++uexVq1axcuVKrl+/TtmyZXnvvfd4/PHHc9yPAGfPnuXHH3/k8uXL2NnZMXLkSBo3blyoYzg+Pt78Wb366qv07dsXgEmTJpn3UUHroLzqjltt376dadOmkZSURKVKlRg6dCgNGjQAcj72C3IMA4U6ByHzodnSpUuJjIykdu3aDB06FA8PD4Ac6ysrKyvmzZvHtm3bMJlMdOrUiddffz3bA445c+YQFBTEF198AZClbjSZTMycOZMtW7aQkpKCj48PX3/9NZB3HZeammrucq9SpUrMmjUrS/0K8M4779ChQ4d8W4fevq1ffvkl1/rFwsKC8PBwvvnmGy5fvmzu6rF///7m7d2ra0ZBj5n8rplr1qzh//7v/0hOTqZGjRp57pvbrwcAFy9epFevXsTHx1OvXj0+/vhjypcvD1DgY7Owx1Nu53ZuMd4qr+M6NTWVJUuWsGTJEnNcZcuWBcDa2po5c+Zga2sLwIwZM1i1ahWBgYHUrVuXNWvWAPDVV19Ru3Zt3njjDQ4dOsTVq1epXLmyufzDhw8TFBREkyZNGD9+PNu3b2fcuHGsWbMGb2/vPLcTHByc57o3Pf/885QrVy7XLjbXrVvHlClT6N27N6+//jqrVq1ixowZ9O/fnwEDBhAaGsrkyZM5ffo0lpaW1K1b13we+vv7M2vWLPz9/SlXrhwvv/yy+Tpys4V0WFgYAAMHDuS5555jypQp7Nmzhxs3blChQgUmTpyIs7NznseajY0NDg4OODg40KdPHzZs2MC5c+fw8fEpcF2anp7OokWLWL9+PUlJSTRp0oSvvvoqz/M5P3nVQzExMfz000/s27cPS0tL+vTpwwsvvADAm2++CYCPjw8TJ07k008/pVatWgwYMIDdu3czb948oqKiSE1NzXYexcfH89NPP7F3714AXFxcGDx4ME888US2+PI6n/OqJ3KKMb/lb8prfwYHBzNmzBjCwsJISkrCzc2NYcOG5bgdyPt7bm7n7jfffIPJZGLkyJFA5g/0Ll26xJgxYwBYuHAhJ0+eZMKECeZyNm3axC+//GL+ER/Ayy+/zJAhQ2jTpg3+/v7m3lzc3NwYNGgQzZs3B7JfS26/pt2UXx2+adMmFi5cSGRkJOXKlWPGjBk4OjoWuN7M6/qR0/Xi1rgPHjzInDlzCAkJwWQy8eWXX9KoUSPztgtzr5Df+zQajSxevJi1a9eSmJhImTJl6NixI4MGDcLf35+3336bLVu2AHlfr/Kq928XGhpK//79+fXXX3F3dwdg3LhxODg48O677+Z5zOb1HeVWhTnubr0fKoyiuL6GhIQwduxYQkJCSEtLo1q1agwaNAgfH59sy+b13mNjY5k4cSInTpzAYDDQu3dv83fiW7399ttcunSJkiVL0qpVK9555x2srPJ+3JZfnZzbd/Hbubi4ULp0ac6fP0+dOnUA2LFjB7GxsRw6dMhcZ164cIFWrVoVeD9u3LiR+fPnm+uLQ4cOMWbMGNasWYPBYODEiROMHj2a1atXs3r1avbt22e+DyqI/OrJgty33F5/3+pBvhbeKq9rzq33MJaWlubrw/bt2/Osy2/K6/jN69lRXnVSbnX4rdd3gN27d5uP38mTJ2NjY2Ou98aPH4/BYGDEiBEAxMXF8eKLLzJv3jxcXV0LdF8FxXPtv1Vu+6Kgx9j9uFfK7Ty4m3uom1JTUzl16pT5c775bONOn0vmJrfjOCgoiOHDh5ufkfTu3dv8A/uc7m0cHBwKfGzdzsXelgqOWZPIh65G0/THrZgm9QSgy+y/8AuJJSoplTIlrRnd0Zt3bmmJO3X3Bcb/eYaE1HQaVsy9x4TUDCNfbDrFosOXuZFu5FlvN77v/hilSljzx9lQ+i3ZT+RX3QFISc+g5IhV+H3UmXoVMhPw76w5yjtrjmJpMJD+7UtZtr3KL4jRG/0Ijk0GoKuXG25OJVh+7BqRiTd42qsC819+HKcS1ub3+P7vRzkREkv1svaMfbo+z3hntvSfuP0cs/ddJCg2GQdbKwJGdcPR1oq5+wOZsP0s4Qk3aOfpwuyXmuDiYJsljq3+YZQqaU3TymWZuvsCg5pWxcFWKSqRe+XR/cmpSDHx8PDA3t6ec+fOAZkPPF1dXWnQoIH5AdaFCxewsLCgZs2aXL9+ndGjR9OmTRsWLlyIj48PY8aMyXFMklOnTvHWW2+xcOFChgwZwrRp07h48SKQmYybPn0677zzDnPnziU5OZmZM2cC5FmG0Wjks88+w87OjpkzZ/Lpp5/m2j1KmzZt2L9/v/n10aNHadasGZA5pulff/3FZ599xqRJkwgKCmLSpEkF2md+fn40btyYxYsXM3ny5By7BWrcuDFz5sxhwoQJ7N+/n/Xr1+f73m4XFBSEra0ts2fP5vvvv8fKyopPPvkk1/GVhgwZgq+vr7msO32PFy9epGXLlixevJiPPvqIFStW4OLiwvTp0xk1ahTLli0zt2LKL8b9+/fz2muvsWTJEoYNGwZkdieekpLCjz/+yAcffMCaNWtYu3Yt7u7uVKlShSNHjphjOXz4MK1atcJkMjFmzBisra2ZO3cub775JpMmTcpxLK6bSdbz589z/fp1AgMDsbW15cyZM8TFxZmPwZuthW9nNBoL1Zq0dOnS5uTtgQMHgMwHcuPHjycxMZEWLVpw8eJFRo0aRXx8PEajkbFjx3Lp0iU6duxI06ZNs7U2SE9PZ8yYMQQFBTFgwIAcf6F+/PhxQkNDadSoES4uLuzatYsPP/zwjsZBPXv2LKNHj+bChQu0bt2aOnXqcPnyZfO+yq3sBg0aULlyZQ4dOmR+gHLhwgVmzJhBamoqTz/9NDVr1sw3gTBt2jR8fHxYvnw5U6dONd9UFeYYdnR0xNfXF19fX/r06WOe3qtXLxYsWMDQoUMLXAflVXfcqkGDBkydOpVFixZRt27dLA+tbz/2C3MMF+YcPHz4MD/88AP9+/dnxowZeHh4MGLECPNxkFN9NX/+fA4dOsSkSZOYMGEC27ZtyzEBl5dDhw6xZcsWJk+ezPLly80/fChIHTd+/Hh8fX2ZPXt2ocrMye3byq1+gcwHXX5+fkyZMoWFCxeaH17cdK+uGbfK65jJ65q5a9cu5s6dy9tvv83s2bOzPCzLye3XA4Dy5cszefJk5syZg8FgMHeTX5hjs7DHU27ndm4x3pTfcQ3wyiuvmM/5m8nfm2xtbVm6dCnffvstGzZswN3d3fwQ+erVq1hZWVG7dm0sLCzMPyC7fPlylm1cuXIFwNw65GZC4GaLpby2k9+6RWX69OkcOXKEhg0b0qZNG3PXpREREXz88cecPXuWFi1akJKSwqRJkzh27BiQ+aD90qVLeHl54e3tjZubG2vXruWPP/6gfPnydOnSBTc3txy7xc7LoUOHiIyMNCe5C1qXLly4kO3bt/P5558zf/58Xn31VSDv8zkv+dVDX375JcnJyUydOpWZM2fy5JNPZtmnvr6+jBs3Ltt2Q0JCKFmyJHPnzmXWrFmYTCbzeXRzu9HR0UydOpU5c+ZQsmTJHM+j/M7nvOqJnGLMb/lb48ttfyYkJHDhwgWmT5/Or7/+SrNmzRgzZkyurfVz+56b17nr4+PDyZMnzds4ceIEp0+fNre68vPzy5bsatWqFbGxsea68MqVK0RHR9O4cWNiYmIYPnw4jz32GLNnz6ZHjx58+eWXuX53uRPJycl8//33vPXWW6xatYovv/wSR0fHQtWbd3P9uHTpEhYWFsybN4+ff/7ZnCy7qbD3CnlZtGgRf/zxB6NHj2bBggU0b94cf3//HJfN63qVV71/uwoVKlCrVq0s9cSxY8fM9cSd1gG3upPjrrCK4voaHx+Pv78/P/74I7NmzaJFixaMHDnS/MPMglqxYgU3btzg119/Zf78+XTo0CHH5T744AMWL17MV199xa5du/jzzz/z3XZ+n0du38VzUrt2bfPzh8TERI4fP06PHj3YtWsXkHkvFBgYiJeXV4H3o4+PD1FRUYSGhgKZn3VSUpL52uvn50e9evXyTXTnJr96siDnel7XmIflWpjXNefixYu0aNGCBQsWMG7cOPP1Ia+6/Fa5Hb953bdB7nVSbnV4Tlq1amU+fm9/TtCqVSuOHj1qrjeOHDlC5cqVqVy5coHvq4rr2n9TXvuioMfY/bhXyu08uNN7qNvVq1fP/Dm3adPmjp9L5iW347hcuXKMHTuWpUuXMmDAAH766SdCQkLM691+b1MU9+x52XMpkknPNiRgVFcmd3+M99Yc5VhwDAArT1xj1AY/pvTw4fiHnendsHKu2/nPplP8dvwaywe0YPuQtpyPTGDwsoMFjmPyc4+R/M0LJI5/Idu8gKgEHG2t8B/xNLuHtmff5SiOBsWw8Y3WHHy/I8eCYpi2J/Ozjki4QcdZO2nvWZ7jH3bm3dY1eXH+XvN7+isggk61XLk0uhu73m6Po60VG8+G8v7vx5j2QiNOD+9CfEo6H6w9li2O68mpvLJoP4mp6Ry8ep1hOSwjIkVHCWCRImYwGKhTpw5nz54FMr+Ytm3blrZt27Jjxw4gMznk6emJjY0NmzdvxsXFhZdeeonSpUszYMAAwsLCcn2o6ezsTLly5Wjfvj2enp74+fkBmWNcdOnShcaNG+Ps7EyvXr3Yt28fQJ5lXLx4kYCAAP6fvfsMjKrK+zj+nWTSO4QkEEpCEGkiNSAgKkpRQUXQBQW7q4CLiKyrj4h1FbAuIggLirhIV0AWxQCKKAJi6BgIEEoCKQTSe2aeF3Fmk5ApKRjB3+dVMnPLuXdOSWNrBAAAIABJREFUuff+7zlnwoQJNG/enCuvvNLaM7my66+/np9//pnc3FzMZjO7d++29kL873//ywMPPEC7du2IiIhg/Pjx1vkCnREUFERQUJC1N1JloaGhhISE0LZtW66//nrrcVf3/Hl5eREWFkZERATPPPMMOTk51iBjZS4uLri7u+Pm5lbrY/Tz8yMwMJAePXrQqlUrQkNDadKkCT169CAyMrLCAyFHaQwJCSEoKIiwsDASEhI4cOAAEydOpFmzZnTu3JkRI0bw5ZdfAtCnTx9rPkhKSiI5OZno6Gji4uL49ddfGTduHA0bNqRPnz60bt26ynNheeAeFxdn3daoUaMwm81s377dmtcrD+n4448/8ve//517772X48eP4+Pj4/R8t5aer5mZmQAsXrwYKBs6efz48QwfPrzCeSkuLsbd3Z2rr76aiRMnXhDgXbBgAbGxsdxxxx0VeihWZeLEicyaNYtu3bqRkpJS4abMWZs2bcJkMvHggw/yzDPPVNkzoSpPP/00M2fOxN3dnT179mAymawPQfz9/bn++ut56aWXHPZW9PHxISkpieLiYho3bmy9Ga1uHnZ3d8fd3b3CW7HNmzcnODiY6667zuk6yF7dUV7Dhg1p3LgxDRo0YNiwYaSmppKbm2v9vnzer04eBufL4Nq1a+nfvz/XX389TZo0YcyYMRQXF1fIB+XrK5PJxJo1a7j//vtp3rw5LVu2pH///tZjd5aPjw8FBQWcPn3aOvcnOFfHubm5VairaqP8thzVLxaWobUqv5hwMdsMC0d5xlab+c033zBw4ED69u1LWFhYhYd0VancHkBZngoPDyc8PJyhQ4dat13dvFmd/GSrbNtKo4Uz+drV1dVa5quyYcMGvvnmGwoKCnBxcSEvL4/CwkLy8/Px8PCw1hOWl7jOnz9fYX3Lb+vl5XXBco62Y2/d7Oxspk+fzvTp0ykoKODs2bPW/6vLUt+2atWKhx9+mDFjxgCwevVq8vLyGDFiBOPHj2fixIlAWV1f3j/+8Q+mTp1Kr169rNsKDQ3lzjvv5LXXXnOqh8GmTZu46667GDJkCM899xzR0dHWALCzdenatWt58MEH6dixI40aNaJly5ZOl+eq2KuHEhIS2L9/P5MmTSIyMpLGjRtX6C1pNBpxd3e3GSDw9PQkODiY5s2bM2zYMGs5SkhIYM+ePUyaNImIiAhCQ0NtvqDoqDw7qicqp9HR8pb0OXM+w8LCCAsL47777iMjI6PKQBXYvs61V3a7detGamoqp0+fJi8vj8TERLy8vDh+/DhFRUXs37+f7t27V9iPr68vXbt2td6TxMbG0r59e3x9ffnuu+8ICgrigQceICwsjEGDBtGzZ0/++9//VpnmmjAajXh4eHD8+HFcXV2t1zPVqTdr2354e3sTHBxMWFhYlS+dVudewZ5Vq1bxwAMP0KlTJ4KDgy94saYyW+2VvXq/KuXvORMSEsjJyaFTp061qgPKq0m+q666al8BmjVrRpMmTRg5ciSdO3eudn728fHh7NmzZGVlWa9BqxIVFUVgYCDt2rWjW7du1hGSbHH296jqWrwq7du3t96Tbd26lQ4dOnDbbbexbds2CgsLOXr0KKWlpdbnFM6cx7CwMJo2bWqdhiA2NpaoqCj27NkDlAWravtbW/ZTVT3pTFm318ZcKm2hozbH39+fhg0b0qFDB2v7YK8uL89W/rV331Y+XZXrJFt1eFUMBoM1/xoqDZEbHR1NdnY28fHxAPz000/07t27WvdV9dH2l2frXFQnj/0e90pVlQNnjtdWm1SZ5f7DUk/V9LmkPbbysYeHB5GRkQQEBDBw4ECCgoIqvORT/t6mtvfsHd/+hsDJqwicvIpe72+yuVyTAC/CA7wY2bk5ncMD2XLsLACf7DzOA90jGN6xKZENfBh+dVOb25jz0zFeHdSBa1o0pH2YPx/c2YXP9yWRluPcy2hGFwOeRlc8jFW3G95uRkL9PLmqcQDDOzYlwNONqxoHcFXjAIZeFc7OxLJp25bsPkWYnyevDOpAZAMfHoqOZHC7xvx72//at1BfT0L9PGkTUnZtMmNLPA90j6B/61Ca+HvxzA1t+PLgmQvScPfVzWgR5M1Tq3czfXBHlu9JZPX+004dn4hUn/rXi1wEXbp0YdOmTRQVFfHDDz8wa9Ys/Pz8mDlzJmlpaRw4cMA63Fh6ejonTpyo0HPKYDCQnp7uMMgTFBRknSM1PT2d2NhY1q1bZ/2+tLSUgoICu/soKSnB09PTqfk6WrduTVhYGN999x0tWrSgpKSEDh06kJeXR3Z2tnWoMcD6d0pKygUX/LUVFBTEkSNHgNqdPw8PDxo3blzhLUFbHB2jZUgbZ/j5+ZGfn1/hf1s3F47SmJycjKenZ4WHSuHh4dZhKHv37s3SpUvJzc3l+++/p3Pnznh7e5Oeng6UvRVpYTKZqhzmqHv37syfP5/9+/dz+vRpWrRowZAhQ6xDXh47dgx3d/cL1k1NTeX8+fMEBQXRv39/7r77bqd7PyUlJQFYl09LSwPKAsCV9+Hi4sJTTz3F+++/z9SpU5kzZw4TJ060DlloWQ6w9uZyRocOHdi5cyenT5++YEh0S56uPLeRhaVXna2H1fa4ubkRGBhIamoq+fn5tG3blqFDh7J69WqefvppoqKieOGFFyrkxcomTZrEv//9b+677z569erFmDFjcHd3r7M8bOFsHWSr7qhs06ZNLFmyxNorDLA5R1N18nBl9spgcnJyhSFlXV1dCQsLs5apynJzcykoKOD111+vkC+qepHGXl3Yrl07nnzySebMmcOsWbN48MEH6devX7XruLqsbx3VL478Hm1GdfJM+fyalpbmVF5xVuWyADXLm47yU1Vl25myW918XZV58+aRm5vLsmXL+Oyzz5g/fz5TpkzB09OTwsJCTCaTNTAMXFDfW9JpKXvll/Pw8LC7HUudWtW6BQUF1mFULefQ8n/lNsNR3f3II49w+vRpFi1axPLlyxk5ciSjRo2ytkELFy5k4cKF1uUtbUtVBg8eTGxsLFu3bmXr1q1cd911TJo0yeEcZH369OGxxx6jpKSE06dPM3v2bKZOnWodWtFRXZqbm0tWVtYFQ9bWpjw7cx1Z3d7NVSlfjs6cOYOnp6d12Fd7HJVnW/WErZdmnKlXqns+vb29re2wI+Wvc+2V3euuu84atAkODqZTp04EBASwc+dO0tLSCAoKqrKduPHGG5k7dy4PPvggW7du5ZprrrHuq/K1RXh4uPVhqrN1s73l3NzcmDp1KvPnz2flypXccccd3HfffU7Xm47aD8uD7bpi7zrc3nHm5uaSnZ1NixYtarTf8mWhuvX+9ddfz/z580lMTGTr1q106dIFDw8Ph3nW2d+3YcOGNcp3NVVX7StARESEdUSJ8uwd+/Dhw8nPz+fpp5+mRYsWjB079oJrvOzsbGbMmMGuXbsoLi7GYDDY7ClsUdtrrMq6dOnCRx99RE5ODhs2bOCGG24gPDycxo0b8+OPP5KRkUGbNm3w8vKq1nm85ppr2LFjB7179yYtLY0xY8awYcMG+vfvz/79+3n66adrlN6qlK8nHZX1ysPcVnYptYXVvZa1tA+26vLybOVfe/dtVV2nWMqhrTq8uvP6enp60rVrV77//nsiIyPZtm0b06dPr9Z9VX20/eXZOhfVyWMX+17JVjmo7vGWr4cdqelzSXvthq18HB8fz4cffsjRo0cxGo3k5ubaPIbq5K2qrHvkWpoGlJ0ndxuB1cpC/Tw5l1cEQGJGPtdFOb6mzS4s4Vx+Ea2C//cyxxWNyv4+fj4XgwFs3MbUSANvD3KL/vdSQZCXO/vOlHXCOH4ut0I6AK4I9rV+X5XTWflsiE+pECQuNZvJKyrF2921wrIDrgzjve8P8/7QLnRsHMDn+xK5vUPV0/OJSO0oACxyEURHRzNv3jy+/vprmjdvbr3g6tKlC9988w179+7lrrvK5okICQnhiiuuqDDknbNcXFysDzFDQkLo1q2bdS6T8uzt4+jRo9YeM8HBwQ73effdd/PFF1/QqVMn+vXrh9FoxGg04uvrS1JSknVYMksALzQ0FLPZTE5ODkVFRTZ7FlVH5eOu6fkzmUykpaVVedzu7u4Vhunz9va2e4zVUfmC3d4FvL00WvZtuZi29L5LSkqypumKK66gadOmbNmyhW+//dY6fFhISAguLi4sX77cYZAyKiqK4OBgjh07xvHjxxkxYgQ+Pj506tSJHTt2UFJSQnR09AW/7dChQxk7dqz9k1GFlJQUPvnkEwDrjWxoaCjp6ek89thjFS7SGzcum3/kxhtvpHfv3mzcuJEZM2Ywffr0CnOWjRw5kjVr1jBr1izCw8Od6olsefu8YcOG1pvaoqKyC3hL74uzZ89WGUjo1KkTX331FfPnz+fQoUPWt5ury7LtsWPH8pe//IXFixezevVq5s2bd8Gce+UFBwfz3HPPcfbsWV599VVmz57Nc88953Qerpz/bXG2DoKq647ysrKyeOONN3jxxRfp1asXp0+f5sEHH7S57+rk4crslcHQ0FDreYGyG9bk5GSb5dzPzw8vLy+ef/75KodiLc/X19f60K0qAwcOZMCAAcTExDB16lRat25d7TrOzc0NDw8P0tPTHT4cc8RR/eKMi9lmVDfPlM+voaGhnDp1yqljcKY8lH/wVZu86Sg/2SrbjtJY3XxdmdlsxmAw4OPjQ5cuXfjss8+sIzRERkby66+/cujQIa688kprD4HKgQ9LfrQMHWrpQRQREeFwO5aHkVWt26hRI2vA19EcwJa621bgNioqio8//phffvmFd999l08++YTevXtbz9NNN93EoEGDLtheVXx9fZk+fTrHjh1j1qxZbN68mQ4dOjici9vd3d360NAyfHT5Of4c1aU+Pj54enpWKF9Qu/Jsrx46fPgwBQUF1vnXLIxGIwaDwam2xKJ8OQoODqagoIDs7GyHPR7tlWd79URVaXS2XqnJ+SxfB9lTua6yV3b79u3L1q1bCQkJITo6moCAAJYtW8bp06ernCsZyoac/Oijj1i/fj379++3zv0eGhp6wagn5Y/JURtm4evra7cOb9euHW+//TZxcXFMnjyZkJAQWrVq5VS96eh6vC7bQLB/HW7vOH18fPDy8iI1NdXh3IZVKZ8HbNX7tjRq1IgbbriB1atXs2/fPuu1v6M86+zvCzXLdzVVV+0rlAX/bP2Wto7dzc2Nhx56iHvuuYe5c+fywgsvVKiToezloPT0dD766CN8fX0dDh0Ljn8PZ6/FLVq3bk1gYCCbNm3i4MGDTJkyBSi7R1q/fj2enp7WnoXVOY99+/blmWeeYcuWLXTt2pVu3brxzjvvsGXLFiIiIqz3YnXFkvcdlXVHbcyl0hbW5lrWVl1enq386+i+zd5+q6rDK08D40z+HTBgAB9++KF1eqMrr7wSwOn7qvpo+yur6ly0adOmWnnsYt4r2SoHtcl3jtT0uaQ9tvLxm2++SdeuXa1zSluGt65Kde7Zq9I0wIuIBtVrd1wMBut5a9HAm7jULIfr+HkYCfJy48jZHLo1K3uhJD4tp2wbQT6YzZBRUERBSSmeRtcL1vc0ulJY6vz0a5UDygaDwfp/iyBv/vtrxRfg4s/m2D0PzQO9GdA6lDeHXG13v2dzC5m2KY7PRvXgq7gzxJ/N4fMHejmdbhGpHg0BLXIRREREEBISwvz58ys8KBw0aBDLli0DsL7Nf8MNN3DixAkWLVpEcnIyycnJ1rc6q2PQoEGsXbuW77//nrS0NE6dOmW9SLS3j5YtW9KuXTumTZvG0aNHSU9Pt/t230033UR2djZr166tcGyDBw9mwYIFHDx4kOPHjzNjxgx69+5NYGAgERER+Pj4sGDBAuv+64qj8+fj40N8fLx1Dtrk5GT27dtHcnIy8+bNo7S0tMoLwPDwcLZv305KSgq//vorJSUldo+xLjmbRih7YN62bVveffddTp06xa5du1iyZAmDBw+2LnPrrbeyYMEC0tPTrQ9lWrVqRWRkJG+//TYJCQmcPXu2wnxelVkeGJhMJq699lqg7KbT8oZlVUNQVterr77KuHHjePDBB0lMTCQyMpK//OUvAAwZMgSATz75hCVLlrBs2TLmzJlDSEgIhYWFPPLII/zrX//iwIEDmEymC97sjYyMZNKkSZhMJqZNm0ZWlu2L79dee43nn3+eDRs24OXlRc+ePfH398fT05PU1FTefPNNAgMDiYyMJD09nQkTJlww92q/fv2477778PDwICYmhnPnyobRqUnvzF27djF+/HgWLFhgvcm13Og988wzzJkz54J19u3bR2ZmJh4eHoSHh1vLtLN5uHHjxhQUFPDDDz+QnJxcZW+JyuzVQWC77rCwlFGz2UxRUZHDm8zq5mFnDR48mJiYGDZv3syZM2f48MMPMRqNdm8UBw4cyLx589i3bx/p6enEx8dXWY927NiRuLg4vv32W86ePVvhYWNqaioJCQkUFBTQsmVLDAYDOTk5NWojrrrqKpYtW8bJkydJS0urMHehj48PZ86csVsGLJypXxy5mG1GdfNMeUOGDCEmJoavv/6atLQ0uyNBVNUe2FPbvGkvP9kq247SWJN8bWF58ee5557jpZdesr58YhllYejQoQBMmTKFcePGcfLkSbp160azZs2IjY2lf//+PPXUU3Tt2pXmzZuzc+dOnnzySd577z0Aa0DU3nYcreusDh064ObmxubNm5kyZcoF8369+OKLvPbaa/z444/WXsdubm4MGjQINzc3Nm7cyIIFC1ixYgWzZs3C1fXCBy8WixYt4rnnnmP16tXW4frc3d3Jyclh8uTJNocHLSoqIjMzk9TUVHbs2MGaNWsq9HBxVJcC3HzzzXz00Ufs2rWLtLQ04uLiHJZnHx8fiouLrb09fXx8SEhIoLi42G491KpVK1q1asWbb77J0aNHrXWZi4sLjRs35rvvviM1NdXm3Ke2tGzZkqZNm/L++++TlpbGkSNHbPbQslee7dUTVaXR2XqlLupHZzgquzfccAP79u1j27Zt9OrVi65du3L8+HG+++47+vXrV+U2XVxcuPvuu5k5cyZdunSxPqC+4YYbOH/+vLXu/frrr9m2bZv1wX7Hjh3ZsGED+/fvJz093WY7Yq8OLy4uZu/eveTm5hIcHExAQADZ2dnVqjcdXcvYawOdYe86vHy5cNRW9e3bl4ULF5KQkEBycnK1y4CFrXrf1jUglL34+PXXX5OamkqvXmUPVB3lWXvXKJXVJN9Vvv6ofI/mDEf5pPzvY7F582ZSUlKIiYlh27Zt9O/f/4Lt2jt2S71mNpuJjIwkNzf3gjSbTCZrQKmkpMTm9X75c+Do96jqWtxe+2EwGKyjNvXq1csa2O3fvz/79u0jNjbWer9WnfLWpk0bGjRowPz58+nbty++vr60b9+euXPn2v2tbbUn1WGvrDvTxlwKbWFtrmVt1eXl2cq/ju7bbLFVh1cWHh5OXFwcCQkJnDx5ssr65JprrqG4uJjZs2dXCCA7e1/1e7b9AwcOvGCoYFvnorrXBxf7+VpV5aA2+c6Rmj6XBNt1ha18bDmOoqIiSktLHT5rsZe31q1bZ7NNrQuPXxPFwp0n+GhHAomZ+RxLtz28+GPXRPHC1/v56UQ6B5KzGPd5LEM7hBPi60GHsAACPN2Y8vUBjp/L5fi5vArrXtHIl7UHT3PifB7bT56juBrB4MpGdG5OcnYBU77eT8K5XD7akcDag2d4pIft0VYejI5kzrZjrNibSGJmPodSszlyNueC5WZsieeeLs0ZeGUYr8Yc5OO/dCfYx6PGaRUR+9QDWOQiiY6OZv369Vx33XXWz3r27InRaKRz587Wt5mDg4OZPn06c+fOZenSpbi4uNCnTx8mTZpUrf316dOHnJwcPv30U5KSkvD19eX+++8nPDzc7j4MBgMvv/wyc+bM4dlnnyU3N5egoCCGDRtW5X6MRiO33normzdvrvAW4X333YfZbOaVV16hpKSEnj178vjjjwNlQ/xMnjyZDz/8kFWrVuHu7k6rVq1q9OZ2ZY7O37333svHH39M165dgbJhbd577z3r0FFvvPFGlekYMWIEr7/+Og899BDBwcG8+eabdo+xLjmbRii72X/ppZf44IMPGD9+PD4+Ptx+++3cfvvt1mUGDBjAxx9/zG233WYNjLq4uPDaa68xa9YsnnnmGfLz860PWqsaFqlHjx6sW7eOsLAwWrVqBZQNL/3ee+/ZDVA7IyQkhMTERGJjY/H09KR58+b06dOH4cOHW3t9WebQXbx4Mbt27cLd3Z2oqCgKCwvJyMjAaDSyefNmXFxcaN26dZVvnPbp04ebbrqJDRs2MG/ePOscjpWlp6eTlpZGq1atGDt2LP7+/gA89dRTzJ8/3zqv5eTJk3n33XeJi4vDaDTSpEmTCsM0jho1yjrf8MKFC/n0008dzv9WlcLCQs6fP8+hQ4fw8vKiR48ePPzww0DZUEZVDen06aefsn//flxcXIiKimLChAmA/XJaXkhICPfffz/vvvsupaWl3H777Q7fgrZXB4HtusMiMDCQJ554gtmzZ/Paa6/h4eFBixYtbM4bWd087Kxu3boxYcIEFi5cSFpaGm3atGHatGl2h2199NFHWbBgAdOnT7e+7f3CCy9c0Gutbdu2PProo8ybN49z587h6+trzTNHjhzhvffeIzMzk8DAQEaOHEmbNm0Aqt1GPPnkk7z99tuMGzcOKOvFbpkrqW/fvsTExPDhhx9eMDxuZc7UL45czDajunmmvG7duvHss8+yaNEiZsyYgYeHB23atKnyd66qPbCntnnTXn6yVbarSmP5oXNrkq8tioqKCAkJYd++fRQXFxMaGsq9995rvU644YYbSElJYeXKlZw4cYJrrrmGp556CsAaeAkICLBeb7z33nscOHCABg0aMHbs2AovxNnajqN1Lf7617/aPaaGDRsyefJk5s6dy/bt2/H29iYyMtLaW7m0tJTdu3dTWFhIaGgoDzzwgHXqgHfeeYe5c+dy6NAhzGYzTZs2tY4KURWTycSRI0eIjY0lICCAIUOGMGDAANLT09m/fz9paWkXDFcbFBTEF198waZNm3BzcyM4OJjo6GhrnQ+O61Ioy0NGo5G33nqLc+fO0aJFCz788EO75TkiIsI6z/wnn3zCHXfcwfTp04mJieGWW26xWQ9Z8vsHH3zAP/7xDwoKChgwYADjx49n7NixzJw5k9WrV9O2bVveeustm+erMqPRyMsvv8yMGTN46KGHaNCgAfn5+VVeD9krz35+fnbriarS6Ey9Uhf1ozMcld2QkBA6deqEq6urtc3p1asXhw8ftvamqsqgQYOYO3duhYfNgYGBTJs2jdmzZ7Ny5UqaNGnClClTrNd9d9xxB4mJibz44ovk5+cTGBjIzTfffMG27dXh58+f55133rEOOdm1a1cGDx5crXrT0bWMvTbQGfauwyuXC3tt1eOPP86sWbOYOHGitTdXTYZGtlXv27oGBGjevDlt27alRYsW1vPnKM/au0aprCb5rvL1R/l7NHvTmpTnKJ+U/30s+Xb16tW89dZbNGzYkKeeeqrKKUjsHfuWLVv44osvKCwspHHjxtZ6r7x77rmHadOm8cADD1BcXExAQADDhw93eA7s/R5VXYvfcsstNtsPKLtfi4mJYeDAgdbPAgMD6datG3FxcdZzUt3rlEGDBrF06VLrCEr9+vVj165dVQbTwXF74ixHZd1RG3MptIW1uZa1/DaV6/LybOVfR/dtttiqwyu79tpr+fHHH3nyySfx8PDgqaeeuqD3vdFoZMiQISxdurRCnnX2vur3avsLCgowmUwX1Le2zkV1rw8u9vM1W+WgNvnOnpo+l4QL21gLW/l4/PjxzJw5k1WrVuHi4kKDBg3sTm1nL28lJCTU+EUtZwy8MoxP74nmnxt+ZdznsXi5udKjeQO83S58mfTlge0xm83c9clPFJWaGNyuMe/c1gkAb3dXlo6+holrdjNjSzxebq50CQ8kwLOs7n62Xxvu+c922k77mvAALzaNuY5mgd41SnOIrwcxj/XlqdW7eff7eKIa+rDi/mvoHG67A8ydV4WTkd+Jl785wJGzOQR6ufPywPYXDCX94oD2lP724sEPT/TDq4rzICJ1xxDV5qo6HD1epHpit/9Q30nAbDZTWFjI6J8fq/D5+lu/qKcU/TFZhpnJyMjgxRdf5KGHHqrzIb4utuXLl7Nt2zbefvvt+k6KTZdCGi9Xlp7HS5curVGgtrz09HTGjRvHFVdcgdlsZufOnZjNZmbNmlVn86IVFBQwfPhw5syZ4/SDs/pwOdQdUn363QXKesEuWLCAMWPGcOedd9Z3ci5pf8YylZSUhI+PD66uriQkJPDyyy8zffr0Op1f9M8mNzcXFxcXvvzySzZt2sSsWbOqPXfj5awur8Mtc4db5lx96623uPHGG6s9ckFVbF0DWkYuOHDgAG+88QazZ8+mUaNGtd7fpejw4cOMGzeuwhzxIpcL1eW/n127dvHWW2/x6aef1uk5/jNe14mISM2lpqbi4eFRo5El1QNYRJxy9uxZHnjgAXx8fLj77rt1cSpiR1ZWFkFBQezevRuDwUBUVBT33HNPnT60Li4uZsyYMX/o4C+o7viz0u8uANnZ2fj7+3PjjTfWd1IueX/GMjV37lx2795NSUkJTZo0YcyYMQr+1tJHH33EV199Rbt27XjppZcUMLiINm7cyPLly8nLy6NBgwb069eP2267rU62besacNu2bUybNo0mTZrw3HPP/WmDvyKXO9Xlv5+goCD+9re/1fk5/jNe111qNh9N4/rZ39V3Mv5Ujjx3M1ENfR0vKCLVoh7AUq/UA1hERETk8mUymfRgUkRERERERESkBmrTA1hPY0RERERE5KJQ8FdERERERERE5PffEE4IAAAgAElEQVSnJzIiIiIiIiIiIiIiIiIiIpcJBYBFRERERERERERERERERC4TCgCLiIiIiIiIiIiIiIiIiFwmFAAWEREREREREREREREREblMKAAsIiIiIiIiIiIiIiIiInKZUABYREREREREREREREREROQyoQCwiIiIiIiIiIiIiIiIiMhlQgFgEREREREREREREREREZHLhALAIiIiIiIiIiIiIiIiIiKXCQWARUREREREREREREREREQuEwoAi4iIiIiIiIiIiIiIiIhcJoz1nQCRy82ZzDwmrNnL14fOkFVQUt/JqTV/TyMDr2zMv27rSOMA7/pOjoiIiIiIiIiIiIiIiNihALBIHXvk0++JScql2NsXvC/9TvZZpSZWHUwiJyODdX8bVN/JERERERERERERERERETvqNDoVGBRE7z6963KTIpec9QcTKfbyAtdLP/gLgKsLxV5efHMwsb5TIiIiIiIiIiIiIiIiIg7UWQ/goKAGjBo1Cn9/P7w9vYjZsKGuNi1ySSk1mcDoVt/JqFtGN0rNpvpOhYiIiIiIiIiIiIiIiDhQZ10UmzRpjL+/HwDRPXrQv/9NdbVpERERERERERERERERERFxQp0FgFNSUir8Hx39xwsCe3p60rdPbzw8POo7KSIiIiIiIiIiIiIiIiIida7OhoAODQ294LPo6B4YMPBNTEy1tvXmG6/Rp/c1GI1GzmdkkJR0mjVr17FqzVrMZnON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BF/LB2ENZcFas0tZEBfAaP7fdwbKgrzWZcv/z//WqbCPcr18jQYwu1ZcTkRERERERERERERERC4LCgCL1Cs7QVhDpaCwvfXsBnOrWFexXxERERERERERERERkcuSi+NFRERERERERERERERERETkUqAAsIiIiIiIiIiIiIiIiIjIZUIBYJE6Z4CS4vpORN0qKUbjRouIiIiIiIiIiIiIiPzxKQAsUseMRhc4f+7yCQKXFEPKmbLjEhERERERERERERERkT80Y30nQORyM7h9U1btPQmnkwBzfSenDhjAAP3bhdd3QkRERERERERERERERMQBBYBF6tjse67Fz3M73/yaSEpWfn0np9ZC/T0Z0LYp0+/sUd9JEREREREREREREREREQcUABapY2EB3ix88Ib6ToaIiIiIiIiIiIiIiIj8CWlSTxERERERERERERERERGRy4QCwCIiIiIiIiIiIiIiIiIilwkFgEVERERERERERERERERELhMKAIuIiIiIiIiIiIiIiIiIXCYUABYRERERERERERERERERuUwoACwiIiIiIiIiIiIiIiIicpkwVneFtm3bcuedd1b4bOXKlcTFxdVZokREREREREREREREREREpPqq1QPYy9uLgQMHXvD5wEGD8PL2qrNEiYiIiIiIiIiIiIiIiIhI9Rmi2lxldrTQfaNH06x5c6c2eOrkSRZ++mmtE3Yx+fv7cd+99/Cfz5aQkZlZ38n5U4vd/kN9JwGz2UxxcTEFBQWUlJTUd3JERERERERERERERETkT8xoNOLp6YmbmxsGg6H66zuzUOXgb0F+PgcP/gpAu/bt8PT0tLnsH1FwcDD3j76HlatWk5GZyeTnnsHNzY0XX/lnfSdN6omlIJlMpvpOioiIiIiIiIiIiIiIiPyJubi4YDRWeyZfq2qvWZCfz7z588n8refsT9t+4uGHH64QBK6tobcP4e8TJ3DXyNEknT5d4Tt3NzdWLl3ET9t38Pq0t+pkf4lJSbU6iXJps7w54ebmVs8pERERERERERERERERESlTk96/UIMA8IGDv1qDvwAZGRkcPHCQLl27VFju+eefv2Ddf/7TuR62wcENcXMz8vhfH+KFl16r8N3wYXcQFhZKUGBgdZNu04KFi+psW3JpqmkBEhEREREREREREREREfkj+UN2ew1u2JBTiUn0v7Efc+d9zKnEJKCs9++oe0Zw6lQiDRoEVVjn5oH9efD+0TQKbsiBg3FMe/tdTp1KLFvP3Z2nxo9j0ICbKCoqJu7w4Qrrvjj5Wby8vHj2+RcBmPbPV4ju3hUMBvbvP8i0t94hMaliT2QRERERERERERERERERkT8al+qu0K5dO/z9/a3/BwQE0K5d2zpNVGBAADt+3sn2HTsZdc8I6+e33DwQs9nM4mUrCAwIsH5+fd8+PPv3p1mybAUTn/k/DIayIK7Fs3+fyI39rudfM2fzz6lvkpOdY3f/a/67jr8/O5nnJr9IQIA/zz3zdJ0en4iIiIiIiIiIiIiIiIjIxVDtHsBeXp488sijHDx4EID27dri6eV1wXLlh3uuajhoe4KCAjl+8iTfbNjIv96ezuw588jIzGTkX+5iydIVnE1PJyjof0NAP/zg/Xy2ZBmfr1oDwOvT3mbVisVERrTg3Pnz3DJoAC+9+gZffxMDQOLp0wzof6PN/f+4dZv1b3c3d/75ypRqpV9EREREREREREREREREpD7UaAhoLy9Pulaa87cu+fv7kZubR+yuPRw9lsCwO+/g4MFfCWkUzOer1tC+fTt8fX0xGAyYzWauaBVFVMuW3DdqZIXthIWG4uPjg6urK3v27XN6/w/dP5pbbh5AwwYNyM3Lw9PTE1dXV0pLS+v6UEVERERERERERERERERE6oxTAeBTJ0/SrHlzpzZ46uTJWiUIwMfHl7y8PAA+W7qcCX8bS+erO7Lqy/+Sm5dHXl4eBoMBHx8fcnJyKCkpYcGni9iw8dsK20lNSyOiRQsAjK6uTu176O1DGD1qJFOnv8ORo8eI7t6ViU8+UetjEhERERERERERERERERG52JwKAC/89NOLnY4KfH28KSgoAGDTt5t58okxdO/WhX9OexOAvPx8AHx8vMnJyeH4iZO0jIjg+IkLg88nTpykuLiEHtHdOZWY5HDfba5szb79B1gfswGAwEB/B2uIiIiIiIiIiIiIiIiIiPwx1GgI6KpY5vktP/dvTXl7e5OfXxYALikp4b33ZxHepDFnziQDUPDbd74+vqSQyiefLuKfr7xIatpZtu/4GQ8Pdzw8PFkfs4HcvDyWLFvOE2Mfw8PDnUOH4omKamlz38eOJTCg/430v6kfJ0+eomVkZK2PR0RERERERERERERERETk91CrAHBAgD+3Dh5CeHh4tb6zx9PTExcXF/J/6+ULELNhU4Vl8n/rHezr61P2/cZvwWDgsUce5K7hQ8nMzOSbmE3WXrwzZ88lIzOLEXffRcMGDcjIzODnnb9Yh5kub+WqNUREtODvT43H39+f7Jwcfo07hMlkqtZxyB9PfHx8fSfhknTFFVfY/E7nVOfnYtK5rUjnQ6rDXn4RERERERERERGRy5shqs1V5pqufO+99xARUbGHrKUHsL3vRCxit//wu+0rPj6exo0b/277uxycOXPGYdDpzxxkcHT8ynM150ze+zOdW50PqQ5H+UVEREREREREREQuby61WblJk4q9e0tKSpz6TkRERERERERERERERERE6l6tAsBnzpyu8P+pxESnvhMRERERERERERERERERkbpXqwDw2i/XcuLEcYqKijh+PIH/rv3Sqe9ERERERERERERERERERKTuGWuzckZmJv/5z6JqfyciIiIiIiIiIiIiIiIiInWvVj2ARURERERERERERERERETkj0MBYBERERERERERERERERGRy4QCwCIiIiIiIiIiIiIiIiIilwkFgEVERERERERERERERERELhMKAIuIiIiIiIiIiIiIiIiIXCYUABaRP7S4uDhmzJjBF198AYDZbGbx4sVMmTKFvLy8ek7d7yspKYlt27aRkpJS30kR4Pjx42zZsoXz58/Xd1JERERERERERERERKwUABa5SEpLS0lJSakySHn+/PkLgkanTp1i8uTJLFiw4PdK4h/Sxx9/THh4OHPmzAFg+fLlvPDCC2zfvh0oO6+PP/44//rXvygqKqpyncvVihUrWLJkic0A8NatW/nHP/7B999/X2f7vBjbvFz85z//YeXKlWRkZNR3Uv5w7NV/lzLV3SIiIiIiIiIiInIpMNZ3AkT+qNLS0li3bh3Hjh0jJyeHgIAAOnbsyODBgzEaHRedN998k+TkZMaNG8cVV1xh/XzFihX88MMPDBw4kJtvvtn6eUJCAjk5ORw4cOCiHM8fwZtvvsnHH3/MuXPnKCkpoWHDhnTu3JknnniCPn36ALBp0yZycnLYsGEDjz32mFPbrck6f0S1zXNxcXEUFhYSFxdH37596yRNF2Ob9SUrK4uYmBj2799PVlYWfn5+tGnThgEDBtCgQYP6Tl692L17Nz/88AOJiYmUlpYSFBREhw4dGDRoEO7u7jXerq3672Ir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YGAgzZo1Y+/evUyaNOmc/RaLhbfeegtvb288PT0doUXlypUv9raUmS+++IKff/6Z5ORkx7Sv9957b5FtGzduDNjD2tGjR/Phhx/SqFEjIiIi6NOnDxs2bCh1/4MHD2bixIkcPXrUMdVqeSvJM3exwsLC2LNnDxkZGdhsNlq0aIG/v3+hUZRvv/224xkGCo1yL4127dqxZMkSkpKSLtuI7otx11138cknn5CcnMxXX31VaJ+rqytDhw497/Ft2rRh+fLlnDp1irfeegsfHx9SU1MLtbnQZ8LVJDQ0lObNm7Nnzx7CwsIICwtz7DOZTDRs2JDQ0FAiIyNZunQpGzduJDs7u9A5fvzxR+Lj4/Hz83OshVzwhwXFff717duX6dOnM2/ePJYsWUJubi4Affv2veRrysvL4+effyY3NxeDwVBoxHFB4H2h96hHjx5s27aNffv28corr+Dq6oqTkxNvvvlmiT+727Rpw4oVK0hISOD1118H7J/HVatWpW3btiW6lvPdWxEREREREREREZELuegAeNy4cSVqN2HChIvtQqTceHh40Lp1a6KiosjIyMDDw4Nq1arRs2dP6tatC9jXrnR1dWXJkiWcPHkSs9lMcHCwYxRrz549SU5OJjw8nKysLPz8/LDZbDRs2JDbbruNVatWObZf7AjP+++/n5UrVxIdHY2rqyvHjh0jOTkZJycnsrOzCQkJITY2lvT0dPz9/enatWuh6W+vtFq1ahEQEEBSUhLp6el4eXnRunVrBg8ezBNPPFHkMbfeeisjR45k+vTpjgBk8uTJjB49msjISMeIvdLw8vJi1apVfPjhhxw4cIDg4GBH+Fpe67KW5Jm7WH5+fpjNZkwmE61ateKuu+46p02VKlU4efIklSpVYuDAgQQHB19UX66urowaNYply5Zx8uRJ/Pz82LJlC3Bp681eqsDAQMaMGcOSJUuIjIwkLS0NLy8vGjZsyM0333zBadGdnZ155pln+PPPP4mIiCAtLQ1PT0+CgoIcI2Uv9JlwNTEYDDz44IP8/fffbNmyhVOnTmGz2fDz86NRo0bYbDY6depEeno669evJzMzE3d390Jrjvv7+xMfH09cXBxeXl507tyZm2++GSj+869geujFixeTlJRElSpV6N27d4mD0fOxWq107NiRffv2kZKSgtFoJCAggPbt2ztG0V7oPapevToj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iIiIiIiIiIiIiIhIBaEAWERERERERERERERERESkglAALCIiIiIiIiIiIiIiIiJSQSgAFhERERERERERERERERGpIBQAi4iIiIiIiIiIiIiIiIhUEAqARUREREREREREREREREQqCAXAIiIiIiIiIiIiIiIiIiIVhAJgkYtks9lITEwscfu0tDSys7MvY0VSkRxJziI6Kau8yxARERERERERERERkWuMAmCRixQWFsb48eOL3Ge1WrFarYW2Pfnkkxw+fPhKlFZqiw6cpN0X6wh4eykj5+9lT0I6jT9eTWxazhWvxZJvw5JvK7Rt8Ixt/G9t1BWvpTyNnB/B3H0J5V2GiIiIiIiIiIiIiIhcY5zKuwCRsjZ27FgOHDiA0WjEz8+PRo0aMXjwYGrVqlWm/dhstiK3m81mhg0bxvvvv1/mfV4O2WYrj8/dw2s9GzCoWTWcjAYs+fnc3zqYSh4uV7SWXEs+we+tYM2jnWga6O3YfkezIGr7u1/RWkRERERERERERERERK5FCoClwklOTubBBx/k+uuvJyUlhRUrVvD666/z6aef4uvre9n7t9lsWCyWy95PWTmSnE1qjpkH2gTjZDQ4to/tXv+K12LDRp41/5ztd7esfsVrERERERERERERERERuRYpAJYKycPDA19fX3x9fXnggQdYvHgx+/bto1OnTuTl5TFjxgzWrl2LzWaje/fuDBs2DKPRSFxcHG+++SbJycn4+/tz++2307t3bwByc3OZOnUqa9euxdnZmcqVK5+3hlGjRgEQGhrK66+/DsDkyZNJSkrCw8ODO++8k759+zraL1++nLlz55KWlkazZs144oknigysw+PSGL0wgvD4dPzcnPjujlC61anEjtg0Xl6yj70nM6jt586rPRrQu2EVAN5eeZDf9sRxKiMPJ5OBQc2q8V7vxrg5mcix2APXSu8sBeDBNsE827kOrSet5eiYnvi5O2PNt/G/tVF8tzWGtBwLgV6uDGkRxPieDVh+6DSPztlF9JieAORYrFR9dzkbnuhM00BvPlkfzdTtx4hLz8XTxUT4Mzew9OBpXly8j/RcCw0qe/J+78Z0qRXguMbrvgoDoHudSvw5vB13/bKd1kE+jlD6112xfLQuirj0XNpU9+F/fZrSsLLnBa/1bPP2JfD2qoPEp+cCcFP9ylTzdmXO3gQSs/K4qUFlvryt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VFQUn0/63PF63Lhxhfb//fffrF279pKL+mzSZKZ8+xXTpn7H1J+mExsbh7ePN+3btmHyV98yc9Zs7hx0O++8MZ55CxbSonkz+va+hRfHjr/kvkti7fowoqKi+d/ECfww9ScSk5IJCa7B2nVhnDx16oLHx8bGkZaWzkMP3MeCRYupHhTEn38t4O4hd7J7917APs11SkrK5b4UEREREREREREREREREalAymwN4LIKfwGOHT/BfQ89xmOPPMhjDz+Ij483aWnp7NqzF1c3V+LjE3jsyWd4ecwoPnz//zh16hSvvv4Wa9YWPWV0WcvPz+fxESN5cfRzvDj6OYxGEydiY9kRvqtEAXCe2cw7E9/nmaeeoPsNXTlyNIawjZu4udeNPPX4o5gtFvbvP8hbEyZegasRERERERERERERERERkYrCUK9xi9ItpnuWghHAZRn+yn/L9k1XJrQXERERERERERERERER+S8o1RrARVH4KyIiIiIiIiIiIiIiIiJydbikAFjhr4iIiIiIiIiIiIiIiIjI1eOSAmCFvyIiIiIiIiIiIiIiIiIiV49LngJaRERERERERERERERERESuDgqARUREREREREREREREREQqCAXAIiIiIiIiIiIiIiIiIiIVhAJgEREREREREREREREREZEKQgGwiIiIiIiIiIiIiIiIiEgFoQBYRERERERERERERERERKSCUAAsIiIiIiIiIiIiIiIiIlJBKAAWEREREREREREREREREakgFACLiIiIiIiIiIiIiIiIiFQQCoBFRERERERERERERERERCoIBcAiIiIiIiIiIiIiIiIiIhWEAmARERERERERERERERERkQpCAbCIiIiIiIiIiIiIiIiISAWhAFhEREREREREREREREREpIJQACwiIiIiIiIiIiIiIiIiUkEoABYRERERERERERERERERqSCcyrsAkbJms9nKuwQR+Q8wGAyXfA59XomIiIiIiIiIiIgIlM3vnAsoAJYKpSBMyczMLOdKRKQi8/T0xGazXdI/yPq8EhEREREREREREREom985n00BsFQ4BaGKn59fOVciIhVRSkpKmf1DrM8rERERERERERERkf+2svydcwGnw/3Gl9nJRK4GmlJVRC63sg6ARUREREREREREROS/q6wDYGOZnUlERERERERERERERERERMqVAmARERERERERERERERERkQpCAbCIiIiIiIiIiIiIiIiISAWhAFhEREREREREREREREREpIJQACwiIiIiIiIiIiIiIiIiUkEoABYRERERERERERERERERqSCcLtTAADxxXT36NgnCzeni8uJsi5VF++L5asNhbBd1BhERERERERERERERERERuZALBsAv9mjExH6hl9zRrU2r4+3qxPur91/yuURERERERERERERERERE5FwXDIDvDA0ps84GtwxRACwO97asUd4liIiIiIiIiIiIiIiIXNPi03N4cdE+lh48SXqupbzL+U/zdnXipgaB/K9PE6p5u5VbHRcMgL1cL9ikxMryXHJtu7dlDSYPaF7eZYiIiIiIiIiIiIiIiFzTnvp1AyvjszF7eIPnxS3nKmUj3ZrPX/vjyEhNYc6jPcqtDj0FcsUp/BURERERERERERERESkbyyPjMLt7gEmxX7kzGTG7e7AiMq5cyyjVk5CZd+6w8UOnMzianFVmBU3o05zY124tUdvDY/vydu+yCxKdjAbGdG/E3jG3kPveIBLfGsDiR6+nXbB/mfXxX1fRw9+jR2P4868FbN+xs8j9ZrOFtevC+HHajCtcWfk5dDiKKT9NZ8myFcW2udB9ExERERERERERERGRollt+eDkXN5lSAEnZ/t7Uo5KFQDXeGu+IwQ+lmIPfe/9eRNL98fz3aZonpmzg0OnMwBYsj+eEX9sZ098aqkK2hWbSpCPG1U8XR3bGgd6s3PUTbSu7ufY5u3qRJ0AT8JjU0p1/uIYDfDng114t28LFkfGM2hqGE/N3k50UibO+ouJMlHRw1+AH36cxvg33mbHzl1F7k9MSmLEyFF8/sWXV7iysjPutTe54cZb2Llrd4naL1q8lI8/ncTO8KLvCVz4vomIiIiIiIiIiIiIiEjJlGpRXh9XJw6ezsDH1Znm/1vCyie7sflYEve1q8W3G6N4oH0d7v9lM3893JUX5+/i/f6hPDRzC5tH9ipxH+Fx9kC3ZXVflh88CcCgFsG0rO7H4JYh7Igt2O+HwQA7T9hf+7s788UdbbitWXWy8qxMDjvM28sisNpsAJgMBsbf1JQnO9fD08XEvL2xjPhjO8nZZgAeaFebvk2C6PfdWhZGxjvqmRl+zPH9hfr4YUh7uterQqCXK5l5VqZtO0pmnoXhbWtR3cedzTFJDJ2+gdi0nItq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XuHraAInV9sqZePpArLRWPxoX3vcs55Fafd0hVIBWEREREREREREREREROS6YDh/HfO8WxCXNvYCMS+67z8aiuVynnHn5GzAXgh2drGtfLaervDaV/KevUK5lNhXwVm/pVEBWERERERERERERERERESuMQbbds7Gq3clb3mpACwiIiIiIiIiIiIiIiIi16areCVveTm0WD+hsnOQ69qdlZ2AiIiIiIiIiIiIiIjIVcwA5kJwcKzsRARs/xaVvMrYeOEuIiIiIiIiIiIiIiIiInIlcjAZIDXldOFRKpW5EE6ewMFUuSVYbQEtIiIiIiIiIiIiIiIicpXq3qgai/bGQnwcYK3sdK5zBjDAbQ2qVmoWKgCLiIiIiIiIiIiIiIiIXKU+6dsGT2cHVh48wcnMvMpO57oW5OnM7fWrMrZni0rNQwVgERERERERERERERERkatUkJcr0+5rV9lpyBVEZwCLiIiIiIiIiIiIiIiIiFwjVAAWEREREREREREREREREblGaAtouWYlJCRUdgoicg1ycXGp7BREREREREREREREREqlArBcs8LDwys7BRG5BsXHx1d2CiIiIiIiIiIiIiIipdIW0CIiIiIiIiIiIiIiIiIi1wgVgEVERERERERERERERERErhEqAIuIiIiIiIiIiIiIiIiIXCNUABYRERERERERERERERERuUY4VHYCIiIi17uEhITKTkFEREREREREREREKoGLi0uFx1QBWEREpJKFh4dXdgoiIiLlkpqairOzc2WnISIiIiIiInLVSktLq/CYV8QW0F6eXpWdgoiIiIiIiJRRampqZacgIiIiIiIiIv9Q6QXgJk2a8OBDD1Z2GiIiIiIiIiIiIiIiIiIiV71ybwEdGhrKbbfdRo2aNXEwGYmNjWPt2rUcPny4IvMTEREREREREREREREREZGLVK4VwLVr1+ahhx8iMzOTr2bPZvr0GcTGxjF48CCaNWta0TmKiIiIiIiIiIiIiIiIiMhFKNcK4F69erF71y4WLFhgvxYbG4vFYiaiR0/27N1HkdnMf+65h5o1a+Lh5kbksSi+/OJLHBwciOgRQdOmzTAXFpKenl4sdvUaNYiIiCCoShWSkhL5+eeFxMfHA5QYLyIigmbNm+Ps5MTRo0eZPXv2JTwOEREREREREREREREREZGrV5kLwH7+fgQEBDB/3rxz2rZu3UanTp2pWaMGkZGR1K9fj0U/L+TQkSM4OToC0K1bN8Jq1eLLL2aSm5tHx44dqFUrDAAPD0+GDB7MqtWrmfPnn7Rr3457772X8ePHY7FYzolXt15dmjdvzrSpU8nIzMTT0/MSH4eIiIiIiIiIiIiIiIiIyNWrzFtAe3jYiqzpGRnntJ255u7uZr+Wlp5OdlYWqampADRv0YIVK1YSExNLcnIyhw8fsfdt3qI56Rnp/PHHH2RnZ7Ny5Sp8fHwIqhJUYrz83DwcHR3x8/cnLy+PpKSkst6OiIiIiIiIiIiIiIiIiMg1o8wrgLOyMgHw9vI6Z/tmby8vALKzc0oc6+zsjIuzs70Y/E9eXp4EBlZhzJgx9mtWrHh6eXIi4cQ5/aNjYvh54UK6d+9ORI8IVixfwe7du8t6SyIiIiIiIiIiIiIiIiIi14QyF4BTTqVw8mQiLVu1Ijomplhby9atyMzKIjo6usSx+fn55OTmEBgYaD/X92zpqenEn4hn8meTLzqfnTt2sHPHDpo3b07//v2Ji4/jVPKpst2UiIiIiIiIiIiIiIiIiMg1oMxbQAMsWDCfZs2b0at3L6rXqEG10Gp07dqFTh06sPCnnzCbzaWO3bplC126dqF2ndp4enrgdXrVMMDu3bupUqUKnTt3wtfXFx9fH6pWDSk1lre3D0FBQTg5OZKQcBKw4ursWp5bEhERERERERERERERERG56pV5BTBATEwsM6ZN57bbb2fokCEYjQbi4+P56qs5HDp06LxjV6xchdlcRJ/effD28iI3L5fDR44CkJGZwRczZtKtezc6dOyE1Wph3779LPjxxxJjVQ2pSp/evXF3dyMrO5u1a38nNi62PLckIiIiIiIiIiIiIiIiInLVM7Ro295a2UnI9Wv1ssUVGs9qtWKxWMjNzSUkpPTV4yIi5RUfH4+rqytGoxGDwVDuOPp9JSIi14LIyEiCg4MrOw0RERERERGRq1ZaWlqFfOZ8tnJtAS0iIiIiIiIiIiIiIiIiIlceFYBFRERERERERERERERERK4RKgCL/AsyMzM5evRoqe1ms5m0tLTLmJGIiIiIiIiIiIiIiIhcD1QAFrlIubm53HvvvezcufOCfRcuXMj06dNLbZ80aRIzZsyoyPREREREREREREREREREcKjsBESuNAMHDiQxMbHYtX79+vHwww/To0cPQkNDL3kOq9V6zrXc3Fx69epVYn9/f3++/fbbS55XRERERERERERERERErm0qAIuU4LHHHqNz58729y4uLhgMBu6///5/bU4XFxe+/vprACIjI3nllVf44osvcHZ2xmQy/WvziohIyQoKCnBycqrsNERERERERERERETKRFtAi5TA3d0dPz8/+x83NzcA7rrrLnbt2gXYCgNTpkxhwIAB9O/fn6lTp2KxWEqMl5iYyKhRo4iIiGDQoEH8+eef5/QxGAwEBgYSGBiIr68vYFv5GxgYiJ+fHwMHDmTJkiX2/osXL2b48OEAzJo1i4EDBxIREcHAgQOZNGkSOTk59r5JSUm88cYb9OnTh8GDB7NixYqKeVAicl3LyMigT797aHlTe9asXVfZ6RSze89ebul4O3d0v4v4+BNlGvvV3G/ofEd32tzS6YJ9n3nuBe66uz+ffT6tvKmKiIiIiIiIiIiIVCitABYpp1mzZrFt2zY+/PBDzGYzL730EtWrV6d79+7F+lksFl599VVCQkKYMmUKubm5TJgwoczzderUic2bNxMREQHAzp07adu2LQCHDx+mbdu23HPPPSQmJjJhwgTGjRvHK6+8gtVq5X//+x9BQUHMmDGDv/76i7Fjx9KgQYMK2c5aRC6/pctWMHvu1xw5GklGRgYBAQG0adWSYUMGc0OjhhU617Fjx9m1Zy+pqakMGVx8F4Sdu3azd99+ABYtXkLnTh0qdO7StG3fmVOnUkps8/Dw4M+tG/ht2QoSk5IgCdZv2MiAfv930fGPHY8mNi4OV1fXC/ZdvOQ3AG7t1PGi44uIiIiIiIiIiIj8m7QCWKQEEyZMoE+fPvY/mZmZxdotFgsLFy7kgQceoEaNGoSHh9OlSxc2bdp0TqyjR48SGRnJs88+S40aNahfvz5169Ytc06dO3dm69atZGdnY7Va+fPPP2nTpo293cfHhypVqtC4cWNGjBjB2rVrycjI4MCBA/z111888cQT+Pv70759e+rVq8eWLVvK/mBEpNJNm/EFTzzzXzZv2capUykUFpo5cSKBnxct5nh0TIXPN37CRJ57YTSz53x9Tlurli245eabqB4aSv8yFFgvh149I6hTO5wbmzS+bIVpERERERERERERkSuBVgCLlGDIkCF06PB3wcDd3b1Ye3Z2Nnl5ebz99tsYDAYArFZriYXdpKQkXFxc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axe8vH0oKiri+LFj/Prrr6SkpADg7uFBz549qVO7Nnl5eWzdupXf160DqxVvbx/69+9HYJUquDg7s2btGmJjY3F3c+Ott94CYMXy5axes4aIiAiaNW+Os5MTR48eZfbs2RXzxERERERERERERERERERErlCXfAawg8lEs2bNcTA5UJCfD8Adt99O3Xp1mT59BiYHEw8MHkxSUhLbt23H39+fwkIzEz/9FEdHR2677TaGDh3KJ598gtlsZuB995Kbm8fnn3+Ol7cX/fr1p7CgkI2bNuLu4U5YWBjjPhpHQaFtruCqVcnOyeG9994DwFJURN16dWnevDnTpk4lIzMTT0/PS71NEREREREREREREREREZErXrkLwHf17EmPHhE4OzlhNJo4cOAARyMjMRgMtG3blvnz55OcnATAzp07aVC/Adu3bQcgvyCf1NRUAObNm8eoF0dRv359kpOTqVmzFu+88y5ZWZkkJyezbu3vtG7Tho2bNtrnPpVyyv46uKrt7yKz2X4tPzcPR0dH/Pz9SUxKIi8vr7y3KSIiIiIiIiIiIiIiIiJy1Sh3AXjFyhXs3b2Xtje1pW69unz11VcAOLu64uzszH8GDMB6uq8BiDsRX2Ics9lMakoqvn6+FBUVkV+QT1ZWpr09OSUZXz+fMuUWHRPDzwsX0r17dyJ6RLBi+Qp2795dntsUEREREREREREREREREblqlLsAnJubR0ZmBitXraJ+g/rcfMvNbNywkbzcXPLy8/nuu285dPDQBeMYDAa8vb3IyMgkNS0NZydnPD09yMzMAiDAL4DUlLRSx5sLzTiYTOdc37ljBzt37KB58+b079+fuPg4TiWfKiGCiIiIiIhcDZKSknB0dMTHp2xfEBURERERERERuZ4YLzWApaiIRT8vomvXrvj6+gK24mu3O++kZs2aeHp5EhJSFVdXF/sYP19fatasia+vL3d2uxOj0cTBAwc4mZDA8eho+vS5m4CAAMJrh9OhU0e2bN1c6vwpKSk4OTnRqFEjfHx9CAgIxNvbh6CgIJycHElIOAlYcXV2vdRbFRERERGRcjpx4gSvvvoqhYWF5Y7x8ccf24+SuRRfffUVy5cvv+Q4FamgoKCyUxARERERERGRa0S5VwCf7Xj0cY4cOUK37t345utv+PW33+jS5Q769euHl5cX6RnpfPvtd+TGxQFgNJno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ly9frgpgketISkoKdnZ2WFhYmJcdro+6/L061zc+Pr7aMqMiIiK/l3PLdl/q8y4mJgYvL6+rGJmIiIiIiIhI45Kbm9sgz5zPpwpgkTqYOXMmcXFx2NnZ0bt3bx577DEsLat+jZKSkpg+fTopKSm0atWKJ598krZt2wJVVS0ffvghW7ZswWQyMXToUKZPn46FRe37UYqIiIiIiIiIiIiIiIjUhxLAInUwa9Ys3N3dSUlJYf78+XTo0MFcKWxpacljjz2Gh4cHa9asYc6cOSxbtowmTZrw3//+l3379vH6669TXl7O3Llz8fPzq7H3nIiIiIiIiIiIiIiIiMiVUPmhSB20adMGFxcXOnToQPfu3YmJiTGf8/LyIiAgAB8fH2bMmIHBYGDPnj1UVlaydu1a7r//flq0aEHr1q0ZOnQo4eHh1/BOREREREREREREREREpDFSBbDIZSooKOCtt97i4MGDlJWVYTAYGDx4cK19LSws8PT0JDMzkzNnzlBSUsKLL75oXrvdZDKZl4cWERERERERERERERERaShKAItcpmXLlpGVlcWHH36Ig4MDr7zyygX7lpWVkZaWhpeXF46OjtjZ2TFv3jx69ux5FSMWERERERERERERERGRG40SwCK1KCwsJCMjw3xsb29PZWUlBoOBsrIyysvLzdW85xQXF5Oenk5paSkff/wx9vb2BAUFATBs2DDef/997O3t8fHxITs725wcbtKkCampqeTn5+Pk5HRV71NEREREREREREREREQaFyWARWoRFhZGWFiY+fjuu+/m3nvv5ZVXXmHq1KmUlZXh7OzMhAkTAPDx8aGoqIhp06ZhZWVFx44deeWVV7C1tQXgoYce4qOPPuLVV18lKysLd3d3nn32WRwdHenXrx8bN24kLCyM2bNnX5P7FRERERERERERERERkcbB0K1nH9PVvKCl0Uh5RUX1NktLysvLzcctW7bk7rvv5q233qKkpORqhidX2dYN6xp0PpPJRGVlJcXFxfj4+DTo3CIiACkpKdjZ2WFhYVFjJYC6qMvfq3N94+Pj8fPzq/c1RURELldiYiItW7a85OddTEwMXl5eVzEyERERERERkcYlNze3QZ45n69eFcCdOnVk4MBBuLu7UVJylpSUFD5dHpBLiQAAIABJREFUvrxGYve3pk+fzpEjRwgPDze3DR48CA9PTz7/7HNzW3Z2Fnv37aXk7Nn6hCciIiIiIiIiIiIiIiIickOqcwLYvak7d999N9+vX8/J4yexs7fD09PzkslfAKNlzcsZLS1rZLMLCgrZumVrXUMTEREREREREREREREREbmh1TkB7OHhiQnYE76HiooKyIakpCTzeWcnJ0aGhNCmdWvOFBWxZctmDh36xXx+1KhRjBo1isrKCp599jkAOnXsxAsvvADA0iVLKasoZ+ajjzJv3jwApk6dSjOvZjSxs6eopISftv7I7vDd5jk7duzIsGHDcHF2pqikhLTUVD766CMAgoODCezaFRtra6Kjo1m2bFnd3yURERERERERERERERERketAnRPAifEJFBeXcF/ofWzcsIGUlNRq5yfdew+52TkseGshvr5+TJp0N4lJSWRlZgGwbt069vz8MwbTr1sPHz16lC9WrACgorwcn+bNq83ZomULvv56DXExsbTyb8XEiROJi4sjNS2V1q1bM3HiRL5es4aYU6fwb+3PuHF3AtD25rZ07dqV95YuJb+gAEdHx7rertxgYmJirnUIInIVtW7d+lqHICIiIiIiIiIiIiLSoOqcAD5TdIZ3Fy9iwICBTHtwOllZmfzwww/ERMfg6+uLn68fnyz7hDNFZzh+7BjJySm0u7kduzJ3AVBZWUlFeXm1OU2YarT9VkF+PvkF+Rw+fJg+ffvQqlUrUtNS6dWrJ7/8coiDBw4AkJOdax5ztrgEKysr3NzdSc/IoKSkpK63Kzegpk2bNtgm2yLyx2QymcjMzLzWYYiIiIiIiIiIiIiINLg6J4ABcnPz+Prrr1m3bh39+vXl/vvvJ2xxGI5OThgMBmb/bfavnQ0QFxfbUPECcKbgDHb2dgC4uLlx+Lwlps+XkJjImrVrGTFiBMEjg9m0cROHDx9u0Fik8bGyssLCwkJJYJFGymQyUVlZea3DEBERERERERERERH5XdQrAXxOWVkZmzdvoWu3brRp24aY6BgqKyt48cUXOXv2bI3+5eVlWBqrX7K8rLxG26VUmn59cF+Ql4+zi/MF+x48cICDBw7QtWtX7rrrLpJTks3LUYvUxmg0YjQalQAWaaRMJlPVHvbXqcTExGsdgoiIiIiIiIiIiIj8gdU5Aezj442XtzeJCYlUVFTQyr8VTk5OpJ9OJyU1lbS0dMbdOY4tW7ZQUlSCi5srCfHxAGRlZtGufTuOHI3AwcGRlNRUsrKy6NmzJ82aNaOyspKSkuI6xXMkIoKRo0YReTKS1NQ0Wrf2N59zdnbB1taGnJxs0tJOAybsbOzqestyAzIYDEoAi8gfisFgwNfXV9XLIiJyVWhFHBEREREREZHrV50TwLa2dnTv3p3g4JFYGo1kZ+fwzTffEBkZCcDHy5YRHBLMg9OmYW1jQ2ZGFmFh71JRUcG2bduYOHEiTzzxBPn5BXzwwQccOXqU9h3a8/CMGZSVlfH111+Tn59/2fEcPHQIZxdnxo0bh7WNDdk52eYksrePN2PHjKFJE3sKz5zhp5+2kZScVNdblhvM+Q+69NBLpHExmUzA9fm7bTAYsLS0NN+DiIjI70lfiBQRERERERG5fhm69exzXT9JtrGxoUmTJhQVFWFjY8PAgQOwt7fn008/u9ahyWXYumFdg853bm/P4uJifHx86jw+JiYGPz8/8xLQeugl0riYTCbzEtCJiYm0bt26znOkpKRgZ2d3xZVRdf17pcSviIhcC5f6rIuJicHLy+sqRSMiIiIiIiLS+OTm5jbIM+fzXdEewH8Evr6+3HnnOBwdHCkuKSYmOoa1a7+91mGJiIg0KH0hRUREREREREREREQux3WfAI6Ojua1116/1mGIiIiIiIiIiIiIiIiIiFxzFtc6ABERERERERERERERERERaRhKAIuIiIiIiIiIiIiIiIiINBJKAIuIiIiIiIiIiIiIiIiINBLX/R7AIiIiNwKTyXStQxARkRuQwWC41iGIiIiIiIiISB0pASwiIvIHdy75Gxsbe40jERGRG4m/vz8mk0lJYBEREREREZHrjBLAIiIi14FzSWA/P79rHImIiNwIEhMTlfwVERERERERuU5pD2AREZHrgJaAFhGRq02fPSIiIiIiIiLXJyWARUREREREREREREREREQaCSWARUREREREREREREREREQaCSWARUREREREREREREREREQaCSWARUREREREREREREREREQaCSWARUREREREREREREREREQaCSWARUREREREREREREREREQaCSWARUREREREREREREREREQaCSWARUREREREREREREREREQaiQZPAFtYWGBhcfnT1rW/iIiIiIiIiIiIiIiIiIjUzrI+gzp16sjAgYNwd3ejpOQsKSkpfLp8OQDPPfcc7yxeRPrp9Etf3Gis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i9b+NffdrI3BYLjodesiqEd32rT2JzLqFM+/+Aot/PzIyclh3NjR9Ojerd7zisjlGTBgwAWXMl6wYIH59Ztvvml+7e/vz/PPPw9AUlIS48aNY9SoUezatYvo6Gg8PDwAcHBw4OmnnzaPCw0NJTQ09IKxTJ8+vdZ2Hx8f8+sRI6pXx86cOdP82tXVlccff/yC858/38KFC6u1XWjsyy+/bH7du3dvevfuDcCwYcMYNmzYJa9VF10DOjfofCIiIiIiIiJyfVECWEREGj0lf2vau+9AtePy8jJeefFfLHhrEV+v/ZaKigqaeXoS+L8kQmVFJcdOnGBX+B5cXV245+67GDdmNEajkVdf+hf/eP4l9u7bj7ubG3l5eXWK5WLXrQsrK0s+WLqY195YyLYdO4mJjcPH2xuj0VjnuUTk6iotLWXlypUkJCRgZWVFx44dmTJlyrUOS0RERERERETkumTo1rOPnobLNbN1w7oGnc9kMlFZWUlxcXG1Co/LFRMTg5+fH0ajEYPBYF5aVESuX+eSv1D1N2LGjBksWrSIxMTEWpfzvJSUlBTs7OywsLC4or8Rdfl7da5vfHx8tWVGRUREfi/nlu2+1OddTEwMXl5eVzEyERERERERkcYlNze3QZ45n6/2TfFEREQagfOTv7Udi4iIiIiIiIiIiIg0NloCWuQ3zl8iVsvFily/frvs8/nH+t0WERERERERERERkcZKCWCRWig5JHL9CwsLq/a7fO5Yv98iIiIiIiIiIiIi0pgpASzyG0lJSdc6BBEREREREREREREREZF6UQJY5DytW7e+1iGIiIiIiIiIiIiIiIiI1JvFtQ5AREREREREREREREREREQahhLAIiIiIiIiIiIiIiIiIiKNhBLAIiIiIiIiIiIiIiIiIiKNhBLAIiIiIiIiIiIiIiIiIiKNhBLAIiIiIiIiIiIiIiIiIiKNhBLAIiIiIiIiIiIiIiIiIiKNhBLAIiIiIiIiIiIiIiIiIiKNxFVPAFsajb/r/C1btmT27NnY2tr+rtcREREREREREREREREREfmjsazPoKf/+jSuLq7V2vbt28dXX3110XHTp0/nyJEjhIeH1+eylyU7O4u9+/ZScvbs73YNEREREREREREREREREZE/onolgAG+XfctEYePmI/LykovOcZoWe/LXbaCgkK2btn6u19HRETkWkhM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3AsvvFDtePny5ebX2dnZhIWF1Riz/vv1rP9+fY32HTt2sGPHDvNxSnIy8+bNA+DE8eO8fPx4jTHn9wEoLCzg888/rzXW3/YF+L9//p/59Zv/frPWcXJj+G3SFaoqfSMiImjVqhWHDx9m06ZNPPHEEwDY29uTmppKTk4Oqamp7Nmzh+7du9eYt2XLluzcuZNevXphb29PVlYWbdu2xc3NjUOHDuHl5cUvv/xCdnY2rq6uQFUl72233Wae49SpUwwfPrzG3BeLISIiAn9/f8rKyigtLcXZ2Rl3d3esra1Zv349vXv35syZM5w9e7ZG4joyMhI7OztatGhRrf3kyZOMHTu2WtupU6fw8fGpVuF85MgRWrdujZ1dVRV9586dcXV1JSgoCKhKtjf/35c3IiMjsbe3x8nJiaKiIqCqIr+wsJAvvviCiRMnmvcKFhERERERERERERERkerqXQEs0thFRUUxYsSIam333HMP//3vf5kzZw6+vr489thj5krV3r17ExERwfz58/Hz86Nr165YWFjUmHfQoEEkJyfz+uuvYzAY6NGjB23btjXPvXPnTrp370779u0pLS3l9OnTFBQUmCt+z+3r+9vk9MViKCgo4JtvviE5ORlra2sCAgIYMmQI1tbWPPjgg6xatYrvvvsOZ2dnRo8eXSMBfG5P3vPvJyMjg+zs7BqVurXt33vs2DECAwPNx+cqj89JSEigffv25vFFRUXV9hru2rUrQ4YMISoqyryPsciNxmQyXbqTiIhIA/vtliMiIiIiIiIi8sdn6Nazj54oyzWzdcO6Bp3PZDJRWVlJcXFxtaWQRUQaSkpKCnZ2dlhYWFzRQ/G6/L06l/yNjY2t9/VERETqyt/fH7h4EjgmJqbalikiIiIiIiIiUje5ubkN8sz5fKoAFhERuQ6cSwL7+fld40hERORGkJiYiMlkUgWwiIiIiIiIyHWo5vq0IiIi8oejJaBFRORq02ePiIiIiIiIyPVJCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERERERERERERkUZCCWARERERERER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RASRkZGlEreIiIiIiIiIiIiIiIjceVQBLFIEY8eO5cCBA+bXzzzzDMuWLeO7777DaDTi5ORE5cqVi91v+/btSUtLY82aNURGRmJvb8+oUaPw8PAozfBFRERERERERERERETkDmFo3rq9qayDkDvXji0/lmp/JpOJvLw8MjIycHd3L9W+RUQAoqKisLGxwWg0lrj6H4r3eXW5bXh4OF5eXiUeU0REpKgiIhZG/PAAACAASURBVCKoWbPmDX/fhYSE4ObmdgsjExERERERESlfkpKSSuWe85U0BbSIiIiIiIiIiIiIiIiISDmhBLCIiIiIiIiIiIiIiIiISDmhBLCIiIiIiIiIiIiIiIiISDmhBLCIiIiIiIiIiIiIiIiISDlhUdYBiPzXhISElHUIInIL1apVq6xDEBEREREREREREREpNUoAixTC2dkZg8FQ1mGIyL/IZDJx4cKFsg5DRERERERERERERKRUKQEsUghLS0uMRqOSwCLllMlkIi8vr6zDEBEREREREREREREpdUoAixSiQoUKVKhQQQlgkXLKZDKRm5tb1mGIiIiIiIiIiIiIiJQ6JYBFrsFgMCgBLCIiIiIiIiIiIiIiIrcVJYBFCnFl4ldJYJHyxWQyAbfvz3ZERERZhyAiIiIiIiIiIiIi/2FKAIuIiNwGDAYDnp6eWrtYRERuCaPReNs+LCUiIiIiIiJyp7NITk4u6xhERETkBgwGAxYWFuYKZhERkX+TlkMRERERERERuX2pAlhEROQ/zmAwYDKZdDNeRERuOf3eEREREREREbn9KAEsIiJyG9ANeBEREREREREREREpCmNZByAiIiIiIiIiIiIiIiIiIqVDCWARERERERERERERERERkXJCCWARERERERERERERERERkXJCCWARERERERERERERERERkXLC4mY7cHBwoG3bdpw5c5rQ0NDSiElERET+wWQylXUIIiJyBzIYDGUdgoiIiIiIiIgUU4kTwBYWFrRp04Z72rbFytKSli1bcObMGbZu20ZSYmJpxigiInJHu5z81YNWIiJyK3l7e2MymZQEFhEREREREbnNlCgBbGFhQY+ePfFr0qTA9rp161KrVi0OHjrE7l27yMrKKpUgRURE7nSXk8BeXl5lHImIiNwJIiIilPwVERERERERuU0VKwHs6uZK927dcXR05Pddu/jr1Ck6deqMq6vL/zq0sOCeNm3w9fXltx2/cfz4sVIPujSNGDaEP06c5I+AE2UdioiIyDVpCmgREbnVlAAWERERERERuT0Zi9LI1taWXr16MWb0GLy8vHBwcKB3r17cf//97Nr1O5s2bSQ5KbnAMfZ2dvTp05vHxjyGV43/brXSqJHDqVEK8bVs3gwPd/dSiEhEREREREREREREREREpGSKVAHs6OhIBYsKV213dnZm8ODBRESc44cfN+Hq5ka7tu2xsbE2t8nOycGAARtbGzIuZhQpqAWvz6F9u3uwsLAgMSmJyMgoNv6wme82/vCfrYBaung+r815ncioqLIORURERERERERERERERETuUEVKAA8fMYID/vv57LM1tG3bjtq1axfY7+XlyfDhIzh9+jTr1n1J3Xp18fGuxa7duzEYDPTu1Zvfdv7GqVOnihSUq6sLO3ftZu0X67CxsaWZXxOemzyJu2rW4K23lxf/LEVERERERERERERERERE7gBFSgBbWVrS/t72NGvenN27d3PgwAE6duyIh4dHgXb16tXDw9OTzz5bQ3BwCPd17nxVm6KKjY0j4MSfABw4eAgbGxse6NuLt95eTsMG9Zkw7km877oLBwd7ftj8M6/PX4TRaOSx0SMZPKA/1tbW7NqzhzcXLiE1NdXc74ODBvDoyOHY2toScOIkFa2szPtGPfIwfXr15MFhj5i3/fDdej797Au++vobAGp538ULz02mUcMGpKWl8+77H/Ldxh8AmDfrVebNehWAHn0HYGFhwYvPT8WviS+mvDx++mUr8xctKdH1kFvrykrz/2rVuYjcHP1si4iIiIiIiIiIiEh5VKQE8GV2drZ0796NxKREdv62k/3799OpYyecqjqRlZ3Nwf37CQ4J5v77ulCnTu0bd1gMGRkZWP2drK1Vy5uGDRrw8muzuXjxIpmXLgEwfuwTPNC3D++sWElySgpPPDaatxfPZ/T/jQWgT68eTJk0gY9Wr+HEyT9p4tuIu1s0L3IMzs5VWfX+Cg4fOcoLM17F0sqS6OgY8/6l76xg7/4DACQlJTNn5svY29sz9fkZmEx5WFgU63JLGVNySKT80s+3iIiIiIiIiIiIiJRXJcpIVnGsQv/+/YmJjmHLti1UtKpIUlISzVu0YMSIRzAajTcdmMFgwMLCAgd7e5o3a8rgQf3Z93dyFSArO4vfd+8x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snXrVn7++Wfi4uKIvuIzo1atWjRs2JA333yT4OBg4uPjizzmP3Xs2JEtW7Zw6NAhEhISOH78+DVjvd77qqhq166Nt7c3ixYtIjQ0lAsXLpjXNgaws7MjOjqalJSUG57n5s2bee+990oci4iIiIiIiIiIiIiIlJ0iVQC3bt2mwOuQkBC2b//1Xwlo4pRp19y3+tO1rP50rfl1YHAwL8x49ZrtL2Vl8cyzz11zf1JyMi++MrPQfedj45g09flrHttv4JCrth05epyRY54otP0PP/7EDz/+VGDbP9smJiVdM56t235l67Z/55rL/6SlpfHTTz/x7rvvmte4HT9+PK1btyY3N5fDhw8zefJk0tPTsbOzM68NDNCtWzc+/vhj+vXrh6WlJZBfBTp//nzef/991q1bh9FopH379kydOrXAuEajkTlz5rB8+XKef/55MjMz6datG888U3CN6n965plnWLZsGd999x1GoxEnJ6ciTevr4eHByy+/zKpVq/j444+56667MBgM5srR//u//2P16tXMnz+f+Ph4qlatyssvv4yDgwNr1qzhxIkTGI1GfHx8mDRp0k3HNXToUObNm8eYMWNwdnZmwYIF143hRq43fsuWLXnhhRdYu3Ytb7/9NhUrVqR+/fpYW1tjMBiYOXMm7733Hi+88ALp6elUqVKFQYMG3XDMf+rSpQuxsbEsXLiQjIwMqlevXmhlbrt27a77viqqy++hFStWMG3aNDIyMvD09OSdd97B0tKSDh06sHXrVlauXMm0adOue56hoaGcOXOm2DGIiIiIiIiIiIiIiEjZM/jU9zXdqNGE8ROoVLkSeXl5HDlylK1btxSoFiwLr770AjY2NtdMAPfp3ZOJ48fStWe/WxyZFMeR/btLtT+TyUReXh4ZGRm4u7uXat/liclkIiwsDGdnZ3Jzc9m7dy+rV6/m888/x8KiyEuDy3Wkp6eTnJxMpUqVuHjxImvXriUlJYVXX732Qytye4iKisLGxgaj0VjkqvvCFOfz6nLb8PBwvLy8SjymiIhIUUVERFCzZs0b/r4LCQnBzc3tFkYmIiIiIiIiUr4kJSWVyj3nKxUp0/P5l59Ty9uHsLBQ4uLiSmVgESk7ycnJzJ07l+joaCwtLfHx8WHWrFlK/pai06dPs2jRIhISErC3t6dp06ZMmDChrMMSEREREREREREREZFy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dmXatGnUq1ePJk2akPTPjgql0alTJz7//HPq1q1L3bp1yc7OxsrKimrVquHo6Ehubi5RUVH4+/vTtWtXli9fjqurKzVr1izVrhMVgcFgwGw268N4ERG54fR3R0RERERERKTiKXYAnJaWyurVq69nLdfNqtW/sGr1L+VdBmvP23M405pWVXJp5JBHgF0eTtb5oW94tjWHM63ZfMFW2z6LyHV16tQpYmNjGTt2LF5eXgWudezYkdDQUHr16sULL7zA999/z8cff0x6ejqurq706NEDgGbNmvHMM8+watUqFixYgJ2dHXXr1sXe/tq/vNK6dWvS09P56aefiI+Pp0qVKgwYMIBq1arh5+dH27ZtmTFjBh999BEDBw7E1taWr7/+muTkZJycnCxnB1dW+gBeRERERERERERERIrDULdB04qzlFcqnb07Q8t0PLPZjMlkIiMjgxo1apTp2CI3sz///JPGjRuXdxkVyqFDh2jZsmWJ+8XExODo6FjqsxH1+0pERCqDsLAwfH19y7sMERERERERkQorJSWlTD5zvpRVmYwiIiIiIiIiIiIiIiIiIiLlTgGwiIiIiIiIiIiIiIiIiEgloQBYRERERERERERERERERKSSsCnvAkREROTqzGZzeZcgIiK3oLI6e0hEREREREREbhwFwCIiIje5i+Gv0Wgs50pERORWEhgYiNlsVggsIiIiIiIiUsEoABYRqQSsrKzIzMzEwcGhvEupEDIzM7G2ti7vMkrkYgjs7+9fzpWIiMitICoqSuGviIiIiIiISAWlM4BFRCoBg8FAfHw8mZmZ5V3KTS8zM5OEhIQK94G2toAWEZEbTX97RERERERERComrQAWEakEXF1dOXfuHEajEZPJVN7l3NSsrKwwGAy4urqWdykiIiIiIiIiIiIiImVOAbCISCXg7++PwWDg/PnzCoCvwsrKCldXV/z8/Mq7FBERERERERERERGRMqcAWESkErC1tSUwMLC8yxARERERERERERERkXKmM4BFRERERERERERERERERCoJBcAiIiIiIiIiIiIiIiIiIpWEAmARERERERERERERERERkUpCAbCIiIiIiIiIiIiIiIiISCWhAFhEREREREREREREREREpJJQACwiIiIiIiIiIiIiIiIiUknYlHaAzp0707x5EBis2L1rF9u2bSuLukRERERERERE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IiIiIiIiIlI2FACLiIiIiIiIiIiIiIiIiFQSCoBFRERERERERERERERERCoJBcAiIiIiIiIiIiIiIiIiIpWEAmARERERERERERERERERkUpCAbCIiIiIiIiIiIiIiIiISCWhAFhEREREREREREREREREpJJQACwiIiIiIiIiIiIiIiIiUkkoABYRERERERERERERERERqSQUAIuIiIiIiIiIiIiIiIiIVBIKgEVEREREREREREREREREKgmb8i5AREREii8qKqq8SxARERERERERERGRm5gCYBERkQrAYDDg5+eHyWQq71JEROQWYGVlhcFgKO8yREREREREROQaKAAWERGpAAwGAzY2NpjN5vIuRUREbgEGg0EBsIiIiIiIiEgFpQBYRETkJmcwGDCbzfowXkREbjj93RERERERERGpeBQAi4iIVAD6AF5EREREREREREREiqPMAmAbGxs6tO9Ao8YNcXZxZc+e3Wz8fWNZDS8iIiIiIiIiIiIiIiIiIldhVRaD2NraMGzYMDp26oinpxcR4RFs3rS5LIYucx7u7rz31uv4VK1a3qWIiIiIiIiIiIiIiIiIiJSpMgmAg4O7UL16dQBOnDjJypUryMvLK4uhy5ybmyvd7rkLe3u78i5FRERERERERERERERERKRMlckW0E2bNrU8Do8ILxT+3nnnnezYsaNYY301fzZNmzQu8tofm0MZ//Kkay9URERERERERERERERERKQSK3UAbGtjS5UqTpbn3e65B1OeiT17dgPQp08fGjdqVOwA+ONPZ+Ds7AzAqBFPk5qayreLlgCQlJRU2nJFREQqJLPZXN4liIjILchgMJR3CSIiIiIiIiJSQqUOgHNyc8jIyMTR0cHS1r37vVhZGfDx8SEoKIjklORij3f4yFHL46EP3c+5c+fZtXtPgXvu6tqZ50YMp1o1H44eP8G7Uz4iLMxouV6nTiCTXnqRBrffRnx8AjPnzuf3jZuKnK9aNR8mvvQiQc2aYjaZWPu/9Xz4ybRi1ysiInK9XQx/jUbjVe4UEREpO4GBgZjNZoXAIiIiIiIiIhVMqQNgD08P8vJyAIcC7d26dbM8PnzocGmnsWjfri3vv/0GXy9YxIGDh+jTqwdfzpvF4Acf4ezZJDw9Pfhy3ix27NzFV98upGmTxrz/9huMnfAKW7cVXoU8ZvRInJ2defGlSZjNJmxsymRXbBERkTJ1MQT29/cv50pERORWEBUVpfBXREREREREpIIqVdoZGBjIwAEDcHB0vOw98fHxbA3dWpppCnjysWH8uu435s7/EoDtO3axculiHn5gCJ/NnscDQwZx/vx5Jr32FiaTia3bdlDNx4enHn+0yADYy9OTiIhI9vy5t8xqFBERKWvaAlpERG40BcAiIiIiIiIiFZPVtXZs1aoVDz74YIHwNy0tjcyMDADS0zPYvWsX337zLTm5OaWv9B9169bhz71/WZ6bTCb2/f039erVBeC2evXY9/cBTCaT5Z4//9pHvbp1ihzvu6XL6d7tbubPnkGXzp3KrE4RERERERERERERERERkRutxCuArays6NGjOy1a3FGgPSszk0WLFnHmzBls7ezIyc4usyIvZeDK30A3GAwlWiX1x6YtDHrwER4cMph33niVbdt3MmHiq6UtU0RERERERERERERERETkhivRCmBHJ0cefvjhQuGvyWTih59+4syZMwDXLfwFOBUWRovmQZbnVlZWBDVrxqkwIwAnT4XRPKgpVlb//9JatggizBgOgCUbvmQrs7i4eKZ9NosXX55E1y7B+NWscd3qFxERERERERERERERERG5Xoq9AtjDw5OHHn4QD3ePQtc2bNhA2KlTZVrY5XyzYDEfTXmHmNhYDhw8RL/evfD09OD7pSsAWLp8JYMH9eedN15l1ZpfaNqkMb16dGfCK/mrepOSkzGbzfS49x4WLv6ebnd3JS4+gbS0NFq2aEFubi7nL1y4Ia9FRERERERERERERERERKQsFTsA7tOnF/Z29mwNDSWoeRDOzi4A7Nu3j127dl23Av9tc+hWJr/xNiOfeZrHhj3CsWPHeXrEcyQkJgKQeOYMw58dzcvjx/LJh++TmJjI5NffYtOWUAAuXLjA5199w4NDBrP6l1+5s01r2re/Ezs7O6KiTvPqG29z/rwCYBERERERERERERERERGpeAx1GzQt1oG548e/yN/7/mbd+vUEBwfTqVMnIiMjWLz4O0wm0/WuUyqpvTtDy7sEEZFyYTabMZlMZGRkUKPGlY8euHhvREQE/v7+N6hCERG5lUVFRVG7dm2srKwwXHJ8zr+FhYXh6+t7AysTERERERERqVxSUlJwdHS86r+Dl0SxVwBHR8fQtFkzABo3aUJySjIrVq5U+CsiIiIiIiIiIiIiIiIicpOwKu6Nq1evJiYmlqDmzTlzJpEl331PRnrG9axNRERERERERERERERERERKoNgrgM+fP8+SJd9dz1pERERERERERERERERERKQUir0CWEREREREREREREREREREbm4KgEVEREREpEJITEwkJSWlvMsQEREREREREbmpKQAWEREREZHrLjY2lldffZWcnJxrHmPatGkkJyeXupaFCxeyfv36Uo9TlrKzs8u7BBERERERERGpJIp9BrCIiIiIiMjVnDp1ip9//pnTp09jZWVFmzZtGDx4ME5OTnTu3BlbW9trGvfs2bOkpqbi7+9f7D6TJ08mJCSE22+/vUD77bffTs2aNa+pjktNmjSJc+fOFWofOXIkjRo1KvY4P/zwAzY2NvTr16/UNYmIiIiIiIiIKAAWERGRcrfih5949Y23eeThB5n08vhi90tITOTBoY9Sq1Ytvvli7nWsUESK48KFC8yePZu+ffvy6KOPcuHCBTIzMwFwc3PjnnvuueaxIyIi8Pf3x8ameP8Kk5SUxLlz56hdu3aha23atLnmOi41adIkAJYtW4aTkxN9+vQBwNHRsUTjnDhxgh49epRJTSIiIiIiIiIiCoBFRERuEY8//Sw7du4q8lrH9u34fO7MG1zR/1u1eg0A9/XtXehaZmYmX3z9Lb+sXcfp6NM4OTnRuFFDRo98FicnR2Lj4snMzMJsNrN5y1Y+mjqNe7vdw/OjRlxzPYMffISs7Gx+/mHZNY8hciuKjo7GxsaGLl26APwfe/cdn+PZ/nH8c2fJThAEiSRir1i1JRRFxAytKqr6tFqKtlot1fV7qlVarVG0uh7q0Roddo2qvSmRiJUpQzYiIev+/ZG6n6YJElSI7/v1ykvu6zrP8zquy0siOe7jOClfvrzp3IIFC6hfvz5+fn5s3LiRvXv3kpqaSuXKlRk5ciRVqlQBICoqilWrVhEeHo65uTmBgYG0bt2asLAwPD09AcjJyWHt2rXs2bOHvLw8AgIC8PX1LRBLREQEVatWxdrausDxqKgo5s2bx7Rp00hOTmbJkiXExMSQl5eHn5+fKYl74cIFVqxYQXBwMI6OjgwbNgxvb+8Ca9na2gJw7tw5/P39Ta+Lmlu5cmXeeustJkyYgJubG9999x2Wlpb079+fmJgYFi5cCMDcuaX3tVhEREREREREygYlgEVE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Nj/52S+SJLfefkdO+9yZaWhYmj33eEcmT3kqx3/y5CxcuGiVsQcM6J/zvvKlFAqFjBg+LEly7pe/mIGbbPIffS4A1rZp06Z1zv5NkieeeCJPPfVU/vd//ze/+tWvstNOO2XPPffMzJkzU19fn/79+7/usXr27JGD9993tfOHHLRfevTo/rr7BQAAANY/loAGgA3QyaecnoaGhkye8mSSZJ+9V91j94KvnZs+fXrnLW/fM39/4MF0dHTkgYcezqQnJme7Cdvklz/7cdra2rPvQe/L7X++MzOenZnu9eWZZ4MGDszFF16Qvz/wYI7+yMdy3/0P5BPHfyyX//DHSZKvnvOlbDV+y4wYNiyX/eCK/OXuv+bAfwktpk6blsaljfn+dy/Ox088KU8/80y22HzMm/DMAKw906ZNy/jx4zuP58+fn6OPPjrbbbfdKvfNnj07I0aMeMPjTdh26zz6+BOZNHlK5/HW47d8w/0CAAAA6xcBMABsgO772/3p27dPthq/ZQ4+cP8c8cHV94asra1Nv34bZc6c57N06dLMmvVckmTsFlukUCikpqY6m48Zneeem51Zs55bLaAdOLA8Y3fRovIM3xdeeDFJcuzHT1zlvtlz5qw29t57vSe7v/3t6d69PrfeeP0alzUFWJeVSqXMmDEj+++/f+e5AQMG5J577smwYcPS1taWxsbGbLbZZknK4XBzc3O6dev2hsY95MD9MnX69FRXVa9xRjAAAABQ+QTAALABuu+u29O7d+9XvG/F0tClUinDh5WXY5485cmUSqW0trXlqaefSZIMHTL4ZdsmyZDBg/LCiy/m9FM/k/Hjx3XeN3zo0DWOvSL0Ff4C66M5c+akpaUlw4cP7zx3wAEH5Gc/+1nOO++89OzZM/vss08222yzTJgwIffcc0/uuuuuvPvd735D4/bq1TMH7b9vunWr9fcnAAAAbKAEwADAq7LD9hMyfstxefSxx3PYEUelubk5s2fPye5vf1s23XRk5s596WXbH3H4B/LQI4/mku9elh233y7FqmLmzZufa6/6xZv0CADePEOGDMm3v/3tVc5ttNFG+dSnPrXavT179sxpp5221sbefsI2a60vAAAAYP1T7OoCAID1Q1VVVS679NvZd5/35vnnX8iixYtz2PsPyTe/ft6ran/QAfvl6189J0MGD8q9f7s/DzzwUOrq6rJs2bL/cOUAAAAAABuOwuhx25S6ugg2XA/ed1dXlwDQJUqlUjo6OtLU1JQhQ4a8qntnzJixylKiAPCfMnPmzIwcOTLFYrFzSf81mTp1agYNGvQmVgYAAACVZeHChamvr3/Ff4O/FmYAAwAAAAAAAFQIATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhaju6gIAgFdv5syZXV0CAAAAAADrMAEwAKwHCoVChg0blo6Ojq4uBYANQLFYTKFQ6OoyAAAAgNdBAAwA64FCoZDq6uqUSqWuLgWADUChUBAAAwAAwHpKAAwA67hCoZBSqeTNeADedH7uAAAAwPpHAAwA6wFvwAMAAAAA8GoUu7oAAAAAAAAAANYOATAAAAAAAABAhRAAAwAAAAAAAFQIATAAAAAAAABAhaju6gIAgFdWKpW6ugQANkCFQqGrSwAAAABeIwEwAKzjVoS/06ZN6+JKANiQjBo1KqVSSQgMAAAA6xkBMACsB1aEwMOHD+/iSgDYEMycOVP4CwAAAOspewADwHrAEtAAvNn87AEAAID1kwAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAABgHTB37tyuLgEAAACoAAJgAACALtDR0ZFzzz03//jHP5IkF110URdXBAAAAFSC6q4uAACofB0dHXlp3rxssvHGa6W/ltbW1NbUrPFae3t7kqSqqmqtjAVs2F588cV85StfWeXc6NGj85nPfOYN910sFrPzzjtn8ODBmTdvXhoaGt5wnwAAAAACYABgrTvmuBPy7LPP5qorf5rqqqq8a+8DMmTw4Pzx979+Q/3+6v+uyYXfvjT/84mP58NHH7na9f8984u54cabctWVP82W48a+obEAkmT69OkZNmxYTj755M5z1dVr759Re++9d5JkypQpGT58+FrrFwAAANhwCYABYAOywy67pampabXzN9/w+wwbOnStjFEqlfLUU09nwcKFWbhwUTbq2zfNzc1rpe958+e/7Ay52XPmpKW1da2M9UYcdsRRaW5pycTfXN3VpQBv0LRp0zJy5Mh07959tWtXXHFFpk2blqampuy8885pbGzMpEmT0qdPn3zkIx/pDHQXLlyYiRMnZtKkSVm2bFl23333HHroobnlllsyffr0HHfccZk6dWo23XTTN/vhAQAAABVIAAwAG6B37P721FT/cwnl+rr6tdZ3oVDIr6/+ZZYsWZItNh+TuXNfWmt9r+t+N/H6/OmmWzJo4MC0tbflpM+clj3fsXsOfd/BXV0a8DpNnTo173jHO1Y7P3fu3Dz++OM588wz09jYmG9+85s54IADcsghh+T666/Pn/70pxx33HFZsmRJvvnNb2bbbbfNqaeemokTJ6a+vvx37owZMzpD3+nTp+ed73zn667zyquuzWOTnljjtW22Hp8jDz/sdfcNAAAArF8EwACwAbrga+emd+/eq5xraGjIyaecnn/8Y2rmL1iQvn375NBDDs7Djz6WRx59LH379MmpnzkpB+y3b5LkU6eenr/ec1+ampoyeNCg/M+Jx+fgA/dPknz04ydm2vTpufPWP71iLVf8+Kf58c9+kQULFqZvnz5538EH5jOf+p9UVVWlo6Mjl11+RX79299lwYKF6d2r1yptFy9enPPOvyB33nV3ioViWtvaVrl+yXcvy0233JY5s+ckSf7nxBNyzH8fmetvuDGXXX5FZs+Zky02H5PPnXZqtpuwTZLkpz+/Mj/9xS/z0ksvZcCAATn7rM/nHbu/PTNnzcrZ53w1Dz/yaIrFquyw/YR8/zsXrzLeiy/OzcznnsvMmbNSKpUyYsTwzH1pwwnAodI0Nzdn9uzZue666/L73/8+SfKud70re++9d2bMmJERI0ZkwIABSZLu3btn7Nix6devX8aNG5e77747SXLDDTdk7Nix+eAHP5gkmTVrVnbdddck5QB4jz32SFtbW2bNmvWGZgAffMC++ce0aWlsXHWVh549euSQA/Z73f0CAAAA6x8BMABsgM446+xU15RfBkzYdpsc++Gj09S0LPfce1/q6+uz5x675957/5bv//BH2XjjAdl5xx3yl7v/mjPOOju77LxzNt54QHr26JG37bpLkuS22/+cz3/h7Oy4w3aveSnpurq6bLXllundu3fu/us9ueInP8sWW2yegw7YL/93za9zyXcvy0Z9++btb3trHn7k0VXafukr5+XGm27JqE03zahNR+bue+5d5foNN96cadOn52277pJCoZBhw4bm1tvvyGmfOzODBg7Mnnu8I7fedkeO/+TJ+dMffpvZc+bk/AsuTP/+/XLY+9+XuS+9lI03Loc753/jwvz1nvuyxzt2y8BNNumcwbeyj330mCxavDhXX/ubVFUVs9vb3prjjzv2NT0fwLpjxowZqampyRlnnJFisZgknUtBr7xk87Jly9LQ0JB+/folKc8OHjBgQEqlUu6///6cdNJJScq/aDN37tyMGjUqixYtyoIFCzJ8+PDMnDkz9fX16d+//+uutWfPHjl4/33zq2t+s8r5Qw7aLz16rL58NQAAAFC5BMAAsAG67Y4//9trgwYOzCX/75v5yc+uzNe/eWH233fvfO60U/LJk0/JbXf8OZOemJw999g9533lS0mSlpaWnHf+Bbn62t9kypNPv+YA+MgPHZ4jP3R4Wlpbc/Mtt+a0z52ZSU9MzkEH7JffTbw+SfLtCy/IzjvtkEu/9/1853uXJykHLjfedEt6dO+ea6/6Rbp3r89/H/ux3P/3B1cb4/xzv9IZ5B5+5IeTJF8950vZavyWGTFsWC77wRX5y91/zfBhw5Ikffv0yT5775W37LRjZx8tLS1JkvHjxuXooz6Ujfr2XW2cpY2NmTxlSg46YL9UVVXliclT0tDQkF7/MnMZWD9MmzYto0ePXmMwO3369Oy1115JykHxgAEDOv9fnz59erbddtssW7YsTU1NncHws88+m8GDB6euri5PPvlkhgwZkm7dumX27NkZMWLEG653wrZb59HHn8ikyVM6j7cev+Ub7hcAAABYvwiAAWADdN9dt6+2BPS/GjhwkyRJQ8PSVY6XNDSksbEpZ59zXm657Y40NTV1zoxraW5+zbV87/If5pdXXZ2XXprX2c+yZcuSJC+++GKSZNSmI1dr9+LyvYUHDtwk3bu/+j2MX3ih3OexHz9xlfOz58zJgfvvm6OP/FB+edXV+fCxH8+W48bmwm98LZtuOjKnfPqkzJw1K9+7/If50U9/no9/9CM58YSPrdJHj+7d88PLvpPm5c9DbW1t52MC1j/Tpk3LpptumsbGxs5ztbW1KZVKee655zJq1Kgk5cB3xWzgUqmU6dOn5+CDD05dXV3q6+vz2GOPZcyYMbnzzjvTp0+fJKvu/5sk8+fPT3Nzc7p16/aGaj7kwP0ydfr0VFdV5+D9931DfQEAAADrJ+9IAgBrVCiUP5dKpeXHhc7ja379m0y8/obs+Y7d8pMfXpb99tn73/azIgBtblk9HJ485clcfOn30rdv31z+vUtyyqdPWuX64MGDk2S1pZ+TZNDATVIsFjPrudmZO/fV77M7ZPCgJMnpp34mP7ni+50fBy7f2/jznzstt910fY780OGZPOXJXHjxpUmSLceNzR9//5t8/7sXp99GfXPJdy/LU08/s1r/hUIhdXV1qaurE/7Cem769Om54YYbcvrpp3d+PP3003n22WfTq1ev9F2+EsCMGTM6w+AXXnghbW1tGTx4cAqFQg477LD87ne/y0UXXZQhQ4aktra2s++RI8u/3DJhwoR069Ytd9111xuuuVevnjlo/33zvoP3f02/HAMAAABUDjOAAWADdOrpn09VdVXn8REfOCxbvYZlQquqym2nTZ+Re+79W2bPmfNv7+3bt0/q6+sze/acnPGFs/O1c85erZ8FCxbknnvvy0svzVul7X8d8YE8+NDD+ewZZ2XXXd6S6TOe7bxWW1ubw95/SK6+9jc59Igjs92EbfP0M/94xdqPOPwDeeiRR3PJdy/Ljttvl2JVMfPmzc+1V/0i99x7Xy7+zvcyerPNMuf558vj1JTDmpM+fWqqqqrTp0/vNDY1JUlqaryUgkp2/vnn/9tr5557bufXH//4xzu/HjRoUC688MLO41122SW77LLLau1PPvnkzq979uyZ00477Y2W22n7Cdustb4AAACA9Y93LQFgA3TXX+9Z5Xi3t7/tNQXAHzj0fZny5FO5/Y47c/kVP059fV3GbrF55zLRK6uqqso5Z5+VC799aebPm7/KtS02H5PPnvrp/Oqqa/KzX/wqVVVVGTlieDbffEySZP9990lra1t+9JOf5+577k11dVU2HzMmmy6fNff5z52Wvn375IYbb85tt/85PXv2yHYTtkmfl1ne+qAD9kuSXP7DH+Xev92fbvS8cAAAACAASURBVLW1GTdubJYtW5Zlzc2ZN29BHnv8D6mvr88e79gtpy6fldza1pZ777s/y5qbM3TI4Jz8yU9k1ErLtwIAAAAArAsKo8dtU+rqIthwPXjfG1/mDmB9VCqV0tHRkaampgwZMuRV3TtjxowMHz78TaoQgA3ZzJkzM3LkyBSLxc4tANZk6tSpGTRo0JtYGQAAAFSWhQsXpr6+/hX/Df5a2JgOAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqRHVXFwAAvHozZ87s6hIAAAAAAFiHCYABYD1QKBQybNiwdHR0dHUpAGwAisViCoVCV5cBAAAAvA4CYABYDxQKhVRXV6dUKnV1KQBsAAqFggAYAAAA1lMCYABYxxUKhZRKJW/GA/Cm83MHAAAA1j8CYABYD3gDHgAAAACAV6PY1QUAAAAAAAAAsHYIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEIIgAEAAAAAAAAqhAAYAAAAAAAAoEJUd3UBALChmzp1aleXAAAAAABAhRAAAwAA8Lo9//zzXV0CAAAArLfq6urWep8CYADoYoMGDerqEgAAAAAA6AILFy5c633aAxgAAAAAAACgQgiAAQAAAAAAACqEABgAAAAAAACgQgiAAQAAAAAAACqEABgAAAAAAACgQgiAAQAAAAAAACqEABgAAAAAAACgQgiAAQAAAAAAACqEABgAAAAAAACgQlR3dQEAwKvz/JJlOf2Gybnp6RezpLmtq8vZoPXqVp29Nt8kF+y7ZQb1quvqcgAAAABYBxQKhTV+zYajVCqt8es3mwAYANYTJ151T257vimt3XslPSzi0ZWWtHdk4pNz0rBoYa772Du7uhwAAAAA1hGC3w3biu9/V4a/iSWgAWC9ccuUOWmt755U+fHd5aqKaa3vnlunzOnqSgAAAABYRwh/WaGr/yx4BxkA1hPtpY6kuqary2CF6pry9wQAAAAAYB0iAAYAAAAAAACoEAJgAAAAAAAAgAohAAYA3lylUvkDAAAAAIC1rrqrCwAA/oNWDloLnf9588dOkkIh6ehI2tvLx1VVSdHvogEAAAAArE0CYACoRKVS0tFeDlw7SuXct1gsh66F/3DoWiotH3f5R5aPXUjS3p4ebS3pUVebF9s6kpqa/3w9AAAAAAAbEO+4AkClKXUkba3J0oZk8cJ/fjQsSVpay9dT+udSzCvP1F1taebS8o+Vrr/cEs4dy8duXJosWZgsXlD+WLIwaVqaNC7N//3XLjlx55FJc1PS3pGk41+GXHmM0r+/tqYaXq5tXmW/q7UDAAAAgHVUqZSO5uY3dcj2pqZVjufffXduGTMmrQsXvql1vJx/rXFN59oaGnLzmDF56Y473qyy3jQCYACoKKWkvS1Z2pAPbDEgj566Xxq/8aHMOfvQXH/MbunW1py0tyZtbUlbS9LaUv66oz3paCsvz9zeXu6n1PHP447ln9va/tlmxX2dQ5fKfS9dkp37dcvEY3bPoq8dkaVf/1D+/qm9c+gWA8tjlkpJqb0cRrc1l/sqLQ+BO5aP0dJSvret/Z+BdXtbOVxuaVl+feUaSsvrW369tSVpbS33t+KxrHjMbS1rHrP1X8cEAAAAgFevafbs3DRiRCbW1+f6vn1z6/jxmfTZz6Zl3rz/2Jh3v/e9mfGjH/3b6y3z5uWhj340N40YkT/27587dtghs6+99nWP99Idd+TWsWNXOdd9s80y4thjU9279+vud00WPfJI7tl339ywySa5cciQ3LXHHlnyxBOv2O7Jc87Jw8cd94p1V/fokZEf/Wh6jBmzVuteF1gCGgAqSamUtLVmiz61+dUxe+az1/0tEx97Nv171Wf80P5pTpL2UtK8tByUlkpJVTGp6ZZUFZLmlqRbt/JxqSNZtvy34mpqyuFqa2t5lm+hmHSrS+rqk+qqJIVykLqsKe8e1ic3fHLvXPX3qTn48pvzwpLmbD98QBY0t/wzL+4oJc3LyqFtTXVS3yOpqi4HyE2Ny4PdQnnc+u7l5aObm8v1rJj5W6xK6uuT2try8bJl5Xs6lu8xXCwm3bsnNbXlgHfZsvLnJKmuLretqi4/pqbGcrtCIantltR1T6oL5WMAAAAAeBVKra1pnjs3u991V+qGDk3TjBmZ8uUv5/4jjsjbb775PzNmS8vLXn/8s59Nw5Qp2emaa1K70UZZMmVKuo8c+brH62hpSalj1ckTdYMHZ4vPf/519/nv/O2ww9J/992z25//nI7W1ix68MHUDRv2iu3am5tT+pfVA9dUdwqFbHHGGWuz5HWGGcAAUElKSdpLGbdx75SSfOeOSXlm4bLc98LS/PiR2cvD0JZctN82WXjeB7Lk/MNz03F7ZFhNe8bUFVK64IiM7pakuTFpXJqL99smv/rgzknDkrxt4+6593/2ypKvHZ6/nfze7LhRTXlZ5/b25bN/25Nly/Kdw9+Wax6clv++8q7cMWtJJi/tyC+fnJvbZi0sB7lJPvb2cVn8zaOz+Pwj8v1DdkhdU0PSsixjelRlxucPSvM3/iszzjokJ+4wvLx0dVNj3j+6XyaffkAWfe2INF9wZG49/p0ZXtWWNDUljQ3Zpld17v7ke9J8wZGZf94Hc//Je2fzukLS1Ji6poZ8a5+tMufs9+f5L78/F7x3q1Q1LEkaGzOgY1mu/8huaTj/iCw+74M56x2bJy3NZgEDAAAA8LrUDhiQukGDstEuu2TsmWdm/l13pWX+/CTJgnvvzV177JEbNt44f9l99yx88MFyo1Ipk04/PX8aNizX9+2b+973vs7+mmbNyt+POCI3DhqUW7faKrN+9atVxnv8lFMysb4+f+jZc7VaGiZPzib77JN+u+ySnltskcEHHZQ+EyYkSdqXLcukz30uN48alZs23TSTzjgjpfb2zrazr7kmt44fn+v79MltW2+dlgULkpRnFU+sr8/E+vo8ff75WfjAA5lYX9/ZrqOlJZO/8IXcPGZMbhoxIg+fcEJaFy1KkiydOjV3vu1t+dOwYflD7965fcKEzPvLX1aru3Xx4iybNSsj/vu/02vLLdNn220z4phjUrN8lvEr1T7nuus6a5z/17+use4k+eOAAZl3551Jkilnn51bxo7NH/v1yw2bbJJH/+d/0r5sWWefix9/PHe98525vk+f3DhkSP6y225Z+swzSZKZP/95bhk3Ln/o3Tu3jBvX+f3uKgJgAKgkhSTVVblnxktZ2Nic33/ivdlhcJ/ybN+O5UFtVVW+d88/Mv6867LtV3+T3nU1OXe/7fPMCwsyac6CvGfMwPJM4Jbm7DV2cH77yLQMqqvOHz+xV65+4B8Z/cWrc9uTz+WaY/dMdcuy8tLMy/cdHrNR94wd2CeX3TW5PDu4R8+ke4/yjNqa2qRQlSS5afKsbHXOtdnrkhuy/1bDc8JbRyetrXluSUsOuPy2DD3zV/nS9X/PJR98azbrVZu0tmaz/j3T0NyW8V+5JhO++psUklxy6C5JU1P6Fzpyx8n75N5pL2bcOddk1wt+n+2H90//uuqkqSlffu822XvLoXnnRdfnvRffkA/ttFmO2XFksqwxp+05Pt1rqrP5l67O5uf8Or94+NnyrOaCl0kAAAAAvH4tCxZk5i9/mWJtbYrdumXZ88/nvkMOyZBDD827Jk1K/z32yANHHplSW1tevPnmzLryyrzt5pvz3unTM/5rXyt3Uirl70cemUJtbfZ48MGM/+pX8/Dxx6fh6ac7x9nqG9/IfgsWZL81LDU9cP/9M+3SSzPtssvS1tCwyrUnzzknc2+5JbveeGPeOnFi5lxzTWb+/OdJkpduvz0PH398xn3xi3nXpEnZ7oorUrvRRkmS2v79y+MtWJAxn/3samM+ee65mXPdddnpyiuz6403Zukzz+SRE05IkrQuWJBFDz2U3e++O+967LFsss8+eeCoo1bbx7imd+/03333PHryyXn+D39YJdx9pdqTZPDBB3fW2G/XXV9V3YsffTSD9t8/75o0Kbv87nd54YYbMuMHPyh/L+fNyz17752N3vKWvPORR7LbHXdk0cMPp3nevLQ1NOSRT3wi47/2tezz3HPZ+eqrU9uv3xr+RLx5vLMJAJWkUEiqazK3oyo7fXNiZi5cmts/tW/uP2XfvGtY76RxadLWnidfXJjZi5dl2ksN+dHdT2bbof2SFHLdIzNy4DbDk9bWbN6vR0b175k/Pj4zH95ldGYuWJoLb3k8LzYsy9l/eCAj+/XM1pv0Xr6HcCkpJQN71SVJZi5oLC+vXFUsL9VcLCYpdi6pPGPB0sxc2pb7Zi3I/z04NbuPHpi0taappTmPPb8gLzW25Cf3PJ0XFjdl60F9kvaOpFTK0pa2PLe0NVMWNOX/3fZ4uV17a/5rh1FZ2NSS0357f6Y1tOfJl5a/mC0lVaWOnPiOLfOliQ9kyvML8+hz8/Oz+57KgVsPT0qlLGpqydC+PTKgZ11eWNKc6QsaO4NqAAAAAHit7tx119ywySb509ChefbHP87YL34x1T16ZNaVV6Zu2LBsdvLJ6bbJJhl71llpfPbZLJ40KTV9+qStsTFLp05NTZ8+6TVuXJJkwf33Z+H992frb30r9UOGZPDBB6fvDjvkxRtv7ByvUF2dqrq6FLt1W62WsWeema0vvDCzfvGL3LzZZpn0uc+lraEhpfb2zLj88mxx1lnpOXZsem+zTYb+13/lhT/+MUky/Qc/yLCjjsrQI45I/bBh6bfLLqv0W1VXl6q6uhSqVn8f7dkrrsi4L30pG+2yS3qNH59tLrooc3772zTPndt5T/eRI9N95MiMPeusNL/44iqB9gpvue66DDv88Dx+yim5Zdy4TL/88qRUesXakyTFYmeNK2/z9nJ1J0lNv36pGzw4/XbdNUMOO6xz9vBz//d/qe7TJ1udf366b7ppem6xxT+HqqlJVffuaZg8OYXq6vTZdts19v1msgcwAFSUQlIsJHX1mdHcmI9d+/d86tq/5XN7bZ0bT3xv3nLBxDz6wqJ8Ze8JOfotY9K/R7c0trTlxSXlvX6ve+TZnP6ebdOnppDDJozMrU/OzpLWtgzp0yPjB/fNsks+0jlSRykZ3KdHHl6yuHPoeY3lPUeG9ume6S8sLQe3aS8vTf2vSypXVSUp5oXFTdlhWP+kvT07DOydC9//lmw3rF9a2jrSp742tVWFVdsWi0lNbV5Y0pR+PbolpWRU/56Z/PzClKqqOpe5Liuld21VenaryS+PfVdKyzchLqSQB2e+lFRV5cI7p6Rnt+rc/un9M/n5hfnUtfflwYXLyuF1lZdKAAAAALw2b7nuutQPG5aHjj02fSZMyJhTT02SLJszJ0smT871fft23lsoFtP8/PPZZO+9s+3FF+eJM87IpM9+NuPOPjtDP/jBLJszJymVcsvmm3e2KXV0pN9uu726YgqFDD/qqAw/6qgsfPDBPHTssVk2a1a2ufTStDU05KFjjslDH1n+nl+plN7bbZckaZw2bbXQ99VoW7IkLfPnp/tmm3We6zFmTLnPGTNSWCmMTZLqXr1SVV+f1uXLS69yrUePbHHmmdn8jDMy57rr8sgJJ6TU0ZGhhx/+srWvLXUDB2bRww8nSZZOn14O5f+l/iQpduuWt06cmMlf+EKmXnJJNj3hhIw966w13vtm8a4mAFSU0vJ9gNuSFJOamjS2teZLf3gwH95l8+w1bnBG9e+RE3Yfl92+9ftMeWFxPva2LfKpd22dFIt5cPaCPPXiohy63ab50E6b5as3PZoUq/PswoY8+OxL2fnrvysHsIXlQXP3Hkl9j3JYWl2dJ19amFkLl+Yju26eu6+6t1xSdU35c6FjpSC3UF6uulBMRynlF37t7fnxUbvl5snPZZ9Lb0xHR0ee+vIHl9+78oul8vHKcfJzixrz7rFDystct7WU0+nlFixry5JlrfnQFbfm+idmlWf3FgpJbXVSX5/mjvacecOjOe/Gh/PN970lvz/+PRn2leuSurqkWOrSF2oAAAAArH/qBg1K/dCh2e6yy3Lnrrtm6OGHp++OO6b78OHpu/322f2uu9bYbvjRR2f4UUdl5pVX5sGPfCR9tt8+9cOHp1BVlfc++2zn/rcrK3brllJLyxp6W13fHXbImFNPzWOf/nR23GijVPfqlR1++tMM3Hff1R/D4MFpWL6/7cqq6upWW655ZdW9eqVmo43SOHVq+u64Y5J07pPbfcSINM2cuXqjYrG8dd2/USgWM+TQQ/PCjTfmxT/9KaNOOOFla19Tja9U9xqtVFf3oUMz7447/u2tG+2yS952001ZcP/9uf/QQ9N9xIgM+/CHX9t4a5EloAGgkpRKSVtrduhfn2O3HZwte9dkdO/aHLvr5hnat0cmzVmQqmIxpVIpVYVC6mtWWuqkUA6Mv3/XlHzlwB0zuE/3XPfYjKRbXa56aEbGD94oZ+67fUb175lN+/fK9iM2SapqykFwoZAUq1Pq1i2n/Pq+HPPWLfK9D7wluw/umc3rk31H9sm7h29UDqcLKz6Wf7EiXy0kVcXyQV1NVaqLhZRKpX/esyKILWalTsrnf/fYsxk3sG8+s8f4DKwuZe8tBqe44v7q6vzk3qdz/vt2ye6jB2VI3/rsMGJA+vXqkSTZbmDvjOhbn2KhkMeem58+9TUpFvKyLzoBAAAA4JV0HzUqoz/zmTx8/PHpaG3N4MMOy5LJk/P017+exunT0zhjRucM06aZM7P48cfTtnRpem+9dQqFQloXLkyf7bZL7623zqOf+EQWT5qUpueey/x77ukco8eYMXn+j39M07PPZsHf/paO1tZVapj6ne9k3l13pXHGjCx84IHM+uUv02v8+CTlwHnyF76Q+XffnabZs7PwoYfSMn9++doxx2TWlVdm1pVXpmnmzCx86KG0NTSk+2abpW3p0sz57W/TOGNGGp58crXHPfKjH82UL385C+67L0ueeCKPffrTGXzwwem2ySav+rlra2jIM9/6VhY9/HAaZ8zI3FtvzUu3355eW275irX3HDMmC++/P4sffzxLpkzJsjlzXlXdL2fgAQek4ckn84+LL86yF17IizffnFJHeYpKR0tL5v3lL2ldvDh1Q4akdsCANc5ofjOZAQwAlaajlI26VeWju4zJ/ztk59RWFTP1pSU56Zp78sen56a6UMhej0zPnaccmD71tVnY1JLbnpyd1FQltd3y0wem5ryDdsp37nwizVU1Sbe6PNfSnPdcemMuOGTnfG6vbdNeKuU3j87MR3/3UFIq7/ubqmJS1z3XTHkxz154fb5xyE658ZN7p6pYyDNzl+Tbd07JrcXlwW2xuHwJ6JSD5+V7F3/ymntz8aG75KQ9t0p7qZTnFzfmpaaWctC84r6q6nLbFe1ravLMwuZ84Irbcv7BO+XcA3fM47MXpJRSFjW1JrW1Of36h3JOe0d++uE9MqRP9zy3qDGH//zuzJ+zOIduNTQn7z4u9TVVmfrSkhx75V3pqKkt711s8i8AAAAAb8BmJ5+c6Zddlhk//GFGfeIT2fWPf8ykM87IM9/6VgpVVRl08MHZ7rLLsuiRR/LYSSelee7cdNtkk4z57Gez0c47J0l2/vWv88Tpp+fe/fZLW0NDem6+eXa7884Ua2sz5rTT8tAxx+T27bZL3ZAh2fXGG1M/bFiS8lLRSyZNytRLLknznDmp6dMn/XffPRMuuyxJsuV552XKl7+ch447LsvmzEndkCHZ8ec/T22/fhl80EFpu+iiPHPhhXnkxBNTu/HGeevEiem15ZYZ+4Uv5NGTTkqptTWbnnBCBh144CqPeewXvpBSqZQHjjwyHS0t2WTffbPV17/+mp631gULMv+eezL14ovTsmBBug0cmCHvf3/GfvGLr1j7oEMOyfMTJ+bud70rVd27Z9tLL82gAw5Yre5xZ5/9quvpMXp0drzyykz+whfy5Je/nN5bbZUUCqnp0yfNL76YR048MY3Tp6e6R48MePe7M+K4417T413bCqPHbWN6C13mwfvWvMwBQKUrlUrp6OhIU1NT+q6058fL6XHKL5IRo16p56S9PWluTpY1lZdELpXKgWt1OcxNqSNpXpa0tWX5+stJdXV5OefqYtLcmjQ1JtVVSV2PcjDc3pE0NyUtLUlHR7lNTW1S1z2pqS6Hs0n5Wntruf/mlvL4STmsrakth7dtLeVlmLt1K19rWVZuV1NTrmnFGEm537q6cu1ty893qy+Hs63N5cdZV5tCa1u26tMts+cvTlUKOWS7kfnKgTtlxNm/TmvP3ssfc3N5aeyOUvmxdasr19PS/M8xl+8vnPr68nNSeIXFUp6dlqUXHvWqvn8AAAAAVLZi0cK7FatUyuInnkjd4MEptbfn+YkT89Q55+TdTz2VYk3NGpt0dHSs8fy/WrhwYerr61MsFlfbI/n1MgMYACpKoRy2dqsrB5mljuUBcKEculYtfxFaU1sOPEvLA+BCsRyKFopJXVVSW/PPvgrFpFAqh67dVtrHd8Us3pVD0mIxKdQmxeqkW/vy8VMef8WM2lJtOmcBJ+VxV4TUHUnqVm5XLLcrplxTaXkdhUL5sdR0S9KejWsKueqYPbLZgF5paWvPw7Pm5+Af3JLWurpysFws/PP56FipnmLKIXBd3Urni/8cAwAAAADY4DXPnZsH//u/0zhtWoq1tem97bbZ6eqr/23429UEwABQcZYHt//6G4eFzv8k1YVywLqma8UVoe9K5wpr6HPl66uM80rjl1Y+sVLQWkiqsoZ2K+77l3bF5WN0FPNiS7L1hTeWZx+XlofDtd3KM5SrikmK5dnNpTX0W11KSlWrnwcAAAAASNJtk02y5wMPdHUZr5oAGAAq1csGmYWX39/237V9LeHov733X8//y/Grbrf8XLEqqV0eOq+YnbxKCL1SwLzGrl/huQAAAAAAWI8IgAGA9V+xuGpw/O9mJwMAAAAAVDgBMABQGSzdDAAAAACQ4ivfAgCsGwpJW2tXF8EKba0xyxgAAAAAWNcIgAFgPVFdVUgWzBcCrwvaWpMX5qS62kspAAAAAMpKpVJXl8A6oqv/LFgCGgDWE/uOH5qJj89KZj+XxIvJrlVICsm7xg3u6kIAAAAAWIesCP4KtivbIHV18LuCABgA1hPfPvQt6dWtOrc+OScvLFnW1eVs0Ab26pZ3jx2ccw/YoatLAQAAAGAdsXL4t64EgWyYBMAAsJ4Y2Ls+P/ivt3d1GQAAAAAArMNsXAcAAAAAAABQIQTAAAAAAAAAABVCAAwAAAAAAABQIQTAAAAAAAAAABVCAAwAAAAAAABQIQTAAAAAAAAAABVCAAwAAAAAAABQIQTAAAAAAAAAABWiuqsLAIAN3cKFC7u6BAAAAAAAKoQAGAC6SKFQSG1tbTo6Orq6FAAAAAAAukCxWEyhUFirfQqAAaCLFAqFVFdXp1QqdXUpAAAAAAB0gUKhIAAGgEpQKBRSKpX+Iz/cAQAAAABYv6zN94kFwADQRQS/AAAAAACsbcWuLgAAAAAAAACAtUMADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAFAhBMAAAAAAAAAAFUIADAAAAAAAAPz/9u4zPKoy7+P4L2XS22SSACEkpNMJRaoCgiKIiqyiCLKylhVd2RXLWtbu2tvaFl0FfRBdcSlKVaqKJjQBkZrMZFJJb6ROMsk8LwYHYpAtwuKO38918WJOTu7zPyd3JtfFb/73DTdBAAwAAAAAAAAAAAAAboIAGAAAAAAAAAAAAADcBAEwAAAAAAAAAAAAALgJAmAAAAAAAAAAAAAAcBMEwAAAAAAAAAAAAADgJgiAAQAAAAAAAAAAAMBNEAADAAAAAAAAAAAAgJsgAAYAAAAAAAAAAAAAN0EADAAAAAAAAAAAAABuggAYAAAAAAAAAAAAANwEATAAAAAAAAAAAAAAuAkCYAAAAAAAAAAAAABwEwTAAAAAAAAAAAAAAOAmCIABAAAAAAAAAAAAwE0QAAMAAAAAAAAAAACAmyAABgAAAAAAAAAAAAA3QQAMAAAAAAAAAAAAAG6CABgAAAAAAAAAAAAA3AQBMAAAAAAAAAAAAAC4CQJgAAAAAAAAAAAAAHATBMAAAAAAAAAAAAAA4CYIgAEAAAAAAAAAAADATRAAAwAAAAAAAAAAAICbIAAGAAAAAAAAAAAAADdBAAwAAAAAAAAAAAAAboIAGAAAAAAAAAAAAADcBAEwAAAAAAAAAAAAALgJAmAAAAAAAAAAAAAAcBMEwAAAAAAAAAAAAADgJgiAAQAAAAAAAAAAAMBNEAADAAAAAAAAAAAAgJsgAAYAAAAAAAAAAAAAN0EADAAAAAAAAAAAAABuggAYAAAAAAAASllpUAAAGrRJREFUAAAAANwEATAAAAAAAAAAAAAAuAkCYAAAAAAAAAAAAABwEwTAAAAAAAAAAAAAAOAmCIABAAAAAAAAAAAAwE0QAAMAAAAAAAAAAACAmyAABgAAAAAAAAAAAAA3QQAMAAAAAAAAAAAAAG6CABgAAAAAAAAAAAAA3AQBMAAAAAAAAAAAAAC4CQJgAAAAAAAAAAAAAHATBMAAAAAAAAAAAAAA4CYIgAEAAAAAAAAAAADATRAAAwAAAAAAAAAAAICbIAAGAAAAAAAAAAAAADdBAAwAAAAAAAAAAAAAboIAGAAAAAAAAAAAAADcBAEwAAAAAAAAAAAAALgJAmAAAAAAAAAAAAAAcBMEwAAAAAAAAAAAAADgJgiAAQAAAAAAAAAAAMBNEAADAAAAAAAAAAAAgJsgAAYAAAAAAAAAAAAAN0EADAAAAAAAAAAAAABuggAYAAAAAAAAAAAAANwEATAAAAAAAAAAAAAAuAkCYAAAAAAAAAAAAABwEwTAAAAAAAAAAAAAAOAmCIABAAAAAAAAAAAAwE0QAAMAAAAAAAAAAACAmyAABgAAAAAAAAAAAAA3QQCMX6S2tjZVVFad9nFz8gpUVV1z2sfFz8eZmjs/VZO9VfnVjWe7DAAAAAAAAAAAcJYRAOMX6ZPV6/T+R8tP65iNTU168rlX1NBwdkO4isoqvfLGAs2560Hdfs8jP8uw8oeaW1ravX5n0WItXrriv15Ha2urHnj8Oe3a853r2A9rOxNz53SYs3K/5m3PPdtlAAAAAAAAAADwX/XyvPla9emGs13Gz4r32S4AOBNeePVNHTxs7nDc19dHrzz7mMzZOerTK/W0XtNizZW/v5+iu3Q6reP+u+a9vVApyYm6bvpU2e12mcKNZ7Wef+bBPz+nSyZcoKGDB7iOpSQlKirS9F+vxdPTU0MHD1BcbMyP1vavzJ3KhhbFP79JGbNHqFdU8I+e9/rWHL25PU975pwnTw+Pn1R7Rl61nr7IWdcH3xbqzjUH1dDSqiAfbyWbAnTP6ERNTIn6SdcAAAAAAAAAAOBf8dnGL7R23Wa98OSD8vLych13OBy675GnNfrcYZp44fmn5VrnDOyvyIgzlylkbP9G8xd+qPvuvE2J8XEdvl5RWaX3P1quLLNVfn6+uvySCRo5bPCPjldZVa1P12/W3v2HZAwL1T1zbz3tNRMAwy3detN1amtrk9mSo7++vVDPPn6/vL295enpKYcka06efnXZxNN6zSyzVUmJ8fL4iUHeT5FXcETFJWW6Z+7vZDD8/H+9q6prVFRcqqSE7u2On+qN8Uzy8PDQpRMvkHTy2uytrf/S3Km1ObuGg3yO/wxuWr5X+0vqlD57hOvYu7sK9JtB3X5y+Jtf3aiCmkYNj3WG/ZssFZrat4ueuaiHjtrsenN7rmZ+tEfWu8cq2PfnPy8AAAAAAAAAAP/bhgxK05KPV+vAoSz17d3DddxizVV5RaWGDEo7bdcaMfTMZQrZOXlatmJtuxD7h95csEidoiL05MP3qKikVK+9+a46RUV0yD4kqaCwSC++9jedO3yIbvvtLIWHh52RukkC4Jb8/fwkOQPRuG5dFRoS4vqaxZqr5pYWvTH/PTU0Nio1KVE3zrpGAf7+kpyfvFi1doO+O3BItbV1iow06eF758rDw0Pz5r+nvPxC1dbVKbpzZ10/82p1je4sydkZ2reX801sxZr1yti+U/fM/Z3CQp3XbrLZdNudD+ixB+5SdGdnl/AjT76oMaOGa8y5w3Uo06xlK9aqoLBIJpNRs2Zc5fokydx7H9F1M65SWt9ekqT7H3lal186ocMb5IFDmWqy2XTL3Pvk5+urV557TJVV1Vq8dKUOZmbJx2DQ5ZdM0KiRQyVJO3Z9q1WfblBZWYU8PT313BMPuJ6dJNXV1+vDJSu0d/9BtbS06IrJk3TBmHO1bMVa7di1R5VVNUpKiNPdf7hF5uwcLf1kjXLzChQWFqrrpl+p1ORESc43yNWfbVSW2aoWe4sGD+ivG349TWZLjiTpnoeedD6P++9QbW2dXn/r//TKs4/J4XCc8pnb7Xat2/Sl0rfuVHlFpYKDg3TjddOVmpzguodVn25QZla27pjzW0nS51sytHb9Zj3z2P2u+fDCq3/TC08+qM82fKHc/AL94ZYbTlqbzdZ8yrnzvYaWNklyha37S2q1ZF+RTAE+rnM2Z1cor7pRM9O6SpIWfJOv1zJydOSoTUO7hentX/VTZKCP7G0OzVi8W7uO1Ki8oVl/PC9R941JUkZelZ7fkq0dhTWqs9mVGhnkGj8jr0rPTewpf4OX/A1emtyzs174yqrqxhZtsJTr2S8tslY2ysvTQ4fmjlatza4/rTusDZZy+Xh56u7zEjR7aJzyqxt1++oD2l5QLU8PD907OlG3DI3TWzvy9GpGjoprbYoz+uvzG4cp0Ic/JwAAAAAAAAAAJ2NYqHqkJGn7N7vbBcDbd+5WanKCTOFGVVZV68Mln+hQpkWBgQG67OLxGj5koCRp7frN+vLrbaquqZGvj6+eevReFReXatHi5SosKpa/n69umjVdvXqk6JV5CxQXG6PJk8ZLcnbsrlm3SdXVR9U9LkbTp05Rl87OFTKXr1yrrTt2q7a2Tp5enhoyME3Tpk6Wj8HQ4R6abDbNX/h3/ebaq/X6W++e9D6bmmzKzsnT9KumKDg4SMHBQRo8oJ/St+7sEAA7HA4tWLRYkyddpNHnDjstz/nH8D/2cGtZ5mylnBAGSlKmOVvxcd108/XXqqXFrpfnzVf6tm90wZhzVVJarqdfel19e/XQ3N/dpO8OHFLGtm/k7e2t7Jw87dt/SI/+6S75+Bi08O9LtGLtet1yw0xnZ2huvqZcOkFLPl6tb/Z8p7t+P9sV/kqSn6+vAvz91djYJEkqKS1XcWmZBqX1U3ZOnl6eN1/TrpyswWn9tPLTDXr/o+V66J7bVVxSqtq6eiUfe6OoOVqr0vIKJSfGd7xfi1WTJ43XRReMkaeHh5qabHr2L/PUp2eqnnr4Xh3Ksuitdz/QwLQ+CgoM1NcZO9QzNVl3/+EWNTQ2tgt/6xsa9PgzLyslKV4P3P17eXl5ydfXR21tbdr0xdeaNWOqeqQmy2azKSevQK++sUBX/eoyzb5hplZ9ukHrN32p1ORE7dy9VwveW6xLJozT9KmXa/HSFfL3d14n05KtoYMH6LoZUyVJPgaDVq7doIS4WHl6ep7ymbe2turleQvU0NioWddepZCQYN3/yNPtnrkkGQwG2VtbXa+3pG+T3d7+9aC0vvL385PFmqMeKck/Wtva9Zt/dO6cqKXNGQAbPJ2dvY9uytKM/l31wbdH1OZwyNPDQ3/dmqNp/aIVEeij17fm6MWvrHpvapqSTAGa+Y89eunrbD05vof2FB3V5uwK7bh1pAJ8vOUhafmBYt36yT7dPyZJr13WW49szFKAwbmle05Vg0rrmzU6PlxtDod2Ftbo7rUHNaxbmLqF+ev21Qc0Jt6kNdclqLrJLk8PacK72zWlVyel3zxCW/OrdceaA5o9NE4PbMhUpyBfHbx9tI7a7PL29NCB0lo9uD5Tn846RykRQcqtbiT8BQAAAAAAAAB0MHLYYC1avEzNzc3y8XHmCzt379UVky+Ww+HQG/Pfk8lk1KN/ulPWnDy9+c77iu/eTZ2jIpVltqpXj2RddvF4NTQ484sPlnyiHimJumPOTaqvb1BgQECHax44lKn3/r5Uv7n2asXFxWjDpi/10utv6fEH7pavr4/yC4rUv09PXXzROJWVV+jNBYvUpUsnXXj+eR3G+mTVZ+rbq4d69Uj+0Xv08/NVhClcW3fsUueoSLU52uSQQxUVVR3Ozc0vVF5+oTZ/ma7FS1coMtKkKZdOdDX/nU6ep31E4GeitbVV2Tl5Sk5oH5RmWazq3TNVEaZwdekcpa7RndXY2ChJWrR4mfr36anrZ16t6C6dlJdf6AqQsyxWdY/rpk5RETKGhSo1OVH19Q2SpLz8QrW0tGjNuk06bM7WfXfedtK9d0NDg1VTc1SSlL5thwb276PgoECtWL1OY0eN1OiRwxQYGKB+vXuooqJSkpRptqprdGcFBga46oiMCJcxLLTd2A6HQ1lmq1KTE+VjMMjb21uff5WhkOAgzbzmCgUHB2lA/z5qa2tTdfVRtTkcys7JU9/ePRQUGKCoH6yPv3bdZoUbw3TDr69RVGSETOFGBQUGOu/Vble/Pj0VFBggU7hRSz9ZrSmXTtQ5g/qrpLRMWRar4rvHqbGpSQs/WKKZ036li8ePlSncKGtuvqsz2GzJUUpygnwMBtena7IszqW0/9kz/+KrrSorr9A9c29VUkJ3VVRUKiw0RJ2iItrdh5+vr2zNzZKkQ5lmNdlssjXbJDmXed62c7cuHDvKNV+SEuJOWduPzZ12c6/NIUkyeHnq69xKHSit0yPjUtTqcKi8vlmHy+q00VKh24Z1V0Nzq57fkq2/Tu6jEXFGRQX5amScUfk1zg8KZORVaUB0iOKMAYoM9JGPl4f+sOqAXr6kt+YM764uwX7aUVCtkXHhznmVVyV7W5t6/uVLRfx5vX79jz0aHW/SR9cMVJvDoR2FNRqfFCGjv4/ijQGaty1PA6ND9PC4FNW3tGr14RIN6uqcW9WNLXLIIR9vT0WH+CkqyFc1TXZ5eDiXyw7w8VLPqKAO9w8AAAAAAAAAwMC0vvL09NSub/dJkvYdPKzm5hYNSusna26+s3P2ystlDAvVwLS+6h4bo+/2H3J9f0hwsEJDgl3du/5+fiopK5fd3qqoyAhXbnKiz7/aqmFDBuqcQf0VFWHS1VdcJrvdrr37D7rOCQwMVFhoiJIT4zVkUJqyLNYO4xwpLtHO3Xt12bGu4lO5+fprZbHm6o77H9NDf35ee/cdlJd3xyWjCwqLZAwL1c3XX6u/PPOIxo8drTfmv6eKyo5h8U9FAAy3lVdwRE02m5ISj7fYOxwOWbJz2nXPFhWVqHNUlGpr63TwcJYmnLDpeKY5WylJxwPgE9v1i0tK1blTpOtr4cYwHTps1thRIxUSfPJQLMIUrtLyCrW02LUlfbsmXHi+mmw27Tt4uN0a9WXllYowOQNZi7V9vWaLVUkJHbt/C44UqcXeovi4WNexXXu+04hh57j2JS4/FiqbTEYVHHs+id07blguSbu+3afhQwZ1OJ6VnaO4bl3l4+Ncbri2rl4HD5u1fOVa3fPgE1ry8WqdO+wcTRx/vvYfOCyDweAap7SsXFXVNUpJSlBDQ6MKjhQpJfF4h3abwyFrTp7rOZ/qmWfs2KULzj/PFc5arLmuYPlEQUGBrq7rT1av0+WTJshma5a9tVUr16xX3949FRsTrfzCItntrYqP63bS2k41d37o+z19HXLo7rWH9PDYZEUE+ijUz6DCoza9nJ6jKb07KTkiUF/lVsrL00PjkyJd359b3ajYUOey0hl5Va69fSVpo6VC/t6euqpvF0lSSZ1NlsoGjTh2TkZetWYNjFH6zcNVeO84HZo7Ro9dkKJQP4P2ldSqvtmuc2KO7ymwdH+RNloqlPDcZs1a8q1iQv31zhX9JUnPTOihzPJ6DXh1iz7PrpAkDY81au7IeE1auEOzP/5Oza1tHe4fAAAAAAAAAAAfg0HDBg/QlvRtkqSv0rdryOA0+fn5qrq6RpJ094NPaPbt92n27fcpJ6/A1UR3Mr+59ir5+vjo/kef1lvvfqCjtXUdzqmoqFJU5PFGMS8vL5lM4SftyJWk4OAgV+PZiVasXqeLxo3usAXkycTHddOf7pqjv774hJ5/4kH5+vqqy7GtQE/U2toqb29vdekcJR8fH40cNljBQYHKNHcMoH8q1u2E28o0Zyuma5d2SwAUFhWrsbFJCfHOkPRobZ1KyyuUEB+riqpqSVKkydlJWVFZparqGqUeC4DNlhyNGjH0hPGtrvXkzZYcnTOwv5IS4/X2ux+4lij4oaSEeBUeKdaWjO1KSUpQbEy0jhSVSHKGst9L37bTtaTAkeJSjTwhHLbk5OncYed0GDvLbFV8XKwMhuO/1hWVVYo4oRP56607lNA9Vv5+fsqyWNUtJlp+fr4nfX4NDY0dllOWnKHsiSHo92/GLz71cIdN0CurqhUVebyz2Jydo+jOnRQcFKjDWRYZDAZXoCtJBQVHZLPZlNDd+fM51TMvKSlTdOfj4avFmqu0fr071BsWGqL6hgZ9s+c72Vtbdc6g/lr49yXaf+Cwtn2zWw/fd4frvmKPBdvW3I61nWru/JD3saWf523NVYift67s4wxru4f568ucCi3dX6Svbx4hScqraVJMiJ+OZcaqamzR2swyvTfVub/z1vwqXTcwxjX2kdomdTce/4OzLb9acWH+ig5xLqv9dW6lHhybrJjQjn+UMvKq1bdTsIJ8j8+RoqM2vTc1TWMSTB3O7xEZpI03DNOjGzN137pDypg9UpL0x1GJmpHWVaP+lqG1h0s1uVfnDt8LAAAAAAAAAMCYUSP00J+fV6Y5W9/uO6g/3TVHkhRuDJOnh4defOqhfylklZz7Ct80a7qqqmv0xvz3tHjpCt00a3q7c0zhYSotK3e9bm1tVUVFZbsM5kTOBjpHh+O79+7Xzt179eHSFa5jT73wmm6/9Ub16ZX6ozVuSd+u0rJyDRmU1uFrpnCjqqprZLM1y9fXRw6HQy0t9na5zulCBzDcVpbFqpQf7JNrtuQoJibatddtZpZF4cYwmcKNMoaFytPDQzt371VZeYVWf7pR3t7eCg4O0pHiEtXV1yvx2PLAR2vrVFpW7upONR/r0k3r20tp/Xrr/cXLT1pTanKCMs3ZWrfxC02dcokkKSQkWN5eXtr97T7VHD2qRYuXqbKqWuPHjZYkBfj7yZqbp+qao/ri663Kzy9U6EmC2cPmbCUntt9Q3BRu1N59B1VbW6ct6du1YfMWXXn5pB99PieKi+2qLenbVV5RqeKSUuUXHjn2DNsHwCaTUb6+Plq7frOqqmtUUFgkizVXkvMNvPBIsQoKi5RXcERffLVVRqNzeeHm5hY5HG0qKilVTl6BamvrZLbmukLpf/bMAwMDdOBQlhoaGrV330GZLTnqkZzU4T5M4UbV1zfowyWfaPrUy4898yDNX/ihLh4/zrX09YndvSet7RRz54cCfZxB+EvpOXphYk9XuJtkCtAzX1p0ZZ8uSjIFSpJiQ/1krmzQd8VHZals0LQPd2lYtzCNS4zQ4bI6VTW2aOgJHbtxYf7aX1qnPUdqdLC0Tm/tyFNMqLOm77uBB3bpOD8kKSOvUiPi2tfbMypIb+3Mk7WyQblVDfosq0ySM0guqGlUVWOzam12RQX6qKqxRV9aK1Rrs6u8vln2Noc6BflqzbpNWv3ZppNeEwAAAAAAAADwyxXduZN6pibpzQWLlNA9VrHdukqSYmNjFNO1ixZ+sEQFR4pUVV1z0qWYT5RpzlZtXb0MBoOiIiNU39Cxc3fUucO0dfsu7dj1rUrLyrV42Up5eXmpb+8e/1bdb778tN5+7TnXP19fH913523q0ytV9Q0NeuWNBa7cpLm5WcUlpfpk9Tq9/9FyTbzwfHWPdTZ2ffH1Vn20fJUkKTU5UcFBgVq+6lMdra3TZxu/kMPRdso9hv9TdADDLTkcDmVZrLr26l+1O55pzm63pHBWdo7rdWhIsK68fJI++MfH8pCHxo0ZqagIk+obGpRltiom+ng38fdLPpvCjSouLVNtbZ1rnCmXTtADjz+rA4eyOvzSRnfupMqqak274jJXcBgUGKBrp12hJR+vkc1mU4+URP3x9lsUHOQMCC+deKEWLPxQ9z/6jPr17qG0fr1lt9s73HOWOVvnjRjS7tiMq6bonfc/0h8fekIx0V30+9nXu5a0Nmfn6JpjgejJzLhqit5Z9JEe+vPzCgwM0ORJF8lgMOhobV27ZbX9/fx043XX6B/LVmnVpxtlDAvRZRePV2J8nAb076Pde/frqRdfU2hIiAYN6KviYmfAmJKUoITucXr8mb8oLDRUv/vtdc7lrb/f//cUz1ySpl1xmT74x8f6/KsMmcKNCg4K7LD/r+TsAA7w99egAf0UH9dNkmQMC1NYaKgmjj++3HeWJUczjn0i52S1nWru/FC4v3NZ6plpXdW7U7DreLIpUCsPleqP5x1fWvrCpEhd3beLLv6/HfLx8tSVfTrr4bEpkpz7+faMDFbYsfEkaWJKlC5OidSkhTsVEWDQ1f2i9U2hc6mM9NwqRQT4KM7Ycd8DSdqaX61nJ/Rsd+wvk3ppzsr9Gv5GukL8vDWlVyddlBypt3fka4OlXK0OhwZ3DdNLk3rru+Kj+v2q/SqoaVJUkK/mjozXsFijXlmdI39/v5NeEwAAAAAAAADwy3bBmPP06pvvtMskPD08NGf29Vq8dIVeePVvstma1TkqQvffNUfe3iePL1eu3SBztlUeHp7q1rWLZk67osM5fXqmauY1V2jFmnWqqq5RfFw33XHbb+Xne/LVUP8TjY1NMmfnqKq6Rt26RmvF2vXakr5dcTFd9dtZ0zUwra/r3MIjxcrNK5AkGQzemjP7er2/eJnuffgpRYQb9Ydbb/yXO6D/HR6JPfp27GsG/kt2bfvqbJdwxrW02NXY1KS6+not+nCZTOFG3fDraaf1GhZrrl56/S29+ORDrr153VlxaZm8vbzk5+en8opKvf/Rcg0fMkhjR40426UBAAAAAAAAAACcVXQAA2fYoUyz5r29UGFhoRo1cqjGjx11Wsd3OBz6eNVnmnDBmF9E+Cs5N4rfkrFdTU02mcKNOm/EkJ9F+Pv8lmw9vjnrbJfxX7VsxiCNS+zYeQ0AAAAAAAAAAM4OOoBxVv0SOoDPtJYWu7IsVvVMTTq2WTkAAAAAAAAAAAB+qegABv7HGQzeZ2SDcAAAAAAAAAAAAPzv8TzbBQAAAAAAAAAAAAAATg8CYAAAAAAAAAAAAABwEwTAAAAAAAAAAAAAAOAmCIABAAAAAAAAAAAAwE0QAAMAAAAAAAAAAACAmyAABgAAAAAAAAAAAAA3QQAMAAAAAAAAAAAAAG6CABgAAAAAAAAAAAAA3AQBMAAAAAAAAAAAAAC4CQJgAAAAAAAAAAAAAHATBMAAAAAAAAAAAAAA4Cb+H8ySv2mHLGQ4AAAAAElFTkSuQmCC",
438
+ "mime_type": "image/png"
439
+ }
440
+ ],
441
+ "match": {
442
+ "location": "/tmp/tests/test-acceptance/features/step_definitions/common.js:35"
443
+ }
444
+ }
445
+ ],
446
+ "tags": [
447
+ {
448
+ "name": "@flexible-checkout-fields",
449
+ "line": 1
450
+ }
451
+ ],
452
+ "type": "scenario"
453
+ }
454
+ ],
455
+ "id": "tracker-message-flexible-checkout-fields-tests",
456
+ "keyword": "Feature",
457
+ "line": 2,
458
+ "name": "Tracker message Flexible Checkout Fields tests",
459
+ "tags": [
460
+ {
461
+ "name": "@flexible-checkout-fields",
462
+ "line": 1
463
+ }
464
+ ],
465
+ "uri": "/tmp/tests/test-acceptance/features/tests_scenario/flexible-checkout-fields/trackerMessageIsVisibleWhenActivatePluginFlexibleCheckoutFieldsTests.feature"
466
+ }
467
+ ]
flexible-checkout-fields.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Flexible Checkout Fields
4
  Plugin URI: https://www.wpdesk.net/products/flexible-checkout-fields-pro-woocommerce/
5
  Description: Manage your WooCommerce checkout fields. Change order, labels, placeholders and add new fields.
6
- Version: 1.6.5
7
  Author: WP Desk
8
  Author URI: https://www.wpdesk.net/
9
  Text Domain: flexible-checkout-fields
@@ -33,7 +33,7 @@
33
 
34
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
35
 
36
- $plugin_version = '1.6.5';
37
  define( 'FLEXIBLE_CHECKOUT_FIELDS_VERSION', $plugin_version );
38
 
39
 
@@ -64,9 +64,11 @@
64
 
65
  require_once( 'classes/tracker.php' );
66
 
 
 
67
  class Flexible_Checkout_Fields_Plugin extends WPDesk_Plugin_1_8 {
68
 
69
- protected $script_version = '1.6.5';
70
 
71
  protected $fields = array();
72
 
@@ -974,10 +976,19 @@
974
 
975
  add_action( 'plugins_loaded', 'flexible_chekout_fields_plugins_loaded', 9 );
976
  function flexible_chekout_fields_plugins_loaded() {
977
- if ( !class_exists( 'WPDesk_Tracker' ) ) {
978
- include( 'inc/wpdesk-tracker/class-wpdesk-tracker.php' );
979
- WPDesk_Tracker::init( basename( dirname( __FILE__ ) ) );
 
 
 
 
 
 
980
  }
 
 
 
981
  }
982
 
983
  function flexible_checkout_fields() {
3
  Plugin Name: Flexible Checkout Fields
4
  Plugin URI: https://www.wpdesk.net/products/flexible-checkout-fields-pro-woocommerce/
5
  Description: Manage your WooCommerce checkout fields. Change order, labels, placeholders and add new fields.
6
+ Version: 1.6.6
7
  Author: WP Desk
8
  Author URI: https://www.wpdesk.net/
9
  Text Domain: flexible-checkout-fields
33
 
34
  if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
35
 
36
+ $plugin_version = '1.6.6';
37
  define( 'FLEXIBLE_CHECKOUT_FIELDS_VERSION', $plugin_version );
38
 
39
 
64
 
65
  require_once( 'classes/tracker.php' );
66
 
67
+ require_once( __DIR__ . '/vendor/autoload.php' );
68
+
69
  class Flexible_Checkout_Fields_Plugin extends WPDesk_Plugin_1_8 {
70
 
71
+ protected $script_version = '1.6.6';
72
 
73
  protected $fields = array();
74
 
976
 
977
  add_action( 'plugins_loaded', 'flexible_chekout_fields_plugins_loaded', 9 );
978
  function flexible_chekout_fields_plugins_loaded() {
979
+ if ( ! function_exists( 'should_enable_wpdesk_tracker' ) ) {
980
+ function should_enable_wpdesk_tracker() {
981
+ $tracker_enabled = true;
982
+ if ( ! empty( $_SERVER['SERVER_ADDR'] ) && $_SERVER['SERVER_ADDR'] === '127.0.0.1' ) {
983
+ $tracker_enabled = false;
984
+ }
985
+
986
+ return apply_filters( 'wpdesk_tracker_enabled', $tracker_enabled );
987
+ }
988
  }
989
+
990
+ $tracker_factory = new WPDesk_Tracker_Factory();
991
+ $tracker_factory->create_tracker( basename( dirname( __FILE__ ) ) );
992
  }
993
 
994
  function flexible_checkout_fields() {
inc/wpdesk-tracker/class-wpdesk-tracker-factory.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Factory' ) ) {
17
+
18
+ /**
19
+ * Can create and build tracker instance.
20
+ *
21
+ * Class WPDesk_Tracker_Factory
22
+ */
23
+ class WPDesk_Tracker_Factory {
24
+
25
+ /**
26
+ * Static tracker instance, single for application.
27
+ *
28
+ * @var WPDesk_Tracker
29
+ */
30
+ private static $tracker;
31
+
32
+ /**
33
+ * Builds tracker instance.
34
+ *
35
+ * @param string $basename Plugin basename.
36
+ *
37
+ * @return WPDesk_Tracker built tracker.
38
+ */
39
+ private function build_tracker( $basename ) {
40
+ $sender = new WPDesk_Tracker_Sender_Wordpress_To_WPDesk();
41
+ $sender = new WPDesk_Tracker_Sender_Logged( $sender );
42
+
43
+ $tracker = new WPDesk_Tracker(
44
+ $basename,
45
+ $sender
46
+ );
47
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Gateways() );
48
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Identification() );
49
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Identification_Gdpr() );
50
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Jetpack() );
51
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_License_Emails() );
52
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Orders() );
53
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Orders_Country() );
54
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Orders_Month() );
55
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Plugins() );
56
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Products() );
57
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Products_Variations() );
58
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Server() );
59
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Settings() );
60
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Shipping_Classes() );
61
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Shipping_Methods() );
62
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones() );
63
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Templates() );
64
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Theme() );
65
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_User_Agent() );
66
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Users() );
67
+ $tracker->add_data_provider( new WPDesk_Tracker_Data_Provider_Wordpress() );
68
+
69
+ $tracker->init();
70
+
71
+ return $tracker;
72
+ }
73
+
74
+ /**
75
+ * Creates tracker instance.
76
+ *
77
+ * @param string $basename Plugin basename.
78
+ *
79
+ * @return WPDesk_Tracker created tracker.
80
+ */
81
+ public function create_tracker( $basename ) {
82
+ if ( empty( self::$tracker ) ) {
83
+ self::$tracker = $this->build_tracker( $basename );
84
+ }
85
+
86
+ return self::$tracker;
87
+ }
88
+ }
89
+
90
+ }
91
+
inc/wpdesk-tracker/class-wpdesk-tracker.php CHANGED
@@ -2,86 +2,108 @@
2
  /**
3
  * WP Desk Tracker
4
  *
5
- * @class WPDESK_Tracker
6
- * @version 1.3.2
7
- * @package WPDESK/Helper
8
- * @category Class
9
- * @author WP Desk
10
  */
11
 
12
  if ( ! defined( 'ABSPATH' ) ) {
13
- exit;
14
  }
15
 
16
- if ( !class_exists( 'WPDesk_Tracker' ) ) {
17
 
18
  class WPDesk_Tracker {
19
 
20
- public static $script_version = '11';
 
 
 
 
 
 
 
 
21
 
22
- public static $request_coupon = false;
 
 
 
23
 
24
- public static $plugin_basename = '';
 
 
 
25
 
26
- public static $dismiss_coupon = false;
 
 
 
27
 
28
- public static $message_version = '3';
 
 
 
29
 
30
  /**
31
- * URL to the WP Desk Tracker API endpoint.
32
- * @var string
 
33
  */
34
- private static $api_url = 'https://data.wpdesk.org/?track=1';
35
- private static $test_api_url = 'https://testdata.wpdesk.org/?track=1';
 
36
 
37
  /**
38
  * Hook into cron event.
39
  */
40
- public static function init( $plugin_basename ) {
41
- self::$plugin_basename = $plugin_basename;
42
- add_action( 'plugins_loaded', array( __CLASS__, 'load_plugin_text_domain') );
43
- add_action( 'admin_init', array( __CLASS__, 'init_schedule') );
44
- add_action( 'admin_enqueue_scripts', array( __CLASS__, 'admin_enqueue_scripts' ), 100 );
45
- add_action( 'wpdesk_tracker_send_event', array( __CLASS__, 'send_tracking_data' ) );
46
- add_action( 'admin_menu', array( __CLASS__, 'admin_menu' ) );
47
- add_action( 'admin_init', array( __CLASS__, 'admin_init' ) );
48
- add_action( 'admin_notices', array( __CLASS__, 'admin_notices' ) );
49
- add_action( 'wp_ajax_wpdesk_tracker_notice_handler', array( __CLASS__, 'wp_ajax_wpdesk_tracker_notice_handler' ) );
50
- add_action( 'wp_ajax_wpdesk_tracker_deactivation_handler', array( __CLASS__, 'wp_ajax_wpdesk_tracker_deactivation_handler' ) );
51
-
52
- add_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
53
- add_filter( 'option_wpdesk_helper_options', array( __CLASS__, 'option_wpdesk_helper_options' ), 10, 2 );
54
- add_filter( 'default_option_wpdesk_helper_options', array( __CLASS__, 'default_option_wpdesk_helper_options' ), 10, 3 );
55
-
56
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_data_license_emails' ) );
57
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_data_shipping_country_per_order' ) );
58
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_data_shipping_classes' ) );
59
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_data_product_variations' ) );
60
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_data_orders_per_month' ) );
61
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_data_shipping_methods_in_zones' ) );
62
-
63
- add_filter( 'wpdesk_tracker_data', array( __CLASS__, 'wpdesk_tracker_message_version' ) );
64
-
65
- add_action( 'admin_bar_menu', array( __CLASS__, 'admin_bar_menu' ), 999 );
66
- add_action( 'wp_head', array( __CLASS__, 'wp_head' ), 999 );
67
- add_action( 'admin_head', array( __CLASS__, 'wp_head' ), 999 );
 
 
 
 
68
 
69
  global $pagenow;
70
  if ( 'plugins.php' === $pagenow ) {
71
- add_action( 'admin_footer', array( __CLASS__, 'admin_footer' ) );
72
  }
73
-
74
  }
75
 
76
- public static function get_api_url() {
77
- $api_url = self::$api_url;
78
- if ( apply_filters( 'wpdesk_tracker_use_testdata', false ) ) {
79
- $api_url = self::$test_api_url;
80
- }
81
- return $api_url;
82
  }
83
 
84
- public static function wp_head() {
 
85
  if ( apply_filters( 'wpdesk_tracker_use_testdata', false ) && apply_filters( 'wpdesk_tracker_show_testdata', false ) ) {
86
  include( 'views/tracker-styles.php' );
87
  }
@@ -90,7 +112,7 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
90
  /**
91
  * @param WP_Admin_Bar $wp_admin_bar
92
  */
93
- public static function admin_bar_menu( $wp_admin_bar ) {
94
  if ( apply_filters( 'wpdesk_tracker_use_testdata', false ) && apply_filters( 'wpdesk_tracker_show_testdata', false ) ) {
95
  $args = array(
96
  'id' => 'my_page',
@@ -102,17 +124,17 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
102
  }
103
 
104
 
105
- public static function init_schedule() {
106
  $options = get_option( 'wpdesk_helper_options' );
107
- if ( !is_array( $options ) ) {
108
  $options = array();
109
  }
110
  if ( empty( $options['wpdesk_tracker_agree'] ) ) {
111
  $options['wpdesk_tracker_agree'] = '0';
112
  }
113
  $wpdesk_tracker_agree = $options['wpdesk_tracker_agree'];
114
- $wp_next_scheduled = wp_next_scheduled( 'wpdesk_tracker_send_event' );
115
- if ( $wpdesk_tracker_agree == '1' && !$wp_next_scheduled ) {
116
  wp_schedule_event( time(), 'daily', 'wpdesk_tracker_send_event' );
117
  }
118
  if ( $wpdesk_tracker_agree == '0' && $wp_next_scheduled ) {
@@ -120,12 +142,12 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
120
  }
121
  }
122
 
123
- public static function load_plugin_text_domain() {
124
- $wpdesk_translation = load_plugin_textdomain( 'wpdesk-tracker', FALSE, self::$plugin_basename . '/inc/wpdesk-tracker/lang' );
125
  }
126
 
127
- public static function admin_footer() {
128
- if ( !is_network_admin() && wpdesk_tracker_enabled() && !apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) {
129
  $plugins = array(
130
  'wpdesk-helper/wpdesk-helper.php' => 'wpdesk-helper/wpdesk-helper.php'
131
  );
@@ -134,22 +156,22 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
134
  }
135
  }
136
 
137
- public static function admin_enqueue_scripts() {
138
  $screen = get_current_screen();
139
  if ( $screen->id == 'admin_page_wpdesk_tracker' || $screen->id == 'admin_page_wpdesk_tracker_deactivate' ) {
140
- wp_register_style( 'wpdesk-helper-tracker', plugin_dir_url( __FILE__ ) . 'assets/css/tracker.css', array(), self::$script_version, 'all' );
141
  wp_enqueue_style( 'wpdesk-helper-tracker' );
142
  }
143
  }
144
 
145
- public static function admin_menu() {
146
  add_submenu_page(
147
  null,
148
  'WP Desk Tracker',
149
  'WP Desk Tracker',
150
  'manage_options',
151
  'wpdesk_tracker',
152
- array( __CLASS__, 'wpdesk_tracker_page' )
153
  );
154
  add_submenu_page(
155
  null,
@@ -157,18 +179,18 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
157
  'Deactivate plugin',
158
  'manage_options',
159
  'wpdesk_tracker_deactivate',
160
- array( __CLASS__, 'wpdesk_tracker_deactivate' )
161
  );
162
  }
163
 
164
- public static function wp_ajax_wpdesk_tracker_deactivation_handler() {
165
- self::send_deactivation_data();
166
  }
167
 
168
 
169
- public static function wp_ajax_wpdesk_tracker_notice_handler() {
170
  $option = get_option( 'wpdesk_helper_options' );
171
- if ( !$option ) {
172
  add_option( 'wpdesk_helper_options', array() );
173
  }
174
  $type = '';
@@ -176,8 +198,8 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
176
  $type = $_REQUEST['type'];
177
  }
178
  if ( $type == 'allow' ) {
179
- $options = get_option('wpdesk_helper_options', array() );
180
- if ( !is_array( $options ) ) {
181
  $options = array();
182
  }
183
  update_option( 'wpdesk_helper_options', $options );
@@ -186,115 +208,90 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
186
  update_option( 'wpdesk_helper_options', $options );
187
  }
188
  if ( $type == 'dismiss' ) {
189
- $options = get_option('wpdesk_helper_options', array() );
190
- if ( !is_array( $options ) ) {
191
  $options = array();
192
  }
193
- delete_option( 'wpdesk_tracker_notice' );
194
- $options['wpdesk_tracker_agree'] = '0';
195
- update_option( 'wpdesk_helper_options', $options );
196
- update_option( 'wpdesk_tracker_notice', '1' );
197
- }
198
- if ( $type == 'allow_coupon' ) {
199
- self::$request_coupon = true;
200
- $options = get_option('wpdesk_helper_options', array() );
201
- if ( !is_array( $options ) ) {
202
- $options = array();
203
- }
204
- update_option( 'wpdesk_helper_options', $options );
205
- delete_option( 'wpdesk_tracker_notice' );
206
- $options['wpdesk_tracker_agree'] = '1';
207
- update_option( 'wpdesk_helper_options', $options );
208
- }
209
- if ( $type == 'dismiss_coupon' ) {
210
- self::$dismiss_coupon = true;
211
- $options = get_option('wpdesk_helper_options', array() );
212
- if ( !is_array( $options ) ) {
213
- $options = array();
214
  }
215
- remove_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
216
- unset( $options['wpdesk_tracker_agree'] );
217
- update_option( 'wpdesk_helper_options', $options );
218
- add_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
219
- delete_option( 'wpdesk_tracker_notice' );
220
- $options['wpdesk_tracker_agree'] = '0';
221
- update_option( 'wpdesk_helper_options', $options );
222
- update_option( 'wpdesk_tracker_notice', 'dismiss_all' );
223
  }
224
  }
225
 
226
- public static function update_option_wpdesk_helper_options( $old_value, $value, $option ) {
227
  if ( empty( $old_value ) ) {
228
  $old_value = array( 'wpdesk_tracker_agree' => '-1' );
229
  }
230
- if ( !isset( $old_value['wpdesk_tracker_agree'] ) ) {
231
  $old_value['wpdesk_tracker_agree'] = '-1';
232
  }
233
  if ( empty( $value ) ) {
234
  $value = array( 'wpdesk_tracker_agree' => '-1' );
235
  }
236
- if ( !isset( $value['wpdesk_tracker_agree'] ) ) {
237
  $value['wpdesk_tracker_agree'] = '-1';
238
  }
239
  if ( $old_value['wpdesk_tracker_agree'] != '1' ) {
240
  if ( $value['wpdesk_tracker_agree'] == '1' ) {
241
- self::send_tracking_data( true, 'agree' );
242
  }
243
  }
244
  if ( $old_value['wpdesk_tracker_agree'] != '0' ) {
245
  if ( $value['wpdesk_tracker_agree'] == '0' ) {
246
- self::send_tracking_data( true, 'no' );
247
  update_option( 'wpdesk_tracker_notice', 'dismiss_all' );
248
  }
249
  }
250
  }
251
 
252
- public static function option_wpdesk_helper_options( $value, $option ) {
253
  if ( apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) {
254
- if ( !is_array( $value ) ) {
255
  $value = array();
256
  }
257
  $value['wpdesk_tracker_agree'] = 1;
258
  }
 
259
  return $value;
260
  }
261
 
262
- public static function default_option_wpdesk_helper_options( $default, $option = null, $passed_default = null ) {
263
  if ( apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) {
264
- $default = array();
265
  $default['wpdesk_tracker_agree'] = 1;
266
  }
 
267
  return $default;
268
  }
269
 
270
- public static function admin_notices() {
271
- if ( !wpdesk_tracker_enabled() ) {
272
  return;
273
  }
274
- $screen = get_current_screen();
275
- $options = get_option('wpdesk_helper_options', array() );
276
- if ( !is_array( $options ) ) {
277
  $options = array();
278
  }
279
  if ( get_option( 'wpdesk_tracker_notice', '0' ) != 'dismiss_all' ) {
280
  if ( empty( $options['wpdesk_tracker_agree'] ) || $options['wpdesk_tracker_agree'] == '0' ) {
281
- $coupon_avaliable = false;
282
- if ( get_option( 'wpdesk_tracker_notice', '0' ) == '1' ) {
283
- $coupon_avaliable = true;
284
- }
285
  if ( in_array( $screen->id, apply_filters( 'wpdesk_tracker_notice_screens', array() ) ) ) {
286
- $user = wp_get_current_user();
287
- $username = $user->first_name ? $user->first_name : $user->user_login;
288
  $terms_url = get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/dane-uzytkowania/' : 'https://www.wpdesk.net/usage-tracking/';
289
- $shop_url = get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/' : 'https://www.wpdesk.net/';
290
  include( 'views/tracker-notice.php' );
291
  }
292
  }
293
  }
294
  if ( $screen->id == 'plugins' ) {
295
  if ( isset( $_GET['wpdesk_tracker_opt_out'] ) ) {
296
- $options = get_option('wpdesk_helper_options', array() );
297
- if ( !is_array( $options ) ) {
298
  $options = array();
299
  }
300
  delete_option( 'wpdesk_tracker_notice' );
@@ -305,180 +302,77 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
305
  }
306
  }
307
 
308
- public static function wpdesk_tracker_page() {
309
- $user = wp_get_current_user();
310
- $username = $user->first_name ? $user->first_name : $user->user_login;
311
  $allow_url = admin_url( 'admin.php?page=wpdesk_tracker' );
312
  $allow_url = add_query_arg( 'plugin', $_GET['plugin'], $allow_url );
313
- $skip_url = $allow_url;
314
  $allow_url = add_query_arg( 'allow', '1', $allow_url );
315
- $skip_url = add_query_arg( 'allow', '0', $skip_url );
316
  $terms_url = get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/dane-uzytkowania/' : 'https://www.wpdesk.net/usage-tracking/';
317
  include( 'views/tracker-connect.php' );
318
  }
319
 
320
- public static function wpdesk_tracker_deactivate() {
321
- $user = wp_get_current_user();
322
- $username = $user->first_name;
323
- $plugin = $_GET['plugin'];
324
  $active_plugins = get_plugins();
325
- $plugin_name = $active_plugins[$plugin]['Name'];
326
  include( 'views/tracker-deactivate.php' );
327
  }
328
 
329
- public static function admin_init() {
330
  if ( isset( $_GET['page'] ) && $_GET['page'] == 'wpdesk_tracker' ) {
331
  if ( isset( $_GET['plugin'] ) && isset( $_GET['allow'] ) ) {
332
- $options = get_option('wpdesk_helper_options', array() );
333
- if ( !is_array( $options ) ) {
334
  $options = array();
335
  }
336
  if ( $_GET['allow'] == '0' ) {
337
- remove_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
 
 
 
338
  unset( $options['wpdesk_tracker_agree'] );
339
  update_option( 'wpdesk_helper_options', $options );
340
- add_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
 
 
 
341
  $options['wpdesk_tracker_agree'] = '0';
342
  update_option( 'wpdesk_helper_options', $options );
343
  update_option( 'wpdesk_tracker_notice', '1' );
344
- }
345
- else {
346
- remove_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
 
 
347
  unset( $options['wpdesk_tracker_agree'] );
348
  update_option( 'wpdesk_helper_options', $options );
349
- add_action( 'update_option_wpdesk_helper_options', array( __CLASS__, 'update_option_wpdesk_helper_options' ), 10, 3 );
 
 
 
350
  delete_option( 'wpdesk_tracker_notice' );
351
  update_option( 'wpdesk_tracker_agree', '1' );
352
  $options['wpdesk_tracker_agree'] = '1';
353
  update_option( 'wpdesk_helper_options', $options );
354
  }
355
- wp_redirect(admin_url( 'plugins.php' ) );
356
  exit();
357
  }
358
  }
359
  }
360
 
361
- public static function wpdesk_tracker_data_license_emails( $data ) {
362
- global $wpdesk_helper_plugins;
363
- $license_emails_email = array();
364
- $license_emails = array();
365
- if ( ! isset( $wpdesk_helper_plugins ) ) $wpdesk_helper_plugins = array();
366
- foreach ( $wpdesk_helper_plugins as $key => $plugin ) {
367
- if ( isset( $plugin['api_manager'] ) ) {
368
- $api_manager = $plugin['api_manager'];
369
- if ( isset( $api_manager->options[$api_manager->activation_email] ) ) {
370
- $license_emails_email[ $api_manager->options[ $api_manager->activation_email ] ] = $api_manager->options[ $api_manager->activation_email ];
371
- }
372
- }
373
- }
374
- foreach ( $license_emails_email as $email ) {
375
- $license_emails[] = $email;
376
- }
377
- $data['license_emails'] = $license_emails;
378
- return $data;
379
- }
380
-
381
- public static function wpdesk_tracker_data_shipping_country_per_order( $data ) {
382
- global $wpdb;
383
- $query = $wpdb->get_results("
384
- SELECT m.meta_value AS shipping_country, p.post_status AS post_status , COUNT(p.ID) AS orders
385
- FROM {$wpdb->postmeta} m, {$wpdb->posts} p
386
- WHERE p.ID = m.post_id
387
- AND m.meta_key = '_shipping_country'
388
- GROUP BY shipping_country, post_status ORDER BY orders DESC"
389
- );
390
- $data['shipping_country_per_order'] = array();
391
- if ( $query ) {
392
- foreach ( $query as $row ) {
393
- if ( !isset( $data['shipping_country_per_order'][$row->shipping_country] ) ) {
394
- $data['shipping_country_per_order'][$row->shipping_country] = array();
395
- }
396
- $data['shipping_country_per_order'][$row->shipping_country][$row->post_status] = $row->orders;
397
- }
398
- }
399
- return $data;
400
- }
401
-
402
- public static function wpdesk_tracker_data_shipping_classes( $data ) {
403
- $data['number_of_shipping_classes'] = 0;
404
- $shipping_classes = WC()->shipping()->get_shipping_classes();
405
- if ( is_array( $shipping_classes ) ) {
406
- $data['number_of_shipping_classes'] = count( $shipping_classes );
407
- }
408
- return $data;
409
- }
410
-
411
- public static function wpdesk_tracker_data_product_variations( $data ) {
412
- $data['number_of_variations'] = 0;
413
- $number_of_variations = wp_count_posts( 'product_variation' );
414
- $data['number_of_variations'] = $number_of_variations;
415
- return $data;
416
- }
417
-
418
- public static function wpdesk_tracker_data_orders_per_month( $data ) {
419
- global $wpdb;
420
- $query = $wpdb->get_results("
421
- SELECT min(post_date) min, max(post_date) max, TIMESTAMPDIFF(MONTH, min(post_date), max(post_date) )+1 months
422
- FROM {$wpdb->posts} p
423
- WHERE p.post_type = 'shop_order'
424
- AND p.post_status = 'wc-completed'
425
- "
426
- );
427
- $data['orders_per_month'] = array();
428
- if ( $query ) {
429
- foreach ( $query as $row ) {
430
- $data['orders_per_month']['first'] = $row->min;
431
- $data['orders_per_month']['last'] = $row->max;
432
- $data['orders_per_month']['months'] = $row->months;
433
- if ( $row->months != 0 ) {
434
- if ( isset( $data['orders'] ) && isset( $data['orders']['wc-completed'] ) ) {
435
- $data['orders_per_month']['per_month'] = floatval($data['orders']['wc-completed'])/floatval($row->months);
436
- }
437
- }
438
- }
439
- }
440
- return $data;
441
- }
442
 
443
- public static function wpdesk_tracker_data_shipping_methods_in_zones( $data ) {
444
- if ( class_exists( 'WC_Shipping_Zones' )) {
445
- $other_zones = WC_Shipping_Zones::get_zones();
446
- $zones = array();
447
- foreach ( $other_zones as $zone ) {
448
- $zones[] = WC_Shipping_Zones::get_zone_by( 'zone_id', $zone['zone_id'] );
449
- }
450
- $zones[] = WC_Shipping_Zones::get_zone_by();
451
- $data['shipping_methods_by_title'] = array();
452
- $data['shipping_zones_by_name'] = array();
453
- foreach ( $zones as $zone ) {
454
- if ( empty( $data['shipping_zones_by_name'][$zone->get_zone_name()] ) ) {
455
- $data['shipping_zones_by_name'][$zone->get_zone_name()] = 1;
456
- }
457
- else {
458
- $data['shipping_zones_by_name'][$zone->get_zone_name()]++;
459
- }
460
- foreach ( $zone->get_shipping_methods() as $shipping_method ) {
461
- if ( empty( $data['shipping_methods_by_title'][$shipping_method->method_title] ) ) {
462
- $data['shipping_methods_by_title'][$shipping_method->method_title] = 1;
463
- }
464
- else {
465
- $data['shipping_methods_by_title'][$shipping_method->method_title]++;
466
- }
467
- }
468
- }
469
- }
470
  return $data;
471
  }
472
 
473
- public static function wpdesk_tracker_message_version( $data ) {
474
-
475
- $data['message_version'] = self::$message_version;
476
-
477
- return $data;
478
- }
479
-
480
- public static function send_deactivation_data() {
481
-
482
  $params = array();
483
 
484
  $params['click_action'] = 'plugin_deactivation';
@@ -489,31 +383,20 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
489
 
490
  $params['reason'] = $_REQUEST['reason'];
491
 
492
- if ( !empty( $_REQUEST['additional_info'] ) ) {
493
  $params['additional_info'] = $_REQUEST['additional_info'];
494
  }
495
 
496
- $response = wp_remote_post( self::get_api_url(), array(
497
- 'method' => 'POST',
498
- 'timeout' => 5,
499
- 'redirection' => 5,
500
- 'httpversion' => '1.0',
501
- 'blocking' => false,
502
- 'headers' => array( 'user-agent' => 'WPDeskTracker' ),
503
- 'body' => json_encode( $params ),
504
- 'cookies' => array(),
505
- )
506
- );
507
  }
508
 
509
-
510
  /**
511
  * Decide whether to send tracking data or not.
512
  *
513
  * @param boolean $override
514
  */
515
- public static function send_tracking_data( $override = false, $click_action = null ) {
516
- $options = get_option('wpdesk_helper_options', array() );
517
  if ( empty( $options ) ) {
518
  $options = array();
519
  }
@@ -523,7 +406,7 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
523
  if ( empty( $click_action ) && $options['wpdesk_tracker_agree'] == '0' ) {
524
  return;
525
  }
526
- if ( ! wpdesk_tracker_enabled() ) {
527
  return;
528
  }
529
  // Dont trigger this on AJAX Requests
@@ -532,13 +415,13 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
532
  }
533
  if ( ! apply_filters( 'wpdesk_tracker_send_override', $override ) ) {
534
  // Send a maximum of once per week by default.
535
- $last_send = self::get_last_send_time();
536
  if ( $last_send && $last_send > apply_filters( 'wpdesk_tracker_last_send_interval', strtotime( '-1 week' ) ) ) {
537
  return;
538
  }
539
  } else {
540
  // Make sure there is at least a 1 hour delay between override sends, we dont want duplicate calls due to double clicking links.
541
- $last_send = self::get_last_send_time();
542
  if ( empty( $click_action ) && $last_send && $last_send > strtotime( '-1 hours' ) ) {
543
  return;
544
  }
@@ -548,398 +431,82 @@ if ( !class_exists( 'WPDesk_Tracker' ) ) {
548
  update_option( 'wpdesk_tracker_last_send', time() );
549
 
550
  if ( empty( $click_action ) || $click_action == 'agree' ) {
551
- $params = self::get_tracking_data();
552
 
553
  if ( isset( $params['active_plugins'] ) ) {
554
- foreach ( $params['active_plugins'] as $plugin=>$plugin_data ) {
555
- $option_name = 'plugin_activation_' . $plugin;
556
  $activation_date = get_option( $option_name, '' );
557
  if ( $activation_date != '' ) {
558
- $params['active_plugins'][$plugin]['activation_date'] = $activation_date;
559
  }
560
  }
561
  }
562
 
563
- if ( !empty( $click_action ) ) {
564
  $params['click_action'] = 'agree';
565
  }
566
- if ( self::$request_coupon ) {
567
- $params['get_coupon'] = 1;
568
- $params['click_action'] = 'agree_coupon';
569
- }
570
- }
571
- else {
572
- $params = array( 'click_action' => 'no' );
573
- if ( self::$dismiss_coupon ) {
574
- $params = array(
575
- 'click_action' => 'no_coupon',
576
- );
577
- $params['message_version'] = self::$message_version;
578
- }
579
  $params['url'] = home_url();
580
  }
581
 
582
  $params['localhost'] = 'no';
583
- if ( !empty( $_SERVER['SERVER_ADDR'] ) && $_SERVER['SERVER_ADDR'] == '127.0.0.1' ) {
584
  $params['localhost'] = 'yes';
585
  }
586
 
587
- $response = wp_remote_post( self::get_api_url(), array(
588
- 'method' => 'POST',
589
- 'timeout' => 5,
590
- 'redirection' => 5,
591
- 'httpversion' => '1.0',
592
- 'blocking' => false,
593
- 'headers' => array( 'user-agent' => 'WPDeskTracker' ),
594
- 'body' => json_encode( $params ),
595
- 'cookies' => array(),
596
- )
597
- );
598
-
599
  }
600
 
601
- /**
602
- * Get the last time tracking data was sent.
603
- * @return int|bool
604
- */
605
- private static function get_last_send_time() {
606
- return apply_filters( 'wpdesk_tracker_last_send_time', get_option( 'wpdesk_tracker_last_send', false ) );
607
- }
608
 
609
  /**
610
- * Get all the tracking data.
611
- * @return array
612
- */
613
- private static function get_tracking_data() {
614
- $data = array();
615
-
616
- // General site info
617
- $data['url'] = home_url();
618
- $data['email'] = apply_filters( 'wpdesk_tracker_admin_email', get_option( 'admin_email' ) );
619
- $data['theme'] = self::get_theme_info();
620
-
621
- // WordPress Info
622
- $data['wp'] = self::get_wordpress_info();
623
-
624
- // Server Info
625
- $data['server'] = self::get_server_info();
626
-
627
- // Plugin info
628
- $all_plugins = self::get_all_plugins();
629
- $data['active_plugins'] = $all_plugins['active_plugins'];
630
- $data['inactive_plugins'] = $all_plugins['inactive_plugins'];
631
-
632
- // Jetpack & WooCommerce Connect
633
- $data['jetpack_version'] = defined( 'JETPACK__VERSION' ) ? JETPACK__VERSION : 'none';
634
- $data['jetpack_connected'] = ( class_exists( 'Jetpack' ) && is_callable( 'Jetpack::is_active' ) && Jetpack::is_active() ) ? 'yes' : 'no';
635
- $data['jetpack_is_staging'] = ( class_exists( 'Jetpack' ) && is_callable( 'Jetpack::is_staging_site' ) && Jetpack::is_staging_site() ) ? 'yes' : 'no';
636
- $data['connect_installed'] = class_exists( 'WC_Connect_Loader' ) ? 'yes' : 'no';
637
- $data['connect_active'] = ( class_exists( 'WC_Connect_Loader' ) && wp_next_scheduled( 'wc_connect_fetch_service_schemas' ) ) ? 'yes' : 'no';
638
-
639
- // Store count info
640
- $data['users'] = self::get_user_counts();
641
- $data['products'] = self::get_product_counts();
642
- $data['orders'] = self::get_order_counts();
643
-
644
- // Payment gateway info
645
- $data['gateways'] = self::get_active_payment_gateways();
646
-
647
- // Shipping method info
648
- $data['shipping_methods'] = self::get_active_shipping_methods();
649
-
650
- // Get all WooCommerce options info
651
- $data['settings'] = self::get_all_woocommerce_options_values();
652
-
653
- // Template overrides
654
- $data['template_overrides'] = self::get_all_template_overrides();
655
-
656
- // Template overrides
657
- $data['admin_user_agents'] = self::get_admin_user_agents();
658
-
659
- return apply_filters( 'wpdesk_tracker_data', $data );
660
- }
661
-
662
- /**
663
- * Get the current theme info, theme name and version.
664
- * @return array
665
- */
666
- public static function get_theme_info() {
667
- $theme_data = wp_get_theme();
668
- $theme_child_theme = is_child_theme() ? 'Yes' : 'No';
669
- $theme_wc_support = ( ! current_theme_supports( 'woocommerce' ) && ! in_array( $theme_data->template, wc_get_core_supported_themes() ) ) ? 'No' : 'Yes';
670
-
671
- return array( 'name' => $theme_data->Name,
672
- 'version' => $theme_data->Version,
673
- 'child_theme' => $theme_child_theme,
674
- 'wc_support' => $theme_wc_support
675
- );
676
- }
677
-
678
- /**
679
- * Get WordPress related data.
680
- * @return array
681
- */
682
- private static function get_wordpress_info() {
683
- $wp_data = array();
684
-
685
- $memory = wc_let_to_num( WP_MEMORY_LIMIT );
686
-
687
- if ( function_exists( 'memory_get_usage' ) ) {
688
- $system_memory = wc_let_to_num( @ini_get( 'memory_limit' ) );
689
- $memory = max( $memory, $system_memory );
690
- }
691
-
692
- $wp_data['memory_limit'] = size_format( $memory );
693
- $wp_data['debug_mode'] = ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? 'Yes' : 'No';
694
- $wp_data['locale'] = get_locale();
695
- $wp_data['version'] = get_bloginfo( 'version' );
696
- $wp_data['multisite'] = is_multisite() ? 'Yes' : 'No';
697
-
698
- return $wp_data;
699
- }
700
-
701
- /**
702
- * Get server related info.
703
- * @return array
704
- */
705
- private static function get_server_info() {
706
- $server_data = array();
707
-
708
- if ( isset( $_SERVER['SERVER_SOFTWARE'] ) && ! empty( $_SERVER['SERVER_SOFTWARE'] ) ) {
709
- $server_data['software'] = $_SERVER['SERVER_SOFTWARE'];
710
- }
711
-
712
- if ( function_exists( 'phpversion' ) ) {
713
- $server_data['php_version'] = phpversion();
714
- }
715
-
716
- if ( function_exists( 'ini_get' ) ) {
717
- $server_data['php_post_max_size'] = size_format( wc_let_to_num( ini_get( 'post_max_size' ) ) );
718
- $server_data['php_time_limt'] = ini_get( 'max_execution_time' );
719
- $server_data['php_max_input_vars'] = ini_get( 'max_input_vars' );
720
- $server_data['php_suhosin'] = extension_loaded( 'suhosin' ) ? 'Yes' : 'No';
721
- }
722
-
723
- global $wpdb;
724
- $server_data['mysql_version'] = $wpdb->db_version();
725
-
726
- $server_data['php_max_upload_size'] = size_format( wp_max_upload_size() );
727
- $server_data['php_default_timezone'] = date_default_timezone_get();
728
- $server_data['php_soap'] = class_exists( 'SoapClient' ) ? 'Yes' : 'No';
729
- $server_data['php_fsockopen'] = function_exists( 'fsockopen' ) ? 'Yes' : 'No';
730
- $server_data['php_curl'] = function_exists( 'curl_init' ) ? 'Yes' : 'No';
731
-
732
- return $server_data;
733
- }
734
-
735
- /**
736
- * Get all plugins grouped into activated or not.
737
- * @return array
738
- */
739
- private static function get_all_plugins() {
740
- // Ensure get_plugins function is loaded
741
- if ( ! function_exists( 'get_plugins' ) ) {
742
- include ABSPATH . '/wp-admin/includes/plugin.php';
743
- }
744
-
745
- $plugins = get_plugins();
746
- $active_plugins_keys = get_option( 'active_plugins', array() );
747
- $active_plugins = array();
748
-
749
- foreach ( $plugins as $k => $v ) {
750
- // Take care of formatting the data how we want it.
751
- $formatted = array();
752
- $formatted['name'] = strip_tags( $v['Name'] );
753
- if ( isset( $v['Version'] ) ) {
754
- $formatted['version'] = strip_tags( $v['Version'] );
755
- }
756
- if ( isset( $v['Author'] ) ) {
757
- $formatted['author'] = strip_tags( $v['Author'] );
758
- }
759
- if ( isset( $v['Network'] ) ) {
760
- $formatted['network'] = strip_tags( $v['Network'] );
761
- }
762
- if ( isset( $v['PluginURI'] ) ) {
763
- $formatted['plugin_uri'] = strip_tags( $v['PluginURI'] );
764
- }
765
- if ( in_array( $k, $active_plugins_keys ) ) {
766
- // Remove active plugins from list so we can show active and inactive separately
767
- unset( $plugins[ $k ] );
768
- $active_plugins[ $k ] = $formatted;
769
- } else {
770
- $plugins[ $k ] = $formatted;
771
- }
772
- }
773
-
774
- return array( 'active_plugins' => $active_plugins, 'inactive_plugins' => $plugins );
775
- }
776
-
777
- /**
778
- * Get user totals based on user role.
779
- * @return array
780
- */
781
- private static function get_user_counts() {
782
- $user_count = array();
783
- $user_count_data = count_users();
784
- $user_count['total'] = $user_count_data['total_users'];
785
-
786
- // Get user count based on user role
787
- foreach ( $user_count_data['avail_roles'] as $role => $count ) {
788
- $user_count[ $role ] = $count;
789
- }
790
-
791
- return $user_count;
792
- }
793
-
794
- /**
795
- * Get product totals based on product type.
796
- * @return array
797
- */
798
- private static function get_product_counts() {
799
- $product_count = array();
800
- $product_count_data = wp_count_posts( 'product' );
801
- $product_count['total'] = $product_count_data->publish;
802
-
803
- $product_statuses = get_terms( 'product_type', array( 'hide_empty' => 0 ) );
804
- foreach ( $product_statuses as $product_status ) {
805
- $product_count[ $product_status->name ] = $product_status->count;
806
- }
807
-
808
- return $product_count;
809
- }
810
-
811
- /**
812
- * Get order counts based on order status.
813
- * @return array
814
  */
815
- private static function get_order_counts() {
816
- $order_count = array();
817
- $order_count_data = wp_count_posts( 'shop_order' );
818
-
819
- foreach ( wc_get_order_statuses() as $status_slug => $status_name ) {
820
- $order_count[ $status_slug ] = $order_count_data->{$status_slug};
821
  }
822
-
823
- return $order_count;
824
  }
825
 
826
  /**
827
- * Get a list of all active payment gateways.
828
- * @return array
829
  */
830
- private static function get_active_payment_gateways() {
831
- $active_gateways = array();
832
- $gateways = WC()->payment_gateways->payment_gateways();
833
- foreach ( $gateways as $id => $gateway ) {
834
- if ( isset( $gateway->enabled ) && 'yes' === $gateway->enabled ) {
835
- $active_gateways[ $id ] = array( 'title' => $gateway->title, 'supports' => $gateway->supports );
836
- }
837
- }
838
-
839
- return $active_gateways;
840
  }
841
 
842
  /**
843
- * Get a list of all active shipping methods.
844
  * @return array
845
  */
846
- private static function get_active_shipping_methods() {
847
- $active_methods = array();
848
- $shipping_methods = WC()->shipping->get_shipping_methods();
849
- foreach ( $shipping_methods as $id => $shipping_method ) {
850
- if ( isset( $shipping_method->enabled ) && 'yes' === $shipping_method->enabled ) {
851
- $active_methods[ $id ] = array( 'title' => $shipping_method->title,
852
- 'tax_status' => $shipping_method->tax_status
853
- );
854
  }
855
  }
856
 
857
- return $active_methods;
858
- }
859
-
860
- /**
861
- * Get all options starting with woocommerce_ prefix.
862
- * @return array
863
- */
864
- private static function get_all_woocommerce_options_values() {
865
- return array(
866
- 'version' => WC()->version,
867
- 'currency' => get_woocommerce_currency(),
868
- 'base_location' => WC()->countries->get_base_country(),
869
- 'selling_locations' => WC()->countries->get_allowed_countries(),
870
- 'api_enabled' => get_option( 'woocommerce_api_enabled' ),
871
- 'weight_unit' => get_option( 'woocommerce_weight_unit' ),
872
- 'dimension_unit' => get_option( 'woocommerce_dimension_unit' ),
873
- 'download_method' => get_option( 'woocommerce_file_download_method' ),
874
- 'download_require_login' => get_option( 'woocommerce_downloads_require_login' ),
875
- 'calc_taxes' => get_option( 'woocommerce_calc_taxes' ),
876
- 'coupons_enabled' => get_option( 'woocommerce_enable_coupons' ),
877
- 'guest_checkout' => get_option( 'woocommerce_enable_guest_checkout' ),
878
- 'secure_checkout' => get_option( 'woocommerce_force_ssl_checkout' ),
879
- 'enable_signup_and_login_from_checkout' => get_option( 'woocommerce_enable_signup_and_login_from_checkout' ),
880
- 'enable_myaccount_registration' => get_option( 'woocommerce_enable_myaccount_registration' ),
881
- 'registration_generate_username' => get_option( 'woocommerce_registration_generate_username' ),
882
- 'registration_generate_password' => get_option( 'woocommerce_registration_generate_password' ),
883
- );
884
  }
885
 
886
  /**
887
- * Look for any template override and return filenames.
888
  * @return array
889
  */
890
- private static function get_all_template_overrides() {
891
- $override_data = array();
892
- $template_paths = apply_filters( 'woocommerce_template_overrides_scan_paths', array( 'WooCommerce' => WC()->plugin_path() . '/templates/' ) );
893
- $scanned_files = array();
894
-
895
- require_once( WC()->plugin_path() . '/includes/admin/class-wc-admin-status.php' );
896
-
897
- foreach ( $template_paths as $plugin_name => $template_path ) {
898
- $scanned_files[ $plugin_name ] = WC_Admin_Status::scan_template_files( $template_path );
899
- }
900
-
901
- foreach ( $scanned_files as $plugin_name => $files ) {
902
- foreach ( $files as $file ) {
903
- if ( file_exists( get_stylesheet_directory() . '/' . $file ) ) {
904
- $theme_file = get_stylesheet_directory() . '/' . $file;
905
- } elseif ( file_exists( get_stylesheet_directory() . '/woocommerce/' . $file ) ) {
906
- $theme_file = get_stylesheet_directory() . '/woocommerce/' . $file;
907
- } elseif ( file_exists( get_template_directory() . '/' . $file ) ) {
908
- $theme_file = get_template_directory() . '/' . $file;
909
- } elseif ( file_exists( get_template_directory() . '/woocommerce/' . $file ) ) {
910
- $theme_file = get_template_directory() . '/woocommerce/' . $file;
911
- } else {
912
- $theme_file = false;
913
- }
914
 
915
- if ( false !== $theme_file ) {
916
- $override_data[] = basename( $theme_file );
917
- }
918
- }
919
- }
920
-
921
- return $override_data;
922
- }
923
-
924
- /**
925
- * When an admin user logs in, there user agent is tracked in user meta and collected here.
926
- * @return array
927
- */
928
- private static function get_admin_user_agents() {
929
- return array_filter( (array) get_option( 'woocommerce_tracker_ua', array() ) );
930
  }
931
  }
932
 
933
  }
934
-
935
- if ( !function_exists( 'wpdesk_tracker_enabled' ) ) {
936
- function wpdesk_tracker_enabled() {
937
- $tracker_enabled = true;
938
- if ( !empty( $_SERVER['SERVER_ADDR'] ) && $_SERVER['SERVER_ADDR'] == '127.0.0.1' ) {
939
- $tracker_enabled = false;
940
- }
941
- return apply_filters( 'wpdesk_tracker_enabled', $tracker_enabled );
942
- // add_filter( 'wpdesk_tracker_enabled', '__return_true' );
943
- // add_filter( 'wpdesk_tracker_do_not_ask', '__return_true' );
944
- }
945
- }
2
  /**
3
  * WP Desk Tracker
4
  *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
  */
11
 
12
  if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
  }
15
 
16
+ if ( ! class_exists( 'WPDesk_Tracker' ) ) {
17
 
18
  class WPDesk_Tracker {
19
 
20
+ /**
21
+ * @var string
22
+ */
23
+ private $script_version = '11';
24
+
25
+ /**
26
+ * @var string
27
+ */
28
+ private $plugin_basename = '';
29
 
30
+ /**
31
+ * @var string
32
+ */
33
+ private $message_version = '4';
34
 
35
+ /**
36
+ * @var WPDesk_Tracker_Data_Provider[]
37
+ */
38
+ private $providers = [];
39
 
40
+ /**
41
+ * @var WPDesk_Tracker_Sender
42
+ */
43
+ private $sender;
44
 
45
+ public function __construct( $plugin_basename, WPDesk_Tracker_Sender $sender ) {
46
+ $this->plugin_basename = $plugin_basename;
47
+ $this->set_sender( $sender );
48
+ }
49
 
50
  /**
51
+ * Setter for object that sends data.
52
+ *
53
+ * @param WPDesk_Tracker_Sender $sender Object that can send payloads.
54
  */
55
+ public function set_sender( WPDesk_Tracker_Sender $sender ) {
56
+ $this->sender = $sender;
57
+ }
58
 
59
  /**
60
  * Hook into cron event.
61
  */
62
+ public function init() {
63
+ add_action( 'plugins_loaded', array( $this, 'load_plugin_text_domain' ) );
64
+ add_action( 'admin_init', array( $this, 'init_schedule' ) );
65
+ add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 100 );
66
+ add_action( 'wpdesk_tracker_send_event', array( $this, 'send_tracking_data' ) );
67
+ add_action( 'admin_menu', array( $this, 'admin_menu' ) );
68
+ add_action( 'admin_init', array( $this, 'admin_init' ) );
69
+ add_action( 'admin_notices', array( $this, 'admin_notices' ) );
70
+ add_action( 'wp_ajax_wpdesk_tracker_notice_handler', array(
71
+ $this,
72
+ 'wp_ajax_wpdesk_tracker_notice_handler'
73
+ ) );
74
+ add_action( 'wp_ajax_wpdesk_tracker_deactivation_handler', array(
75
+ $this,
76
+ 'wp_ajax_wpdesk_tracker_deactivation_handler'
77
+ ) );
78
+
79
+ add_action( 'update_option_wpdesk_helper_options', array(
80
+ $this,
81
+ 'update_option_wpdesk_helper_options'
82
+ ), 10, 3 );
83
+ add_filter( 'option_wpdesk_helper_options', array( $this, 'option_wpdesk_helper_options' ), 10, 2 );
84
+ add_filter( 'default_option_wpdesk_helper_options', array(
85
+ $this,
86
+ 'default_option_wpdesk_helper_options'
87
+ ), 10, 3 );
88
+
89
+ add_filter( 'wpdesk_tracker_data', array( $this, 'wpdesk_tracker_message_version' ) );
90
+
91
+ add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu' ), 999 );
92
+ add_action( 'wp_head', array( $this, 'wp_head' ), 999 );
93
+ add_action( 'admin_head', array( $this, 'wp_head' ), 999 );
94
 
95
  global $pagenow;
96
  if ( 'plugins.php' === $pagenow ) {
97
+ add_action( 'admin_footer', array( $this, 'admin_footer' ) );
98
  }
 
99
  }
100
 
101
+ public function add_data_provider( WPDesk_Tracker_Data_Provider $provider ) {
102
+ $this->providers[] = $provider;
 
 
 
 
103
  }
104
 
105
+
106
+ public function wp_head() {
107
  if ( apply_filters( 'wpdesk_tracker_use_testdata', false ) && apply_filters( 'wpdesk_tracker_show_testdata', false ) ) {
108
  include( 'views/tracker-styles.php' );
109
  }
112
  /**
113
  * @param WP_Admin_Bar $wp_admin_bar
114
  */
115
+ public function admin_bar_menu( $wp_admin_bar ) {
116
  if ( apply_filters( 'wpdesk_tracker_use_testdata', false ) && apply_filters( 'wpdesk_tracker_show_testdata', false ) ) {
117
  $args = array(
118
  'id' => 'my_page',
124
  }
125
 
126
 
127
+ public function init_schedule() {
128
  $options = get_option( 'wpdesk_helper_options' );
129
+ if ( ! is_array( $options ) ) {
130
  $options = array();
131
  }
132
  if ( empty( $options['wpdesk_tracker_agree'] ) ) {
133
  $options['wpdesk_tracker_agree'] = '0';
134
  }
135
  $wpdesk_tracker_agree = $options['wpdesk_tracker_agree'];
136
+ $wp_next_scheduled = wp_next_scheduled( 'wpdesk_tracker_send_event' );
137
+ if ( $wpdesk_tracker_agree == '1' && ! $wp_next_scheduled ) {
138
  wp_schedule_event( time(), 'daily', 'wpdesk_tracker_send_event' );
139
  }
140
  if ( $wpdesk_tracker_agree == '0' && $wp_next_scheduled ) {
142
  }
143
  }
144
 
145
+ public function load_plugin_text_domain() {
146
+ $wpdesk_translation = load_plugin_textdomain( 'wpdesk-tracker', false, $this->plugin_basename . '/inc/wpdesk-tracker/lang' );
147
  }
148
 
149
+ public function admin_footer() {
150
+ if ( ! is_network_admin() && should_enable_wpdesk_tracker() && ! apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) {
151
  $plugins = array(
152
  'wpdesk-helper/wpdesk-helper.php' => 'wpdesk-helper/wpdesk-helper.php'
153
  );
156
  }
157
  }
158
 
159
+ public function admin_enqueue_scripts() {
160
  $screen = get_current_screen();
161
  if ( $screen->id == 'admin_page_wpdesk_tracker' || $screen->id == 'admin_page_wpdesk_tracker_deactivate' ) {
162
+ wp_register_style( 'wpdesk-helper-tracker', plugin_dir_url( __FILE__ ) . 'assets/css/tracker.css', array(), $this->script_version, 'all' );
163
  wp_enqueue_style( 'wpdesk-helper-tracker' );
164
  }
165
  }
166
 
167
+ public function admin_menu() {
168
  add_submenu_page(
169
  null,
170
  'WP Desk Tracker',
171
  'WP Desk Tracker',
172
  'manage_options',
173
  'wpdesk_tracker',
174
+ array( $this, 'wpdesk_tracker_page' )
175
  );
176
  add_submenu_page(
177
  null,
179
  'Deactivate plugin',
180
  'manage_options',
181
  'wpdesk_tracker_deactivate',
182
+ array( $this, 'wpdesk_tracker_deactivate' )
183
  );
184
  }
185
 
186
+ public function wp_ajax_wpdesk_tracker_deactivation_handler() {
187
+ $this->send_deactivation_data();
188
  }
189
 
190
 
191
+ public function wp_ajax_wpdesk_tracker_notice_handler() {
192
  $option = get_option( 'wpdesk_helper_options' );
193
+ if ( ! $option ) {
194
  add_option( 'wpdesk_helper_options', array() );
195
  }
196
  $type = '';
198
  $type = $_REQUEST['type'];
199
  }
200
  if ( $type == 'allow' ) {
201
+ $options = get_option( 'wpdesk_helper_options', array() );
202
+ if ( ! is_array( $options ) ) {
203
  $options = array();
204
  }
205
  update_option( 'wpdesk_helper_options', $options );
208
  update_option( 'wpdesk_helper_options', $options );
209
  }
210
  if ( $type == 'dismiss' ) {
211
+ $options = get_option( 'wpdesk_helper_options', array() );
212
+ if ( ! is_array( $options ) ) {
213
  $options = array();
214
  }
215
+ if (get_option('wpdesk_tracker_notice', '0') === '2') {
216
+ update_option( 'wpdesk_tracker_notice', 'dismiss_all' );
217
+ $options['wpdesk_tracker_agree'] = '0';
218
+ update_option( 'wpdesk_helper_options', $options );
219
+ } else {
220
+ update_option( 'wpdesk_tracker_notice', '2' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  }
 
 
 
 
 
 
 
 
222
  }
223
  }
224
 
225
+ public function update_option_wpdesk_helper_options( $old_value, $value, $option ) {
226
  if ( empty( $old_value ) ) {
227
  $old_value = array( 'wpdesk_tracker_agree' => '-1' );
228
  }
229
+ if ( ! isset( $old_value['wpdesk_tracker_agree'] ) ) {
230
  $old_value['wpdesk_tracker_agree'] = '-1';
231
  }
232
  if ( empty( $value ) ) {
233
  $value = array( 'wpdesk_tracker_agree' => '-1' );
234
  }
235
+ if ( ! isset( $value['wpdesk_tracker_agree'] ) ) {
236
  $value['wpdesk_tracker_agree'] = '-1';
237
  }
238
  if ( $old_value['wpdesk_tracker_agree'] != '1' ) {
239
  if ( $value['wpdesk_tracker_agree'] == '1' ) {
240
+ $this->send_tracking_data( true, 'agree' );
241
  }
242
  }
243
  if ( $old_value['wpdesk_tracker_agree'] != '0' ) {
244
  if ( $value['wpdesk_tracker_agree'] == '0' ) {
245
+ $this->send_tracking_data( true, 'no' );
246
  update_option( 'wpdesk_tracker_notice', 'dismiss_all' );
247
  }
248
  }
249
  }
250
 
251
+ public function option_wpdesk_helper_options( $value, $option ) {
252
  if ( apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) {
253
+ if ( ! is_array( $value ) ) {
254
  $value = array();
255
  }
256
  $value['wpdesk_tracker_agree'] = 1;
257
  }
258
+
259
  return $value;
260
  }
261
 
262
+ public function default_option_wpdesk_helper_options( $default, $option = null, $passed_default = null ) {
263
  if ( apply_filters( 'wpdesk_tracker_do_not_ask', false ) ) {
264
+ $default = array();
265
  $default['wpdesk_tracker_agree'] = 1;
266
  }
267
+
268
  return $default;
269
  }
270
 
271
+ public function admin_notices() {
272
+ if ( ! should_enable_wpdesk_tracker() ) {
273
  return;
274
  }
275
+ $screen = get_current_screen();
276
+ $options = get_option( 'wpdesk_helper_options', array() );
277
+ if ( ! is_array( $options ) ) {
278
  $options = array();
279
  }
280
  if ( get_option( 'wpdesk_tracker_notice', '0' ) != 'dismiss_all' ) {
281
  if ( empty( $options['wpdesk_tracker_agree'] ) || $options['wpdesk_tracker_agree'] == '0' ) {
 
 
 
 
282
  if ( in_array( $screen->id, apply_filters( 'wpdesk_tracker_notice_screens', array() ) ) ) {
283
+ $user = wp_get_current_user();
284
+ $username = $user->first_name ? $user->first_name : $user->user_login;
285
  $terms_url = get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/dane-uzytkowania/' : 'https://www.wpdesk.net/usage-tracking/';
286
+ $shop_url = get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/' : 'https://www.wpdesk.net/';
287
  include( 'views/tracker-notice.php' );
288
  }
289
  }
290
  }
291
  if ( $screen->id == 'plugins' ) {
292
  if ( isset( $_GET['wpdesk_tracker_opt_out'] ) ) {
293
+ $options = get_option( 'wpdesk_helper_options', array() );
294
+ if ( ! is_array( $options ) ) {
295
  $options = array();
296
  }
297
  delete_option( 'wpdesk_tracker_notice' );
302
  }
303
  }
304
 
305
+ public function wpdesk_tracker_page() {
306
+ $user = wp_get_current_user();
307
+ $username = $user->first_name ? $user->first_name : $user->user_login;
308
  $allow_url = admin_url( 'admin.php?page=wpdesk_tracker' );
309
  $allow_url = add_query_arg( 'plugin', $_GET['plugin'], $allow_url );
310
+ $skip_url = $allow_url;
311
  $allow_url = add_query_arg( 'allow', '1', $allow_url );
312
+ $skip_url = add_query_arg( 'allow', '0', $skip_url );
313
  $terms_url = get_locale() == 'pl_PL' ? 'https://www.wpdesk.pl/dane-uzytkowania/' : 'https://www.wpdesk.net/usage-tracking/';
314
  include( 'views/tracker-connect.php' );
315
  }
316
 
317
+ public function wpdesk_tracker_deactivate() {
318
+ $user = wp_get_current_user();
319
+ $username = $user->first_name;
320
+ $plugin = $_GET['plugin'];
321
  $active_plugins = get_plugins();
322
+ $plugin_name = $active_plugins[ $plugin ]['Name'];
323
  include( 'views/tracker-deactivate.php' );
324
  }
325
 
326
+ public function admin_init() {
327
  if ( isset( $_GET['page'] ) && $_GET['page'] == 'wpdesk_tracker' ) {
328
  if ( isset( $_GET['plugin'] ) && isset( $_GET['allow'] ) ) {
329
+ $options = get_option( 'wpdesk_helper_options', array() );
330
+ if ( ! is_array( $options ) ) {
331
  $options = array();
332
  }
333
  if ( $_GET['allow'] == '0' ) {
334
+ remove_action( 'update_option_wpdesk_helper_options', array(
335
+ $this,
336
+ 'update_option_wpdesk_helper_options'
337
+ ), 10, 3 );
338
  unset( $options['wpdesk_tracker_agree'] );
339
  update_option( 'wpdesk_helper_options', $options );
340
+ add_action( 'update_option_wpdesk_helper_options', array(
341
+ $this,
342
+ 'update_option_wpdesk_helper_options'
343
+ ), 10, 3 );
344
  $options['wpdesk_tracker_agree'] = '0';
345
  update_option( 'wpdesk_helper_options', $options );
346
  update_option( 'wpdesk_tracker_notice', '1' );
347
+ } else {
348
+ remove_action( 'update_option_wpdesk_helper_options', array(
349
+ $this,
350
+ 'update_option_wpdesk_helper_options'
351
+ ), 10, 3 );
352
  unset( $options['wpdesk_tracker_agree'] );
353
  update_option( 'wpdesk_helper_options', $options );
354
+ add_action( 'update_option_wpdesk_helper_options', array(
355
+ $this,
356
+ 'update_option_wpdesk_helper_options'
357
+ ), 10, 3 );
358
  delete_option( 'wpdesk_tracker_notice' );
359
  update_option( 'wpdesk_tracker_agree', '1' );
360
  $options['wpdesk_tracker_agree'] = '1';
361
  update_option( 'wpdesk_helper_options', $options );
362
  }
363
+ wp_redirect( admin_url( 'plugins.php' ) );
364
  exit();
365
  }
366
  }
367
  }
368
 
369
+ public function wpdesk_tracker_message_version( $data ) {
370
+ $data['message_version'] = $this->message_version;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372
  return $data;
373
  }
374
 
375
+ public function send_deactivation_data() {
 
 
 
 
 
 
 
 
376
  $params = array();
377
 
378
  $params['click_action'] = 'plugin_deactivation';
383
 
384
  $params['reason'] = $_REQUEST['reason'];
385
 
386
+ if ( ! empty( $_REQUEST['additional_info'] ) ) {
387
  $params['additional_info'] = $_REQUEST['additional_info'];
388
  }
389
 
390
+ $this->send_payload_to_wpdesk( $params );
 
 
 
 
 
 
 
 
 
 
391
  }
392
 
 
393
  /**
394
  * Decide whether to send tracking data or not.
395
  *
396
  * @param boolean $override
397
  */
398
+ public function send_tracking_data( $override = false, $click_action = null ) {
399
+ $options = get_option( 'wpdesk_helper_options', array() );
400
  if ( empty( $options ) ) {
401
  $options = array();
402
  }
406
  if ( empty( $click_action ) && $options['wpdesk_tracker_agree'] == '0' ) {
407
  return;
408
  }
409
+ if ( ! should_enable_wpdesk_tracker() ) {
410
  return;
411
  }
412
  // Dont trigger this on AJAX Requests
415
  }
416
  if ( ! apply_filters( 'wpdesk_tracker_send_override', $override ) ) {
417
  // Send a maximum of once per week by default.
418
+ $last_send = $this->get_last_send_time();
419
  if ( $last_send && $last_send > apply_filters( 'wpdesk_tracker_last_send_interval', strtotime( '-1 week' ) ) ) {
420
  return;
421
  }
422
  } else {
423
  // Make sure there is at least a 1 hour delay between override sends, we dont want duplicate calls due to double clicking links.
424
+ $last_send = $this->get_last_send_time();
425
  if ( empty( $click_action ) && $last_send && $last_send > strtotime( '-1 hours' ) ) {
426
  return;
427
  }
431
  update_option( 'wpdesk_tracker_last_send', time() );
432
 
433
  if ( empty( $click_action ) || $click_action == 'agree' ) {
434
+ $params = $this->get_tracking_data();
435
 
436
  if ( isset( $params['active_plugins'] ) ) {
437
+ foreach ( $params['active_plugins'] as $plugin => $plugin_data ) {
438
+ $option_name = 'plugin_activation_' . $plugin;
439
  $activation_date = get_option( $option_name, '' );
440
  if ( $activation_date != '' ) {
441
+ $params['active_plugins'][ $plugin ]['activation_date'] = $activation_date;
442
  }
443
  }
444
  }
445
 
446
+ if ( ! empty( $click_action ) ) {
447
  $params['click_action'] = 'agree';
448
  }
449
+ } else {
450
+ $params = array( 'click_action' => 'no' );
 
 
 
 
 
 
 
 
 
 
 
451
  $params['url'] = home_url();
452
  }
453
 
454
  $params['localhost'] = 'no';
455
+ if ( ! empty( $_SERVER['SERVER_ADDR'] ) && $_SERVER['SERVER_ADDR'] == '127.0.0.1' ) {
456
  $params['localhost'] = 'yes';
457
  }
458
 
459
+ $this->send_payload_to_wpdesk( $params );
 
 
 
 
 
 
 
 
 
 
 
460
  }
461
 
 
 
 
 
 
 
 
462
 
463
  /**
464
+ * Sends payload to WPDesk servers.
465
+ *
466
+ * @param array $payload Payload to sent.
467
+ *
468
+ * @return bool If sending was successfull.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
  */
470
+ private function send_payload_to_wpdesk( array $payload ) {
471
+ try {
472
+ $this->sender->send_payload( $payload );
473
+ return true;
474
+ } catch (WPDesk_Tracker_Sender_Exception_WpError $e) {
475
+ return false;
476
  }
 
 
477
  }
478
 
479
  /**
480
+ * Get the last time tracking data was sent.
481
+ * @return int|bool
482
  */
483
+ private function get_last_send_time() {
484
+ return apply_filters( 'wpdesk_tracker_last_send_time', get_option( 'wpdesk_tracker_last_send', false ) );
 
 
 
 
 
 
 
 
485
  }
486
 
487
  /**
 
488
  * @return array
489
  */
490
+ private function get_data_from_providers() {
491
+ $data = array();
492
+ if ( ! empty( $this->providers ) ) {
493
+ foreach ( $this->providers as $provider ) {
494
+ $data = array_merge( $data, $provider->get_data() );
 
 
 
495
  }
496
  }
497
 
498
+ return $data;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  }
500
 
501
  /**
502
+ * Get all the tracking data.
503
  * @return array
504
  */
505
+ private function get_tracking_data() {
506
+ $data = $this->get_data_from_providers();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
 
508
+ return apply_filters( 'wpdesk_tracker_data', $data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
509
  }
510
  }
511
 
512
  }
 
 
 
 
 
 
 
 
 
 
 
 
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-gateways.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Gateways' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Gateways
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Gateways implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get a list of all active payment gateways.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $active_gateways = array();
30
+ $gateways = WC()->payment_gateways->payment_gateways();
31
+ foreach ( $gateways as $id => $gateway ) {
32
+ if ( isset( $gateway->enabled ) && 'yes' === $gateway->enabled ) {
33
+ $active_gateways[ $id ] = array( 'title' => $gateway->title, 'supports' => $gateway->supports );
34
+ }
35
+ }
36
+
37
+ return ['gateways' => $active_gateways];
38
+ }
39
+
40
+ }
41
+
42
+ }
43
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification-gdpr.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Identification_Gdpr' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Identification_Gdpr
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Identification_Gdpr implements WPDesk_Tracker_Data_Provider {
22
+ const DATA_KEY_DOMAIN_HASH = 'domain_hash';
23
+
24
+ const DATA_KEY_UNIQUE_HASH = 'unique_hash';
25
+
26
+ const DATA_KEY_EMAIL_HASH = 'email_hash';
27
+
28
+ const WPDESK_TRACKER_UNIQUE_HASH_OPTION_NAME = 'wpdesk_tracker_unique_hash';
29
+
30
+ /**
31
+ * Hash unique for wordpress instance.
32
+ *
33
+ * @return string
34
+ */
35
+ private function get_unique_hash() {
36
+ $hash = get_option( self::WPDESK_TRACKER_UNIQUE_HASH_OPTION_NAME, false );
37
+ if ( ! $hash ) {
38
+ $hash = md5( uniqid() . NONCE_SALT );
39
+ update_option( self::WPDESK_TRACKER_UNIQUE_HASH_OPTION_NAME, $hash );
40
+ }
41
+
42
+ return $hash;
43
+ }
44
+
45
+ /**
46
+ * Get info that allows anonymous data rollup.
47
+ *
48
+ * @return array Data provided to tracker.
49
+ */
50
+ public function get_data() {
51
+ $data = [];
52
+ $data[ self::DATA_KEY_DOMAIN_HASH ] = md5( home_url() . NONCE_SALT );
53
+ $data[ self::DATA_KEY_UNIQUE_HASH ] = $this->get_unique_hash();
54
+ $data[ self::DATA_KEY_EMAIL_HASH ] = md5( apply_filters( 'wpdesk_tracker_admin_email', get_option( 'admin_email' ) ) . NONCE_SALT );
55
+
56
+ return $data;
57
+ }
58
+
59
+ }
60
+
61
+ }
62
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Identification' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Identification
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Identification implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get info that allows session identification.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $data = [];
30
+ $data['url'] = home_url();
31
+ $data['email'] = apply_filters( 'wpdesk_tracker_admin_email', get_option( 'admin_email' ) );
32
+
33
+ return $data;
34
+ }
35
+
36
+ }
37
+
38
+ }
39
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-jetpack.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Jetpack' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Jetpack
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Jetpack implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about jetpack.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $data = [];
30
+ $data['jetpack_version'] = defined( 'JETPACK__VERSION' ) ? JETPACK__VERSION : 'none';
31
+ $data['jetpack_connected'] = ( class_exists( 'Jetpack' ) && is_callable( 'Jetpack::is_active' ) && Jetpack::is_active() ) ? 'yes' : 'no';
32
+ $data['jetpack_is_staging'] = ( class_exists( 'Jetpack' ) && is_callable( 'Jetpack::is_staging_site' ) && Jetpack::is_staging_site() ) ? 'yes' : 'no';
33
+ $data['connect_installed'] = class_exists( 'WC_Connect_Loader' ) ? 'yes' : 'no';
34
+ $data['connect_active'] = ( class_exists( 'WC_Connect_Loader' ) && wp_next_scheduled( 'wc_connect_fetch_service_schemas' ) ) ? 'yes' : 'no';
35
+
36
+ return $data;
37
+ }
38
+
39
+ }
40
+
41
+ }
42
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-license-emails.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_License_Emails' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_License_Emails
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_License_Emails implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about license emails from api manager.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ global $wpdesk_helper_plugins;
30
+ $license_emails_email = array();
31
+ $license_emails = array();
32
+ if ( ! isset( $wpdesk_helper_plugins ) ) {
33
+ $wpdesk_helper_plugins = array();
34
+ }
35
+ foreach ( $wpdesk_helper_plugins as $key => $plugin ) {
36
+ if ( isset( $plugin['api_manager'] ) ) {
37
+ $api_manager = $plugin['api_manager'];
38
+ if ( isset( $api_manager->options[ $api_manager->activation_email ] ) ) {
39
+ $license_emails_email[ $api_manager->options[ $api_manager->activation_email ] ] = $api_manager->options[ $api_manager->activation_email ];
40
+ }
41
+ }
42
+ }
43
+ foreach ( $license_emails_email as $email ) {
44
+ $license_emails[] = $email;
45
+ }
46
+ $data['license_emails'] = $license_emails;
47
+
48
+ return $data;
49
+ }
50
+
51
+ }
52
+
53
+ }
54
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-country.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Orders_Country' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Orders_Country
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Orders_Country implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about shipping coutry per order.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ global $wpdb;
30
+ $query = $wpdb->get_results( "
31
+ SELECT m.meta_value AS shipping_country, p.post_status AS post_status , COUNT(p.ID) AS orders
32
+ FROM {$wpdb->postmeta} m, {$wpdb->posts} p
33
+ WHERE p.ID = m.post_id
34
+ AND m.meta_key = '_shipping_country'
35
+ GROUP BY shipping_country, post_status ORDER BY orders DESC"
36
+ );
37
+ $data['shipping_country_per_order'] = array();
38
+ if ( $query ) {
39
+ foreach ( $query as $row ) {
40
+ if ( ! isset( $data['shipping_country_per_order'][ $row->shipping_country ] ) ) {
41
+ $data['shipping_country_per_order'][ $row->shipping_country ] = array();
42
+ }
43
+ $data['shipping_country_per_order'][ $row->shipping_country ][ $row->post_status ] = $row->orders;
44
+ }
45
+ }
46
+
47
+ return $data;
48
+ }
49
+
50
+ }
51
+
52
+ }
53
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-month.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Orders_Month' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Orders_Month
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Orders_Month implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about orders per month.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ global $wpdb;
30
+ $query = $wpdb->get_results( "
31
+ SELECT min(post_date) min, max(post_date) max, TIMESTAMPDIFF(MONTH, min(post_date), max(post_date) )+1 months
32
+ FROM {$wpdb->posts} p
33
+ WHERE p.post_type = 'shop_order'
34
+ AND p.post_status = 'wc-completed'
35
+ "
36
+ );
37
+ $data['orders_per_month'] = array();
38
+ if ( $query ) {
39
+ foreach ( $query as $row ) {
40
+ $data['orders_per_month']['first'] = $row->min;
41
+ $data['orders_per_month']['last'] = $row->max;
42
+ $data['orders_per_month']['months'] = $row->months;
43
+ if ( $row->months != 0 ) {
44
+ if ( isset( $data['orders'] ) && isset( $data['orders']['wc-completed'] ) ) {
45
+ $data['orders_per_month']['per_month'] = floatval( $data['orders']['wc-completed'] ) / floatval( $row->months );
46
+ }
47
+ }
48
+ }
49
+ }
50
+
51
+ return $data;
52
+ }
53
+
54
+ }
55
+
56
+ }
57
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Orders' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Orders
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Orders implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get order counts based on order status.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $order_count = array();
30
+ $order_count_data = wp_count_posts( 'shop_order' );
31
+
32
+ foreach ( wc_get_order_statuses() as $status_slug => $status_name ) {
33
+ $order_count[ $status_slug ] = $order_count_data->{$status_slug};
34
+ }
35
+
36
+ return ['orders' => $order_count];
37
+ }
38
+
39
+ }
40
+
41
+ }
42
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-plugins.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Plugins
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Plugins implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get all plugins grouped into activated or not.
25
+ *
26
+ * @return array
27
+ */
28
+ private function get_all_plugins() {
29
+ // Ensure get_plugins function is loaded
30
+ if ( ! function_exists( 'get_plugins' ) ) {
31
+ include ABSPATH . '/wp-admin/includes/plugin.php';
32
+ }
33
+
34
+ $plugins = get_plugins();
35
+ $active_plugins_keys = get_option( 'active_plugins', array() );
36
+ $active_plugins = array();
37
+
38
+ foreach ( $plugins as $k => $v ) {
39
+ // Take care of formatting the data how we want it.
40
+ $formatted = array();
41
+ $formatted['name'] = strip_tags( $v['Name'] );
42
+ if ( isset( $v['Version'] ) ) {
43
+ $formatted['version'] = strip_tags( $v['Version'] );
44
+ }
45
+ if ( isset( $v['Author'] ) ) {
46
+ $formatted['author'] = strip_tags( $v['Author'] );
47
+ }
48
+ if ( isset( $v['Network'] ) ) {
49
+ $formatted['network'] = strip_tags( $v['Network'] );
50
+ }
51
+ if ( isset( $v['PluginURI'] ) ) {
52
+ $formatted['plugin_uri'] = strip_tags( $v['PluginURI'] );
53
+ }
54
+ if ( in_array( $k, $active_plugins_keys ) ) {
55
+ // Remove active plugins from list so we can show active and inactive separately
56
+ unset( $plugins[ $k ] );
57
+ $active_plugins[ $k ] = $formatted;
58
+ } else {
59
+ $plugins[ $k ] = $formatted;
60
+ }
61
+ }
62
+
63
+ return array( 'active_plugins' => $active_plugins, 'inactive_plugins' => $plugins );
64
+ }
65
+
66
+ /**
67
+ * Provides data
68
+ *
69
+ * @return array Data provided to tracker.
70
+ */
71
+ public function get_data() {
72
+ $data = [];
73
+
74
+ $all_plugins = $this->get_all_plugins();
75
+ $data['active_plugins'] = $all_plugins['active_plugins'];
76
+ $data['inactive_plugins'] = $all_plugins['inactive_plugins'];
77
+
78
+ return $data;
79
+ }
80
+
81
+ }
82
+
83
+ }
84
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products-variations.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Products_Variations' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Products_Variations
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Products_Variations implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about numer of variations.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $data['number_of_variations'] = 0;
30
+ $number_of_variations = wp_count_posts( 'product_variation' );
31
+ $data['number_of_variations'] = $number_of_variations;
32
+
33
+ return $data;
34
+ }
35
+
36
+ }
37
+
38
+ }
39
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Products' ) ) {
17
+ /**
18
+ * Class WPDesk_Tracker_Data_Provider_Products
19
+ */
20
+ class WPDesk_Tracker_Data_Provider_Products implements WPDesk_Tracker_Data_Provider {
21
+
22
+ /**
23
+ * Get product totals based on product type.
24
+ *
25
+ * @return array Data provided to tracker.
26
+ */
27
+ public function get_data() {
28
+ $product_count = array();
29
+ $product_count_data = wp_count_posts( 'product' );
30
+ $product_count['total'] = $product_count_data->publish;
31
+
32
+ $product_statuses = get_terms( 'product_type', array( 'hide_empty' => 0 ) );
33
+ foreach ( $product_statuses as $product_status ) {
34
+ $product_count[ $product_status->name ] = $product_status->count;
35
+ }
36
+
37
+ return ['products' => $product_count];
38
+ }
39
+
40
+ }
41
+
42
+ }
43
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-server.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Server' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Server
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Server implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about bawic server data.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $server_data = array();
30
+
31
+ if ( isset( $_SERVER['SERVER_SOFTWARE'] ) && ! empty( $_SERVER['SERVER_SOFTWARE'] ) ) {
32
+ $server_data['software'] = $_SERVER['SERVER_SOFTWARE'];
33
+ }
34
+
35
+ if ( function_exists( 'phpversion' ) ) {
36
+ $server_data['php_version'] = phpversion();
37
+ }
38
+
39
+ if ( function_exists( 'ini_get' ) ) {
40
+ $server_data['php_post_max_size'] = size_format( wc_let_to_num( ini_get( 'post_max_size' ) ) );
41
+ $server_data['php_time_limt'] = ini_get( 'max_execution_time' );
42
+ $server_data['php_max_input_vars'] = ini_get( 'max_input_vars' );
43
+ $server_data['php_suhosin'] = extension_loaded( 'suhosin' ) ? 'Yes' : 'No';
44
+ }
45
+
46
+ global $wpdb;
47
+ $server_data['mysql_version'] = $wpdb->db_version();
48
+
49
+ $server_data['php_max_upload_size'] = size_format( wp_max_upload_size() );
50
+ $server_data['php_default_timezone'] = date_default_timezone_get();
51
+ $server_data['php_soap'] = class_exists( 'SoapClient' ) ? 'Yes' : 'No';
52
+ $server_data['php_fsockopen'] = function_exists( 'fsockopen' ) ? 'Yes' : 'No';
53
+ $server_data['php_curl'] = function_exists( 'curl_init' ) ? 'Yes' : 'No';
54
+
55
+ return ['server' => $server_data];
56
+ }
57
+
58
+ }
59
+
60
+ }
61
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-settings.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Settings' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Settings
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Settings implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get all options starting with woocommerce_ prefix.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ return [
30
+ 'settings' => array(
31
+ 'version' => WC()->version,
32
+ 'currency' => get_woocommerce_currency(),
33
+ 'base_location' => WC()->countries->get_base_country(),
34
+ 'selling_locations' => WC()->countries->get_allowed_countries(),
35
+ 'api_enabled' => get_option( 'woocommerce_api_enabled' ),
36
+ 'weight_unit' => get_option( 'woocommerce_weight_unit' ),
37
+ 'dimension_unit' => get_option( 'woocommerce_dimension_unit' ),
38
+ 'download_method' => get_option( 'woocommerce_file_download_method' ),
39
+ 'download_require_login' => get_option( 'woocommerce_downloads_require_login' ),
40
+ 'calc_taxes' => get_option( 'woocommerce_calc_taxes' ),
41
+ 'coupons_enabled' => get_option( 'woocommerce_enable_coupons' ),
42
+ 'guest_checkout' => get_option( 'woocommerce_enable_guest_checkout' ),
43
+ 'secure_checkout' => get_option( 'woocommerce_force_ssl_checkout' ),
44
+ 'enable_signup_and_login_from_checkout' => get_option( 'woocommerce_enable_signup_and_login_from_checkout' ),
45
+ 'enable_myaccount_registration' => get_option( 'woocommerce_enable_myaccount_registration' ),
46
+ 'registration_generate_username' => get_option( 'woocommerce_registration_generate_username' ),
47
+ 'registration_generate_password' => get_option( 'woocommerce_registration_generate_password' ),
48
+ )
49
+ ];
50
+ }
51
+
52
+ }
53
+
54
+ }
55
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-classes.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Shipping_Classes' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Shipping_Classes
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Shipping_Classes implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about number of shipping classes
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $data['number_of_shipping_classes'] = 0;
30
+ $shipping_classes = WC()->shipping()->get_shipping_classes();
31
+ if ( is_array( $shipping_classes ) ) {
32
+ $data['number_of_shipping_classes'] = count( $shipping_classes );
33
+ }
34
+
35
+ return $data;
36
+ }
37
+
38
+ }
39
+
40
+ }
41
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods-zones.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Info about shipping methods in zones and by title.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ if ( class_exists( 'WC_Shipping_Zones' ) ) {
30
+ $other_zones = WC_Shipping_Zones::get_zones();
31
+ $zones = array();
32
+ foreach ( $other_zones as $zone ) {
33
+ $zones[] = WC_Shipping_Zones::get_zone_by( 'zone_id', $zone['zone_id'] );
34
+ }
35
+ $zones[] = WC_Shipping_Zones::get_zone_by();
36
+ $data['shipping_methods_by_title'] = array();
37
+ $data['shipping_zones_by_name'] = array();
38
+ foreach ( $zones as $zone ) {
39
+ if ( empty( $data['shipping_zones_by_name'][ $zone->get_zone_name() ] ) ) {
40
+ $data['shipping_zones_by_name'][ $zone->get_zone_name() ] = 1;
41
+ } else {
42
+ $data['shipping_zones_by_name'][ $zone->get_zone_name() ] ++;
43
+ }
44
+ foreach ( $zone->get_shipping_methods() as $shipping_method ) {
45
+ if ( empty( $data['shipping_methods_by_title'][ $shipping_method->method_title ] ) ) {
46
+ $data['shipping_methods_by_title'][ $shipping_method->method_title ] = 1;
47
+ } else {
48
+ $data['shipping_methods_by_title'][ $shipping_method->method_title ] ++;
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ return $data;
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Shipping_Methods' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Shipping_Methods
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Shipping_Methods implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get a list of all active shipping methods.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+
30
+ $active_methods = array();
31
+ $shipping_methods = WC()->shipping->get_shipping_methods();
32
+ foreach ( $shipping_methods as $id => $shipping_method ) {
33
+ if ( isset( $shipping_method->enabled ) && 'yes' === $shipping_method->enabled ) {
34
+ $active_methods[ $id ] = array(
35
+ 'title' => $shipping_method->title,
36
+ 'tax_status' => $shipping_method->tax_status
37
+ );
38
+ }
39
+ }
40
+
41
+ return ['shipping_methods' => $active_methods];
42
+ }
43
+
44
+ }
45
+
46
+ }
47
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-templates.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Templates' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Templates
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Templates implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Look for any template override and return filenames.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $override_data = array();
30
+ $template_paths = apply_filters( 'woocommerce_template_overrides_scan_paths', array( 'WooCommerce' => WC()->plugin_path() . '/templates/' ) );
31
+ $scanned_files = array();
32
+
33
+ require_once( WC()->plugin_path() . '/includes/admin/class-wc-admin-status.php' );
34
+
35
+ foreach ( $template_paths as $plugin_name => $template_path ) {
36
+ $scanned_files[ $plugin_name ] = WC_Admin_Status::scan_template_files( $template_path );
37
+ }
38
+
39
+ foreach ( $scanned_files as $plugin_name => $files ) {
40
+ foreach ( $files as $file ) {
41
+ if ( file_exists( get_stylesheet_directory() . '/' . $file ) ) {
42
+ $theme_file = get_stylesheet_directory() . '/' . $file;
43
+ } elseif ( file_exists( get_stylesheet_directory() . '/woocommerce/' . $file ) ) {
44
+ $theme_file = get_stylesheet_directory() . '/woocommerce/' . $file;
45
+ } elseif ( file_exists( get_template_directory() . '/' . $file ) ) {
46
+ $theme_file = get_template_directory() . '/' . $file;
47
+ } elseif ( file_exists( get_template_directory() . '/woocommerce/' . $file ) ) {
48
+ $theme_file = get_template_directory() . '/woocommerce/' . $file;
49
+ } else {
50
+ $theme_file = false;
51
+ }
52
+
53
+ if ( false !== $theme_file ) {
54
+ $override_data[] = basename( $theme_file );
55
+ }
56
+ }
57
+ }
58
+
59
+ return ['template_overrides' => $override_data];
60
+ }
61
+
62
+ }
63
+
64
+ }
65
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-theme.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Theme' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Theme
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Theme implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get the current theme info, theme name and version.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $theme_data = wp_get_theme();
30
+ $theme_child_theme = is_child_theme() ? 'Yes' : 'No';
31
+
32
+ return [
33
+ 'theme' => array(
34
+ 'name' => $theme_data->Name,
35
+ 'version' => $theme_data->Version,
36
+ 'child_theme' => $theme_child_theme,
37
+ )
38
+ ];
39
+ }
40
+
41
+ }
42
+
43
+ }
44
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-user-agent.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_User_Agent' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_User_Agent
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_User_Agent implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * When an admin user logs in, there user agent is tracked in user meta and collected here.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ return [ 'admin_user_agents' => array_filter( (array) get_option( 'woocommerce_tracker_ua', array() ) ) ];
30
+ }
31
+
32
+ }
33
+
34
+ }
35
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-users.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Users' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Users
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Users implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get user totals based on user role.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $user_count = array();
30
+ $user_count_data = count_users();
31
+ $user_count['total'] = $user_count_data['total_users'];
32
+
33
+ // Get user count based on user role
34
+ foreach ( $user_count_data['avail_roles'] as $role => $count ) {
35
+ $user_count[ $role ] = $count;
36
+ }
37
+
38
+ return ['users' => $user_count];
39
+ }
40
+
41
+ }
42
+
43
+ }
44
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-wordpress.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider_Wordpress' ) ) {
17
+
18
+ /**
19
+ * Class WPDesk_Tracker_Data_Provider_Wordpress
20
+ */
21
+ class WPDesk_Tracker_Data_Provider_Wordpress implements WPDesk_Tracker_Data_Provider {
22
+
23
+ /**
24
+ * Get WordPress related data.
25
+ *
26
+ * @return array Data provided to tracker.
27
+ */
28
+ public function get_data() {
29
+ $wp_data = array();
30
+
31
+ $memory = wc_let_to_num( WP_MEMORY_LIMIT );
32
+
33
+ if ( function_exists( 'memory_get_usage' ) ) {
34
+ $system_memory = wc_let_to_num( @ini_get( 'memory_limit' ) );
35
+ $memory = max( $memory, $system_memory );
36
+ }
37
+
38
+ $wp_data['memory_limit'] = size_format( $memory );
39
+ $wp_data['debug_mode'] = ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? 'Yes' : 'No';
40
+ $wp_data['locale'] = get_locale();
41
+ $wp_data['version'] = get_bloginfo( 'version' );
42
+ $wp_data['multisite'] = is_multisite() ? 'Yes' : 'No';
43
+
44
+ return ['wp' => $wp_data];
45
+ }
46
+
47
+ }
48
+
49
+ }
50
+
inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WP Desk Tracker
4
+ *
5
+ * @class WPDESK_Tracker
6
+ * @version 1.3.2
7
+ * @package WPDESK/Helper
8
+ * @category Class
9
+ * @author WP Desk
10
+ */
11
+
12
+ if ( ! defined( 'ABSPATH' ) ) {
13
+ exit;
14
+ }
15
+
16
+ if ( ! class_exists( 'WPDesk_Tracker_Data_Provider' ) ) {
17
+
18
+ interface WPDesk_Tracker_Data_Provider {
19
+
20
+ /**
21
+ * Provides data
22
+ *
23
+ * @return array Data provided to tracker.
24
+ */
25
+ public function get_data();
26
+
27
+ }
28
+
29
+ }
30
+
inc/wpdesk-tracker/sender/Exception/class-wpdesk-tracker-sender-exception-wperror.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ if ( ! class_exists( 'WPDesk_Tracker_Sender_Exception_WpError' ) ) {
8
+
9
+ class WPDesk_Tracker_Sender_Exception_WpError extends RuntimeException {
10
+ public function __construct( $message = "", WP_Error $wp_error ) {
11
+ $message = $message . ' WP_Error: ' . $wp_error->get_error_message();
12
+ parent::__construct( $message, $wp_error->get_error_code() );
13
+ }
14
+ }
15
+
16
+ }
17
+
inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-logged.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ if ( ! class_exists( 'WPDesk_Tracker_Sender_Logged' ) ) {
8
+
9
+ class WPDesk_Tracker_Sender_Logged implements WPDesk_Tracker_Sender {
10
+
11
+ const LOGGER_SOURCE = 'wpdesk-sender';
12
+
13
+ /**
14
+ * Decorated sender.
15
+ *
16
+ * @var WPDesk_Tracker_Sender
17
+ */
18
+ private $sender;
19
+
20
+ /**
21
+ * WPDesk_Tracker_Sender_Logged constructor.
22
+ *
23
+ * @param WPDesk_Tracker_Sender $sender Sender to decorate.
24
+ */
25
+
26
+ public function __construct(WPDesk_Tracker_Sender $sender) {
27
+ $this->sender = $sender;
28
+ }
29
+
30
+ /**
31
+ * Sends payload logging payload and the response.
32
+ *
33
+ * @param array $payload Payload to send.
34
+ *
35
+ * @throws WPDesk_Tracker_Sender_Exception_WpError Error if send failed.
36
+ *
37
+ * @return array If succeeded. Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
38
+ */
39
+ public function send_payload(array $payload) {
40
+ if (class_exists('WPDesk_Logger_Factory')) {
41
+ WPDesk_Logger_Factory::log_message("Sender payload: " . json_encode($payload), self::LOGGER_SOURCE, WPDesk_Logger::DEBUG);
42
+ try {
43
+ $response = $this->sender->send_payload($payload);
44
+ WPDesk_Logger_Factory::log_message('Sender response: ' . json_encode($response), self::LOGGER_SOURCE, WPDesk_Logger::DEBUG);
45
+ return $response;
46
+ } catch (WPDesk_Tracker_Sender_Exception_WpError $exception) {
47
+ WPDesk_Logger_Factory::log_exception($exception);
48
+ throw $exception;
49
+ }
50
+ } else {
51
+ return $this->sender->send_payload($payload);
52
+ }
53
+ }
54
+ }
55
+ }
56
+
inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-wordpress-to-wpdesk.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ if ( ! class_exists( 'WPDesk_Tracker_Sender_Wordpress_To_WPDesk' ) ) {
8
+
9
+ class WPDesk_Tracker_Sender_Wordpress_To_WPDesk implements WPDesk_Tracker_Sender {
10
+
11
+ /**
12
+ * URL to the WP Desk Tracker API endpoint.
13
+ * @var string
14
+ */
15
+ private $api_url = 'https://data.wpdesk.org/?track=1';
16
+
17
+ private $test_api_url = 'https://testdata.wpdesk.org/?track=1';
18
+
19
+ private function get_api_url() {
20
+ $api_url = $this->api_url;
21
+ if ( apply_filters( 'wpdesk_tracker_use_testdata', false ) ) {
22
+ $api_url = $this->test_api_url;
23
+ }
24
+
25
+ return $api_url;
26
+ }
27
+
28
+ /**
29
+ * Sends payload to predefined receiver.
30
+ *
31
+ * @param array $payload Payload to send.
32
+ *
33
+ * @throws WPDesk_Tracker_Sender_Exception_WpError Error if send failed.
34
+ *
35
+ * @return array If succeeded. Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
36
+ */
37
+ public function send_payload( array $payload ) {
38
+ $response = wp_remote_post( $this->get_api_url(), array(
39
+ 'method' => 'POST',
40
+ 'timeout' => 5,
41
+ 'redirection' => 5,
42
+ 'httpversion' => '1.0',
43
+ 'blocking' => false,
44
+ 'headers' => array( 'user-agent' => 'WPDeskTracker' ),
45
+ 'body' => json_encode( $payload ),
46
+ 'cookies' => array(),
47
+ )
48
+ );
49
+
50
+ if ( $response instanceof WP_Error ) {
51
+ throw new WPDesk_Tracker_Sender_Exception_WpError( 'Payload send error', $response );
52
+ } else {
53
+ return $response;
54
+ }
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
+ if ( ! class_exists( 'WPDesk_Tracker_Sender' ) ) {
8
+
9
+ interface WPDesk_Tracker_Sender {
10
+
11
+ /**
12
+ * Sends payload to predefined receiver.
13
+ *
14
+ * @param array $payload Payload to send.
15
+ *
16
+ * @return array If succeeded. Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
17
+ */
18
+ public function send_payload( array $payload );
19
+
20
+ }
21
+
22
+ }
23
+
inc/wpdesk-tracker/views/tracker-connect.php CHANGED
@@ -5,7 +5,7 @@
5
 
6
  <p>
7
  <?php printf ( __( 'Hey %s,', 'wpdesk-tracker'), $username ); ?><br/>
8
- <?php _e( 'Please help us improve our plugins! If you opt-in, we will collect some non-sensitive data and usage information. If you skip this, that\'s okay! All plugins will work just fine.', 'wpdesk-tracker' ); ?>
9
  </p>
10
  </div>
11
 
@@ -24,7 +24,7 @@
24
  <i class="dashicons dashicons-admin-settings"></i>
25
  <div>
26
  <span><?php _e( 'Your Site Overview', 'wpdesk-tracker' ); ?></span>
27
- <p><?php _e( 'Site URL, WP version, PHP info, admin email', 'wpdesk-tracker' ); ?></p>
28
  </div>
29
  </li>
30
  <li id="permission-events" class="permission events">
@@ -38,14 +38,7 @@
38
  <i class="dashicons dashicons-store"></i>
39
  <div>
40
  <span><?php _e( 'Your Store Overview', 'wpdesk-tracker' ); ?></span>
41
- <p><?php _e( 'Non-sensitive store usage information', 'wpdesk-tracker' ); ?></p>
42
- </div>
43
- </li>
44
- <li id="permission-notices" class="permission notices">
45
- <i class="dashicons dashicons-testimonial"></i>
46
- <div>
47
- <span><?php _e( 'Admin Updates', 'wpdesk-tracker' ); ?></span>
48
- <p><?php _e( 'Announcements, updates, marketing, no spam and easy opt-out', 'wpdesk-tracker' ); ?></p>
49
  </div>
50
  </li>
51
  </ul>
5
 
6
  <p>
7
  <?php printf ( __( 'Hey %s,', 'wpdesk-tracker'), $username ); ?><br/>
8
+ <?php _e( 'Please help us improve our plugins! If you opt-in, we will collect some non-sensitive data and usage information anonymously. If you skip this, that\'s okay! All plugins will work just fine.', 'wpdesk-tracker' ); ?>
9
  </p>
10
  </div>
11
 
24
  <i class="dashicons dashicons-admin-settings"></i>
25
  <div>
26
  <span><?php _e( 'Your Site Overview', 'wpdesk-tracker' ); ?></span>
27
+ <p><?php _e( 'WP version, PHP info', 'wpdesk-tracker' ); ?></p>
28
  </div>
29
  </li>
30
  <li id="permission-events" class="permission events">
38
  <i class="dashicons dashicons-store"></i>
39
  <div>
40
  <span><?php _e( 'Your Store Overview', 'wpdesk-tracker' ); ?></span>
41
+ <p><?php _e( 'Anonymized and non-sensitive store usage information', 'wpdesk-tracker' ); ?></p>
 
 
 
 
 
 
 
42
  </div>
43
  </li>
44
  </ul>
inc/wpdesk-tracker/views/tracker-notice.php CHANGED
@@ -1,62 +1,17 @@
1
  <?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?>
2
- <?php if ( $coupon_avaliable ) : ?>
3
- <div id="wpdesk_tracker_notice_coupon" class="updated notice wpdesk_tracker_notice is-dismissible">
4
- <p>
5
- <?php printf ( __( 'Hey %s,', 'wpdesk-tracker'), $username ); ?><br/>
6
- <?php
7
- printf(
8
- __( 'We need your help to improve <strong>WP Desk plugins</strong>, so they are more useful for you and the rest of <strong>10,000+ users</strong>. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe. As a thank you for your consent, we will send you a <strong>discount coupon</strong> for %sWP Desk plugins%s, which you can use yourself or share with others. %sFind out more &raquo;%s', 'wpdesk-tracker' ),
9
- '<a target="_blank" href="' . $shop_url . '?utm_source=tracker&utm_medium=link&utm_campaign=tracker-coupon-message-v3">',
10
- '</a>',
11
- '<a target="_blank" href="' . $terms_url . '?utm_source=tracker&utm_medium=link&utm_campaign=tracker-shop-link">',
12
- '</a>'
13
- ); ?>
14
- </p>
15
- <p>
16
- <button id="wpdesk_tracker_allow_coupon_button_notice" class="button button-primary"><?php _e( 'Allow', 'wpdesk-tracker' ); ?></button>
17
- </p>
18
- </div>
19
- <?php else : ?>
20
- <div id="wpdesk_tracker_notice" class="updated notice wpdesk_tracker_notice is-dismissible">
21
- <p>
22
- <?php printf ( __( 'Hey %s,', 'wpdesk-tracker'), $username ); ?><br/>
23
- <?php _e( 'Please help us improve our plugins! If you opt-in, we will collect some non-sensitive data and usage information. If you skip this, that\'s okay! All plugins will work just fine.', 'wpdesk-tracker'); ?>
24
- <a href="<?php echo $terms_url; ?>" target="_blank"><?php _e( 'Find out more &raquo;', 'wpdesk-tracker' ); ?></a>
25
- </p>
26
- <p>
27
- <button id="wpdesk_tracker_allow_button_notice" class="button button-primary"><?php _e( 'Allow', 'wpdesk-tracker' ); ?></button>
28
- </p>
29
- </div>
30
- <?php endif; ?>
31
 
32
  <script type="text/javascript">
33
- jQuery(document).on('click', '#wpdesk_tracker_notice_coupon .notice-dismiss',function(e){
34
- e.preventDefault();
35
- console.log('dismiss');
36
- jQuery.ajax( '<?php echo admin_url('admin-ajax.php'); ?>',
37
- {
38
- type: 'POST',
39
- data: {
40
- action: 'wpdesk_tracker_notice_handler',
41
- type: 'dismiss_coupon',
42
- }
43
- }
44
- );
45
- })
46
- jQuery(document).on('click', '#wpdesk_tracker_allow_coupon_button_notice',function(e){
47
- e.preventDefault();
48
- console.log('allow');
49
- jQuery.ajax( '<?php echo admin_url('admin-ajax.php'); ?>',
50
- {
51
- type: 'POST',
52
- data: {
53
- action: 'wpdesk_tracker_notice_handler',
54
- type: 'allow_coupon',
55
- }
56
- }
57
- );
58
- jQuery('#wpdesk_tracker_notice_coupon').hide();
59
- });
60
  jQuery(document).on('click', '#wpdesk_tracker_notice .notice-dismiss',function(e){
61
  e.preventDefault();
62
  console.log('dismiss');
1
  <?php if ( ! defined( 'ABSPATH' ) ) { exit; } ?>
2
+
3
+ <div id="wpdesk_tracker_notice" class="updated notice wpdesk_tracker_notice is-dismissible">
4
+ <p>
5
+ <?php printf ( __( 'Hey %s,', 'wpdesk-tracker'), $username ); ?><br/>
6
+ <?php _e( 'We need your help to improve <strong>WP Desk plugins</strong>, so they are more useful for you and the rest of <strong>30,000+ users</strong>. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe.', 'wpdesk-tracker'); ?>
7
+ <a href="<?php echo $terms_url; ?>" target="_blank"><?php _e( 'Find out more &raquo;', 'wpdesk-tracker' ); ?></a>
8
+ </p>
9
+ <p>
10
+ <button id="wpdesk_tracker_allow_button_notice" class="button button-primary"><?php _e( 'Allow', 'wpdesk-tracker' ); ?></button>
11
+ </p>
12
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
  <script type="text/javascript">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  jQuery(document).on('click', '#wpdesk_tracker_notice .notice-dismiss',function(e){
16
  e.preventDefault();
17
  console.log('dismiss');
lang/flexible-checkout-fields-pl_PL.mo CHANGED
Binary file
lang/flexible-checkout-fields-pl_PL.po CHANGED
@@ -1,15 +1,15 @@
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Flexible Checkout Fields\n"
4
- "POT-Creation-Date: 2018-02-20 10:02+0100\n"
5
- "PO-Revision-Date: 2018-02-21 10:43+0100\n"
6
  "Last-Translator: Piotr Jabłonowski <piotr.jablonowski@wpdesk.net>\n"
7
  "Language-Team: Maciej Swoboda <maciej.swoboda@gmail.com>\n"
8
  "Language: pl_PL\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Poedit 2.0.6\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "X-Poedit-WPHeader: flexible-checkout-fields.php\n"
15
  "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
@@ -21,27 +21,32 @@ msgstr ""
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
 
24
- #: classes/display-options.php:110 classes/user-profile.php:135
25
  msgid "Additional Information"
26
  msgstr "Dodatkowe informacje"
27
 
28
- #: classes/filed-validation.php:43
 
 
 
 
 
29
  msgid "Default"
30
  msgstr "Domyślna"
31
 
32
- #: classes/filed-validation.php:44
33
  msgid "None"
34
  msgstr "Brak"
35
 
36
- #: classes/filed-validation.php:45
37
  msgid "Email"
38
  msgstr "Email"
39
 
40
- #: classes/filed-validation.php:46
41
  msgid "Phone"
42
  msgstr "Numer telefonu"
43
 
44
- #: classes/filed-validation.php:47
45
  msgid "Post code"
46
  msgstr "Kod pocztowy"
47
 
@@ -69,7 +74,7 @@ msgstr ""
69
  "Notatka do twojego zamówienia, np. informacje o dostarczeniu przesyłki."
70
 
71
  #: classes/settings.php:147 classes/views/settings-settings.php:11
72
- #: classes/wpdesk/class-plugin.php:209 flexible-checkout-fields.php:857
73
  msgid "Settings"
74
  msgstr "Ustawienia"
75
 
@@ -77,16 +82,16 @@ msgstr "Ustawienia"
77
  msgid "Custom Sections"
78
  msgstr "Dodatkowe sekcje"
79
 
80
- #: classes/settings.php:278
81
  #, php-format
82
  msgid "You cannot use this field name: %s, for field: %s."
83
  msgstr "Nie możesz użyć tej nazwy pola: %s dla pola: %s."
84
 
85
- #: classes/tracker.php:163
86
  msgid "Opt-in"
87
  msgstr "Opt-in"
88
 
89
- #: classes/tracker.php:167
90
  msgid "Opt-out"
91
  msgstr "Opt-out"
92
 
@@ -103,128 +108,129 @@ msgstr ""
103
  "Jeśli chcesz używać Flexible Checkout Fields za darmo, prosimy %sdodaj swoją "
104
  "opinię%s. Pomożesz nam wspierać darmową wersję. Dziękujemy."
105
 
106
- #: classes/views/settings-fields.php:12
107
  msgid "Thank You Page"
108
  msgstr "Strona podziękowania"
109
 
110
- #: classes/views/settings-fields.php:13
111
  msgid "My Account - address"
112
  msgstr "Moje konto - adres"
113
 
114
- #: classes/views/settings-fields.php:14
115
  msgid "My Account - order"
116
  msgstr "Moje konto - zamówienie"
117
 
118
- #: classes/views/settings-fields.php:15
119
  msgid "Emails"
120
  msgstr "E-maile"
121
 
122
- #: classes/views/settings-fields.php:34
123
  msgid "Settings resetted."
124
  msgstr "Ustawienia zostały zresetowane."
125
 
126
- #: classes/views/settings-fields.php:38 classes/views/settings-settings.php:8
127
  msgid "Settings saved."
128
  msgstr "Ustawienia zostały zapisane."
129
 
130
- #: classes/views/settings-fields.php:46
131
  msgid "Add New Field"
132
  msgstr "Dodaj nowe pole"
133
 
134
- #: classes/views/settings-fields.php:50 classes/views/settings-fields.php:369
135
- #: classes/views/settings-fields.php:687
136
  msgid "Field Type"
137
  msgstr "Typ pola"
138
 
139
- #: classes/views/settings-fields.php:62 classes/views/settings-fields.php:295
140
- #: classes/views/settings-fields.php:661
141
  msgid "Label"
142
  msgstr "Etykieta"
143
 
144
- #: classes/views/settings-fields.php:67 classes/views/settings-fields.php:303
145
- #: classes/views/settings-fields.php:663
146
  msgid "You can use HTML."
147
  msgstr "Możesz używać HTML."
148
 
149
- #: classes/views/settings-fields.php:71 classes/views/settings-fields.php:312
150
- msgid "Database Name"
151
- msgstr "Nazwa w bazie danych"
 
152
 
153
- #: classes/views/settings-fields.php:75 classes/views/settings-fields.php:325
154
  #, php-format
155
  msgid "Meta name: %s."
156
  msgstr "Nazwa meta: %s."
157
 
158
- #: classes/views/settings-fields.php:83
159
  msgid "This field is available in the PRO version."
160
  msgstr "To pole jest dostępne w wersji PRO."
161
 
162
- #: classes/views/settings-fields.php:83
163
  msgid "Upgrade to PRO now &rarr;"
164
  msgstr "Zaktualizuj do PRO &rarr;"
165
 
166
- #: classes/views/settings-fields.php:88
167
  msgid "Section"
168
  msgstr "Sekcja"
169
 
170
- #: classes/views/settings-fields.php:102
171
  msgid "Save changes after adding a field."
172
  msgstr "Zapisz zmiany po dodaniu pola."
173
 
174
- #: classes/views/settings-fields.php:107
175
  msgid "Add Field"
176
  msgstr "Dodaj pole"
177
 
178
- #: classes/views/settings-fields.php:126
179
  msgid "Edit Section"
180
  msgstr "Edytuj sekcję"
181
 
182
- #: classes/views/settings-fields.php:131 classes/views/settings-fields.php:496
183
  #: classes/views/settings-settings.php:35
184
  msgid "Save Changes"
185
  msgstr "Zapisz zmiany"
186
 
187
- #: classes/views/settings-fields.php:143
188
  msgid "Section Fields"
189
  msgstr "Pola sekcji"
190
 
191
- #: classes/views/settings-fields.php:213 classes/views/settings-fields.php:618
192
  msgid "Edit"
193
  msgstr "Edytuj"
194
 
195
- #: classes/views/settings-fields.php:221 classes/views/settings-fields.php:625
196
  msgid "General"
197
  msgstr "Główne"
198
 
199
- #: classes/views/settings-fields.php:223 classes/views/settings-fields.php:626
200
  msgid "Appearance"
201
  msgstr "Wygląd"
202
 
203
- #: classes/views/settings-fields.php:225 classes/views/settings-fields.php:627
204
  msgid "Display On"
205
  msgstr "Wyświetlanie"
206
 
207
- #: classes/views/settings-fields.php:259 classes/views/settings-fields.php:650
208
  msgid "Enable Field"
209
  msgstr "Pokaż pole"
210
 
211
- #: classes/views/settings-fields.php:289 classes/views/settings-fields.php:657
212
  msgid "Required Field"
213
  msgstr "Pole wymagane"
214
 
215
- #: classes/views/settings-fields.php:331 classes/views/settings-fields.php:673
216
  msgid "Validation"
217
  msgstr "Walidacja"
218
 
219
- #: classes/views/settings-fields.php:342 classes/views/settings-fields.php:681
220
  msgid "For Post Code validation works only with country."
221
  msgstr "Dla walidacji kodu pocztowego musi być wybrany kraj."
222
 
223
- #: classes/views/settings-fields.php:355
224
  msgid "Options"
225
  msgstr "Opcje"
226
 
227
- #: classes/views/settings-fields.php:362
228
  msgid ""
229
  "Format: <code>Value : Name</code>. Value will be in the code, name will be "
230
  "visible to the user. One option per line. Example:<br /><code>woman : I am a "
@@ -235,41 +241,41 @@ msgstr ""
235
  "Przykład:<br /><code>kobieta : Jestem kobietą</code><br /><code>mezczyzna : "
236
  "Jestem mężczyzną</code>"
237
 
238
- #: classes/views/settings-fields.php:405 classes/views/settings-fields.php:695
239
- #: classes/views/settings-fields.php:734 classes/views/settings-fields.php:813
240
  msgid "Placeholder"
241
  msgstr "Placeholder"
242
 
243
- #: classes/views/settings-fields.php:415
244
  msgid "This field is address locale dependent and cannot be modified."
245
- msgstr "Nazwa tego pola nie może byc edytowana."
246
 
247
- #: classes/views/settings-fields.php:432 classes/views/settings-fields.php:699
248
  msgid "CSS Class"
249
  msgstr "Klasa CSS"
250
 
251
- #: classes/views/settings-fields.php:480 classes/views/settings-fields.php:721
252
  msgid "Delete Field"
253
  msgstr "Usuń pole"
254
 
255
- #: classes/views/settings-fields.php:499
256
  msgid "Reset Section Settings"
257
  msgstr "Resetuj ustawienia sekcji"
258
 
259
- #: classes/views/settings-fields.php:526
260
  #, php-format
261
  msgid "Invalid field name: %s. The name already exists."
262
  msgstr "Błędna nazwa pola: %s. Ta nazwa już istnieje."
263
 
264
- #: classes/views/settings-fields.php:538
265
  msgid "Field name can not be empty!"
266
  msgstr "Nazwa pola nie może być pusta!"
267
 
268
- #: classes/views/settings-fields.php:542
269
  msgid "Field name can not be number!"
270
  msgstr "Nazwa pola nie może być numerem!"
271
 
272
- #: classes/views/settings-fields.php:546
273
  msgid ""
274
  "Invalid field name. Field name can contains only lower case letters, digits "
275
  "and _ (underline) character!"
@@ -277,23 +283,15 @@ msgstr ""
277
  "Błędna nazwa pola. Nazwa pola może zawierać jedynie małe litery, cyfry oraz "
278
  "_ (znak podkreślenia)!"
279
 
280
- #: classes/views/settings-fields.php:572
281
- msgid "Changing this field..."
282
- msgstr "Zmiana pola..."
283
-
284
- #: classes/views/settings-fields.php:667
285
- msgid "Name"
286
- msgstr "Nazwa"
287
-
288
- #: classes/views/settings-fields.php:669
289
  msgid "Meta name: "
290
  msgstr "Meta name: "
291
 
292
- #: classes/views/settings-fields.php:746
293
  msgid "Field label can not be empty!"
294
  msgstr "Etykieta pola nie może być pusta!"
295
 
296
- #: classes/views/settings-fields.php:828
297
  #, php-format
298
  msgid ""
299
  "Do you really want to delete this field: %s? Deleting a field remove it from "
@@ -302,7 +300,7 @@ msgstr ""
302
  "Czy na pewno chcesz usunąć to pole: %s? Doprowadzi to do usunięcia pola "
303
  "również we wszystkich zamówieniach."
304
 
305
- #: classes/views/settings-fields.php:869
306
  msgid ""
307
  "Do you really want to reset section settings?. Resetting a section remove "
308
  "all added fields from orders."
@@ -374,11 +372,11 @@ msgstr ""
374
  "Klucz licencyjny wtyczki %s%s%s nie został aktywowany, więc wtyczka jest "
375
  "nieaktywna! %sKliknij tutaj%s, aby aktywować klucz licencyjny wtyczki."
376
 
377
- #: classes/wpdesk/class-plugin.php:196 flexible-checkout-fields.php:859
378
  msgid "Support"
379
  msgstr "Wsparcie"
380
 
381
- #: classes/wpdesk/class-plugin.php:202 flexible-checkout-fields.php:858
382
  msgid "Docs"
383
  msgstr "Docs"
384
 
@@ -427,107 +425,105 @@ msgid ""
427
  "The callback function used for the <strong>%s</strong> setting is missing."
428
  msgstr "Brakuje funkcji callback użytej w ustawieniu <strong>%s</strong>."
429
 
430
- #: flexible-checkout-fields.php:188
431
  msgid "Billing"
432
  msgstr "Płatność"
433
 
434
- #: flexible-checkout-fields.php:194
435
  msgid "Shipping"
436
  msgstr "Wysyłka"
437
 
438
- #: flexible-checkout-fields.php:200
439
  msgid "Order"
440
  msgstr "Zamówienie"
441
 
442
- #: flexible-checkout-fields.php:216
443
  msgid "Single Line Text"
444
  msgstr "Pojedyncza linia (input)"
445
 
446
- #: flexible-checkout-fields.php:220
447
  msgid "Paragraph Text"
448
  msgstr "Obszar tekstowy (textarea)"
449
 
450
- #: flexible-checkout-fields.php:228 flexible-checkout-fields.php:233
451
  msgid "Checkbox"
452
  msgstr "Wybór (checkbox)"
453
 
454
- #: flexible-checkout-fields.php:238
455
  msgid "Radio button"
456
  msgstr "Wybór (radio)"
457
 
458
- #: flexible-checkout-fields.php:243
459
  msgid "Select (Drop Down)"
460
  msgstr "Lista rozwijana (select)"
461
 
462
- #: flexible-checkout-fields.php:248
463
  msgid "Date"
464
  msgstr "Data"
465
 
466
- #: flexible-checkout-fields.php:253
467
  msgid "Time"
468
  msgstr "Czas"
469
 
470
- #: flexible-checkout-fields.php:258
471
  msgid "Color Picker"
472
  msgstr "Wybór koloru"
473
 
474
- #: flexible-checkout-fields.php:263
475
  msgid "Headline"
476
  msgstr "Nagłówek"
477
 
478
- #: flexible-checkout-fields.php:268
479
  msgid "HTML"
480
  msgstr "HTML"
481
 
482
- #: flexible-checkout-fields.php:273
483
  msgid "File Upload"
484
  msgstr "Przesyłanie pliku"
485
 
486
- #: flexible-checkout-fields.php:349
487
  msgid "Uploading file..."
488
  msgstr "Przesyłanie plik..."
489
 
490
- #: flexible-checkout-fields.php:381
491
  msgid "Close"
492
  msgstr "Zamknij"
493
 
494
- #: flexible-checkout-fields.php:382
495
  msgid "Today"
496
  msgstr "Dzisiaj"
497
 
498
- #: flexible-checkout-fields.php:385
499
  msgid "Next"
500
  msgstr "Następny"
501
 
502
- #: flexible-checkout-fields.php:386
503
  msgid "Previous"
504
  msgstr "Poprzedni"
505
 
506
- #: flexible-checkout-fields.php:866
507
  msgid "Upgrade"
508
  msgstr "Kup PRO"
509
 
510
- #: flexible-checkout-fields.php:878
511
  msgid "Advanced"
512
  msgstr "Zaawansowane"
513
 
514
  #: inc/wpdesk-tracker/views/tracker-connect.php:7
515
  #: inc/wpdesk-tracker/views/tracker-notice.php:5
516
- #: inc/wpdesk-tracker/views/tracker-notice.php:22
517
  #, php-format
518
  msgid "Hey %s,"
519
  msgstr "Hej %s,"
520
 
521
  #: inc/wpdesk-tracker/views/tracker-connect.php:8
522
- #: inc/wpdesk-tracker/views/tracker-notice.php:23
523
  msgid ""
524
  "Please help us improve our plugins! If you opt-in, we will collect some non-"
525
- "sensitive data and usage information. If you skip this, that's okay! All "
526
- "plugins will work just fine."
527
  msgstr ""
528
  "Proszę pomóż nam udoskonalić nasze wtyczki! Jeśli się zgodzisz, będziemy "
529
- "zbierać niewrażliwe dane użytkowania. Jeśli pominiesz ten krok, w porządku! "
530
- "Wszystkie wtyczki będą działać."
531
 
532
  #: inc/wpdesk-tracker/views/tracker-connect.php:13
533
  msgid "Allow & Continue &rarr;"
@@ -546,8 +542,8 @@ msgid "Your Site Overview"
546
  msgstr "Dane witryny"
547
 
548
  #: inc/wpdesk-tracker/views/tracker-connect.php:27
549
- msgid "Site URL, WP version, PHP info, admin email"
550
- msgstr "URL strony, wersja WP, wersja PHP, email admina"
551
 
552
  #: inc/wpdesk-tracker/views/tracker-connect.php:33
553
  msgid "Plugin Usage"
@@ -562,21 +558,11 @@ msgid "Your Store Overview"
562
  msgstr "Dane sklepu"
563
 
564
  #: inc/wpdesk-tracker/views/tracker-connect.php:41
565
- msgid "Non-sensitive store usage information"
566
- msgstr "Tylko niewrażliwe dane o użytkowaniu sklepu"
567
 
568
  #: inc/wpdesk-tracker/views/tracker-connect.php:47
569
- msgid "Admin Updates"
570
- msgstr "Powiadomienia"
571
-
572
- #: inc/wpdesk-tracker/views/tracker-connect.php:48
573
- msgid "Announcements, updates, marketing, no spam and easy opt-out"
574
- msgstr ""
575
- "Ważne powiadomienia, uaktualnienia, marketing, żadnego spamu i łatwa "
576
- "rezygnacja"
577
-
578
- #: inc/wpdesk-tracker/views/tracker-connect.php:54
579
- #: inc/wpdesk-tracker/views/tracker-notice.php:24
580
  msgid "Find out more &raquo;"
581
  msgstr "Dowiedz się więcej &raquo;"
582
 
@@ -641,28 +627,20 @@ msgstr "Anuluj"
641
  msgid "Submit &amp; Deactivate"
642
  msgstr "Wyślij i dezaktywuj"
643
 
644
- #: inc/wpdesk-tracker/views/tracker-notice.php:8
645
- #, php-format
646
  msgid ""
647
  "We need your help to improve <strong>WP Desk plugins</strong>, so they are "
648
- "more useful for you and the rest of <strong>10,000+ users</strong>. By "
649
  "collecting data on how you use our plugins, you will help us a lot. We will "
650
- "not collect any sensitive data, so you can feel safe. As a thank you for "
651
- "your consent, we will send you a <strong>discount coupon</strong> for %sWP "
652
- "Desk plugins%s, which you can use yourself or share with others. %sFind out "
653
- "more &raquo;%s"
654
  msgstr ""
655
  "Potrzebujemy Twojej pomocy, aby dalej rozwijać <strong>wtyczki WP Desk</"
656
  "strong> i były one jeszcze bardziej pomocne dla Ciebie i pozostałych ponad "
657
- "<strong>10 000 użytkowników</strong>. Zbierając dane na temat tego jak "
658
  "korzystasz z naszych wtyczek bardzo nam w tym pomożesz. Nie będziemy zbierać "
659
- "żadnych danych wrażliwych, więc możesz czuć się bezpiecznie. W zamian za "
660
- "Twoją zgodę otrzymasz <strong>kupon rabatowy</strong> na %swtyczki WP Desk"
661
- "%s, który możesz wykorzystać sam lub podzielić się z innymi. %sDowiedz się "
662
- "więcej &raquo;%s"
663
 
664
- #: inc/wpdesk-tracker/views/tracker-notice.php:16
665
- #: inc/wpdesk-tracker/views/tracker-notice.php:27
666
  msgid "Allow"
667
  msgstr "Pozwól"
668
 
@@ -704,6 +682,20 @@ msgstr "WP Desk"
704
  msgid "https://www.wpdesk.net/"
705
  msgstr "https://www.wpdesk.pl/"
706
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
707
  #~ msgid ""
708
  #~ "An Unexpected HTTP Error occurred during the API request.</p> <p><a href="
709
  #~ "\"?\" onclick=\"document.location.reload(); return false;\">Try again</a>"
@@ -895,9 +887,6 @@ msgstr "https://www.wpdesk.pl/"
895
  #~ "Przeczytaj <a href=\"https://www.wpdesk.pl/docs/woocommerce-checkout-"
896
  #~ "fields-docs/\" target=\"_blank\">instrukcję konfiguracji &rarr;</a>"
897
 
898
- #~ msgid "<strong>%s</strong> is required field."
899
- #~ msgstr "<strong>%s</strong> jest wymaganym polem."
900
-
901
  #~ msgid "Attachments"
902
  #~ msgstr "Załączniki"
903
 
1
  msgid ""
2
  msgstr ""
3
  "Project-Id-Version: WooCommerce Flexible Checkout Fields\n"
4
+ "POT-Creation-Date: 2018-06-25 13:02+0200\n"
5
+ "PO-Revision-Date: 2018-06-25 13:05+0200\n"
6
  "Last-Translator: Piotr Jabłonowski <piotr.jablonowski@wpdesk.net>\n"
7
  "Language-Team: Maciej Swoboda <maciej.swoboda@gmail.com>\n"
8
  "Language: pl_PL\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Poedit 2.0.8\n"
13
  "X-Poedit-Basepath: ..\n"
14
  "X-Poedit-WPHeader: flexible-checkout-fields.php\n"
15
  "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
21
  "X-Poedit-SearchPath-0: .\n"
22
  "X-Poedit-SearchPathExcluded-0: *.js\n"
23
 
24
+ #: classes/display-options.php:106 classes/user-profile.php:135
25
  msgid "Additional Information"
26
  msgstr "Dodatkowe informacje"
27
 
28
+ #: classes/filed-validation.php:30
29
+ #, php-format
30
+ msgid "%s is a required field."
31
+ msgstr "%s jest wymaganym polem."
32
+
33
+ #: classes/filed-validation.php:64
34
  msgid "Default"
35
  msgstr "Domyślna"
36
 
37
+ #: classes/filed-validation.php:65
38
  msgid "None"
39
  msgstr "Brak"
40
 
41
+ #: classes/filed-validation.php:66
42
  msgid "Email"
43
  msgstr "Email"
44
 
45
+ #: classes/filed-validation.php:67
46
  msgid "Phone"
47
  msgstr "Numer telefonu"
48
 
49
+ #: classes/filed-validation.php:68
50
  msgid "Post code"
51
  msgstr "Kod pocztowy"
52
 
74
  "Notatka do twojego zamówienia, np. informacje o dostarczeniu przesyłki."
75
 
76
  #: classes/settings.php:147 classes/views/settings-settings.php:11
77
+ #: classes/wpdesk/class-plugin.php:209 flexible-checkout-fields.php:914
78
  msgid "Settings"
79
  msgstr "Ustawienia"
80
 
82
  msgid "Custom Sections"
83
  msgstr "Dodatkowe sekcje"
84
 
85
+ #: classes/settings.php:287
86
  #, php-format
87
  msgid "You cannot use this field name: %s, for field: %s."
88
  msgstr "Nie możesz użyć tej nazwy pola: %s dla pola: %s."
89
 
90
+ #: classes/tracker.php:166
91
  msgid "Opt-in"
92
  msgstr "Opt-in"
93
 
94
+ #: classes/tracker.php:170
95
  msgid "Opt-out"
96
  msgstr "Opt-out"
97
 
108
  "Jeśli chcesz używać Flexible Checkout Fields za darmo, prosimy %sdodaj swoją "
109
  "opinię%s. Pomożesz nam wspierać darmową wersję. Dziękujemy."
110
 
111
+ #: classes/views/settings-fields.php:15
112
  msgid "Thank You Page"
113
  msgstr "Strona podziękowania"
114
 
115
+ #: classes/views/settings-fields.php:16
116
  msgid "My Account - address"
117
  msgstr "Moje konto - adres"
118
 
119
+ #: classes/views/settings-fields.php:17
120
  msgid "My Account - order"
121
  msgstr "Moje konto - zamówienie"
122
 
123
+ #: classes/views/settings-fields.php:18
124
  msgid "Emails"
125
  msgstr "E-maile"
126
 
127
+ #: classes/views/settings-fields.php:37
128
  msgid "Settings resetted."
129
  msgstr "Ustawienia zostały zresetowane."
130
 
131
+ #: classes/views/settings-fields.php:41 classes/views/settings-settings.php:8
132
  msgid "Settings saved."
133
  msgstr "Ustawienia zostały zapisane."
134
 
135
+ #: classes/views/settings-fields.php:49
136
  msgid "Add New Field"
137
  msgstr "Dodaj nowe pole"
138
 
139
+ #: classes/views/settings-fields.php:53 classes/views/settings-fields.php:380
140
+ #: classes/views/settings-fields.php:703
141
  msgid "Field Type"
142
  msgstr "Typ pola"
143
 
144
+ #: classes/views/settings-fields.php:65 classes/views/settings-fields.php:306
145
+ #: classes/views/settings-fields.php:677
146
  msgid "Label"
147
  msgstr "Etykieta"
148
 
149
+ #: classes/views/settings-fields.php:70 classes/views/settings-fields.php:314
150
+ #: classes/views/settings-fields.php:679
151
  msgid "You can use HTML."
152
  msgstr "Możesz używać HTML."
153
 
154
+ #: classes/views/settings-fields.php:74 classes/views/settings-fields.php:323
155
+ #: classes/views/settings-fields.php:683
156
+ msgid "Name"
157
+ msgstr "Nazwa"
158
 
159
+ #: classes/views/settings-fields.php:78 classes/views/settings-fields.php:336
160
  #, php-format
161
  msgid "Meta name: %s."
162
  msgstr "Nazwa meta: %s."
163
 
164
+ #: classes/views/settings-fields.php:86
165
  msgid "This field is available in the PRO version."
166
  msgstr "To pole jest dostępne w wersji PRO."
167
 
168
+ #: classes/views/settings-fields.php:86
169
  msgid "Upgrade to PRO now &rarr;"
170
  msgstr "Zaktualizuj do PRO &rarr;"
171
 
172
+ #: classes/views/settings-fields.php:91
173
  msgid "Section"
174
  msgstr "Sekcja"
175
 
176
+ #: classes/views/settings-fields.php:105
177
  msgid "Save changes after adding a field."
178
  msgstr "Zapisz zmiany po dodaniu pola."
179
 
180
+ #: classes/views/settings-fields.php:110
181
  msgid "Add Field"
182
  msgstr "Dodaj pole"
183
 
184
+ #: classes/views/settings-fields.php:131
185
  msgid "Edit Section"
186
  msgstr "Edytuj sekcję"
187
 
188
+ #: classes/views/settings-fields.php:136 classes/views/settings-fields.php:507
189
  #: classes/views/settings-settings.php:35
190
  msgid "Save Changes"
191
  msgstr "Zapisz zmiany"
192
 
193
+ #: classes/views/settings-fields.php:148
194
  msgid "Section Fields"
195
  msgstr "Pola sekcji"
196
 
197
+ #: classes/views/settings-fields.php:218 classes/views/settings-fields.php:634
198
  msgid "Edit"
199
  msgstr "Edytuj"
200
 
201
+ #: classes/views/settings-fields.php:226 classes/views/settings-fields.php:641
202
  msgid "General"
203
  msgstr "Główne"
204
 
205
+ #: classes/views/settings-fields.php:228 classes/views/settings-fields.php:642
206
  msgid "Appearance"
207
  msgstr "Wygląd"
208
 
209
+ #: classes/views/settings-fields.php:230 classes/views/settings-fields.php:643
210
  msgid "Display On"
211
  msgstr "Wyświetlanie"
212
 
213
+ #: classes/views/settings-fields.php:264 classes/views/settings-fields.php:666
214
  msgid "Enable Field"
215
  msgstr "Pokaż pole"
216
 
217
+ #: classes/views/settings-fields.php:300 classes/views/settings-fields.php:673
218
  msgid "Required Field"
219
  msgstr "Pole wymagane"
220
 
221
+ #: classes/views/settings-fields.php:342 classes/views/settings-fields.php:689
222
  msgid "Validation"
223
  msgstr "Walidacja"
224
 
225
+ #: classes/views/settings-fields.php:353 classes/views/settings-fields.php:697
226
  msgid "For Post Code validation works only with country."
227
  msgstr "Dla walidacji kodu pocztowego musi być wybrany kraj."
228
 
229
+ #: classes/views/settings-fields.php:366
230
  msgid "Options"
231
  msgstr "Opcje"
232
 
233
+ #: classes/views/settings-fields.php:373
234
  msgid ""
235
  "Format: <code>Value : Name</code>. Value will be in the code, name will be "
236
  "visible to the user. One option per line. Example:<br /><code>woman : I am a "
241
  "Przykład:<br /><code>kobieta : Jestem kobietą</code><br /><code>mezczyzna : "
242
  "Jestem mężczyzną</code>"
243
 
244
+ #: classes/views/settings-fields.php:416 classes/views/settings-fields.php:711
245
+ #: classes/views/settings-fields.php:750 classes/views/settings-fields.php:829
246
  msgid "Placeholder"
247
  msgstr "Placeholder"
248
 
249
+ #: classes/views/settings-fields.php:426
250
  msgid "This field is address locale dependent and cannot be modified."
251
+ msgstr "Nazwa tego pola nie może być edytowana."
252
 
253
+ #: classes/views/settings-fields.php:443 classes/views/settings-fields.php:715
254
  msgid "CSS Class"
255
  msgstr "Klasa CSS"
256
 
257
+ #: classes/views/settings-fields.php:491 classes/views/settings-fields.php:737
258
  msgid "Delete Field"
259
  msgstr "Usuń pole"
260
 
261
+ #: classes/views/settings-fields.php:510
262
  msgid "Reset Section Settings"
263
  msgstr "Resetuj ustawienia sekcji"
264
 
265
+ #: classes/views/settings-fields.php:537
266
  #, php-format
267
  msgid "Invalid field name: %s. The name already exists."
268
  msgstr "Błędna nazwa pola: %s. Ta nazwa już istnieje."
269
 
270
+ #: classes/views/settings-fields.php:549
271
  msgid "Field name can not be empty!"
272
  msgstr "Nazwa pola nie może być pusta!"
273
 
274
+ #: classes/views/settings-fields.php:553
275
  msgid "Field name can not be number!"
276
  msgstr "Nazwa pola nie może być numerem!"
277
 
278
+ #: classes/views/settings-fields.php:557
279
  msgid ""
280
  "Invalid field name. Field name can contains only lower case letters, digits "
281
  "and _ (underline) character!"
283
  "Błędna nazwa pola. Nazwa pola może zawierać jedynie małe litery, cyfry oraz "
284
  "_ (znak podkreślenia)!"
285
 
286
+ #: classes/views/settings-fields.php:685
 
 
 
 
 
 
 
 
287
  msgid "Meta name: "
288
  msgstr "Meta name: "
289
 
290
+ #: classes/views/settings-fields.php:762
291
  msgid "Field label can not be empty!"
292
  msgstr "Etykieta pola nie może być pusta!"
293
 
294
+ #: classes/views/settings-fields.php:844
295
  #, php-format
296
  msgid ""
297
  "Do you really want to delete this field: %s? Deleting a field remove it from "
300
  "Czy na pewno chcesz usunąć to pole: %s? Doprowadzi to do usunięcia pola "
301
  "również we wszystkich zamówieniach."
302
 
303
+ #: classes/views/settings-fields.php:886
304
  msgid ""
305
  "Do you really want to reset section settings?. Resetting a section remove "
306
  "all added fields from orders."
372
  "Klucz licencyjny wtyczki %s%s%s nie został aktywowany, więc wtyczka jest "
373
  "nieaktywna! %sKliknij tutaj%s, aby aktywować klucz licencyjny wtyczki."
374
 
375
+ #: classes/wpdesk/class-plugin.php:196 flexible-checkout-fields.php:917
376
  msgid "Support"
377
  msgstr "Wsparcie"
378
 
379
+ #: classes/wpdesk/class-plugin.php:202 flexible-checkout-fields.php:916
380
  msgid "Docs"
381
  msgstr "Docs"
382
 
425
  "The callback function used for the <strong>%s</strong> setting is missing."
426
  msgstr "Brakuje funkcji callback użytej w ustawieniu <strong>%s</strong>."
427
 
428
+ #: flexible-checkout-fields.php:205
429
  msgid "Billing"
430
  msgstr "Płatność"
431
 
432
+ #: flexible-checkout-fields.php:211
433
  msgid "Shipping"
434
  msgstr "Wysyłka"
435
 
436
+ #: flexible-checkout-fields.php:217
437
  msgid "Order"
438
  msgstr "Zamówienie"
439
 
440
+ #: flexible-checkout-fields.php:232
441
  msgid "Single Line Text"
442
  msgstr "Pojedyncza linia (input)"
443
 
444
+ #: flexible-checkout-fields.php:236
445
  msgid "Paragraph Text"
446
  msgstr "Obszar tekstowy (textarea)"
447
 
448
+ #: flexible-checkout-fields.php:244 flexible-checkout-fields.php:249
449
  msgid "Checkbox"
450
  msgstr "Wybór (checkbox)"
451
 
452
+ #: flexible-checkout-fields.php:254
453
  msgid "Radio button"
454
  msgstr "Wybór (radio)"
455
 
456
+ #: flexible-checkout-fields.php:259
457
  msgid "Select (Drop Down)"
458
  msgstr "Lista rozwijana (select)"
459
 
460
+ #: flexible-checkout-fields.php:264
461
  msgid "Date"
462
  msgstr "Data"
463
 
464
+ #: flexible-checkout-fields.php:269
465
  msgid "Time"
466
  msgstr "Czas"
467
 
468
+ #: flexible-checkout-fields.php:274
469
  msgid "Color Picker"
470
  msgstr "Wybór koloru"
471
 
472
+ #: flexible-checkout-fields.php:279
473
  msgid "Headline"
474
  msgstr "Nagłówek"
475
 
476
+ #: flexible-checkout-fields.php:284
477
  msgid "HTML"
478
  msgstr "HTML"
479
 
480
+ #: flexible-checkout-fields.php:289
481
  msgid "File Upload"
482
  msgstr "Przesyłanie pliku"
483
 
484
+ #: flexible-checkout-fields.php:368
485
  msgid "Uploading file..."
486
  msgstr "Przesyłanie plik..."
487
 
488
+ #: flexible-checkout-fields.php:400
489
  msgid "Close"
490
  msgstr "Zamknij"
491
 
492
+ #: flexible-checkout-fields.php:401
493
  msgid "Today"
494
  msgstr "Dzisiaj"
495
 
496
+ #: flexible-checkout-fields.php:404
497
  msgid "Next"
498
  msgstr "Następny"
499
 
500
+ #: flexible-checkout-fields.php:405
501
  msgid "Previous"
502
  msgstr "Poprzedni"
503
 
504
+ #: flexible-checkout-fields.php:923
505
  msgid "Upgrade"
506
  msgstr "Kup PRO"
507
 
508
+ #: flexible-checkout-fields.php:935
509
  msgid "Advanced"
510
  msgstr "Zaawansowane"
511
 
512
  #: inc/wpdesk-tracker/views/tracker-connect.php:7
513
  #: inc/wpdesk-tracker/views/tracker-notice.php:5
 
514
  #, php-format
515
  msgid "Hey %s,"
516
  msgstr "Hej %s,"
517
 
518
  #: inc/wpdesk-tracker/views/tracker-connect.php:8
 
519
  msgid ""
520
  "Please help us improve our plugins! If you opt-in, we will collect some non-"
521
+ "sensitive data and usage information anonymously. If you skip this, that's "
522
+ "okay! All plugins will work just fine."
523
  msgstr ""
524
  "Proszę pomóż nam udoskonalić nasze wtyczki! Jeśli się zgodzisz, będziemy "
525
+ "zbierać niewrażliwe dane użytkowania anonimowo. Jeśli pominiesz ten krok, w "
526
+ "porządku! Wszystkie wtyczki będą działać."
527
 
528
  #: inc/wpdesk-tracker/views/tracker-connect.php:13
529
  msgid "Allow & Continue &rarr;"
542
  msgstr "Dane witryny"
543
 
544
  #: inc/wpdesk-tracker/views/tracker-connect.php:27
545
+ msgid "WP version, PHP info"
546
+ msgstr "Wersja WP, PHP info"
547
 
548
  #: inc/wpdesk-tracker/views/tracker-connect.php:33
549
  msgid "Plugin Usage"
558
  msgstr "Dane sklepu"
559
 
560
  #: inc/wpdesk-tracker/views/tracker-connect.php:41
561
+ msgid "Anonymized and non-sensitive store usage information"
562
+ msgstr "Tylko niewrażliwe i anonimowe dane o użytkowaniu sklepu"
563
 
564
  #: inc/wpdesk-tracker/views/tracker-connect.php:47
565
+ #: inc/wpdesk-tracker/views/tracker-notice.php:7
 
 
 
 
 
 
 
 
 
 
566
  msgid "Find out more &raquo;"
567
  msgstr "Dowiedz się więcej &raquo;"
568
 
627
  msgid "Submit &amp; Deactivate"
628
  msgstr "Wyślij i dezaktywuj"
629
 
630
+ #: inc/wpdesk-tracker/views/tracker-notice.php:6
 
631
  msgid ""
632
  "We need your help to improve <strong>WP Desk plugins</strong>, so they are "
633
+ "more useful for you and the rest of <strong>30,000+ users</strong>. By "
634
  "collecting data on how you use our plugins, you will help us a lot. We will "
635
+ "not collect any sensitive data, so you can feel safe."
 
 
 
636
  msgstr ""
637
  "Potrzebujemy Twojej pomocy, aby dalej rozwijać <strong>wtyczki WP Desk</"
638
  "strong> i były one jeszcze bardziej pomocne dla Ciebie i pozostałych ponad "
639
+ "<strong>30 000 użytkowników</strong>. Zbierając dane na temat tego jak "
640
  "korzystasz z naszych wtyczek bardzo nam w tym pomożesz. Nie będziemy zbierać "
641
+ "żadnych danych wrażliwych, więc możesz czuć się bezpiecznie."
 
 
 
642
 
643
+ #: inc/wpdesk-tracker/views/tracker-notice.php:10
 
644
  msgid "Allow"
645
  msgstr "Pozwól"
646
 
682
  msgid "https://www.wpdesk.net/"
683
  msgstr "https://www.wpdesk.pl/"
684
 
685
+ #~ msgid "Database Name"
686
+ #~ msgstr "Nazwa w bazie danych"
687
+
688
+ #~ msgid "Changing this field..."
689
+ #~ msgstr "Zmiana pola..."
690
+
691
+ #~ msgid "Admin Updates"
692
+ #~ msgstr "Powiadomienia"
693
+
694
+ #~ msgid "Announcements, updates, marketing, no spam and easy opt-out"
695
+ #~ msgstr ""
696
+ #~ "Ważne powiadomienia, uaktualnienia, marketing, żadnego spamu i łatwa "
697
+ #~ "rezygnacja"
698
+
699
  #~ msgid ""
700
  #~ "An Unexpected HTTP Error occurred during the API request.</p> <p><a href="
701
  #~ "\"?\" onclick=\"document.location.reload(); return false;\">Try again</a>"
887
  #~ "Przeczytaj <a href=\"https://www.wpdesk.pl/docs/woocommerce-checkout-"
888
  #~ "fields-docs/\" target=\"_blank\">instrukcję konfiguracji &rarr;</a>"
889
 
 
 
 
890
  #~ msgid "Attachments"
891
  #~ msgstr "Załączniki"
892
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.wpdesk.net/flexible-checkout-fields-woocommerce/
4
  Tags: woocommerce checkout fields, woocommerce custom fields, woocommerce checkout manager, woocommerce checkout editor, woocommerce fields manager, woocommerce fields editor, woocommerce custom checkout fields, woocommerce checkout options, woocommerce checkout pro, woocommerce custom sections, woocommerce file upload
5
  Requires at least: 4.5
6
  Tested up to: 4.9.6
7
- Stable tag: 1.6.5
8
  Requires PHP: 5.5
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -187,6 +187,10 @@ If you are upgrading from the old WooCommerce Checkout Fields version (1.1, wooc
187
 
188
  == Changelog ==
189
 
 
 
 
 
190
  = 1.6.5 - 2018-05-25 =
191
  * Fixed missing address in emails
192
 
4
  Tags: woocommerce checkout fields, woocommerce custom fields, woocommerce checkout manager, woocommerce checkout editor, woocommerce fields manager, woocommerce fields editor, woocommerce custom checkout fields, woocommerce checkout options, woocommerce checkout pro, woocommerce custom sections, woocommerce file upload
5
  Requires at least: 4.5
6
  Tested up to: 4.9.6
7
+ Stable tag: 1.6.6
8
  Requires PHP: 5.5
9
  License: GPLv3 or later
10
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
187
 
188
  == Changelog ==
189
 
190
+ = 1.6.6 - 2018-06-25 =
191
+ * Tweaked tracker data anonymization
192
+ * Fixed tracker notice
193
+
194
  = 1.6.5 - 2018-05-25 =
195
  * Fixed missing address in emails
196
 
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit6cb8f29f730238dc8aa2418f30cc4723::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit1d6967f32154d23eca6189f656cde102::getLoader();
vendor/composer/autoload_classmap.php CHANGED
@@ -6,4 +6,44 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Browser' => $baseDir . '/classes/wpdesk/settings-api/modules/sysinfo/browser.php',
10
+ 'Flexible_Checkout_Fields_Activation_Tracker' => $baseDir . '/classes/activation-tracker.php',
11
+ 'Flexible_Checkout_Fields_Disaplay_Options' => $baseDir . '/classes/display-options.php',
12
+ 'Flexible_Checkout_Fields_Field_Validation' => $baseDir . '/classes/filed-validation.php',
13
+ 'Flexible_Checkout_Fields_Settings' => $baseDir . '/classes/settings.php',
14
+ 'Flexible_Checkout_Fields_User_Profile' => $baseDir . '/classes/user-profile.php',
15
+ 'S214_Sysinfo' => $baseDir . '/classes/wpdesk/settings-api/modules/sysinfo/class.s214-sysinfo.php',
16
+ 'WPDesk_Flexible_Checkout_Fields_Tracker' => $baseDir . '/classes/tracker.php',
17
+ 'WPDesk_Helper_Plugin' => $baseDir . '/classes/wpdesk/class-helper.php',
18
+ 'WPDesk_Plugin_1_8' => $baseDir . '/classes/wpdesk/class-plugin.php',
19
+ 'WPDesk_S214_Settings_1_8' => $baseDir . '/classes/wpdesk/settings-api/class.s214-settings.php',
20
+ 'WPDesk_Settings_1_8' => $baseDir . '/classes/wpdesk/class-settings.php',
21
+ 'WPDesk_Tracker' => $baseDir . '/inc/wpdesk-tracker/class-wpdesk-tracker.php',
22
+ 'WPDesk_Tracker_Data_Provider' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider.php',
23
+ 'WPDesk_Tracker_Data_Provider_Gateways' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-gateways.php',
24
+ 'WPDesk_Tracker_Data_Provider_Identification' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification.php',
25
+ 'WPDesk_Tracker_Data_Provider_Identification_Gdpr' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification-gdpr.php',
26
+ 'WPDesk_Tracker_Data_Provider_Jetpack' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-jetpack.php',
27
+ 'WPDesk_Tracker_Data_Provider_License_Emails' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-license-emails.php',
28
+ 'WPDesk_Tracker_Data_Provider_Orders' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders.php',
29
+ 'WPDesk_Tracker_Data_Provider_Orders_Country' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-country.php',
30
+ 'WPDesk_Tracker_Data_Provider_Orders_Month' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-month.php',
31
+ 'WPDesk_Tracker_Data_Provider_Plugins' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-plugins.php',
32
+ 'WPDesk_Tracker_Data_Provider_Products' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products.php',
33
+ 'WPDesk_Tracker_Data_Provider_Products_Variations' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products-variations.php',
34
+ 'WPDesk_Tracker_Data_Provider_Server' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-server.php',
35
+ 'WPDesk_Tracker_Data_Provider_Settings' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-settings.php',
36
+ 'WPDesk_Tracker_Data_Provider_Shipping_Classes' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-classes.php',
37
+ 'WPDesk_Tracker_Data_Provider_Shipping_Methods' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods.php',
38
+ 'WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods-zones.php',
39
+ 'WPDesk_Tracker_Data_Provider_Templates' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-templates.php',
40
+ 'WPDesk_Tracker_Data_Provider_Theme' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-theme.php',
41
+ 'WPDesk_Tracker_Data_Provider_User_Agent' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-user-agent.php',
42
+ 'WPDesk_Tracker_Data_Provider_Users' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-users.php',
43
+ 'WPDesk_Tracker_Data_Provider_Wordpress' => $baseDir . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-wordpress.php',
44
+ 'WPDesk_Tracker_Factory' => $baseDir . '/inc/wpdesk-tracker/class-wpdesk-tracker-factory.php',
45
+ 'WPDesk_Tracker_Sender' => $baseDir . '/inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender.php',
46
+ 'WPDesk_Tracker_Sender_Exception_WpError' => $baseDir . '/inc/wpdesk-tracker/sender/Exception/class-wpdesk-tracker-sender-exception-wperror.php',
47
+ 'WPDesk_Tracker_Sender_Logged' => $baseDir . '/inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-logged.php',
48
+ 'WPDesk_Tracker_Sender_Wordpress_To_WPDesk' => $baseDir . '/inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-wordpress-to-wpdesk.php',
49
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit6cb8f29f730238dc8aa2418f30cc4723
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit6cb8f29f730238dc8aa2418f30cc4723
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6cb8f29f730238dc8aa2418f30cc4723', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6cb8f29f730238dc8aa2418f30cc4723', '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\ComposerStaticInit6cb8f29f730238dc8aa2418f30cc4723::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit1d6967f32154d23eca6189f656cde102
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit1d6967f32154d23eca6189f656cde102', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit1d6967f32154d23eca6189f656cde102', '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\ComposerStaticInit1d6967f32154d23eca6189f656cde102::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,11 +4,55 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit6cb8f29f730238dc8aa2418f30cc4723
8
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  public static function getInitializer(ClassLoader $loader)
10
  {
11
  return \Closure::bind(function () use ($loader) {
 
12
 
13
  }, null, ClassLoader::class);
14
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit1d6967f32154d23eca6189f656cde102
8
  {
9
+ public static $classMap = array (
10
+ 'Browser' => __DIR__ . '/../..' . '/classes/wpdesk/settings-api/modules/sysinfo/browser.php',
11
+ 'Flexible_Checkout_Fields_Activation_Tracker' => __DIR__ . '/../..' . '/classes/activation-tracker.php',
12
+ 'Flexible_Checkout_Fields_Disaplay_Options' => __DIR__ . '/../..' . '/classes/display-options.php',
13
+ 'Flexible_Checkout_Fields_Field_Validation' => __DIR__ . '/../..' . '/classes/filed-validation.php',
14
+ 'Flexible_Checkout_Fields_Settings' => __DIR__ . '/../..' . '/classes/settings.php',
15
+ 'Flexible_Checkout_Fields_User_Profile' => __DIR__ . '/../..' . '/classes/user-profile.php',
16
+ 'S214_Sysinfo' => __DIR__ . '/../..' . '/classes/wpdesk/settings-api/modules/sysinfo/class.s214-sysinfo.php',
17
+ 'WPDesk_Flexible_Checkout_Fields_Tracker' => __DIR__ . '/../..' . '/classes/tracker.php',
18
+ 'WPDesk_Helper_Plugin' => __DIR__ . '/../..' . '/classes/wpdesk/class-helper.php',
19
+ 'WPDesk_Plugin_1_8' => __DIR__ . '/../..' . '/classes/wpdesk/class-plugin.php',
20
+ 'WPDesk_S214_Settings_1_8' => __DIR__ . '/../..' . '/classes/wpdesk/settings-api/class.s214-settings.php',
21
+ 'WPDesk_Settings_1_8' => __DIR__ . '/../..' . '/classes/wpdesk/class-settings.php',
22
+ 'WPDesk_Tracker' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/class-wpdesk-tracker.php',
23
+ 'WPDesk_Tracker_Data_Provider' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider.php',
24
+ 'WPDesk_Tracker_Data_Provider_Gateways' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-gateways.php',
25
+ 'WPDesk_Tracker_Data_Provider_Identification' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification.php',
26
+ 'WPDesk_Tracker_Data_Provider_Identification_Gdpr' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-identification-gdpr.php',
27
+ 'WPDesk_Tracker_Data_Provider_Jetpack' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-jetpack.php',
28
+ 'WPDesk_Tracker_Data_Provider_License_Emails' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-license-emails.php',
29
+ 'WPDesk_Tracker_Data_Provider_Orders' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders.php',
30
+ 'WPDesk_Tracker_Data_Provider_Orders_Country' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-country.php',
31
+ 'WPDesk_Tracker_Data_Provider_Orders_Month' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-orders-month.php',
32
+ 'WPDesk_Tracker_Data_Provider_Plugins' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-plugins.php',
33
+ 'WPDesk_Tracker_Data_Provider_Products' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products.php',
34
+ 'WPDesk_Tracker_Data_Provider_Products_Variations' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-products-variations.php',
35
+ 'WPDesk_Tracker_Data_Provider_Server' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-server.php',
36
+ 'WPDesk_Tracker_Data_Provider_Settings' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-settings.php',
37
+ 'WPDesk_Tracker_Data_Provider_Shipping_Classes' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-classes.php',
38
+ 'WPDesk_Tracker_Data_Provider_Shipping_Methods' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods.php',
39
+ 'WPDesk_Tracker_Data_Provider_Shipping_Methods_Zones' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-shipping-methods-zones.php',
40
+ 'WPDesk_Tracker_Data_Provider_Templates' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-templates.php',
41
+ 'WPDesk_Tracker_Data_Provider_Theme' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-theme.php',
42
+ 'WPDesk_Tracker_Data_Provider_User_Agent' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-user-agent.php',
43
+ 'WPDesk_Tracker_Data_Provider_Users' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-users.php',
44
+ 'WPDesk_Tracker_Data_Provider_Wordpress' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/data_provider/class-wpdesk-tracker-data-provider-wordpress.php',
45
+ 'WPDesk_Tracker_Factory' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/class-wpdesk-tracker-factory.php',
46
+ 'WPDesk_Tracker_Sender' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender.php',
47
+ 'WPDesk_Tracker_Sender_Exception_WpError' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/sender/Exception/class-wpdesk-tracker-sender-exception-wperror.php',
48
+ 'WPDesk_Tracker_Sender_Logged' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-logged.php',
49
+ 'WPDesk_Tracker_Sender_Wordpress_To_WPDesk' => __DIR__ . '/../..' . '/inc/wpdesk-tracker/sender/class-wpdesk-tracker-sender-wordpress-to-wpdesk.php',
50
+ );
51
+
52
  public static function getInitializer(ClassLoader $loader)
53
  {
54
  return \Closure::bind(function () use ($loader) {
55
+ $loader->classMap = ComposerStaticInit1d6967f32154d23eca6189f656cde102::$classMap;
56
 
57
  }, null, ClassLoader::class);
58
  }