8.4 sec in total
1 sec
6.7 sec
626 ms
Visit jdkmaintenance.co.nz now to see the best up-to-date JDK Maintenance content and also check out these interesting facts you probably never knew about jdkmaintenance.co.nz
JDK Maintenance provides a reliable property and building maintenance service that includes preventative and scheduled maintenance programmes. We are based in Auckland but have clients all over the co...
Visit jdkmaintenance.co.nzWe analyzed Jdkmaintenance.co.nz page load time and found that the first response time was 1 sec and then it took 7.4 sec to load all DOM resources and completely render a web page. This is a poor result, as 85% of websites can load faster.
jdkmaintenance.co.nz performance score
name
value
score
weighting
Value7.9 s
0/100
10%
Value11.1 s
0/100
25%
Value22.3 s
0/100
10%
Value350 ms
73/100
30%
Value0.002
100/100
15%
Value13.1 s
12/100
10%
1029 ms
34 ms
210 ms
413 ms
611 ms
Our browser made a total of 73 requests to load all elements on the main page. We found that 60% of them (44 requests) were addressed to the original Jdkmaintenance.co.nz, 19% (14 requests) were made to and 12% (9 requests) were made to Fonts.gstatic.com. The less responsive or slowest element that took the longest time to load (1.5 sec) belongs to the original domain Jdkmaintenance.co.nz.
Page size can be reduced by 84.0 kB (13%)
644.1 kB
560.2 kB
In fact, the total size of Jdkmaintenance.co.nz main page is 644.1 kB. This result falls beyond the top 1M of websites and identifies a large and not optimized web page that may take ages to load. 45% of websites need less resources to load. Images take 400.3 kB which makes up the majority of the site volume.
Potential reduce by 64.9 kB
HTML content can be minified and compressed by a website’s server. The most efficient way is to compress content using GZIP which reduces data amount travelling through the network between server and browser. HTML code on this page is well minified. It is highly recommended that content of this web page should be compressed using GZIP, as it can save up to 64.9 kB or 76% of the original size.
Potential reduce by 2.3 kB
Image size optimization can help to speed up a website loading time. The chart above shows the difference between the size before and after optimization. JDK Maintenance images are well optimized though.
Potential reduce by 1.6 kB
It’s better to minify JavaScript in order to improve website performance. The diagram shows the current total size of all JavaScript files against the prospective JavaScript size after its minification and compression. This website has mostly compressed JavaScripts.
Potential reduce by 15.2 kB
CSS files minification is very important to reduce a web page rendering time. The faster CSS files can load, the earlier a page can be rendered. Jdkmaintenance.co.nz needs all CSS files to be minified and compressed as it can save up to 15.2 kB or 22% of the original size.
Number of requests can be reduced by 30 (61%)
49
19
The browser has sent 49 CSS, Javascripts, AJAX and image requests in order to completely render the main page of JDK Maintenance. We recommend that multiple CSS and JavaScript files should be merged into one by each type, as it can help reduce assets requests from 17 to 1 for JavaScripts and from 15 to 1 for CSS and as a result speed up the page load time.
jdkmaintenance.co.nz
1029 ms
css
34 ms
autoptimize_single_1b9220b26278263afa7bdc2f8c159090.css
210 ms
autoptimize_single_279a41fe094a1c0ff59f6d84dc6ec0d2.css
413 ms
autoptimize_single_fbb8a1986bb50beaed0e2e067a4092a7.css
611 ms
autoptimize_single_54057c8859cc224648b356a5038497b0.css
610 ms
photoswipe.min.css
609 ms
default-skin.min.css
600 ms
autoptimize_single_db40cb728f8c30fd869241d17ef8df37.css
600 ms
jquery.min.js
624 ms
jquery.blockUI.min.js
803 ms
javascript;base64,CnZhciB3Y19hZGRfdG9fY2FydF9wYXJhbXMgPSB7ImFqYXhfdXJsIjoiXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJ3Y19hamF4X3VybCI6IlwvP3djLWFqYXg9JSVlbmRwb2ludCUlIiwiaTE4bl92aWV3X2NhcnQiOiJWaWV3IGNhcnQiLCJjYXJ0X3VybCI6Imh0dHBzOlwvXC9qZGttYWludGVuYW5jZS5jby5uelwvY2FydFwvIiwiaXNfY2FydCI6IiIsImNhcnRfcmVkaXJlY3RfYWZ0ZXJfYWRkIjoibm8ifTsK
7 ms
add-to-cart.min.js
802 ms
js.cookie.min.js
816 ms
javascript;base64,CnZhciB3b29jb21tZXJjZV9wYXJhbXMgPSB7ImFqYXhfdXJsIjoiXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJ3Y19hamF4X3VybCI6IlwvP3djLWFqYXg9JSVlbmRwb2ludCUlIn07Cg==
6 ms
woocommerce.min.js
811 ms
jquery.zoom.min.js
817 ms
jquery.flexslider.min.js
827 ms
photoswipe.min.js
1007 ms
photoswipe-ui-default.min.js
1005 ms
javascript;base64,CnZhciB3Y19zaW5nbGVfcHJvZHVjdF9wYXJhbXMgPSB7ImkxOG5fcmVxdWlyZWRfcmF0aW5nX3RleHQiOiJQbGVhc2Ugc2VsZWN0IGEgcmF0aW5nIiwicmV2aWV3X3JhdGluZ19yZXF1aXJlZCI6InllcyIsImZsZXhzbGlkZXIiOnsicnRsIjpmYWxzZSwiYW5pbWF0aW9uIjoic2xpZGUiLCJzbW9vdGhIZWlnaHQiOnRydWUsImRpcmVjdGlvbk5hdiI6ZmFsc2UsImNvbnRyb2xOYXYiOiJ0aHVtYm5haWxzIiwic2xpZGVzaG93IjpmYWxzZSwiYW5pbWF0aW9uU3BlZWQiOjUwMCwiYW5pbWF0aW9uTG9vcCI6ZmFsc2UsImFsbG93T25lU2xpZGUiOmZhbHNlLCJ0b3VjaCI6ZmFsc2V9LCJ6b29tX2VuYWJsZWQiOiIxIiwiem9vbV9vcHRpb25zIjpbXSwicGhvdG9zd2lwZV9lbmFibGVkIjoiMSIsInBob3Rvc3dpcGVfb3B0aW9ucyI6eyJzaGFyZUVsIjpmYWxzZSwiY2xvc2VPblNjcm9sbCI6ZmFsc2UsImhpc3RvcnkiOmZhbHNlLCJoaWRlQW5pbWF0aW9uRHVyYXRpb24iOjAsInNob3dBbmltYXRpb25EdXJhdGlvbiI6MH0sImZsZXhzbGlkZXJfZW5hYmxlZCI6IjEifTsK
5 ms
single-product.min.js
1015 ms
JyZsPScrbDonJztqLmFzeW5jPXRydWU7ai5zcmM9DQonaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7DQp9KSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcsJ2RhdGFMYXllcicsJ0dUTS1LWjM4Q0pCJyk7
5 ms
js
69 ms
javascript;base64,DQogd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107DQogZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQ0KIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7DQoNCiBndGFnKCdjb25maWcnLCAnRy1QOUgzNjZIN044Jyk7DQo=
5 ms
autoptimize_single_59f02110461bc12f0d8306b72d4aeaf7.css
1035 ms
autoptimize_single_395029de3417deb94f49dd6ba0de5f5d.css
1036 ms
autoptimize_single_d78b30e1c29dd7a76f47776c64e4dbab.css
1039 ms
javascript;base64,CgkJCWpRdWVyeSgnIy1wcm8tbWVudS00NS0zNiAub3h5LXByby1tZW51LXNob3ctZHJvcGRvd24gLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gPiBhJywgJ2JvZHknKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuYXBwZW5kKCc8ZGl2IGNsYXNzPSJveHktcHJvLW1lbnUtZHJvcGRvd24taWNvbi1jbGljay1hcmVhIj48c3ZnIGNsYXNzPSJveHktcHJvLW1lbnUtZHJvcGRvd24taWNvbiI+PHVzZSB4bGluazpocmVmPSIjRm9udEF3ZXNvbWVpY29uLXBsdXMiPjwvdXNlPjwvc3ZnPjwvZGl2PicpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgalF1ZXJ5KCcjLXByby1tZW51LTQ1LTM2IC5veHktcHJvLW1lbnUtc2hvdy1kcm9wZG93biAubWVudS1pdGVtOm5vdCgubWVudS1pdGVtLWhhcy1jaGlsZHJlbikgPiBhJywgJ2JvZHknKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuYXBwZW5kKCc8ZGl2IGNsYXNzPSJveHktcHJvLW1lbnUtZHJvcGRvd24taWNvbi1jbGljay1hcmVhIj48L2Rpdj4nKTsKICAgICAgICAgICAgfSk7CQkJ
5 ms
javascript;base64,DQogICAgICAgIGlmKHR5cGVvZiBlbGVtZW50c1RvTWF0Y2ggPT0gJ3VuZGVmaW5lZCcpew0KICAgICAgICAgICAgdmFyIGVsZW1lbnRzVG9NYXRjaCA9IFsiLmF1cF90ZXh0Il07DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB2YXIgbmV3RWxlbWVudHNUb01hdGNoID0gWyIuYXVwX3RleHQiXTsNCiAgICAgICAgICAgIGpRdWVyeS5tZXJnZShlbGVtZW50c1RvTWF0Y2gsIG5ld0VsZW1lbnRzVG9NYXRjaCk7DQogICAgICAgIH0NCiAgICAgICAgdmFyIGJyZWFrUG9pbnQgPSAiNzY4IjsNCiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSBqUXVlcnkod2luZG93KS53aWR0aCgpOw0KICAgICAgICAgICAgaWYoc2NyZWVuV2lkdGggPj0gYnJlYWtQb2ludCl7DQogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyANCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzVG9NYXRjaC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1heEhlaWdodCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIGpRdWVyeShlbGVtZW50c1RvTWF0Y2hbaV0pLm1hcChmdW5jdGlvbiAoKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkodGhpcykub3V0ZXJIZWlnaHQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmdldCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShlbGVtZW50c1RvTWF0Y2hbaV0pLmVhY2goZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5jc3MoJ2hlaWdodCcsbWF4SGVpZ2h0ICsgJ3B4Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlbGVtZW50c1RvTWF0Y2hbaV0gKyAiOiBEb25lIik7DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0sIDEwMDApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICAgICAgDQogICAgICAgIGpRdWVyeSh3aW5kb3cpLm9uKCJyZXNpemUiLCBmdW5jdGlvbihlKSB7DQogICAgICAgICAgICB2YXIgc2NyZWVuV2lkdGggPSBqUXVlcnkod2luZG93KS53aWR0aCgpOw0KICAgICAgICAgICAgaWYoc2NyZWVuV2lkdGggPj0gYnJlYWtQb2ludCl7DQogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzVG9NYXRjaC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgbWF4SGVpZ2h0ID0gTWF0aC5tYXguYXBwbHkobnVsbCwgalF1ZXJ5KGVsZW1lbnRzVG9NYXRjaFtpXSkubWFwKGZ1bmN0aW9uICgpew0KICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuY3NzKCdoZWlnaHQnLCdhdXRvJyk7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkodGhpcykub3V0ZXJIZWlnaHQoKTsNCiAgICAgICAgICAgICAgICAgICAgfSkuZ2V0KCkpOw0KICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWxlbWVudHNUb01hdGNoW2ldKS5lYWNoKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5jc3MoJ2hlaWdodCcsbWF4SGVpZ2h0ICsgJ3B4Jyk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzVG9NYXRjaC5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWxlbWVudHNUb01hdGNoW2ldKS5lYWNoKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuY3NzKCdoZWlnaHQnLCdhdXRvJyk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAg
4 ms
javascript;base64,CgogICAgICAgICAgICBmdW5jdGlvbiBveHlnZW5faW5pdF9wcm9fbWVudSgpIHsKICAgICAgICAgICAgICAgIGpRdWVyeSgnLm94eS1wcm8tbWVudS1jb250YWluZXInKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gZHJvcGRvd25zCiAgICAgICAgICAgICAgICAgICAgdmFyIG1lbnUgPSBqUXVlcnkodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbiA9IG1lbnUuZGF0YSgnb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGlvbicpLAogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbiA9IG1lbnUuZGF0YSgnb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGlvbi1kdXJhdGlvbicpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnN1Yi1tZW51JywgbWVudSkuYXR0cignZGF0YS1hb3MnLGFuaW1hdGlvbik7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuc3ViLW1lbnUnLCBtZW51KS5hdHRyKCdkYXRhLWFvcy1kdXJhdGlvbicsYW5pbWF0aW9uRHVyYXRpb24qMTAwMCk7CgogICAgICAgICAgICAgICAgICAgIG94eWdlbl9vZmZjYW52YXNfbWVudV9pbml0KG1lbnUpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeSh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICBveHlnZW5fb2ZmY2FudmFzX21lbnVfaW5pdChtZW51KTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy8gbGV0IGNlcnRhaW4gQ1NTIHJ1bGVzIGtub3cgbWVudSBiZWluZyBpbml0aWFsaXplZAogICAgICAgICAgICAgICAgICAgIC8vICIxMCIgdGltZW91dCBpcyBleHRyYSBqdXN0IGluIGNhc2UsICIwIiB3b3VsZCBiZSBlbm91Z2gKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge21lbnUuYWRkQ2xhc3MoJ294eS1wcm8tbWVudS1pbml0Jyk7fSwgMTApOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkucmVhZHkob3h5Z2VuX2luaXRfcHJvX21lbnUpOwogICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdveHlnZW4tYWpheC1lbGVtZW50LWxvYWRlZCcsIG94eWdlbl9pbml0X3Byb19tZW51LCBmYWxzZSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBsZXQgcHJvTWVudU1vdXNlRG93biA9IGZhbHNlOwoKICAgICAgICAgICAgalF1ZXJ5KCIub3h5Z2VuLWJvZHkiKQogICAgICAgICAgICAub24oIm1vdXNlZG93biIsICcub3h5LXByby1tZW51LXNob3ctZHJvcGRvd246bm90KC5veHktcHJvLW1lbnUtb3Blbi1jb250YWluZXIpIC5tZW51LWl0ZW0taGFzLWNoaWxkcmVuJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgcHJvTWVudU1vdXNlRG93biA9IHRydWU7CiAgICAgICAgICAgIH0pCgogICAgICAgICAgICAub24oIm1vdXNldXAiLCAnLm94eS1wcm8tbWVudS1zaG93LWRyb3Bkb3duOm5vdCgub3h5LXByby1tZW51LW9wZW4tY29udGFpbmVyKSAubWVudS1pdGVtLWhhcy1jaGlsZHJlbicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIHByb01lbnVNb3VzZURvd24gPSBmYWxzZTsKICAgICAgICAgICAgfSkKCiAgICAgICAgICAgIC5vbignbW91c2VlbnRlciBmb2N1c2luJywgJy5veHktcHJvLW1lbnUtc2hvdy1kcm9wZG93bjpub3QoLm94eS1wcm8tbWVudS1vcGVuLWNvbnRhaW5lcikgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiggcHJvTWVudU1vdXNlRG93biApIHJldHVybjsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHN1Yk1lbnUgPSBqUXVlcnkodGhpcykuY2hpbGRyZW4oJy5zdWItbWVudScpOwogICAgICAgICAgICAgICAgc3ViTWVudS5hZGRDbGFzcygnYW9zLWFuaW1hdGUgb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGluZycpLnJlbW92ZUNsYXNzKCdzdWItbWVudS1sZWZ0Jyk7CgogICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0galF1ZXJ5KHRoaXMpLnBhcmVudHMoJy5veHktcHJvLW1lbnUtY29udGFpbmVyJykuZGF0YSgnb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGlvbi1kdXJhdGlvbicpOwoKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7c3ViTWVudS5yZW1vdmVDbGFzcygnb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGluZycpfSwgZHVyYXRpb24qMTAwMCk7CgogICAgICAgICAgICAgICAgdmFyIG9mZnNldCA9IHN1Yk1lbnUub2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzdWJNZW51LndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgZG9jV2lkdGggPSBqUXVlcnkod2luZG93KS53aWR0aCgpOwoKICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0LmxlZnQrd2lkdGggPiBkb2NXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBzdWJNZW51LmFkZENsYXNzKCdzdWItbWVudS1sZWZ0Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KQogICAgICAgICAgICAKICAgICAgICAgICAgLm9uKCdtb3VzZWxlYXZlIGZvY3Vzb3V0JywgJy5veHktcHJvLW1lbnUtc2hvdy1kcm9wZG93biAubWVudS1pdGVtLWhhcy1jaGlsZHJlbicsIGZ1bmN0aW9uKCBlICkgewogICAgICAgICAgICAgICAgaWYoIGpRdWVyeSh0aGlzKS5pcygnOmhvdmVyJykgKSByZXR1cm47CgogICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLmNoaWxkcmVuKCcuc3ViLW1lbnUnKS5yZW1vdmVDbGFzcygnYW9zLWFuaW1hdGUnKTsKCiAgICAgICAgICAgICAgICB2YXIgc3ViTWVudSA9IGpRdWVyeSh0aGlzKS5jaGlsZHJlbignLnN1Yi1tZW51Jyk7CiAgICAgICAgICAgICAgICAvL3N1Yk1lbnUuYWRkQ2xhc3MoJ294eS1wcm8tbWVudS1kcm9wZG93bi1hbmltYXRpbmctb3V0Jyk7CgogICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0galF1ZXJ5KHRoaXMpLnBhcmVudHMoJy5veHktcHJvLW1lbnUtY29udGFpbmVyJykuZGF0YSgnb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGlvbi1kdXJhdGlvbicpOwogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtzdWJNZW51LnJlbW92ZUNsYXNzKCdveHktcHJvLW1lbnUtZHJvcGRvd24tYW5pbWF0aW5nLW91dCcpfSwgZHVyYXRpb24qMTAwMCk7CiAgICAgICAgICAgIH0pCgogICAgICAgICAgICAvLyBvcGVuIGljb24gY2xpY2sKICAgICAgICAgICAgLm9uKCdjbGljaycsICcub3h5LXByby1tZW51LW1vYmlsZS1vcGVuLWljb24nLCBmdW5jdGlvbigpIHsgICAgCiAgICAgICAgICAgICAgICB2YXIgbWVudSA9IGpRdWVyeSh0aGlzKS5wYXJlbnRzKCcub3h5LXByby1tZW51Jyk7CiAgICAgICAgICAgICAgICAvLyBvZmYgY2FudmFzCiAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5KHRoaXMpLmhhc0NsYXNzKCdveHktcHJvLW1lbnUtb2ZmLWNhbnZhcy10cmlnZ2VyJykpIHsKICAgICAgICAgICAgICAgICAgICBveHlnZW5fb2ZmY2FudmFzX21lbnVfcnVuKG1lbnUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gcmVndWxhcgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbWVudS5hZGRDbGFzcygnb3h5LXByby1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykuc2libGluZ3MoJy5veHktcHJvLW1lbnUtY29udGFpbmVyJykuYWRkQ2xhc3MoJ294eS1wcm8tbWVudS1vcGVuLWNvbnRhaW5lcicpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnYm9keScpLmFkZENsYXNzKCdveHktbmF2LW1lbnUtcHJldmVudC1vdmVyZmxvdycpOwogICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnaHRtbCcpLmFkZENsYXNzKCdveHktbmF2LW1lbnUtcHJldmVudC1vdmVyZmxvdycpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIG94eWdlbl9wcm9fbWVudV9zZXRfc3RhdGljX3dpZHRoKG1lbnUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGFuaW1hdGlvbiBhbmQgY29sbGFwc2UKICAgICAgICAgICAgICAgIGpRdWVyeSgnLnN1Yi1tZW51JywgbWVudSkuYXR0cignZGF0YS1hb3MnLCcnKTsKICAgICAgICAgICAgICAgIGpRdWVyeSgnLm94eS1wcm8tbWVudS1kcm9wZG93bi10b2dnbGUgLnN1Yi1tZW51JywgbWVudSkuc2xpZGVVcCgwKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBmdW5jdGlvbiBveHlnZW5fcHJvX21lbnVfc2V0X3N0YXRpY193aWR0aChtZW51KSB7CiAgICAgICAgICAgICAgICB2YXIgbWVudUl0ZW1XaWR0aCA9IGpRdWVyeSgiLm94eS1wcm8tbWVudS1saXN0ID4gLm1lbnUtaXRlbSIsIG1lbnUpLndpZHRoKCk7CiAgICAgICAgICAgICAgICBqUXVlcnkoIi5veHktcHJvLW1lbnUtb3Blbi1jb250YWluZXIgPiBkaXY6Zmlyc3QtY2hpbGQsIC5veHktcHJvLW1lbnUtb2ZmLWNhbnZhcy1jb250YWluZXIgPiBkaXY6Zmlyc3QtY2hpbGQiLCBtZW51KS53aWR0aChtZW51SXRlbVdpZHRoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gb3h5Z2VuX3Byb19tZW51X3Vuc2V0X3N0YXRpY193aWR0aChtZW51KSB7CiAgICAgICAgICAgICAgICBqUXVlcnkoIi5veHktcHJvLW1lbnUtY29udGFpbmVyID4gZGl2OmZpcnN0LWNoaWxkIiwgbWVudSkud2lkdGgoIiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBjbG9zZSBpY29uIGNsaWNrCiAgICAgICAgICAgIGpRdWVyeSgnYm9keScpLm9uKCdjbGljaycsICcub3h5LXByby1tZW51LW1vYmlsZS1jbG9zZS1pY29uJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbWVudSA9IGpRdWVyeSh0aGlzKS5wYXJlbnRzKCcub3h5LXByby1tZW51Jyk7CgogICAgICAgICAgICAgICAgbWVudS5yZW1vdmVDbGFzcygnb3h5LXByby1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5wYXJlbnRzKCcub3h5LXByby1tZW51LWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdveHktcHJvLW1lbnUtb3Blbi1jb250YWluZXInKTsKICAgICAgICAgICAgICAgIGpRdWVyeSgnLm94eS1uYXYtbWVudS1wcmV2ZW50LW92ZXJmbG93JykucmVtb3ZlQ2xhc3MoJ294eS1uYXYtbWVudS1wcmV2ZW50LW92ZXJmbG93Jyk7CgogICAgICAgICAgICAgICAgaWYgKGpRdWVyeSh0aGlzKS5wYXJlbnQoJy5veHktcHJvLW1lbnUtY29udGFpbmVyJykuaGFzQ2xhc3MoJ294eS1wcm8tbWVudS1vZmYtY2FudmFzLWNvbnRhaW5lcicpKSB7CiAgICAgICAgICAgICAgICAgICAgb3h5Z2VuX29mZmNhbnZhc19tZW51X3J1bihtZW51KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBveHlnZW5fcHJvX21lbnVfdW5zZXRfc3RhdGljX3dpZHRoKG1lbnUpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIGRyb3Bkb3duIHRvZ2dsZSBpY29uIGNsaWNrCiAgICAgICAgICAgIGpRdWVyeSgnYm9keScpLm9uKAogICAgICAgICAgICAgICAgJ3RvdWNoc3RhcnQgY2xpY2snLCAKICAgICAgICAgICAgICAgICcub3h5LXByby1tZW51LWRyb3Bkb3duLWxpbmtzLXRvZ2dsZS5veHktcHJvLW1lbnUtb2ZmLWNhbnZhcy1jb250YWluZXIgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gPiBhID4gLm94eS1wcm8tbWVudS1kcm9wZG93bi1pY29uLWNsaWNrLWFyZWEsJysKICAgICAgICAgICAgICAgICcub3h5LXByby1tZW51LWRyb3Bkb3duLWxpbmtzLXRvZ2dsZS5veHktcHJvLW1lbnUtb3Blbi1jb250YWluZXIgLm1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gPiBhID4gLm94eS1wcm8tbWVudS1kcm9wZG93bi1pY29uLWNsaWNrLWFyZWEnLCAKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAgICAgIC8vIGZpeCBmb3IgaU9TIGZhbHNlIHRyaWdnZXJpbmcgc3VibWVudSBjbGlja3MKICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5zdWItbWVudScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnbm9uZScpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5zdWItbWVudScpLmNzcygncG9pbnRlci1ldmVudHMnLCAnaW5pdGlhbCcpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHdvcmthcm91bmQgdG8gc3RvcCBjbGljayBldmVudCBmcm9tIHRyaWdnZXJpbmcgYWZ0ZXIgdG91Y2hzdGFydAogICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cub3h5Z2VuUHJvTWVudUljb25Ub3VjaGVkID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5veHlnZW5Qcm9NZW51SWNvblRvdWNoZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZS50eXBlPT09J3RvdWNoc3RhcnQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5veHlnZW5Qcm9NZW51SWNvblRvdWNoZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBveHlnZW5fcHJvX21lbnVfdG9nZ2xlX2Ryb3Bkb3duKHRoaXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgZnVuY3Rpb24gb3h5Z2VuX3Byb19tZW51X3RvZ2dsZV9kcm9wZG93bih0cmlnZ2VyKSB7CgogICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0galF1ZXJ5KHRyaWdnZXIpLnBhcmVudHMoJy5veHktcHJvLW1lbnUtY29udGFpbmVyJykuZGF0YSgnb3h5LXByby1tZW51LWRyb3Bkb3duLWFuaW1hdGlvbi1kdXJhdGlvbicpOwoKICAgICAgICAgICAgICAgIGpRdWVyeSh0cmlnZ2VyKS5jbG9zZXN0KCcubWVudS1pdGVtLWhhcy1jaGlsZHJlbicpLmNoaWxkcmVuKCcuc3ViLW1lbnUnKS5zbGlkZVRvZ2dsZSh7CiAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLmNzcyh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAiZmxleCIKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbioxMDAwCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAvLyBmdWxsc2NyZWVuIG1lbnUgbGluayBjbGljawogICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSAnLm94eS1wcm8tbWVudS1vcGVuIC5tZW51LWl0ZW0gYSc7CiAgICAgICAgICAgIGpRdWVyeSgnYm9keScpLm9uKCdjbGljaycsIHNlbGVjdG9yLCBmdW5jdGlvbihldmVudCl7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChqUXVlcnkoZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCcub3h5LXByby1tZW51LWRyb3Bkb3duLWljb24tY2xpY2stYXJlYScpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyB0b2dnbGUgaWNvbiBjbGlja2VkLCBubyBuZWVkIHRvIGhpZGUgdGhlIG1lbnUKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICgoalF1ZXJ5KHRoaXMpLmF0dHIoImhyZWYiKSA9PT0gIiMiIHx8IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCIub3h5LXByby1tZW51LWNvbnRhaW5lciIpLmRhdGEoImVudGlyZS1wYXJlbnQtdG9nZ2xlcy1kcm9wZG93biIpKSAmJiAKICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS5wYXJlbnQoKS5oYXNDbGFzcygnbWVudS1pdGVtLWhhcy1jaGlsZHJlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZW1wdHkgaHJlZiBkb24ndCBsZWFkIGFueXdoZXJlLCB0cmVhdCBpdCBhcyB0b2dnbGUgdHJpZ2dlcgogICAgICAgICAgICAgICAgICAgIG94eWdlbl9wcm9fbWVudV90b2dnbGVfZHJvcGRvd24oZXZlbnQudGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAvLyBrZWVwIGFuY2hvciBsaW5rcyBiZWhhdmlvciBhcyBpcywgYW5kIHByZXZlbnQgcmVndWxhciBsaW5rcyBmcm9tIHBhZ2UgcmVsb2FkCiAgICAgICAgICAgICAgICAgICAgaWYgKGpRdWVyeSh0aGlzKS5hdHRyKCJocmVmIikuaW5kZXhPZigiIyIpIT09MCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGhpZGUgdGhlIG1lbnUgYW5kIGZvbGxvdyB0aGUgYW5jaG9yCiAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5KHRoaXMpLmF0dHIoImhyZWYiKS5pbmRleE9mKCIjIik9PT0wKSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcub3h5LXByby1tZW51LW9wZW4nKS5yZW1vdmVDbGFzcygnb3h5LXByby1tZW51LW9wZW4nKTsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJy5veHktcHJvLW1lbnUtb3Blbi1jb250YWluZXInKS5yZW1vdmVDbGFzcygnb3h5LXByby1tZW51LW9wZW4tY29udGFpbmVyJyk7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcub3h5LW5hdi1tZW51LXByZXZlbnQtb3ZlcmZsb3cnKS5yZW1vdmVDbGFzcygnb3h5LW5hdi1tZW51LXByZXZlbnQtb3ZlcmZsb3cnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gb2ZmLWNhbnZhcyBtZW51IGxpbmsgY2xpY2sKICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gJy5veHktcHJvLW1lbnUtb2ZmLWNhbnZhcyAubWVudS1pdGVtIGEnOwogICAgICAgICAgICBqUXVlcnkoJ2JvZHknKS5vbignY2xpY2snLCBzZWxlY3RvciwgZnVuY3Rpb24oZXZlbnQpewogICAgICAgICAgICAgICAgaWYgKGpRdWVyeShldmVudC50YXJnZXQpLmNsb3Nlc3QoJy5veHktcHJvLW1lbnUtZHJvcGRvd24taWNvbi1jbGljay1hcmVhJykubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIC8vIHRvZ2dsZSBpY29uIGNsaWNrZWQsIG5vIG5lZWQgdG8gdHJpZ2dlciBpdCAKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICgoalF1ZXJ5KHRoaXMpLmF0dHIoImhyZWYiKSA9PT0gIiMiIHx8IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCIub3h5LXByby1tZW51LWNvbnRhaW5lciIpLmRhdGEoImVudGlyZS1wYXJlbnQtdG9nZ2xlcy1kcm9wZG93biIpKSAmJiAKICAgICAgICAgICAgICAgICAgICBqUXVlcnkodGhpcykucGFyZW50KCkuaGFzQ2xhc3MoJ21lbnUtaXRlbS1oYXMtY2hpbGRyZW4nKSkgewogICAgICAgICAgICAgICAgICAgIC8vIGVtcHR5IGhyZWYgZG9uJ3QgbGVhZCBhbnl3aGVyZSwgdHJlYXQgaXQgYXMgdG9nZ2xlIHRyaWdnZXIKICAgICAgICAgICAgICAgICAgICBveHlnZW5fcHJvX21lbnVfdG9nZ2xlX2Ryb3Bkb3duKGV2ZW50LnRhcmdldCk7CiAgICAgICAgICAgICAgICAgICAgLy8ga2VlcCBhbmNob3IgbGlua3MgYmVoYXZpb3IgYXMgaXMsIGFuZCBwcmV2ZW50IHJlZ3VsYXIgbGlua3MgZnJvbSBwYWdlIHJlbG9hZAogICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkodGhpcykuYXR0cigiaHJlZiIpLmluZGV4T2YoIiMiKSE9PTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBvZmYgY2FudmFzCiAgICAgICAgICAgIGZ1bmN0aW9uIG94eWdlbl9vZmZjYW52YXNfbWVudV9pbml0KG1lbnUpIHsKCiAgICAgICAgICAgICAgICAvLyBvbmx5IGluaXQgb2ZmLWNhbnZhcyBhbmltYXRpb24gaWYgdHJpZ2dlciBpY29uIGlzIHZpc2libGUgaS5lLiBtb2JpbGUgbWVudSBpbiBhY3Rpb24KICAgICAgICAgICAgICAgIHZhciBvZmZDYW52YXNBY3RpdmUgPSBqUXVlcnkobWVudSkuc2libGluZ3MoJy5veHktcHJvLW1lbnUtb2ZmLWNhbnZhcy10cmlnZ2VyJykuY3NzKCdkaXNwbGF5Jyk7CiAgICAgICAgICAgICAgICBpZiAob2ZmQ2FudmFzQWN0aXZlIT09J25vbmUnKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IG1lbnUuZGF0YSgnb3h5LXByby1tZW51LW9mZi1jYW52YXMtYW5pbWF0aW9uJyk7CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHttZW51LmF0dHIoJ2RhdGEtYW9zJywgYW5pbWF0aW9uKTt9LCAxMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgQU9TCiAgICAgICAgICAgICAgICAgICAgbWVudS5hdHRyKCdkYXRhLWFvcycsICcnKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZ1bmN0aW9uIG94eWdlbl9vZmZjYW52YXNfbWVudV9ydW4obWVudSkgewoKICAgICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBtZW51LmZpbmQoIi5veHktcHJvLW1lbnUtY29udGFpbmVyIik7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyLmF0dHIoJ2RhdGEtYW9zJykpIHsKICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGFuaW1hdGlvbgogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7b3h5Z2VuX29mZmNhbnZhc19tZW51X3RvZ2dsZShtZW51LCBjb250YWluZXIpfSwgMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBveHlnZW5fb2ZmY2FudmFzX21lbnVfdG9nZ2xlKG1lbnUsIGNvbnRhaW5lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBveHlnZW5fb2ZmY2FudmFzX21lbnVfdG9nZ2xlX2luX3Byb2dyZXNzID0gZmFsc2U7CgogICAgICAgICAgICBmdW5jdGlvbiBveHlnZW5fb2ZmY2FudmFzX21lbnVfdG9nZ2xlKG1lbnUsIGNvbnRhaW5lcikgewoKICAgICAgICAgICAgICAgIGlmIChveHlnZW5fb2ZmY2FudmFzX21lbnVfdG9nZ2xlX2luX3Byb2dyZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnRhaW5lci50b2dnbGVDbGFzcygnYW9zLWFuaW1hdGUnKTsKCiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyLmhhc0NsYXNzKCdveHktcHJvLW1lbnUtb2ZmLWNhbnZhcy1jb250YWluZXInKSkgewogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIG94eWdlbl9vZmZjYW52YXNfbWVudV90b2dnbGVfaW5fcHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSBjb250YWluZXIuZGF0YSgnb3h5LXByby1tZW51LW9mZi1jYW52YXMtYW5pbWF0aW9uJyksCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBjb250YWluZXIuZGF0YSgnYW9zLWR1cmF0aW9uJyk7CgogICAgICAgICAgICAgICAgICAgIGlmICghYW5pbWF0aW9uKXsKICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlQ2xhc3MoJ294eS1wcm8tbWVudS1vZmYtY2FudmFzLWNvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnUucmVtb3ZlQ2xhc3MoJ294eS1wcm8tbWVudS1vZmYtY2FudmFzJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG94eWdlbl9vZmZjYW52YXNfbWVudV90b2dnbGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9LCB0aW1lb3V0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hZGRDbGFzcygnb3h5LXByby1tZW51LW9mZi1jYW52YXMtY29udGFpbmVyJyk7CiAgICAgICAgICAgICAgICAgICAgbWVudS5hZGRDbGFzcygnb3h5LXByby1tZW51LW9mZi1jYW52YXMnKTsKICAgICAgICAgICAgICAgICAgICBveHlnZW5fcHJvX21lbnVfc2V0X3N0YXRpY193aWR0aChtZW51KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIA==
4 ms
javascript;base64,CgkJCWpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJCQlqUXVlcnkoJ2JvZHknKS5vbignY2xpY2snLCAnLm94eS1tZW51LXRvZ2dsZScsIGZ1bmN0aW9uKCkgewoJCQkJCWpRdWVyeSh0aGlzKS5wYXJlbnQoJy5veHktbmF2LW1lbnUnKS50b2dnbGVDbGFzcygnb3h5LW5hdi1tZW51LW9wZW4nKTsKCQkJCQlqUXVlcnkoJ2JvZHknKS50b2dnbGVDbGFzcygnb3h5LW5hdi1tZW51LXByZXZlbnQtb3ZlcmZsb3cnKTsKCQkJCQlqUXVlcnkoJ2h0bWwnKS50b2dnbGVDbGFzcygnb3h5LW5hdi1tZW51LXByZXZlbnQtb3ZlcmZsb3cnKTsKCQkJCX0pOwoJCQkJdmFyIHNlbGVjdG9yID0gJy5veHktbmF2LW1lbnUtb3BlbiAubWVudS1pdGVtIGFbaHJlZio9IiMiXSc7CgkJCQlqUXVlcnkoJ2JvZHknKS5vbignY2xpY2snLCBzZWxlY3RvciwgZnVuY3Rpb24oKXsKCQkJCQlqUXVlcnkoJy5veHktbmF2LW1lbnUtb3BlbicpLnJlbW92ZUNsYXNzKCdveHktbmF2LW1lbnUtb3BlbicpOwoJCQkJCWpRdWVyeSgnYm9keScpLnJlbW92ZUNsYXNzKCdveHktbmF2LW1lbnUtcHJldmVudC1vdmVyZmxvdycpOwoJCQkJCWpRdWVyeSgnaHRtbCcpLnJlbW92ZUNsYXNzKCdveHktbmF2LW1lbnUtcHJldmVudC1vdmVyZmxvdycpOwoJCQkJCWpRdWVyeSh0aGlzKS5jbGljaygpOwoJCQkJfSk7CgkJCX0pOwoJCQ==
3 ms
javascript;base64,CgkJKGZ1bmN0aW9uICgpIHsKCQkJdmFyIGMgPSBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZTsKCQkJYyA9IGMucmVwbGFjZSgvd29vY29tbWVyY2Utbm8tanMvLCAnd29vY29tbWVyY2UtanMnKTsKCQkJZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSBjOwoJCX0pKCk7Cgk=
3 ms
autoptimize_single_d7a8127861fe37f332ec855349a23c3d.css
1207 ms
autoptimize_single_847da8fca8060ca1a70f976aab1210b9.css
1208 ms
autoptimize_single_4fc2131a4d82b46f1bc1fd2a37146b1b.css
1477 ms
javascript;base64,CnZhciB5d3JhcV9mcm9udGVuZCA9IHsiYWpheHVybCI6Imh0dHBzOlwvXC9qZGttYWludGVuYW5jZS5jby5uelwvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIiwibm9fcHJvZHVjdF9pbl9saXN0IjoiWW91ciBsaXN0IGlzIGVtcHR5IiwieWl0aF95d3JhcV9hY3Rpb25fbm9uY2UiOiI2MzlkZTQ1YjZmIiwiZ29fdG9fdGhlX2xpc3QiOiJubyIsInJxYV91cmwiOiJodHRwczpcL1wvamRrbWFpbnRlbmFuY2UuY28ubnpcL3JlcXVlc3QtcXVvdGVcLyIsInJhcV90YWJsZV9yZWZyZXNoX2NoZWNrIjoiMSJ9Owo=
4 ms
frontend.min.js
1221 ms
sourcebuster.min.js
1229 ms
javascript;base64,CnZhciB3Y19vcmRlcl9hdHRyaWJ1dGlvbiA9IHsicGFyYW1zIjp7ImxpZmV0aW1lIjoxLjBlLTUsInNlc3Npb24iOjMwLCJiYXNlNjQiOmZhbHNlLCJhamF4dXJsIjoiaHR0cHM6XC9cL2pka21haW50ZW5hbmNlLmNvLm56XC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJwcmVmaXgiOiJ3Y19vcmRlcl9hdHRyaWJ1dGlvbl8iLCJhbGxvd1RyYWNraW5nIjp0cnVlfSwiZmllbGRzIjp7InNvdXJjZV90eXBlIjoiY3VycmVudC50eXAiLCJyZWZlcnJlciI6ImN1cnJlbnRfYWRkLnJmIiwidXRtX2NhbXBhaWduIjoiY3VycmVudC5jbXAiLCJ1dG1fc291cmNlIjoiY3VycmVudC5zcmMiLCJ1dG1fbWVkaXVtIjoiY3VycmVudC5tZG0iLCJ1dG1fY29udGVudCI6ImN1cnJlbnQuY250IiwidXRtX2lkIjoiY3VycmVudC5pZCIsInV0bV90ZXJtIjoiY3VycmVudC50cm0iLCJ1dG1fc291cmNlX3BsYXRmb3JtIjoiY3VycmVudC5wbHQiLCJ1dG1fY3JlYXRpdmVfZm9ybWF0IjoiY3VycmVudC5mbXQiLCJ1dG1fbWFya2V0aW5nX3RhY3RpYyI6ImN1cnJlbnQudGN0Iiwic2Vzc2lvbl9lbnRyeSI6ImN1cnJlbnRfYWRkLmVwIiwic2Vzc2lvbl9zdGFydF90aW1lIjoiY3VycmVudF9hZGQuZmQiLCJzZXNzaW9uX3BhZ2VzIjoic2Vzc2lvbi5wZ3MiLCJzZXNzaW9uX2NvdW50IjoidWRhdGEudnN0IiwidXNlcl9hZ2VudCI6InVkYXRhLnVhZyJ9fTsK
3 ms
order-attribution.min.js
1240 ms
autoptimize_single_a01f9089e8301e9eacfb9d029dc0ca5c.js
1411 ms
loader.js
21 ms
javascript;base64,CihmdW5jdGlvbiB0cnVzdGluZGV4V2lkZ2V0SW5pdCgpIHsKaWYgKHR5cGVvZiBUcnVzdGluZGV4ID09PSAidW5kZWZpbmVkIikgewpyZXR1cm4gc2V0VGltZW91dCh0cnVzdGluZGV4V2lkZ2V0SW5pdCwgMTAwKTsKfQppZiAodHlwZW9mIFRydXN0aW5kZXgucGFnZXJfaW5pdGVkICE9PSAidW5kZWZpbmVkIikgewpyZXR1cm4gZmFsc2U7Cn0Kc2V0VGltZW91dCgoKSA9PiBUcnVzdGluZGV4LmluaXRfcGFnZXIoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRpLXdpZGdldCIpKSwgMjAwKTsKfSkoKTsKZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicHJlLnRpLXdpZGdldCIpLmZvckVhY2goaXRlbSA9PiBpdGVtLnJlcGxhY2VXaXRoKGl0ZW0uZmlyc3RDaGlsZCkpOwo=
3 ms
javascript;base64,CgkgIAlBT1MuaW5pdCh7CgkgIAkJICAJCSAgCQkgIAkJICAJCSAgCQkgIAkJCQkgIAkJCX0pCgkJCgkJCQlqUXVlcnkoJ2JvZHknKS5hZGRDbGFzcygnb3h5Z2VuLWFvcy1lbmFibGVkJyk7CgkJCgkJCgk=
3 ms
ALV-UjWIfraB-gRQ006ZIniFcrzGbX_Q-qznv4WXunUrZoX2wRTnA3e9=s120-c-rp-mo-br100
175 ms
ACg8ocIVEu_vYfRfxGELb7xwdHqiN4YiTOXTHZ9-U8jdW02juviC9Q=s120-c-rp-mo-br100
177 ms
header-logo.png.webp
828 ms
arrow-down-right-red.svg
859 ms
cart-outline.svg
860 ms
arrow-down-right-black.svg
861 ms
projects.jpg.webp
989 ms
maintenance.jpg.webp
983 ms
arrow-down-right-yellow.svg
988 ms
landscaping.jpg.webp
1192 ms
arrow-down-right-green.svg
1005 ms
arrow-down-right-white.svg
1016 ms
footer-logo.png.webp
1195 ms
gtm.js
46 ms
homepage-banner.jpg
954 ms
painting.jpg
560 ms
sanding.jpg
580 ms
the-jdk-difference.jpg
786 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM73w5aXw.woff
39 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr73w5aXw.woff
47 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvC73w5aXw.woff
60 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCu173w5aXw.woff
69 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Hw5aXw.woff
69 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Hw5aXw.woff
70 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCs16Hw5aXw.woff
70 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCvr6Hw5aXw.woff
69 ms
JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Xw5aXw.woff
67 ms
autoptimize_single_29ed0396622780590223cd919f310dd7.css
206 ms
jdkmaintenance.co.nz accessibility score
Contrast
These are opportunities to improve the legibility of your content.
Impact
Issue
Background and foreground colors do not have a sufficient contrast ratio.
Names and labels
These are opportunities to improve the semantics of the controls in your application. This may enhance the experience for users of assistive technology, like a screen reader.
Impact
Issue
Links do not have a discernible name
jdkmaintenance.co.nz best practices score
Trust and Safety
Impact
Issue
Does not use HTTPS
Ensure CSP is effective against XSS attacks
General
Impact
Issue
Detected JavaScript libraries
Browser errors were logged to the console
jdkmaintenance.co.nz SEO score
Crawling and Indexing
To appear in search results, crawlers need access to your app.
Impact
Issue
Links are not crawlable
Mobile Friendly
Make sure your pages are mobile friendly so users don’t have to pinch or zoom in order to read the content pages. [Learn more](https://developers.google.com/search/mobile-sites/).
Impact
Issue
Document uses legible font sizes
EN
EN
UTF-8
Language claimed in HTML meta tag should match the language actually used on the web page. Otherwise Jdkmaintenance.co.nz can be misinterpreted by Google and other search engines. Our service has detected that English is used on the page, and it matches the claimed language. Our system also found out that Jdkmaintenance.co.nz main page’s claimed encoding is utf-8. Use of this encoding format is the best practice as the main page visitors from all over the world won’t have any issues with symbol transcription.
jdkmaintenance.co.nz
Open Graph description is not detected on the main page of JDK Maintenance. Lack of Open Graph description can be counter-productive for their social media presence, as such a description allows converting a website homepage (or other pages) into good-looking, rich and well-structured posts, when it is being shared on Facebook and other social media. For example, adding the following code snippet into HTML <head> tag will help to represent this web page correctly in social networks: