var gtm4wp_datalayer_name = "dataLayer";
var dataLayer = dataLayer || [];
const gtm4wp_use_sku_instead = 0;
const gtm4wp_currency = 'GBP';
const gtm4wp_product_per_impression = 10;
const gtm4wp_clear_ecommerce = false;
const gtm4wp_datalayer_max_timeout = 2000;
var elementskit = {
resturl: 'https://discountcctvsupplier.co.uk/wp-json/elementskit/v1/',
}
https://discountcctvsupplier.co.uk/wp-includes/js/jquery/jquery.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/jquery/jquery-migrate.min.js
var breeze_prefetch = {"local_url":"https://discountcctvsupplier.co.uk","ignore_remote_prefetch":"1","ignore_list":["/?wc-api=wc_facebook_get_feed_data&secret=697cc5a9ab0fb1e0d243fe98264ced80","/cart-2/","/checkout/","/my-account/","wp-admin","wp-login.php"]};
//# sourceURL=breeze-prefetch-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js
var tt4b_script_vars = {"pixel_code":"D6JC3HJC77UCBL6SE0N0","currency":"GBP","country":"","advanced_matching":""};
//# sourceURL=tt4b_ajax_script-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/tiktok-for-business/admin/js/ajaxSnippet.js
var trustpilot_settings = {"key":"Qg0H72wIu14emb5P","TrustpilotScriptUrl":"https://invitejs.trustpilot.com/tp.min.js","IntegrationAppUrl":"//ecommscript-integrationapp.trustpilot.com","PreviewScriptUrl":"//ecommplugins-scripts.trustpilot.com/v2.1/js/preview.min.js","PreviewCssUrl":"//ecommplugins-scripts.trustpilot.com/v2.1/css/preview.min.css","PreviewWPCssUrl":"//ecommplugins-scripts.trustpilot.com/v2.1/css/preview_wp.css","WidgetScriptUrl":"//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js"};
//# sourceURL=tp-js-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/trustpilot-reviews/review/assets/js/headerScript.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/zoom/jquery.zoom.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/flexslider/jquery.flexslider.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/photoswipe/photoswipe.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/photoswipe/photoswipe-ui-default.min.js
var wc_single_product_params = {"i18n_required_rating_text":"Please select a rating","i18n_rating_options":["1 of 5 stars","2 of 5 stars","3 of 5 stars","4 of 5 stars","5 of 5 stars"],"i18n_product_gallery_trigger_text":"View full-screen image gallery","review_rating_required":"yes","flexslider":{"rtl":false,"animation":"slide","smoothHeight":true,"directionNav":false,"controlNav":"thumbnails","slideshow":false,"animationSpeed":500,"animationLoop":false,"allowOneSlide":false},"zoom_enabled":"1","zoom_options":[],"photoswipe_enabled":"1","photoswipe_options":{"shareEl":false,"closeOnScroll":false,"history":false,"hideAnimationDuration":0,"showAnimationDuration":0},"flexslider_enabled":"1"};
//# sourceURL=wc-single-product-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/single-product.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js
var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"};
//# sourceURL=woocommerce-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/wt-woocommerce-related-products/public/js/custom-related-products-public.js
https://discountcctvsupplier.co.uk/wp-content/plugins/wt-woocommerce-related-products/public/js/wt_owl_carousel.js
var dataLayer_content = {"pagePostType":"product","pagePostType2":"single-product","pagePostAuthor":"aaaadmin","productRatingCounts":[],"productAverageRating":0,"productReviewCount":0,"productType":"simple","productIsVariable":0};
dataLayer.push( dataLayer_content );
window.__wc_fb_page_generated = 1784765909;
!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;
n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,
document,'script','https://connect.facebook.net/en_US/fbevents.js');
window.FacebookSignals = window.FacebookSignals || {
_held: false,
_releasing: false,
_pixelInitialized: false,
_pixelId: null,
_pixelUserInfo: {},
_pixelOptions: {},
_pendingPixelEvents: [],
_queue: [],
_config: {},
_attribution: {},
_seenEventIds: {},
_fbclid: (function() {
try {
var m = window.location.search.match(/[?&]fbclid=([^&]*)/);
return m ? decodeURIComponent(m[1]) : null;
} catch(e) { return null; }
})(),init: function(config) {
config = config || {};
this._config = config;
this._attribution = config.attribution || {};var cookieState = this._getCookie('wc_facebook_signals_state');
this._held = cookieState ? cookieState === 'held' : !!config.held;this._fbclid = this._fbclid || null;if (typeof fbq === 'function') {
fbq('consent', this._held ? 'revoke' : 'grant');
}try {
var raw = window.sessionStorage.getItem('wc_facebook_signals_seen_event_ids');
this._seenEventIds = raw ? JSON.parse(raw) : {};
} catch (e) {
this._seenEventIds = this._seenEventIds || {};
}
},initPixel: function(pixelId, userInfo, options) {
this._pixelId = pixelId;
this._pixelUserInfo = userInfo && typeof userInfo === 'object' && !Array.isArray(userInfo) ? userInfo : {};
this._pixelOptions = options || {};
if (!this._held) {
this._runPixelInit();
}
},_runPixelInit: function() {
if (this._pixelInitialized || !this._pixelId || typeof fbq !== 'function') return;
fbq('init', this._pixelId, this._pixelUserInfo, this._pixelOptions);
this._pixelInitialized = true;
this._flushPendingPixelEvents();
},_flushPendingPixelEvents: function() {
var pending = this._pendingPixelEvents;
this._pendingPixelEvents = [];
for (var i = 0; i < pending.length; i++) {
var ev = pending[i];
this._firePixelEvent(ev.name, ev.params, ev.method, ev.eventId);
}
},_fireOrQueuePixelEvent: function(name, params, method, eventId) {
if (!this._pixelInitialized) {
this._pendingPixelEvents.push({
name: name, params: params || {}, method: method || 'track', eventId: eventId || null
});
return;
}
this._firePixelEvent(name, params || {}, method || 'track', eventId || null);
},_firePixelEvent: function(name, params, method, eventId) {
method = method || 'track';
if (eventId) {
fbq(method, name, params || {}, { eventID: eventId });
} else {
fbq(method, name, params || {});
}
},queueEvent: function(eventData) {
if (!eventData || !eventData.event_name) return;var originalId = eventData.event_id || null;
if (originalId && this._seenEventIds[originalId]) return;if (!this._held) {
this._fireOrQueuePixelEvent(eventData.event_name, eventData.custom_data || {}, eventData.method || 'track', originalId);
return;
}eventData = this._cloneEventData(eventData);
eventData.event_id = this._generateEventId();
eventData.event_time = eventData.event_time || Math.floor(Date.now() / 1000);
this._queue.push(eventData);var idToMark = originalId || eventData.event_id;
if (idToMark) {
this._seenEventIds[idToMark] = 1;
try {
window.sessionStorage.setItem(
'wc_facebook_signals_seen_event_ids',
JSON.stringify(this._seenEventIds)
);
} catch (e) {}
}
},trackEvent: function(name, params, userData, method, eventId) {
method = method || 'track';
eventId = eventId || (params && params.eventID) || null;if (this._held) {
this.queueEvent({
event_name: name,
custom_data: params || {},
event_id: eventId,
event_time: Math.floor(Date.now() / 1000),
method: method
});
} else {
this._fireOrQueuePixelEvent(name, params || {}, method, eventId);
}
},release: function() {
var self = this;
if (!self._held || self._releasing || !self._config.ajaxUrl) {
return Promise.resolve({ success: true, data: { sent_count: 0 } });
}self._releasing = true;
var attribution = self._collectAttribution();var payload = JSON.stringify({
events: self._queue,
attribution: {
fbp: attribution.fbp || null,
fbc: attribution.fbc || null
},
fbclid: self._fbclid || null
});var url = self._config.ajaxUrl +
(self._config.ajaxUrl.indexOf('?') === -1 ? '?' : '&') +
'action=' + encodeURIComponent(self._config.action);return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 300) {
try {
var resp = JSON.parse(xhr.responseText);
self._handleReleaseResponse(resp.data || {}, attribution);
resolve(resp);
} catch(e) { self._releasing = false; reject(e); }
} else {
self._releasing = false;
reject(new Error('Signal release AJAX failed: ' + xhr.status));
}
};
xhr.onerror = function() { self._releasing = false; reject(new Error('Network error')); };
xhr.send(payload);
});
},_handleReleaseResponse: function(data, attribution) {
this._syncAttributionCookies(data || {}, attribution);// Override cached user_info with fresh data from the release response.
if (data.user_info && typeof data.user_info === 'object' && !Array.isArray(data.user_info)) {
this._pixelUserInfo = data.user_info;
}this._held = false;
this._releasing = false;fbq('consent', 'grant');
this._runPixelInit();var queue = this._queue;
for (var i = 0; i < queue.length; i++) {
var ev = queue[i];
this._fireOrQueuePixelEvent(ev.event_name, ev.custom_data || {}, ev.method || 'track', ev.event_id || null);
}this._queue = [];
},_collectAttribution: function() {
var clientParams = {};
if (typeof clientParamBuilder !== 'undefined') {
try {
clientParams = clientParamBuilder.processAndCollectParams(this._getAttributionUrl()) || {};
} catch (e) {}
}var fbp = this._getCookie('_fbp') || clientParams._fbp || (typeof clientParamBuilder !== 'undefined' ? clientParamBuilder.getFbp() : null);
var fbc = this._getCookie('_fbc') || clientParams._fbc || (typeof clientParamBuilder !== 'undefined' ? clientParamBuilder.getFbc() : null);if (!fbc && this._fbclid) {
fbc = 'fb.1.' + Date.now() + '.' + this._fbclid;
}return { fbp: fbp || null, fbc: fbc || null };
},_syncAttributionCookies: function(data, attribution) {
var fbp = data.fbp || (attribution && attribution.fbp) || null;
var fbc = data.fbc || (attribution && attribution.fbc) || null;if (fbp) {
this._setAttributionCookie('_fbp', fbp, data.fbp_domain || null);
}
if (fbc) {
this._setAttributionCookie('_fbc', fbc, data.fbc_domain || null);
}
},_setAttributionCookie: function(name, value, domain) {
if (!value) return;
var domainAttr = domain ? ';domain=' + domain : '';
document.cookie = name + '=' + encodeURIComponent(value) + ';path=/;max-age=7776000' + domainAttr + ';SameSite=Lax';
},_getCookie: function(name) {
var match = document.cookie.match(new RegExp('(?:^|;\\s*)' + name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '=([^;]*)'));
if (!match) return null;
try { return decodeURIComponent(match[1]); } catch(e) { return null; }
},_cloneEventData: function(eventData) {
var clone = {};
for (var key in eventData) {
if (Object.prototype.hasOwnProperty.call(eventData, key)) {
clone[key] = eventData[key];
}
}
return clone;
},_generateEventId: function() {
if (window.crypto && typeof window.crypto.randomUUID === 'function') {
return window.crypto.randomUUID();
}
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0;
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
},_getAttributionUrl: function() {
if (!this._fbclid) return window.location.href;
try {
var url = new URL(window.location.href);
if (!url.searchParams.get('fbclid')) {
url.searchParams.set('fbclid', this._fbclid);
}
return url.toString();
} catch (e) {
return window.location.href;
}
}
};
FacebookSignals.init({
held: false,
ajaxUrl: "https:\/\/discountcctvsupplier.co.uk\/wp-admin\/admin-ajax.php",
action: 'facebook_release_signals',
pixelId: "1071403255027834",
attribution: {}
});
FacebookSignals.initPixel(
"1071403255027834",
{},
{"agent":"woocommerce_0-10.9.4-3.7.5"} );document.addEventListener( 'DOMContentLoaded', function() {
document.body.insertAdjacentHTML( 'beforeend', '<div class=\"wc-facebook-pixel-event-placeholder\"></div>' );
}, false );
Skip to content Home / PTZ IP CAMERAS / Hikvision DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera
Sale! Hikvision DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera £ 410.53 Original price was: £410.53. £ 325.00Current price is: £325.00. ex. VAT - £ 390.00 inc. VAT
Hikvision DS-2DE7A425IW-AEB (T5) 4MP PTZ Smart auto tracking, 25× zoom, DarkFighter, 200m ir, IP POE CCTV Security Camera.
Description What is included: 1x Hikvision DS-2DE7A425IW-AEB (T5) Hikvision DS-2DE7A425IW-AEB (T5) Features: 1/2.8″ progressive scan CMOS High quality imaging with 4 MP resolution Excellent low-light performance with powered-by-DarkFighter technology Audio visual alarm: The white flashing light and audible warning can be triggered by certain events 25× optical zoom and 16× digital zoom provide close up views over expansive areas Expansive night view with up to 200 m IR distance Focuses on human and vehicle targets classification based on deep learning Face capture: Up to 5 faces captured at the same time Hikvision DS-2DE7A425IW-AEB (T5) Specifications: Camera
Image Sensor 1/2.8″ progressive scan CMOS Max. Resolution 2560 × 1440 Min. Illumination Color: 0.005 Lux @ (F1.5, AGC ON), B/W: 0.001 Lux@(F1.5, AGC ON), 0 Lux with IR Shutter Speed 1/1 s to 1/30000 s Day & Night IR cut filter Zoom 25x optical, 16x digital Slow Shutter Yes DORI Detect (25px/m): 2046.9 m
Observe (63px/m): 812.3 m
Recognize (125px/m): 409.4 m
Identify (250px/m): 204.7 m
Lens
Focal Length 4.8 mm to 120 mm FOV Horizontal field of view: 50.8° to 2.6° (wide-tele),
Vertical field of view: 29.4° to 1.5° (wide-tele),
Diagonal field of view:57.4° to 3° (wide-tele)
Focus Auto, semi-auto, manual Aperture Max. F1.5 Zoom Speed Approx. 4.8 s Illuminator
Supplement Light Type IR Supplement Light Range IR Distance: up to 200 m PTZ
Movement Range (Pan) 360° Movement Range (Tilt) -15° to 90° (auto flip) Pan Speed Pan speed: configurable from 0.1° to 160°/s; preset speed: 240°/s Tilt Speed Tilt speed: configurable from 0.1° to 120°/s, preset speed 200°/s Proportional Pan Yes Presets 300 Preset Freezing Yes Patrol Scan 8 patrols, up to 32 presets for each patrol Pattern Scan 4 pattern scans Park Action Preset, pattern scan, auto scan, tilt scan, random scan, frame scan, panorama scan 3D Positioning Yes PTZ Status Display Yes Scheduled Task Preset, pattern scan, patrol scan, auto scan, tilt scan, random scan, frame scan, panorama scan, dome reboot, dome adjust, aux output Power-off Memory Yes Video
Main Stream 50 Hz: 25 fps (2560 × 1440, 1920 × 1080, 1280 × 960, 1280 × 720);
60 Hz: 30 fps (2560 × 1440, 1920 × 1080, 1280 × 960, 1280 × 720)
Sub-Stream 50 Hz: 25 fps (704 × 576, 640 × 480, 352 × 288);
60 Hz: 30 fps (704 × 480, 640 × 480, 352 × 240)
Third Stream 50 Hz: 25 fps (1920 × 1080, 1280 × 960, 1280 × 720, 704 × 576, 640 × 480, 352 × 288);
60 Hz: 30 fps (1920 × 1080, 1280 × 960, 1280 × 720, 704 × 480, 640 × 480, 352 × 240)
Video Compression Main stream: H.265+/H.265/H.264+/H.264
Sub-stream: H.265/H.264/MJPEG
Third stream: H.265/H.264/MJPEG
Video Bit Rate 32 kbps to 16384 kbps H.264 Type Baseline Profile/Main Profile/High Profile H.265 Type Main Profile Scalable Video Coding (SVC) H.264 and H.265 encoding Region of Interest (ROI) 8 fixed regions for each stream Audio
Audio Compression G.711alaw, G.711ulaw, G.722.1, G.726, MP2L2, AAC, PCM Audio Bit Rate 64 Kbps (G.711)/16 Kbps (G.722.1)/16 Kbps (G.726)/32-192 Kbps (MP2L2)/16-64 Kbps (AAC) Audio Sampling Rate 8 kHz/16 kHz/32 kHz/48 kHz Environment Noise Filtering Yes Network
Protocols IPv4/IPv6, HTTP, HTTPS, 802.1x, QoS, FTP, SMTP, UPnP, SNMP, DNS, DDNS, NTP, RTSP, RTCP, RTP, TCP/IP, UDP, IGMP, ICMP, DHCP, PPPoE, Bonjour Simultaneous Live View Up to 20 channels API Open Network Video Interface (Version 19.12, Profile S, Profile G, Profile T), ISAPI, SDK, ISUP User/Host Up to 32 users, 3 user levels: administrator, operator, and user Security Password protection, complicated password, HTTPS encryption, 802.1X authentication (EAP-TLS, EAP-LEAP, EAP-MD5), watermark, IP address filter, basic and digest authentication for HTTP/HTTPS, RTP/RTSP over HTTPS, control timeout settings, security audit log, TLS 1.2, TLS 1.3, host authentication (MAC address) Network Storage NAS (NFS, SMB/CIFS), auto network replenishment (ANR) Client iVMS-4200, HikCentral Pro, Hik-Connect Web Browser IE11, Chrome 57+, Firefox 52+, Safari 11+ Image
Image Settings Saturation, brightness, contrast, sharpness, gain, and white balance adjustable by client software or web browser Day/Night Switch Day, Night, Auto, Schedule Wide Dynamic Range (WDR) 120 dB SNR > 52 dB Defog Digital defog Image Stabilization EIS Image Enhancement BLC, HLC, 3D DNR Privacy Mask 24 programmable polygon privacy masks, mask color or mosaic configurable Regional Focus Yes Regional Exposure Yes Interface
Ethernet Interface 1 RJ45 10M/100M self-adaptive Ethernet port On-board Storage Built-in memory card slot, support microSD/SDHC/SDXC card, up to 256 GB Built-in Speaker 1 built-in speaker with effective distance reaching max. 30 meters Audio 1 input (line in), max. input amplitude: 2-2.4 vpp, input impedance: 1 kΩ ± 10%; 1 output (line out), line level, output impedance: 600 Ω Alarm 2 inputs, 1 output Reset Yes Event
Basic Event Motion detection, video tampering alarm, exception, alarm input and output Smart Event Line crossing detection, intrusion detection, region entrance detection, region exiting detection, unattended baggage detection, object removal detection, audio exception detection Linkage Upload to FTP/NAS/memory card, notify surveillance center, send email, trigger alarm output, trigger recording, audible warning, white light flashing, and PTZ actions (such as preset, patrol scan, pattern scan) Smart Tracking Manual tracking, auto-tracking Deep Learning Function
Face Capture Detects up to 5 faces simultaneously.
Supports detecting, capturing, grading, selecting of face in motion, and output the best face picture of the face
Perimeter Protection Line crossing, intrusion, region entrance, region exiting
Support alarm triggering by specified target types (human and vehicle)
General
Approval
EMC FCC SDoC (47 CFR Part 15, Subpart B);
CE-EMC (EN 55032: 2015, EN 61000-3-2: 2019, EN 61000-3-3: 2013, EN 50130-4: 2011 +A1: 2014);
RCM (AS/NZS CISPR 32: 2015);
IC VoC (ICES-003: Issue 6, 2019);
KC (KN 32: 2015, KN 35: 2015)
Safety UL (UL 62368-1);
CB (IEC 60950-1:2005 + Am 1:2009 + Am 2:2013, IEC 62368-1:2014);
CE-LVD (EN 62368-1:2014+A11:2017);
BIS (IS 13252(Part 1):2010+A1:2013+A2:2015);
LOA (SANS IEC60950-1)
Environment CE-RoHS (2011/65/EU); WEEE (2012/19/EU);
Reach (Regulation (EC) No 1907/2006)
Protection IP66 (IEC 60529-2013), IK10 (excluding glass window), TVS 6000V lightning protection, surge protection and voltage transient protection Delivery & Returns At Discount CCTV Supplier, we specialise in delivering high-quality, cost-effective Security systems tailored to meet the unique security needs of our clients. With a proven track record and a commitment to innovation, we believe our offerings align seamlessly with the mission and values of Discount CCTV Supplier.Diverse Product Range Our extensive product portfolio ensures that Discount CCTV Supplier can cater to a broad spectrum of customer requirements, from basic surveillance needs to more advanced security solutions. Please note that you have the option to return new, unused items within 30 days of delivery for a refund. However, please be aware that a postage cost of £8.50 plus VAT for Maniland shipment and £15 Plus VAT from shipments to Northern Ireland. Will be deducted from the refunded amount.
Prompt service Very helpful
Quick and reliable Quick and reliable
very happy with the purchase very good services
Helpful 5 star service Helpful 5 star service
⭐️⭐️⭐️⭐️⭐️ ⭐️⭐️⭐️⭐️⭐️
Excellent service from start to finish! The CCTV system was installed quickly and works perfectly. Director Thulash was professional, approachable, and made sure everything was tailored to our needs. Highly recommend this company for reliable security solutions. Have used the services for all our homes as we are a care home company.
Always a pleasure Always a pleasure
There are no products in the cart!
0
// Do not change this comment line otherwise Speed Optimizer won't be able to detect this script(function () {
function sendRequest(url, body) {
if(!window.fetch) {
const xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send(JSON.stringify(body))
return
}const request = fetch(url, {
method: 'POST',
body: JSON.stringify(body),
keepalive: true,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
});
}
const calculateParentDistance = (child, parent) => {
let count = 0;
let currentElement = child;// Traverse up the DOM tree until we reach parent or the top of the DOM
while (currentElement && currentElement !== parent) {
currentElement = currentElement.parentNode;
count++;
}// If parent was not found in the hierarchy, return -1
if (!currentElement) {
return -1; // Indicates parent is not an ancestor of element
}return count; // Number of layers between element and parent
}
const isMatchingClass = (linkRule, href, classes, ids) => {
return classes.includes(linkRule.value)
}
const isMatchingId = (linkRule, href, classes, ids) => {
return ids.includes(linkRule.value)
}
const isMatchingDomain = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)
const host = url.host
const hostsToMatch = [host]if(host.startsWith('www.')) {
hostsToMatch.push(host.substring(4))
} else {
hostsToMatch.push('www.' + host)
}return hostsToMatch.includes(linkRule.value)
}
const isMatchingExtension = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)return url.pathname.endsWith('.' + linkRule.value)
}
const isMatchingSubdirectory = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)return url.pathname.startsWith('/' + linkRule.value + '/')
}
const isMatchingProtocol = (linkRule, href, classes, ids) => {
if(!URL.canParse(href)) {
return false
}const url = new URL(href)return url.protocol === linkRule.value + ':'
}
const isMatchingExternal = (linkRule, href, classes, ids) => {
if(!URL.canParse(href) || !URL.canParse(document.location.href)) {
return false
}const matchingProtocols = ['http:', 'https:']
const siteUrl = new URL(document.location.href)
const linkUrl = new URL(href)// Links to subdomains will appear to be external matches according to JavaScript,
// but the PHP rules will filter those events out.
return matchingProtocols.includes(linkUrl.protocol) && siteUrl.host !== linkUrl.host
}
const isMatch = (linkRule, href, classes, ids) => {
switch (linkRule.type) {
case 'class':
return isMatchingClass(linkRule, href, classes, ids)
case 'id':
return isMatchingId(linkRule, href, classes, ids)
case 'domain':
return isMatchingDomain(linkRule, href, classes, ids)
case 'extension':
return isMatchingExtension(linkRule, href, classes, ids)
case 'subdirectory':
return isMatchingSubdirectory(linkRule, href, classes, ids)
case 'protocol':
return isMatchingProtocol(linkRule, href, classes, ids)
case 'external':
return isMatchingExternal(linkRule, href, classes, ids)
default:
return false;
}
}
const track = (element) => {
const href = element.href ?? null
const classes = Array.from(element.classList)
const ids = [element.id]
const linkRules = [{"type":"extension","value":"pdf"},{"type":"extension","value":"zip"},{"type":"protocol","value":"mailto"},{"type":"protocol","value":"tel"}]
if(linkRules.length === 0) {
return
}// For link rules that target an id, we need to allow that id to appear
// in any ancestor up to the 7th ancestor. This loop looks for those matches
// and counts them.
linkRules.forEach((linkRule) => {
if(linkRule.type !== 'id') {
return;
}const matchingAncestor = element.closest('#' + linkRule.value)if(!matchingAncestor || matchingAncestor.matches('html, body')) {
return;
}const depth = calculateParentDistance(element, matchingAncestor)if(depth < 7) {
ids.push(linkRule.value)
}
});// For link rules that target a class, we need to allow that class to appear
// in any ancestor up to the 7th ancestor. This loop looks for those matches
// and counts them.
linkRules.forEach((linkRule) => {
if(linkRule.type !== 'class') {
return;
}const matchingAncestor = element.closest('.' + linkRule.value)if(!matchingAncestor || matchingAncestor.matches('html, body')) {
return;
}const depth = calculateParentDistance(element, matchingAncestor)if(depth < 7) {
classes.push(linkRule.value)
}
});const hasMatch = linkRules.some((linkRule) => {
return isMatch(linkRule, href, classes, ids)
})if(!hasMatch) {
return
}const url = "https://discountcctvsupplier.co.uk/wp-content/plugins/independent-analytics/iawp-click-endpoint.php";
const body = {
href: href,
classes: classes.join(' '),
ids: ids.join(' '),
...{"payload":{"resource":"singular","singular_id":22832,"page":1},"signature":"bc32f57e81a80965d132dbb6d09d318a"} };sendRequest(url, body)
}
let hasSearched = false;
function search() {
if(hasSearched) {
return;
}
hasSearched = true;if (document.hasOwnProperty("visibilityState") && document.visibilityState === "prerender") {
return;
}if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
let referrer_url = null;if (typeof document.referrer === 'string' && document.referrer.length > 0) {
referrer_url = document.referrer;
}const params = location.search.slice(1).split('&').reduce((acc, s) => {
const [k, v] = s.split('=');
return Object.assign(acc, {[k]: v});
}, {});const url = "https://discountcctvsupplier.co.uk/wp-json/iawp/search";
const body = {
referrer_url,
utm_source: params.utm_source,
utm_medium: params.utm_medium,
utm_campaign: params.utm_campaign,
utm_term: params.utm_term,
utm_content: params.utm_content,
gclid: params.gclid,
...{"payload":{"resource":"singular","singular_id":22832,"page":1},"signature":"bc32f57e81a80965d132dbb6d09d318a"} };sendRequest(url, body)
}
document.addEventListener('mousedown', function (event) {
if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
const element = event.target.closest('a')if(!element) {
return
}const isPro = false
if(!isPro) {
return
}// Don't track left clicks with this event. The click event is used for that.
if(event.button === 0) {
return
}track(element)
})
document.addEventListener('click', function (event) {
if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
const element = event.target.closest('a, button, input[type="submit"], input[type="button"]')if(!element) {
return
}const isPro = false
if(!isPro) {
return
}track(element)
})
document.addEventListener('play', function (event) {
if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
return;
}
const element = event.target.closest('audio, video')if(!element) {
return
}const isPro = false
if(!isPro) {
return
}track(element)
}, true)
document.addEventListener("DOMContentLoaded", function (e) {
search();
});
document.addEventListener("iawpSearch", function (e) {
search();
});
})();
(function () {
var c = document.body.className;
c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
document.body.className = c;
})();
window['wcStripeSettings'] = JSON.parse( decodeURIComponent( '%7B%22cart%22%3A%7B%22total%22%3A%220.00%22%2C%22subtotal%22%3A%220.00%22%2C%22totalCents%22%3A0%2C%22subtotalCents%22%3A0%2C%22needsPayment%22%3Afalse%2C%22needsShipping%22%3Afalse%2C%22isEmpty%22%3Atrue%2C%22currency%22%3A%22GBP%22%2C%22countryCode%22%3A%22GB%22%2C%22lineItems%22%3A%5B%7B%22label%22%3A%22Tax%22%2C%22amount%22%3A%220.00%22%2C%22amountCents%22%3A0%2C%22type%22%3A%22tax%22%7D%5D%2C%22shippingOptions%22%3A%5B%5D%2C%22selectedShippingMethod%22%3A%22%22%2C%22paymentMethods%22%3A%7B%22stripe_cc%22%3A%7B%22id%22%3A%22stripe_cc%22%2C%22enabled%22%3Atrue%2C%22available%22%3Atrue%7D%2C%22stripe_applepay%22%3A%7B%22id%22%3A%22stripe_applepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_googlepay%22%3A%7B%22id%22%3A%22stripe_googlepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_payment_request%22%3A%7B%22id%22%3A%22stripe_payment_request%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_afterpay%22%3A%7B%22id%22%3A%22stripe_afterpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_affirm%22%3A%7B%22id%22%3A%22stripe_affirm%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_ach%22%3A%7B%22id%22%3A%22stripe_ach%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_ideal%22%3A%7B%22id%22%3A%22stripe_ideal%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_p24%22%3A%7B%22id%22%3A%22stripe_p24%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_klarna%22%3A%7B%22id%22%3A%22stripe_klarna%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_bancontact%22%3A%7B%22id%22%3A%22stripe_bancontact%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_eps%22%3A%7B%22id%22%3A%22stripe_eps%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_multibanco%22%3A%7B%22id%22%3A%22stripe_multibanco%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_sepa%22%3A%7B%22id%22%3A%22stripe_sepa%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_wechat%22%3A%7B%22id%22%3A%22stripe_wechat%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_fpx%22%3A%7B%22id%22%3A%22stripe_fpx%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_becs%22%3A%7B%22id%22%3A%22stripe_becs%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_alipay%22%3A%7B%22id%22%3A%22stripe_alipay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_grabpay%22%3A%7B%22id%22%3A%22stripe_grabpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_boleto%22%3A%7B%22id%22%3A%22stripe_boleto%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_oxxo%22%3A%7B%22id%22%3A%22stripe_oxxo%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_blik%22%3A%7B%22id%22%3A%22stripe_blik%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_konbini%22%3A%7B%22id%22%3A%22stripe_konbini%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_paynow%22%3A%7B%22id%22%3A%22stripe_paynow%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_promptpay%22%3A%7B%22id%22%3A%22stripe_promptpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_swish%22%3A%7B%22id%22%3A%22stripe_swish%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_amazonpay%22%3A%7B%22id%22%3A%22stripe_amazonpay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_cashapp%22%3A%7B%22id%22%3A%22stripe_cashapp%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_revolut%22%3A%7B%22id%22%3A%22stripe_revolut%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_zip%22%3A%7B%22id%22%3A%22stripe_zip%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_mobilepay%22%3A%7B%22id%22%3A%22stripe_mobilepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_twint%22%3A%7B%22id%22%3A%22stripe_twint%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_paybybank%22%3A%7B%22id%22%3A%22stripe_paybybank%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_upm%22%3A%7B%22id%22%3A%22stripe_upm%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_link_checkout%22%3A%7B%22id%22%3A%22stripe_link_checkout%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_billie%22%3A%7B%22id%22%3A%22stripe_billie%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_satispay%22%3A%7B%22id%22%3A%22stripe_satispay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_scalapay%22%3A%7B%22id%22%3A%22stripe_scalapay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_mbway%22%3A%7B%22id%22%3A%22stripe_mbway%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%7D%7D%2C%22product%22%3A%7B%22id%22%3A22832%2C%22qty%22%3A1%2C%22type%22%3A%22simple%22%2C%22price%22%3A325%2C%22total%22%3A325%2C%22priceCents%22%3A32500%2C%22currency%22%3A%22GBP%22%2C%22lineItems%22%3A%5B%7B%22id%22%3A22832%2C%22label%22%3A%22Hikvision%5Cu00a0DS-2DE7A425IW-AEB%204MP%2025X%20Zoom%20Smart%20Auto%20Tracking%20Low%20Light%20Darkfighter%20IP%20PoE%20PTZ%20CCTV%20Security%20Camera%22%2C%22amount%22%3A325%2C%22amountCents%22%3A32500%2C%22type%22%3A%22product%22%7D%5D%2C%22isInStock%22%3Atrue%2C%22needsShipping%22%3Atrue%2C%22shippingOptions%22%3A%5B%5D%2C%22variation_id%22%3A0%7D%2C%22currency%22%3A%7B%22currencyCode%22%3A%22GBP%22%2C%22currencySymbol%22%3A%22%26pound%3B%22%2C%22minorUnit%22%3A2%2C%22decimalSeparator%22%3A%22.%22%2C%22thousandSeparator%22%3A%22%2C%22%2C%22prefix%22%3A%22%26pound%3B%22%2C%22suffix%22%3A%22%22%7D%2C%22version%22%3A%224.0.8%22%2C%22page%22%3A%22product%22%2C%22publicKey%22%3A%22pk_live_51LOJSUJWyrk5KdYnkjFQdp2XtzqNOEDdbBJcDKY5bD18uxBoT3HQmBXqGpe7sCGUq76HJVRqwuqeNrZjaCWZaDRJ00gTdBOdlv%22%2C%22mode%22%3A%22live%22%2C%22sdkParams%22%3A%7B%22stripeAccount%22%3A%22acct_1LOJSUJWyrk5KdYn%22%2C%22betas%22%3A%5B%22deferred_intent_blik_beta_1%22%2C%22disable_deferred_intent_client_validation_beta_1%22%5D%2C%22developerTools%22%3A%7B%22assistant%22%3A%7B%22enabled%22%3Afalse%7D%7D%7D%2C%22addressLocales%22%3A%22%7B%5C%22BE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22CY%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22DE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22FR%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GR%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22IE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Eircode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%7D%7D%2C%5C%22IT%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22NL%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22PT%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22ES%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22SE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GB%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%2C%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22default%5C%22%3A%7B%5C%22first_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22First%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-first%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22given-name%5C%22%2C%5C%22priority%5C%22%3A10%7D%2C%5C%22last_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Last%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-last%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22family-name%5C%22%2C%5C%22priority%5C%22%3A20%7D%2C%5C%22company%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Company%20name%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22organization%5C%22%2C%5C%22priority%5C%22%3A30%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22country%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22country%5C%22%2C%5C%22label%5C%22%3A%5C%22Country%20%5C%5C%5C%2F%20Region%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%2C%5C%22update_totals_on_change%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22country%5C%22%2C%5C%22priority%5C%22%3A40%2C%5C%22hidden%5C%22%3Afalse%7D%2C%5C%22address_1%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Street%20address%5C%22%2C%5C%22placeholder%5C%22%3A%5C%22House%20number%20and%20street%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line1%5C%22%2C%5C%22priority%5C%22%3A50%7D%2C%5C%22address_2%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%5C%22%2C%5C%22label_class%5C%22%3A%5B%5C%22screen-reader-text%5C%22%5D%2C%5C%22placeholder%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%20%28optional%29%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line2%5C%22%2C%5C%22priority%5C%22%3A60%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22city%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Town%20%5C%5C%5C%2F%20City%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level2%5C%22%2C%5C%22priority%5C%22%3A70%7D%2C%5C%22state%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22state%5C%22%2C%5C%22label%5C%22%3A%5C%22State%20%5C%5C%5C%2F%20County%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22state%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level1%5C%22%2C%5C%22priority%5C%22%3A80%7D%2C%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%20%5C%5C%5C%2F%20ZIP%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22postcode%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22postal-code%5C%22%2C%5C%22priority%5C%22%3A90%7D%2C%5C%22phone%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Phone%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22type%5C%22%3A%5C%22tel%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22phone%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22tel%5C%22%2C%5C%22priority%5C%22%3A100%7D%7D%7D%22%2C%22errorMessages%22%3A%7B%22stripe_cc_generic%22%3A%22There%20was%20an%20error%20processing%20your%20credit%20card.%22%2C%22incomplete_number%22%3A%22Your%20card%20number%20is%20incomplete.%22%2C%22incomplete_expiry%22%3A%22Your%20card%27s%20expiration%20date%20is%20incomplete.%22%2C%22incomplete_cvc%22%3A%22Your%20card%27s%20security%20code%20is%20incomplete.%22%2C%22incomplete_zip%22%3A%22Your%20card%27s%20zip%20code%20is%20incomplete.%22%2C%22incorrect_number%22%3A%22The%20card%20number%20is%20incorrect.%20Check%20the%20card%27s%20number%20or%20use%20a%20different%20card.%22%2C%22incorrect_cvc%22%3A%22The%20card%27s%20security%20code%20is%20incorrect.%20Check%20the%20card%27s%20security%20code%20or%20use%20a%20different%20card.%22%2C%22incorrect_zip%22%3A%22The%20card%27s%20ZIP%20code%20is%20incorrect.%20Check%20the%20card%27s%20ZIP%20code%20or%20use%20a%20different%20card.%22%2C%22invalid_number%22%3A%22The%20card%20number%20is%20invalid.%20Check%20the%20card%20details%20or%20use%20a%20different%20card.%22%2C%22invalid_characters%22%3A%22This%20value%20provided%20to%20the%20field%20contains%20characters%20that%20are%20unsupported%20by%20the%20field.%22%2C%22invalid_cvc%22%3A%22The%20card%27s%20security%20code%20is%20invalid.%20Check%20the%20card%27s%20security%20code%20or%20use%20a%20different%20card.%22%2C%22invalid_expiry_month%22%3A%22The%20card%27s%20expiration%20month%20is%20incorrect.%20Check%20the%20expiration%20date%20or%20use%20a%20different%20card.%22%2C%22invalid_expiry_year%22%3A%22The%20card%27s%20expiration%20year%20is%20incorrect.%20Check%20the%20expiration%20date%20or%20use%20a%20different%20card.%22%2C%22incorrect_address%22%3A%22The%20card%27s%20address%20is%20incorrect.%20Check%20the%20card%27s%20address%20or%20use%20a%20different%20card.%22%2C%22expired_card%22%3A%22The%20card%20has%20expired.%20Check%20the%20expiration%20date%20or%20use%20a%20different%20card.%22%2C%22card_declined%22%3A%22The%20card%20has%20been%20declined.%22%2C%22invalid_expiry_year_past%22%3A%22Your%20card%27s%20expiration%20year%20is%20in%20the%20past.%22%2C%22account_number_invalid%22%3A%22The%20bank%20account%20number%20provided%20is%20invalid%20%28e.g.%2C%20missing%20digits%29.%20Bank%20account%20information%20varies%20from%20country%20to%20country.%20We%20recommend%20creating%20validations%20in%20your%20entry%20forms%20based%20on%20the%20bank%20account%20formats%20we%20provide.%22%2C%22amount_too_large%22%3A%22The%20specified%20amount%20is%20greater%20than%20the%20maximum%20amount%20allowed.%20Use%20a%20lower%20amount%20and%20try%20again.%22%2C%22amount_too_small%22%3A%22The%20specified%20amount%20is%20less%20than%20the%20minimum%20amount%20allowed.%20Use%20a%20higher%20amount%20and%20try%20again.%22%2C%22authentication_required%22%3A%22The%20payment%20requires%20authentication%20to%20proceed.%20If%20your%20customer%20is%20off%20session%2C%20notify%20your%20customer%20to%20return%20to%20your%20application%20and%20complete%20the%20payment.%20If%20you%20provided%20the%20error_on_requires_action%20parameter%2C%20then%20your%20customer%20should%20try%20another%20card%20that%20does%20not%20require%20authentication.%22%2C%22balance_insufficient%22%3A%22The%20transfer%20or%20payout%20could%20not%20be%20completed%20because%20the%20associated%20account%20does%20not%20have%20a%20sufficient%20balance%20available.%20Create%20a%20new%20transfer%20or%20payout%20using%20an%20amount%20less%20than%20or%20equal%20to%20the%20account%27s%20available%20balance.%22%2C%22bank_account_declined%22%3A%22The%20bank%20account%20provided%20can%20not%20be%20used%20to%20charge%2C%20either%20because%20it%20is%20not%20verified%20yet%20or%20it%20is%20not%20supported.%22%2C%22bank_account_exists%22%3A%22The%20bank%20account%20provided%20already%20exists%20on%20the%20specified%20Customer%20object.%20If%20the%20bank%20account%20should%20also%20be%20attached%20to%20a%20different%20customer%2C%20include%20the%20correct%20customer%20ID%20when%20making%20the%20request%20again.%22%2C%22bank_account_unusable%22%3A%22The%20bank%20account%20provided%20cannot%20be%20used%20for%20payouts.%20A%20different%20bank%20account%20must%20be%20used.%22%2C%22bank_account_unverified%22%3A%22Your%20Connect%20platform%20is%20attempting%20to%20share%20an%20unverified%20bank%20account%20with%20a%20connected%20account.%22%2C%22bank_account_verification_failed%22%3A%22The%20bank%20account%20cannot%20be%20verified%2C%20either%20because%20the%20microdeposit%20amounts%20provided%20do%20not%20match%20the%20actual%20amounts%2C%20or%20because%20verification%20has%20failed%20too%20many%20times.%22%2C%22card_decline_rate_limit_exceeded%22%3A%22This%20card%20has%20been%20declined%20too%20many%20times.%20You%20can%20try%20to%20charge%20this%20card%20again%20after%2024%20hours.%20We%20suggest%20reaching%20out%20to%20your%20customer%20to%20make%20sure%20they%20have%20entered%20all%20of%20their%20information%20correctly%20and%20that%20there%20are%20no%20issues%20with%20their%20card.%22%2C%22charge_already_captured%22%3A%22The%20charge%20you%27re%20attempting%20to%20capture%20has%20already%20been%20captured.%20Update%20the%20request%20with%20an%20uncaptured%20charge%20ID.%22%2C%22charge_already_refunded%22%3A%22The%20charge%20you%27re%20attempting%20to%20refund%20has%20already%20been%20refunded.%20Update%20the%20request%20to%20use%20the%20ID%20of%20a%20charge%20that%20has%20not%20been%20refunded.%22%2C%22charge_disputed%22%3A%22The%20charge%20you%27re%20attempting%20to%20refund%20has%20been%20charged%20back.%20Check%20the%20disputes%20documentation%20to%20learn%20how%20to%20respond%20to%20the%20dispute.%22%2C%22charge_exceeds_source_limit%22%3A%22This%20charge%20would%20cause%20you%20to%20exceed%20your%20rolling-window%20processing%20limit%20for%20this%20source%20type.%20Please%20retry%20the%20charge%20later%2C%20or%20contact%20us%20to%20request%20a%20higher%20processing%20limit.%22%2C%22charge_expired_for_capture%22%3A%22The%20charge%20cannot%20be%20captured%20as%20the%20authorization%20has%20expired.%20Auth%20and%20capture%20charges%20must%20be%20captured%20within%20seven%20days.%22%2C%22charge_invalid_parameter%22%3A%22One%20or%20more%20provided%20parameters%20was%20not%20allowed%20for%20the%20given%20operation%20on%20the%20Charge.%20Check%20our%20API%20reference%20or%20the%20returned%20error%20message%20to%20see%20which%20values%20were%20not%20correct%20for%20that%20Charge.%22%2C%22email_invalid%22%3A%22The%20email%20address%20is%20invalid%20%28e.g.%2C%20not%20properly%20formatted%29.%20Check%20that%20the%20email%20address%20is%20properly%20formatted%20and%20only%20includes%20allowed%20characters.%22%2C%22idempotency_key_in_use%22%3A%22The%20idempotency%20key%20provided%20is%20currently%20being%20used%20in%20another%20request.%20This%20occurs%20if%20your%20integration%20is%20making%20duplicate%20requests%20simultaneously.%22%2C%22invalid_charge_amount%22%3A%22The%20specified%20amount%20is%20invalid.%20The%20charge%20amount%20must%20be%20a%20positive%20integer%20in%20the%20smallest%20currency%20unit%2C%20and%20not%20exceed%20the%20minimum%20or%20maximum%20amount.%22%2C%22invalid_source_usage%22%3A%22The%20source%20cannot%20be%20used%20because%20it%20is%20not%20in%20the%20correct%20state%20%28e.g.%2C%20a%20charge%20request%20is%20trying%20to%20use%20a%20source%20with%20a%20pending%2C%20failed%2C%20or%20consumed%20source%29.%20Check%20the%20status%20of%20the%20source%20you%20are%20attempting%20to%20use.%22%2C%22missing%22%3A%22Both%20a%20customer%20and%20source%20ID%20have%20been%20provided%2C%20but%20the%20source%20has%20not%20been%20saved%20to%20the%20customer.%20To%20create%20a%20charge%20for%20a%20customer%20with%20a%20specified%20source%2C%20you%20must%20first%20save%20the%20card%20details.%22%2C%22postal_code_invalid%22%3A%22The%20ZIP%20code%20provided%20was%20incorrect.%22%2C%22processing_error%22%3A%22An%20error%20occurred%20while%20processing%20the%20card.%20Try%20again%20later%20or%20with%20a%20different%20payment%20method.%22%2C%22card_not_supported%22%3A%22The%20card%20does%20not%20support%20this%20type%20of%20purchase.%22%2C%22call_issuer%22%3A%22The%20card%20has%20been%20declined%20for%20an%20unknown%20reason.%22%2C%22card_velocity_exceeded%22%3A%22The%20customer%20has%20exceeded%20the%20balance%20or%20credit%20limit%20available%20on%20their%20card.%22%2C%22currency_not_supported%22%3A%22The%20card%20does%20not%20support%20the%20specified%20currency.%22%2C%22do_not_honor%22%3A%22The%20card%20has%20been%20declined%20for%20an%20unknown%20reason.%22%2C%22fraudulent%22%3A%22The%20payment%20has%20been%20declined%20as%20Stripe%20suspects%20it%20is%20fraudulent.%22%2C%22generic_decline%22%3A%22The%20card%20has%20been%20declined%20for%20an%20unknown%20reason.%22%2C%22incorrect_pin%22%3A%22The%20PIN%20entered%20is%20incorrect.%20%22%2C%22insufficient_funds%22%3A%22The%20card%20has%20insufficient%20funds%20to%20complete%20the%20purchase.%22%2C%22empty_element%22%3A%22Please%20select%20a%20payment%20method%20before%20proceeding.%22%2C%22empty_element_sepa_debit%22%3A%22Please%20enter%20your%20IBAN%20before%20proceeding.%22%2C%22empty_element_ideal%22%3A%22Please%20select%20a%20bank%20before%20proceeding%22%2C%22incomplete_iban%22%3A%22The%20IBAN%20you%20entered%20is%20incomplete.%22%2C%22incomplete_boleto_tax_id%22%3A%22Please%20enter%20a%20valid%20CPF%20%5C%2F%20CNPJ%22%2C%22test_mode_live_card%22%3A%22Your%20card%20was%20declined.%20Your%20request%20was%20in%20test%20mode%2C%20but%20you%20used%20a%20real%20credit%20card.%20Only%20test%20cards%20can%20be%20used%20in%20test%20mode.%22%2C%22server_side_confirmation_beta%22%3A%22You%20do%20not%20have%20permission%20to%20use%20the%20PaymentElement%20card%20form.%20Please%20send%20a%20request%20to%20https%3A%5C%2F%5C%2Fsupport.stripe.com%5C%2F%20and%20ask%20for%20the%20%5C%22server_side_confirmation_beta%5C%22%20to%20be%20added%20to%20your%20account.%22%2C%22phone_required%22%3A%22Please%20provide%20a%20billing%20phone%20number.%22%2C%22ach_instant_only%22%3A%22Your%20payment%20could%20not%20be%20processed%20at%20this%20time%20because%20your%20bank%20account%20does%20not%20support%20instant%20verification.%22%2C%22payment_intent_konbini_rejected_confirmation_number%22%3A%22The%20confirmation%20number%20was%20rejected%20by%20Konbini.%20Please%20try%20again.%22%2C%22payment_intent_payment_attempt_expired%22%3A%22The%20payment%20attempt%20for%20this%20payment%20method%20has%20expired.%20Please%20try%20again.%22%2C%22payment_intent_authentication_failure%22%3A%22We%20are%20unable%20to%20authenticate%20your%20payment%20method.%20Please%20choose%20a%20different%20payment%20method%20and%20try%20again.%22%2C%22payment_cancelled%22%3A%22Payment%20has%20been%20cancelled.%22%2C%22billing_label%22%3A%22Billing%20%25s%22%2C%22shipping_label%22%3A%22Shipping%20%25s%22%2C%22required_field%22%3A%22%25s%20is%20a%20required%20field.%22%2C%22required_fields%22%3A%22Please%20fill%20out%20all%20required%20fields.%22%2C%22payment_unavailable%22%3A%22This%20payment%20method%20is%20currently%20unavailabe.%20Reason%3A%20%25s%22%2C%22billing_details.phone.required%22%3A%22A%20billing%20phone%20number%20is%20required%20for%20this%20payment.%22%2C%22terms%22%3A%22Please%20read%20and%20accept%20the%20terms%20and%20conditions%20to%20proceed%20with%20your%20order.%22%2C%22order_button_click%22%3A%22Please%20click%20the%20%25s%20button%20before%20placing%20your%20order.%22%7D%2C%22requiredFields%22%3A%5B%22billing_first_name%22%2C%22billing_last_name%22%2C%22billing_country%22%2C%22billing_address_1%22%2C%22billing_city%22%2C%22billing_postcode%22%2C%22billing_phone%22%2C%22billing_email%22%2C%22shipping_first_name%22%2C%22shipping_last_name%22%2C%22shipping_country%22%2C%22shipping_address_1%22%2C%22shipping_city%22%2C%22shipping_postcode%22%2C%22shipping_phone%22%2C%22account_password%22%5D%2C%22restRoutes%22%3A%7B%22cart%5C%2Fitem%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fitem%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fitem%22%7D%2C%22cart%5C%2Frefresh%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Frefresh%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Frefresh%22%7D%2C%22cart%5C%2Fshipping%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fshipping%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fshipping%22%7D%2C%22cart%5C%2Fcheckout%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcheckout%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcheckout%22%7D%2C%22cart%5C%2Fcalculation%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcalculation%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcart%5C%2Fcalculation%22%7D%2C%22checkout%5C%2Fform-validation%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcheckout%5C%2Fform-validation%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fcheckout%5C%2Fform-validation%22%7D%2C%22setup-intent%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Fsetup-intent%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Fsetup-intent%22%7D%2C%22order%5C%2Fpay%22%3A%7B%22namespace%22%3A%22wc-stripe%5C%2Fv1%22%2C%22path%22%3A%22%5C%2Fwc-stripe%5C%2Fv1%5C%2Forder%5C%2Fpay%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_stripe_frontend_request%26path%3D%5C%2Fwc-stripe%5C%2Fv1%5C%2Forder%5C%2Fpay%22%7D%7D%2C%22stripe_cc_data%22%3A%7B%22paymentSections%22%3A%5B%5D%2C%22paymentMethodType%22%3A%22card%22%2C%22description%22%3A%22%22%2C%22hasPaymentTokens%22%3Afalse%2C%22termsDisplayRule%22%3A%22auto%22%2C%22elementOptions%22%3A%7B%22paymentMethodTypes%22%3A%5B%22card%22%2C%22link%22%5D%2C%22locale%22%3A%22en-US%22%2C%22mode%22%3A%22payment%22%2C%22paymentMethodCreation%22%3A%22manual%22%2C%22appearance%22%3A%7B%22theme%22%3A%22stripe%22%7D%7D%2C%22paymentElementOptions%22%3A%7B%22layout%22%3A%7B%22type%22%3A%22tabs%22%7D%7D%2C%22cardFormType%22%3A%22payment%22%2C%22inlineFormOptions%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%2C%22disableLink%22%3Afalse%7D%2C%22paymentElementActive%22%3Atrue%2C%22customFieldOptions%22%3A%7B%22cardNumber%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%7D%2C%22cardExpiry%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%7D%2C%22cardCvc%22%3A%7B%22style%22%3A%7B%22base%22%3A%7B%22color%22%3A%22%2332325d%22%2C%22fontFamily%22%3A%22%5C%22Helvetica%20Neue%5C%22%2C%20Helvetica%2C%20sans-serif%22%2C%22fontSmoothing%22%3A%22antialiased%22%2C%22fontSize%22%3A%2218px%22%2C%22%3A%3Aplaceholder%22%3A%7B%22color%22%3A%22%23aab7c4%22%7D%2C%22%3Afocus%22%3A%5B%5D%7D%2C%22invalid%22%3A%7B%22color%22%3A%22%23fa755a%22%2C%22iconColor%22%3A%22%23fa755a%22%7D%7D%7D%7D%2C%22cardIcons%22%3A%7B%22visa%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fvisa.svg%22%2C%22amex%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Famex.svg%22%2C%22mastercard%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fmastercard.svg%22%2C%22discover%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fdiscover.svg%22%2C%22diners%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fdiners.svg%22%2C%22jcb%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fjcb.svg%22%2C%22unionpay%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcards%5C%2Fchina_union_pay.svg%22%2C%22unknown%22%3A%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcard_brand2.svg%22%7D%2C%22html%22%3A%7B%22card_brand%22%3A%22%3Cimg%20id%3D%5C%22wc-stripe-card%5C%22%20src%3D%5C%22https%3A%5C%2F%5C%2Fdiscountcctvsupplier.co.uk%5C%2Fwp-content%5C%2Fplugins%5C%2Fwoo-stripe-payment%5C%2Fassets%5C%2Fimg%5C%2Fcard_brand2.svg%5C%22%20%5C%2F%3E%22%7D%2C%22noticeLocation%22%3A%22acf%22%2C%22noticeSelector%22%3A%22div.payment_method_stripe_cc%22%2C%22installments%22%3A%7B%22clientSecret%22%3Anull%7D%7D%2C%22paymentMethods%22%3A%7B%22stripe_cc%22%3A%7B%22enabled%22%3Atrue%2C%22supports%22%3A%5B%22refunds%22%2C%22products%22%2C%22default_credit_card_form%22%2C%22tokenization%22%2C%22add_payment_method%22%2C%22pre-orders%22%2C%22subscriptions%22%2C%22subscription_cancellation%22%2C%22multiple_subscriptions%22%2C%22subscription_amount_changes%22%2C%22subscription_date_changes%22%2C%22subscription_payment_method_change_admin%22%2C%22subscription_reactivation%22%2C%22subscription_suspension%22%2C%22subscription_payment_method_change_customer%22%5D%2C%22isLocal%22%3Afalse%2C%22paymentMethodType%22%3A%22card%22%7D%7D%7D' ) );
window['wcPPCPSettings'] = JSON.parse( decodeURIComponent( '%7B%22cart%22%3A%7B%22total%22%3A%220.00%22%2C%22totalCents%22%3A0%2C%22needsShipping%22%3Afalse%2C%22isEmpty%22%3Atrue%2C%22currency%22%3A%22GBP%22%2C%22countryCode%22%3A%22GB%22%2C%22availablePaymentMethods%22%3A%5B%22stripe_cc%22%2C%22ppcp%22%5D%2C%22lineItems%22%3A%5B%7B%22label%22%3A%22Tax%22%2C%22amount%22%3A%220.00%22%2C%22type%22%3A%22tax%22%7D%5D%2C%22shippingOptions%22%3A%5B%5D%2C%22selectedShippingMethod%22%3A%22%22%7D%2C%22product%22%3A%7B%22id%22%3A22832%2C%22needsShipping%22%3Atrue%2C%22total%22%3A%22325.00%22%2C%22totalCents%22%3A32500%2C%22price%22%3A%22325.00%22%2C%22currency%22%3A%22GBP%22%2C%22lineItems%22%3A%5B%7B%22label%22%3A%22Hikvision%5Cu00a0DS-2DE7A425IW-AEB%204MP%2025X%20Zoom%20Smart%20Auto%20Tracking%20Low%20Light%20Darkfighter%20IP%20PoE%20PTZ%20CCTV%20Security%20Camera%22%2C%22amount%22%3A%22325.00%22%2C%22type%22%3A%22product%22%7D%5D%2C%22shippingOptions%22%3A%5B%5D%7D%2C%22requiredFields%22%3A%5B%22billing_first_name%22%2C%22billing_last_name%22%2C%22billing_country%22%2C%22billing_address_1%22%2C%22billing_city%22%2C%22billing_postcode%22%2C%22billing_phone%22%2C%22billing_email%22%2C%22shipping_first_name%22%2C%22shipping_last_name%22%2C%22shipping_country%22%2C%22shipping_address_1%22%2C%22shipping_city%22%2C%22shipping_postcode%22%2C%22shipping_phone%22%2C%22account_password%22%5D%2C%22payLaterMessage%22%3A%7B%22enabled%22%3Afalse%2C%22checkout%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22cart%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22product%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22shop%22%3A%7B%22style%22%3A%7B%22layout%22%3A%22text%22%2C%22logo%22%3A%7B%22type%22%3A%22%22%2C%22position%22%3A%22left%22%7D%2C%22text%22%3A%7B%22color%22%3A%22black%22%2C%22size%22%3A%2212%22%7D%7D%7D%2C%22checkoutLocation%22%3A%22shop_table%22%2C%22cartLocation%22%3A%22shop_table%22%7D%2C%22productSettings%22%3A%7B%22button_width%22%3A%22add_to_cart%22%2C%22funding%22%3A%5B%5D%7D%2C%22version%22%3A%222.0.23%22%2C%22generalData%22%3A%7B%22clientId%22%3A%22BAA7xchGkcHVCACj_qsa3NXCOz7VvQeGjxWD8Uy_L7BYHE0UbH7AeugybyhTeGWWLboUPm-ktffwTGTNVI%22%2C%22environment%22%3A%22production%22%2C%22partner_id%22%3A%22PaymentPlugins_PCP%22%2C%22page%22%3A%22product%22%2C%22version%22%3A%222.0.23%22%2C%22is_admin%22%3Afalse%2C%22restRoutes%22%3A%7B%22connect%5C%2Faccount%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Faccount%5C%2Fconnect%22%7D%2C%22domain-association-file%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Fdomain-association-file%22%7D%2C%22cart%5C%2Fitem%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fitem%22%7D%2C%22cart%5C%2Fshipping%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fshipping%22%7D%2C%22cart%5C%2Fbilling%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fbilling%22%7D%2C%22cart%5C%2Fcheckout%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Fcheckout%22%7D%2C%22cart%5C%2Frefresh%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Frefresh%22%7D%2C%22cart%5C%2Forder-update-callback%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Forder-update-callback%22%7D%2C%22cart%5C%2Forder%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcart%5C%2Forder%22%7D%2C%22order%5C%2Fpay%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Forder%5C%2Fpay%22%7D%2C%22billing-agreement%5C%2Ftoken%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fbilling-agreement%5C%2Ftoken%5C%2F%3F%28%3FP%3Cid%3E%5B%5C%5Cw-%5D%2B%29%22%7D%2C%22billing-agreement%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fbilling-agreements%5C%2F%28%3FP%3Cid%3E%5B%5C%5Cw-%5D%2B%29%22%7D%2C%22webhook%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fwebhook%5C%2F%28%3FP%3Cenvironment%3E%5B%5C%5Cw%5D%2B%29%22%7D%2C%22admin%5C%2Forder%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Forder%5C%2F%28%3FP%3Corder_id%3E%5B%5C%5Cw%5D%2B%29%22%7D%2C%22admin%5C%2Ftracking%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Forder%5C%2F%28%3FP%3Corder_id%3E%5B%5C%5Cw%5D%2B%29%5C%2Ftracking%22%7D%2C%22admin%5C%2Fcarriers%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Forder%5C%2F%28%3FP%3Corder_id%3E%5B%5C%5Cw%5D%2B%29%5C%2Fcarriers%22%7D%2C%22admin%5C%2Fwebhook%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%5C%2Fadmin%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fadmin%5C%2Fwebhook%22%7D%2C%22setup-tokens%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fvault%5C%2Fsetup-tokens%22%7D%2C%22payment-tokens%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fvault%5C%2Fpayment-tokens%22%7D%2C%22checkout%5C%2Fvalidation%22%3A%7B%22namespace%22%3A%22wc-ppcp%5C%2Fv1%22%2C%22url%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2Fwc-ppcp%5C%2Fv1%5C%2Fcheckout-validation%22%7D%7D%2C%22ajaxRestPath%22%3A%22%5C%2F%3Fwc-ajax%3Dwc_ppcp_frontend_request%26path%3D%5C%2F%25s%22%7D%2C%22errorMessages%22%3A%7B%22terms%22%3A%22Please%20check%20the%20terms%20and%20conditions%20before%20proceeding.%22%2C%22invalid_client_id%22%3A%22Invalid%20PayPal%20client%20ID.%20Please%20check%20your%20API%20Settings.%22%2C%22invalid_currency%22%3A%22PayPal%20does%20not%20support%20currency%20%25.%20Please%20use%20a%20supported%20currency.%22%2C%22order_button_click%22%3A%22Please%20click%20the%20%25s%20button%20before%20placing%20your%20order.%22%2C%22gpay_order_button_click%22%3A%22Please%20click%20the%20Google%20Pay%20button%20before%20placing%20your%20order%22%2C%22order_missing_address%22%3A%22Please%20fill%20out%20all%20billing%20and%20shipping%20fields%20before%20clicking%20PayPal.%22%2C%22order_missing_billing_address%22%3A%22Please%20fill%20out%20all%20billing%20fields%20before%20clicking%20PayPal.%22%2C%22cancel%22%3A%22Cancel%22%2C%22required_fields%22%3A%22Please%20fill%20out%20all%20required%20fields.%22%2C%22Y_N_NO%22%3A%223DS%20authentication%20failed.%22%2C%22Y_R_NO%22%3A%223DS%20authentication%20was%20rejected.%22%2C%22Y_U_UNKNOWN%22%3A%22Unable%20to%20complete%203DS%20authentication.%20Please%20try%20again.%22%2C%22Y_U_NO%22%3A%22Unable%20to%20complete%203DS%20authentication.%20Please%20try%20again.%22%2C%22Y_C_UNKNOWN%22%3A%223DS%20authentication%20challenge%20required%20but%20could%20not%20be%20completed.%20Please%20try%20again.%22%2C%22Y__NO%22%3A%223DS%20authentication%20could%20not%20be%20processed.%20Please%20try%20again.%22%2C%22U__UNKNOWN%22%3A%223DS%20system%20is%20currently%20unavailable.%20Please%20try%20again%20later.%22%2C%22___UNKNOWN%22%3A%223DS%20authentication%20status%20unknown.%20Please%20try%20again.%22%2C%22total%22%3A%22Total%22%2C%22ERROR_VALIDATING_MERCHANT%22%3A%22Domain%20registration%20is%20not%20complete.%20Visit%20https%3A%5C%2F%5C%2Fpaymentplugins.com%5C%2Fdocumentation%5C%2Fpaypal%5C%2Fapplepay%5C%2Fsetup%5C%2F%20for%20instructions%20on%20completing%20domain%20registration.%22%7D%2C%22i18n%22%3A%7B%22locale%22%3A%22%7B%5C%22BE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22CY%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22DE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22FR%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GR%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22IE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Eircode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%7D%7D%2C%5C%22IT%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Atrue%2C%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22NL%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22PT%5C%22%3A%7B%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22ES%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Province%5C%22%7D%7D%2C%5C%22SE%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22priority%5C%22%3A65%7D%2C%5C%22state%5C%22%3A%7B%5C%22required%5C%22%3Afalse%2C%5C%22hidden%5C%22%3Atrue%7D%7D%2C%5C%22GB%5C%22%3A%7B%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%5C%22%7D%2C%5C%22state%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22County%5C%22%2C%5C%22required%5C%22%3Afalse%7D%7D%2C%5C%22default%5C%22%3A%7B%5C%22first_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22First%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-first%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22given-name%5C%22%2C%5C%22priority%5C%22%3A10%7D%2C%5C%22last_name%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Last%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-last%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22family-name%5C%22%2C%5C%22priority%5C%22%3A20%7D%2C%5C%22company%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Company%20name%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22organization%5C%22%2C%5C%22priority%5C%22%3A30%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22country%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22country%5C%22%2C%5C%22label%5C%22%3A%5C%22Country%20%5C%5C%5C%2F%20Region%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%2C%5C%22update_totals_on_change%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22country%5C%22%2C%5C%22priority%5C%22%3A40%2C%5C%22hidden%5C%22%3Afalse%7D%2C%5C%22address_1%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Street%20address%5C%22%2C%5C%22placeholder%5C%22%3A%5C%22House%20number%20and%20street%20name%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line1%5C%22%2C%5C%22priority%5C%22%3A50%7D%2C%5C%22address_2%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%5C%22%2C%5C%22label_class%5C%22%3A%5B%5C%22screen-reader-text%5C%22%5D%2C%5C%22placeholder%5C%22%3A%5C%22Apartment%2C%20suite%2C%20unit%2C%20etc.%20%28optional%29%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-line2%5C%22%2C%5C%22priority%5C%22%3A60%2C%5C%22required%5C%22%3Afalse%7D%2C%5C%22city%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Town%20%5C%5C%5C%2F%20City%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level2%5C%22%2C%5C%22priority%5C%22%3A70%7D%2C%5C%22state%5C%22%3A%7B%5C%22type%5C%22%3A%5C%22state%5C%22%2C%5C%22label%5C%22%3A%5C%22State%20%5C%5C%5C%2F%20County%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22state%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22address-level1%5C%22%2C%5C%22priority%5C%22%3A80%7D%2C%5C%22postcode%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Postcode%20%5C%5C%5C%2F%20ZIP%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%2C%5C%22address-field%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22postcode%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22postal-code%5C%22%2C%5C%22priority%5C%22%3A90%7D%2C%5C%22phone%5C%22%3A%7B%5C%22label%5C%22%3A%5C%22Phone%5C%22%2C%5C%22required%5C%22%3Atrue%2C%5C%22type%5C%22%3A%5C%22tel%5C%22%2C%5C%22class%5C%22%3A%5B%5C%22form-row-wide%5C%22%5D%2C%5C%22validate%5C%22%3A%5B%5C%22phone%5C%22%5D%2C%5C%22autocomplete%5C%22%3A%5C%22tel%5C%22%2C%5C%22priority%5C%22%3A100%7D%7D%7D%22%2C%22locale_fields%22%3A%22%7B%5C%22address_1%5C%22%3A%5C%22%23billing_address_1_field%2C%20%23shipping_address_1_field%5C%22%2C%5C%22address_2%5C%22%3A%5C%22%23billing_address_2_field%2C%20%23shipping_address_2_field%5C%22%2C%5C%22state%5C%22%3A%5C%22%23billing_state_field%2C%20%23shipping_state_field%2C%20%23calc_shipping_state_field%5C%22%2C%5C%22postcode%5C%22%3A%5C%22%23billing_postcode_field%2C%20%23shipping_postcode_field%2C%20%23calc_shipping_postcode_field%5C%22%2C%5C%22city%5C%22%3A%5C%22%23billing_city_field%2C%20%23shipping_city_field%2C%20%23calc_shipping_city_field%5C%22%2C%5C%22country%5C%22%3A%5C%22%23billing_country_field%2C%20%23shipping_country_field%2C%20%23calc_shipping_country_field%5C%22%2C%5C%22phone%5C%22%3A%5C%22%23billing_phone_field%2C%20%23shipping_phone_field%5C%22%7D%22%7D%2C%22ppcp_data%22%3A%7B%22title%22%3A%22PayPal%22%2C%22sections%22%3A%5B%22order_pay%22%2C%22checkout%22%5D%2C%22needsSetupToken%22%3Afalse%2C%22funding%22%3A%5B%22paypal%22%5D%2C%22buttons_order%22%3A%5B%22paypal%22%2C%22paylater%22%2C%22venmo%22%2C%22card%22%5D%2C%22buttonPlacement%22%3A%22place_order%22%2C%22buttons%22%3A%7B%22paypal%22%3A%7B%22layout%22%3A%22vertical%22%2C%22label%22%3A%22paypal%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%2C%22color%22%3A%22gold%22%7D%2C%22paylater%22%3A%7B%22layout%22%3A%22vertical%22%2C%22label%22%3A%22paypal%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%2C%22color%22%3A%22gold%22%7D%2C%22card%22%3A%7B%22layout%22%3A%22vertical%22%2C%22label%22%3A%22paypal%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%2C%22color%22%3A%22black%22%2C%22tagline%22%3Afalse%7D%2C%22venmo%22%3A%7B%22layout%22%3A%22vertical%22%2C%22shape%22%3A%22rect%22%2C%22height%22%3A40%7D%7D%2C%22paypal_sections%22%3A%5B%22order_pay%22%2C%22checkout%22%2C%22add_payment_method%22%5D%2C%22paylater_sections%22%3A%5B%22cart%22%2C%22checkout%22%2C%22order_pay%22%5D%2C%22credit_card_sections%22%3A%5B%22cart%22%2C%22checkout%22%2C%22order_pay%22%5D%2C%22venmo_sections%22%3A%5B%22checkout%22%2C%22order_pay%22%5D%2C%22placeOrderEnabled%22%3Afalse%2C%22serverSideShippingCallback%22%3Afalse%7D%2C%22recaptcha%22%3A%7B%22site_key%22%3Anull%2C%22i18n%22%3A%7B%22error%22%3A%22reCAPTCHA%20error%3A%20%25s%22%7D%2C%22paymentMethods%22%3A%5B%22ppcp%22%5D%7D%2C%22queryParams%22%3A%7B%22client-id%22%3A%22BAA7xchGkcHVCACj_qsa3NXCOz7VvQeGjxWD8Uy_L7BYHE0UbH7AeugybyhTeGWWLboUPm-ktffwTGTNVI%22%2C%22intent%22%3A%22capture%22%2C%22commit%22%3A%22true%22%2C%22components%22%3A%22buttons%2Cmessages%2Ccard-fields%2Cgooglepay%2Capplepay%22%2C%22currency%22%3A%22GBP%22%2C%22enable-funding%22%3A%22paylater%22%2C%22data-partner-attribution-id%22%3A%22PaymentPlugins_PCP%22%2C%22data-page-type%22%3A%22product-details%22%2C%22locale%22%3A%22en_US%22%7D%2C%22ppcp_api%22%3A%5B%5D%2C%22ppcp_advanced%22%3A%7B%22miniCartLocation%22%3A%22below%22%7D%2C%22ppcp_paylater_message%22%3A%5B%5D%7D' ) );
https://discountcctvsupplier.co.uk/wp-content/plugins/elementskit-lite/widgets/init/assets/js/widget-scripts.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/accounting/accounting.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/selectWoo/selectWoo.full.min.js
var yith_wcan_shortcodes = {"query_param":"yith_wcan","query_vars":[],"supported_taxonomies":["product_cat","product_tag","pa_brand","pa_camera","pa_camera-resolution","pa_channel","pa_color","pa_colour","pa_compression","pa_hdd","pa_ip-rating","pa_ir-distance","pa_lens","pa_material","pa_max-resolution","pa_megapixel","pa_number-of-cameras","pa_patterns-textures","pa_size"],"content":"#main","change_browser_url":"1","instant_filters":"1","ajax_filters":"1","reload_on_back":"1","show_clear_filter":"","scroll_top":"","scroll_target":"","modal_on_mobile":"","session_param":"","show_current_children":"","loader":"","toggles_open_on_modal":"","mobile_media_query":"991","base_url":"https://discountcctvsupplier.co.uk/product/hikvision-ds-2de7a425iw-aeb/","terms_per_page":"10","currency_format":{"symbol":"£","decimal":".","thousand":",","precision":2,"format":"%s%v"},"labels":{"empty_option":"All","search_placeholder":"Search...","no_items":"No item found","show_more":"Show more","close":"Close","save":"Save","show_results":"Show results","clear_selection":"Clear","clear_all_selections":"Clear All"},"urls":{"render_filter":"/?wc-ajax=yith_wcan_render_filter"},"nonces":{"render_filter":"0854658eb3","render_remaining_terms":"3450752be6","get_filter_terms":"dca3f19caa"}};
//# sourceURL=yith-wcan-shortcodes-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/yith-woocommerce-ajax-navigation/assets/js/yith-wcan-shortcodes.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/dist/hooks.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/dist/i18n.min.js
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
https://discountcctvsupplier.co.uk/wp-content/plugins/contact-form-7/includes/swv/js/index.js
var wpcf7 = {
"api": {
"root": "https:\/\/discountcctvsupplier.co.uk\/wp-json\/",
"namespace": "contact-form-7\/v1"
},
"cached": 1
};
//# sourceURL=contact-form-7-js-before
https://discountcctvsupplier.co.uk/wp-content/plugins/contact-form-7/includes/js/index.js
var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://discountcctvsupplier.co.uk/cart-2/","is_cart":"","cart_redirect_after_add":"no"};
//# sourceURL=wc-add-to-cart-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js
var aws_vars = {"sale":"Sale!","sku":"SKU: ","showmore":"View all results","noresults":"Nothing found"};
//# sourceURL=aws-script-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/advanced-woo-search/assets/js/common.min.js
dataLayer.push({"ecommerce":{"currency":"GBP","value":325,"items":[{"item_id":22832,"item_name":"Hikvision DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera","sku":"Hikvision DS-2DE7A425IW-AEB (T5)","price":325,"stocklevel":null,"stockstatus":"instock","google_business_vertical":"retail","item_category":"PTZ Hikvision IP Cameras","id":22832}]},"event":"view_item"});
//# sourceURL=gtm4wp-additional-datalayer-pushes-js-after
https://discountcctvsupplier.co.uk/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-ecommerce-generic.js
https://discountcctvsupplier.co.uk/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-woocommerce.js
var wc_facebook_signals_params = {"ajax_url":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","nonce":"8efebe2c07","action":"wc_facebook_update_signals_state"};
//# sourceURL=wc-facebook-signals-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/facebook-for-woocommerce/assets/js/facebook-for-woocommerce-signals.js
https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/dist/js/njt-whatsapp.js
var njt_wa_global = {"ajax_url":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","nonce":"e576d2f4ca","defaultAvatarSVG":"\u003Csvg width=\"48px\" height=\"48px\" class=\"nta-whatsapp-default-avatar\" version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 512 512\" style=\"enable-background:new 0 0 512 512;\" xml:space=\"preserve\"\u003E\n \u003Cpath style=\"fill:#EDEDED;\" d=\"M0,512l35.31-128C12.359,344.276,0,300.138,0,254.234C0,114.759,114.759,0,255.117,0\n S512,114.759,512,254.234S395.476,512,255.117,512c-44.138,0-86.51-14.124-124.469-35.31L0,512z\"/\u003E\n \u003Cpath style=\"fill:#55CD6C;\" d=\"M137.71,430.786l7.945,4.414c32.662,20.303,70.621,32.662,110.345,32.662\n c115.641,0,211.862-96.221,211.862-213.628S371.641,44.138,255.117,44.138S44.138,137.71,44.138,254.234\n c0,40.607,11.476,80.331,32.662,113.876l5.297,7.945l-20.303,74.152L137.71,430.786z\"/\u003E\n \u003Cpath style=\"fill:#FEFEFE;\" d=\"M187.145,135.945l-16.772-0.883c-5.297,0-10.593,1.766-14.124,5.297\n c-7.945,7.062-21.186,20.303-24.717,37.959c-6.179,26.483,3.531,58.262,26.483,90.041s67.09,82.979,144.772,105.048\n c24.717,7.062,44.138,2.648,60.028-7.062c12.359-7.945,20.303-20.303,22.952-33.545l2.648-12.359\n c0.883-3.531-0.883-7.945-4.414-9.71l-55.614-25.6c-3.531-1.766-7.945-0.883-10.593,2.648l-22.069,28.248\n c-1.766,1.766-4.414,2.648-7.062,1.766c-15.007-5.297-65.324-26.483-92.69-79.448c-0.883-2.648-0.883-5.297,0.883-7.062\n l21.186-23.834c1.766-2.648,2.648-6.179,1.766-8.828l-25.6-57.379C193.324,138.593,190.676,135.945,187.145,135.945\"/\u003E\n \u003C/svg\u003E","defaultAvatarUrl":"https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/img/whatsapp_logo.svg","timezone":"+00:00","i18n":{"online":"Online","offline":"Offline"},"urlSettings":{"onDesktop":"api","onMobile":"api","openInNewTab":"ON"}};
//# sourceURL=nta-js-global-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/js/whatsapp-button.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woo-fly-cart/assets/perfect-scrollbar/js/perfect-scrollbar.jquery.min.js
var wc_cart_fragments_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","cart_hash_key":"wc_cart_hash_8bd68889a1dfd849a8a2b7de551ca5ea","fragment_name":"wc_fragments_8bd68889a1dfd849a8a2b7de551ca5ea","request_timeout":"5000"};
//# sourceURL=wc-cart-fragments-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js
var woofc_vars = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","nonce":"2e0359c16f","scrollbar":"yes","auto_show":"yes","auto_show_normal":"yes","confetti":"","show_cart":"no","show_checkout":"no","delay":"300","undo_remove":"yes","confirm_remove":"no","instant_checkout":"no","instant_checkout_open":"no","confirm_empty":"no","confirm_empty_text":"Do you want to empty the cart?","confirm_remove_text":"Do you want to remove this item?","undo_remove_text":"Undo?","removed_text":"%s was removed.","manual_show":"","reload":"no","suggested_carousel":"1","save_for_later_carousel":"1","upsell_funnel_carousel":"1","slick_params":"{\"slidesToShow\":1,\"slidesToScroll\":1,\"dots\":true,\"arrows\":false,\"autoplay\":false,\"autoplaySpeed\":3000,\"rtl\":false}","confetti_params":"{\"particleCount\":100,\"spread\":70,\"origin\":{\"y\":0.6}}","is_cart":"","is_checkout":"","cart_url":"","hide_count_empty":"yes","wc_checkout_js":"https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/checkout.js"};
//# sourceURL=woofc-frontend-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woo-fly-cart/assets/js/frontend.js
https://discountcctvsupplier.co.uk/wp-content/themes/hello-elementor/assets/js/hello-frontend.js
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js
var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
//# sourceURL=wc-order-attribution-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/facebook-for-woocommerce/assets/js/frontend/pixel-events.js
if (typeof clientParamBuilder !== "undefined" && !/(?:^|;\s*)wc_facebook_signals_state=held(?:;|$)/.test(document.cookie)) {
clientParamBuilder.processAndCollectAllParams(window.location.href);
}
//# sourceURL=facebook-capi-param-builder-js-after
var wooaa_vars = {"wc_ajax_url":"/?wc-ajax=%%endpoint%%","nonce":"534443a1b5","product_types":"all","ignore_btn_class":".disabled,.wpc-disabled,.wooaa-disabled,.wooco-disabled,.woosb-disabled,.woobt-disabled,.woosg-disabled,.woofs-disabled,.woopq-disabled,.wpcpo-disabled,.wpcbn-btn,.wpcme-btn,.wpcev-btn,.wpcuv-update","ignore_form_data":"","cart_url":"https://discountcctvsupplier.co.uk/cart-2/","cart_redirect_after_add":"no"};
//# sourceURL=wooaa-frontend-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/wpc-ajax-add-to-cart/assets/js/frontend.js
!function (w, d, t) {
w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{},ttq._partner=ttq._partner||"WooCommerce";var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
ttq.load('D6JC3HJC77UCBL6SE0N0');
}(window, document, 'ttq');
//# sourceURL=tiktok-pixel-tracking-handle-header-js-after
/* WooCommerce Facebook Integration Event Tracking */
fbq('set', 'agent', (function(){var a='woocommerce_0-10.9.4-3.7.5';if(window.__wc_fb_page_generated&&(Math.floor(Date.now()/1000)-window.__wc_fb_page_generated)>1800){a=a.replace(/(\d+\.\d+\.\d+)/,'$1_c');}return a;})(), '1071403255027834');
window.wcFacebookPixelFiredEvents = window.wcFacebookPixelFiredEvents || {};
if (!window.wcFacebookPixelFiredEvents["fb2d6558-e821-4806-92dc-542639e26bf5"]) {
window.wcFacebookPixelFiredEvents["fb2d6558-e821-4806-92dc-542639e26bf5"] = true;
var isStale = window.__wc_fb_page_generated && (Math.floor(Date.now()/1000) - window.__wc_fb_page_generated) > 1800;
if (window.FacebookSignals && typeof window.FacebookSignals.trackEvent === 'function') {
window.FacebookSignals.trackEvent('PageView', {
"source": "woocommerce_0",
"version": "10.9.4",
"pluginVersion": "3.7.5"
}, null, 'track', isStale ? null : "fb2d6558-e821-4806-92dc-542639e26bf5");
} else if (isStale) {
fbq('track', 'PageView', {
"source": "woocommerce_0",
"version": "10.9.4",
"pluginVersion": "3.7.5"
});
} else {
fbq('track', 'PageView', {
"source": "woocommerce_0",
"version": "10.9.4",
"pluginVersion": "3.7.5"
}, {
"eventID": "fb2d6558-e821-4806-92dc-542639e26bf5"
});
}
}
/* WooCommerce Facebook Integration Event Tracking */
fbq('set', 'agent', (function(){var a='woocommerce_0-10.9.4-3.7.5';if(window.__wc_fb_page_generated&&(Math.floor(Date.now()/1000)-window.__wc_fb_page_generated)>1800){a=a.replace(/(\d+\.\d+\.\d+)/,'$1_c');}return a;})(), '1071403255027834');
window.wcFacebookPixelFiredEvents = window.wcFacebookPixelFiredEvents || {};
if (!window.wcFacebookPixelFiredEvents["2443d010-94ad-4c85-9b9f-29cefdc3f28b"]) {
window.wcFacebookPixelFiredEvents["2443d010-94ad-4c85-9b9f-29cefdc3f28b"] = true;
var isStale = window.__wc_fb_page_generated && (Math.floor(Date.now()/1000) - window.__wc_fb_page_generated) > 1800;
if (window.FacebookSignals && typeof window.FacebookSignals.trackEvent === 'function') {
window.FacebookSignals.trackEvent('ViewContent', {
"source": "woocommerce_0",
"version": "10.9.4",
"pluginVersion": "3.7.5",
"content_name": "Hikvision\u00a0DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera",
"content_ids": "[\"22832\"]",
"content_type": "product",
"contents": "[{\"id\":\"22832\",\"quantity\":1}]",
"content_category": "IP CAMERAS",
"value": "325",
"currency": "GBP"
}, null, 'track', isStale ? null : "2443d010-94ad-4c85-9b9f-29cefdc3f28b");
} else if (isStale) {
fbq('track', 'ViewContent', {
"source": "woocommerce_0",
"version": "10.9.4",
"pluginVersion": "3.7.5",
"content_name": "Hikvision\u00a0DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera",
"content_ids": "[\"22832\"]",
"content_type": "product",
"contents": "[{\"id\":\"22832\",\"quantity\":1}]",
"content_category": "IP CAMERAS",
"value": "325",
"currency": "GBP"
});
} else {
fbq('track', 'ViewContent', {
"source": "woocommerce_0",
"version": "10.9.4",
"pluginVersion": "3.7.5",
"content_name": "Hikvision\u00a0DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera",
"content_ids": "[\"22832\"]",
"content_type": "product",
"contents": "[{\"id\":\"22832\",\"quantity\":1}]",
"content_category": "IP CAMERAS",
"value": "325",
"currency": "GBP"
}, {
"eventID": "2443d010-94ad-4c85-9b9f-29cefdc3f28b"
});
}
}
//# sourceURL=facebook-for-woocommerce-inline-js-after
https://discountcctvsupplier.co.uk/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js
https://discountcctvsupplier.co.uk/wp-content/plugins/elementor/assets/js/frontend-modules.min.js
https://discountcctvsupplier.co.uk/wp-includes/js/jquery/ui/core.min.js
var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":993,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":767,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":992,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1024,"default_value":1200,"direction":"max","is_enabled":true},"laptop":{"label":"Laptop","value":1280,"default_value":1366,"direction":"max","is_enabled":true},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":true},"version":"4.1.5","is_static":false,"experimentalFeatures":{"additional_custom_breakpoints":true,"container":true,"e_panel_promotions":true,"hello-theme-header-footer":true,"nested-elements":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_widget_creation":true,"import-export-customization":true},"urls":{"assets":"https:\/\/discountcctvsupplier.co.uk\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/discountcctvsupplier.co.uk\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/discountcctvsupplier.co.uk\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"d2111f0c0e","atomicFormsSendForm":"5ccab3aef1"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"viewport_tablet":992,"active_breakpoints":["viewport_mobile","viewport_tablet","viewport_tablet_extra","viewport_laptop"],"viewport_laptop":1280,"stretched_section_container":"#main","viewport_mobile":767,"viewport_tablet_extra":1024,"lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"title","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":22832,"title":"Hikvision%C2%A0DS-2DE7A425IW-AEB%204MP%2025X%20Zoom%20Smart%20Auto%20Tracking%20Low%20Light%20Darkfighter%20IP%20PoE%20PTZ%20CCTV%20Security%20Camera%20-%20AAA%20CCTV","excerpt":"Hikvision DS-2DE7A425IW-AEB (T5) 4MP PTZ Smart auto tracking, 25\u00d7 zoom, DarkFighter, 200m ir, IP POE CCTV Security Camera.","featuredImage":"https:\/\/discountcctvsupplier.co.uk\/wp-content\/uploads\/2026\/04\/Hikvision-DS-2DE7A425IW-AEB-T5.jpg"}};
//# sourceURL=elementor-frontend-js-before
https://discountcctvsupplier.co.uk/wp-content/plugins/elementor/assets/js/frontend.min.js
var ekit_config = {"ajaxurl":"https://discountcctvsupplier.co.uk/wp-admin/admin-ajax.php","nonce":"1734abcd36"};
//# sourceURL=ekit-core-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/elementskit-lite/widgets/init/assets/js/widgets/core.js
https://discountcctvsupplier.co.uk/wp-content/plugins/elementskit-lite/widgets/init/assets/js/widgets/nav-menu.js
var njt_wa = {"gdprStatus":"","accounts":[{"accountId":23526,"accountName":"CCTV HelpDesk","avatar":"","number":"+447305398061","title":"Hello, Click here...","predefinedText":"","willBeBackText":"I will be back in [njwa_time_work]","dayOffsText":"I will be back soon","isAlwaysAvailable":"ON","daysOfWeekWorking":{"sunday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"monday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"tuesday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"wednesday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"thursday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"friday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]},"saturday":{"isWorkingOnDay":"OFF","workHours":[{"startTime":"08:00","endTime":"17:30"}]}}}],"options":{"display":{"displayCondition":"showAllPage","includePages":[],"excludePages":[],"includePosts":[],"showOnDesktop":"ON","showOnMobile":"ON","time_symbols":"h:m"},"styles":{"title":"Start a Conversation","responseText":"The team typically replies in a few minutes.","description":"Hi! Click one of our member below to chat on \u003Cstrong\u003EWhatsApp\u003C/strong\u003E","backgroundColor":"#2db742","textColor":"#fff","titleSize":"18","accountNameSize":"14","descriptionTextSize":"12","regularTextSize":"11","scrollHeight":"500","isShowScroll":"OFF","isShowResponseText":"OFF","btnLabel":"Need Help?","btnLabelWidth":"95","btnPosition":"right","btnLeftDistance":"30","btnRightDistance":"30","btnBottomDistance":"30","isShowBtnLabel":"ON","isShowGDPR":"OFF","gdprContent":"Please accept our \u003Ca href=\"https://ninjateam.org/privacy-policy/\"\u003Eprivacy policy\u003C/a\u003E first to start a conversation."},"analytics":{"enabledGoogle":"OFF","enabledFacebook":"OFF","enabledGoogleGA4":"OFF"}}};
//# sourceURL=nta-js-popup-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/wp-whatsapp/assets/js/whatsapp-popup.js
var glaGtagData = {"currency_minor_unit":"2","products":{"22832":{"name":"Hikvision\u00a0DS-2DE7A425IW-AEB 4MP 25X Zoom Smart Auto Tracking Low Light Darkfighter IP PoE PTZ CCTV Security Camera","price":325}}};
//# sourceURL=gla-gtag-events-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/google-listings-and-ads/js/build/gtag-events.js
var wcpa_front = {"api_nonce":null,"root":"https://discountcctvsupplier.co.uk/wp-json/wcpa/front/","assets_url":"https://discountcctvsupplier.co.uk/wp-content/plugins/woo-custom-product-addons-pro/assets/","date_format":"F j, Y","time_format":"g:i a","validation_messages":{"uploadPending":"Files are being uploaded.","formError":"Fix the errors shown above","checkCaptcha":"Tick the \"I'm not a robot\" verification","requiredError":"Field is required","allowedCharsError":"Characters %s is not supported","patternError":"Pattern not matching","minlengthError":"Minimum %s characters required","maxlengthError":"Maximum %s characters allowed","minValueError":"Minimum value is %s","maxValueError":"Maximum value is %s","minFieldsError":"Select minimum %s fields","maxFieldsError":"Select maximum %s fields","maxFileCountError":"Maximum %s files allowed","minFileCountError":"Minimum %s files required","maxFileSizeError":"Maximum file size should be %s","minFileSizeError":"Minimum file size should be %s","fileExtensionError":"File type is not supported","quantityRequiredError":"Please enter a valid quantity","otherFieldError":"Other value required","charleftMessage":"%s characters left","validEmailError":"Provide a valid email address","validUrlError":"Provide a valid URL","minQuantityError":"Minimum quantity required is %s","maxQuantityError":"Maximum quantity allowed is %s","groupMinError":"Requires minimum %s","groupMaxError":"Allowed maximum %s","gt_translate_keys":["uploadPending","formError","checkCaptcha","requiredError","allowedCharsError","patternError","minlengthError","maxlengthError","minValueError","maxValueError","minFieldsError","maxFieldsError","maxFileCountError","minFileCountError","maxFileSizeError","minFileSizeError","fileExtensionError","quantityRequiredError","otherFieldError","charleftMessage","validEmailError","validUrlError","minQuantityError","maxQuantityError","groupMinError","groupMaxError"]},"google_map_api":"","reCAPTCHA_site_key":"","recaptcha_v":"v2","ajax_add_to_cart":"","summary_order":["option_price","product_price","fee","discount","total_price"],"change_price_as_quantity":"","show_field_price_x_quantity":"","disable_validation_scroll":"","gallery_update_field":"last_field","update_top_price":"1","datepicker_disableMobile":"","radio_unselect_img":"","strings":{"place_selector_street":"Street Address","place_selector_city":"City","place_selector_state":"State","place_selector_zip":"Zip Code","place_selector_country":"Country","place_selector_latitude":"Latitude","place_selector_longitude":"Longitude","file_button_text":"Choose File","file_placeholder":"{count} Files","file_droppable_action_text":"Browse","file_droppable_desc_text":"or {action} to choose a file","file_upload_completed":"Completed","other":"Other","clearSelection":"Clear Selection","repeater_add":"Add Field","repeater_remove":"Remove Field","file_droppable_text":"Drag and Drop Files Here","to":" to ","gt_translate_keys":["place_selector_street","place_selector_city","place_selector_state","place_selector_zip","place_selector_country","place_selector_latitude","place_selector_longitude","file_button_text","file_placeholder","file_droppable_action_text","file_droppable_desc_text","file_upload_completed","other","clearSelection","repeater_add","repeater_remove","file_droppable_text","to"]},"i18n_view_cart":"View cart","options_price_format":"({price})","wc_price_format":"%1$s%2$s","hide_option_price_zero":"","discount_show_field_price":"1","discount_strike_field_price":"1","discount_strike_summary_price":"1","discount_strike_total_price":"1","responsive_layout":"","product_price_parent_selector":".summary","accordion_open":"first_opened","woo_price_suffix":"","prices_include_tax":"","isAdmin":"","cart_url":"https://discountcctvsupplier.co.uk/cart-2/","is_cart":"","user_roles":["guest"],"google_map_countries":"","init_triggers":["qv_loader_stop","quick_view_pro:load","elementor/popup/show","xt_wooqv-product-loaded","woodmart-quick-view-displayed","porto_init_countdown","woopack.quickview.ajaxload","quick-view-displayed","update_lazyload","riode_load","yith_infs_added_elem","jet-popup/show-event/after-show","etheme_quick_view_content_loaded","wc_backbone_modal_loaded"],"wc_currency_symbol":"\u00a3","wc_thousand_sep":",","wc_price_decimals":"2","price_format":"%1$s%2$s","wc_decimal_sep":".","wc_currency_pos":"left","mc_unit":"1","addons":[],"upload_method":"normal"};
//# sourceURL=wcpa-front-js-extra
https://discountcctvsupplier.co.uk/wp-content/plugins/woo-custom-product-addons-pro/assets/js/front-end.js
document.addEventListener( 'wpcf7submit', function ( event ) {
var detail = event.detail || {};
if ( 'mail_sent' !== detail.status ) {
return;
}
var apiResponse = detail.apiResponse || {};
if ( ! apiResponse.fb_pxl_code ) {
return;
}
try {
var s = document.createElement( 'script' );
s.textContent = apiResponse.fb_pxl_code;
document.head.appendChild( s );
} catch ( e ) {
// no-op
}
}, false );
jQuery(document).ready(function () {
if (typeof wp !== "undefined" && wp.hooks) {
wp.hooks.addAction('wcpa_fields_updated', 'wcpa', function (price, _fieldData) {
let ele = document.querySelector('.summary .price');
if(ele){
let totalPrice_exc_tax_fixed = parseFloat(price.totalPrice_exc_tax).toFixed(2);
let totalPrice_inc_tax_fixed = parseFloat(price.totalPrice_inc_tax).toFixed(2);
let code = '<span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">£</span>'+totalPrice_exc_tax_fixed+'</bdi></span> <small style="font-size: 12px;">ex. VAT</small> - <span class="woocommerce-Price-amount amount"><bdi><span class="woocommerce-Price-currencySymbol">£</span>'+totalPrice_inc_tax_fixed+'</bdi></span> <small style="font-size: 12px;">inc. VAT</small>';
ele.innerHTML = code;
}
})
}
});
jQuery(document).ready(function($) {
var wt_related_products = jQuery('.wt-related-products .owl-carousel');if ("function" === typeof wt_related_products.owlCarousel) {
wt_related_products.owlCarousel({
loop: false,
margin: 10,
nav: true,
navText: [
"<i class='dashicons dashicons-arrow-left-alt2 wt-left'></i>",
"<i class='dashicons dashicons-arrow-right-alt2 wt-right'></i>"
],
//autoplay: true,
autoplayHoverPause: true,
responsive: {
0: {
items: 1 },
600: {
items: 2 },
1000: {
items: 6 }
}
});
}
jQuery(".wt-related-products>.carousel-wrap>.owl-carousel>.owl-stage-outer>.owl-stage>.owl-item>div[class*='col-']").removeClass (function (index, css) {
return (css.match (/(^|\s)col-\S+/g) || []).join(' ');
});
/* Theme compatability for hover effect*/
});