/* growform client2 bundle.url: https://assets.growform.co/96896150-mmawu6km/form.bundle.js resolve.source: kv resolve.at: 2026-03-06T01:12:48.851Z form.source: api cache.age_ms: 0 kv.value_present: true fallback_used: false */ ;(function () { var EMBED_TYPE = "iFrame"; var FORM_ID = "69a86ec8cbb496c558624363"; var FORM_BUNDLE_URL = "https://assets.growform.co/96896150-mmawu6km/form.bundle.js"; // injected by worker (KV/memory/fallback) var FORM_DATA = {"data":{"form":{"_id":"69a86ec8cbb496c558624363","options":{"numberOfSteps":5,"dateFormat":"DD/MM/YYYY","progressBar":{"enable":true},"continueButton":{"continueText":"Next","submitText":"Get quote","backText":"Back"},"customStyles":{"width":{"unit":"px","value":580},"parentContainerMinHeight":{"value":0,"unit":"px"},"parentBackgroundImage":{"imageInitialHeight":1362,"imageInitialWidth":2066,"imageHeight":1362,"imageWidth":2066,"imageUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1597337140/uploads/qmsfk98ank3wfp1ehvyg.jpg"},"headerMarginTop":40,"parentBackgroundColor":"#ffffff","innerFormBackgroundColor":"#ffffff","innerFormBackgroundTransparency":"","primaryColor":"#322b6d","bodyTextColor":"#343434","parentContainerBackgroundType":"none","innerFormBackgroundType":"none","buttonBorderColor":"#808080","buttonColorSelected":"#fdfdfd","buttonBorderColorSelected":"#141313","footerMarginBottom":20,"errorColor":"#ff4e4e","buttonColor":"#f8f8f8","buttonTextColor":"#2b2b2b","inputLabelColor":"#a3a3a3","inputTextColor":"#000000","defaultFont":"Merriweather","sq_buttonFont":"Poppins","sq_buttonFontSize":15,"showShadows":"Yes","sq_buttonTextColor":"#343434","sq_buttonColor":"#FFFFFF","sq_buttonColorSelected":"#FFFFFF","sq_buttonBorderColor":"#DADADA","sq_buttonBorderColorSelected":"#1e1e1d","sq_buttonBannerColor":"#FFFFFF","rt_buttonFont":"Poppins","rt_buttonFontSize":15,"rt_buttonColor":"#FFFFFF","rt_buttonColorSelected":"#FFFFFF","rt_buttonTextColor":"#343434","rt_buttonBorderColor":"#DADADA","rt_buttonBorderColorSelected":"primary","inputLabelFont":"Poppins","inputFontSize":16,"continueSubmitButtonFontSize":15,"fullModeBackgroundColor":"#EBF2E8","canvasSetup":"minimal","sq_controlsColor":"#151514","progressColor":"#322b6d"},"localization":{"dateFormat":"MM/DD/YYYY"},"exportTransparentBackground":false,"customScript":"","customRedirectUrls":[{"url":"https://www.grandmarkservicecompany.com/quote-received/"}],"logo":null,"actionOnSubmit":"redirect","analyticsSettings":{"google_analytics":{"trackingId":"G-BKGHVGVSDZ"},"facebook":{"pixelId":"9485223781489821"}},"sendCustomRedirectQueryParams":true},"fields":{"Decorative Header_52363373085874":{"type":"Decorative Header","value":"
Thanks for your enquiry!
","width":12,"step":"complete","sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":null},"margins":{"marginTop":20},"stepId":"complete","v":2},"Decorative Header_797442086161467":{"type":"Decorative Header","value":"What's the building's address?
","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":null},"stepId":"acd45227cac332d443c4e1db","v":2},"Decorative Header_576559560634956":{"type":"Decorative Header","value":"How shall we get in touch?
","width":12,"step":5,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":null},"stepId":"ff4727c9498ef9c0a6c989d9","v":2},"email_907058157108782":{"type":"Email","label":"Your email address","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":3,"stepId":"ff4727c9498ef9c0a6c989d9","validationRules":{"required":false,"regex":"email"}},"phone_589083232390193":{"type":"Phone","label":"Your phone number","width":12,"margins":{"marginBottom":0},"step":5,"sortOrder":4,"helperText":"","stepId":"ff4727c9498ef9c0a6c989d9","showCountryCode":false},"Decorative_Paragraph_194067845817258":{"type":"Decorative Paragraph","value":"Thanks for your request. We'll be in contact in the next 1-2 working days.","width":12,"step":"complete","sortOrder":2,"margins":{"marginBottom":60},"stepId":"complete","v":2},"decorative_header_46751409231390":{"type":"Decorative Header","value":"What is the best time for you?
","width":12,"step":1,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":null},"stepId":"ac0ce1d8634334328d03ff33","margins":{"marginBottom":5},"v":2},"decorative_header_892646863007116":{"type":"Decorative Header","value":"When can we visit you?
","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":null},"stepId":"60c2d61a66a74bcb70ce6e49","margins":{"marginBottom":5},"v":2},"address_791048036833857":{"type":"Address","label":"Building address","width":12,"stepId":"acd45227cac332d443c4e1db","sortOrder":2,"margins":{"marginBottom":0},"validationRules":{"required":true}},"decorative_header_148937855441882":{"type":"Decorative Header","value":"What type of service do you need?
","width":12,"step":2,"sortOrder":1,"fieldStyle":{"fontSize":{"value":19,"unit":"px"},"fontWeight":null},"stepId":"2d95de6cbf33867267a18be6","margins":{"marginBottom":5},"v":2},"buttons_86552269379590":{"type":"Buttons","validationRules":{"required":true},"label":"Service type","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":2,"rt_buttonsPerRowMobile":1,"buttonsType":"Legacy","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes","height":50},"options":[{"text":"Roof Repair","id":"6358c2125d7d781a96af2837","image":null},{"text":"Roof Replacement","id":"5742d27ebbdebb2db2734d21","image":null},{"text":"Roof Inspection","id":"c0d3237c9619c32134b12c95","image":null},{"text":"Other","image":null,"id":"473b38d0b9316b8ad15669bb"}],"stepId":"2d95de6cbf33867267a18be6","sortOrder":2,"hideLabel":true,"imageStyles":{"rt_width":27}},"date_643184674839662":{"type":"Date","label":"Choose preferred date","width":12,"disablePast":true,"stepId":"60c2d61a66a74bcb70ce6e49","sortOrder":2,"validationRules":{"required":true}},"buttons_39956564884038":{"type":"Buttons","validationRules":{"required":true},"label":"","width":12,"multiple":false,"buttonStyle":{"rt_buttonsPerRow":2,"rt_buttonsPerRowMobile":1,"buttonsType":"Rectangle","spacing":20,"showControls":"Yes","rt_compactLayoutOnMobile":"Yes"},"options":[{"text":"8:00 AM to 10:00 AM","id":"2f76250110406af5006645fa"},{"text":"10:00 AM to 12:00 PM","id":"35c27faacd0e4825f56b429f"},{"text":"12:00 AM to 2:00 PM","id":"36838cfb2ade1c303c45b987"},{"text":"2:00 AM to 4:00 PM","id":"a82599a610fe939636b66bd1"},{"text":"4:00 AM to 6:00 PM","image":null,"id":"bf64892445d496be243c2f00"}],"stepId":"ac0ce1d8634334328d03ff33","sortOrder":2,"hideLabel":true},"name_163539827417517":{"type":"Name","label":"What is your name?","width":12,"hideLabel":true,"options":{"Firstname":{"value":null,"errorText":null,"validationRules":{"required":true}},"Lastname":{"value":null,"errorText":null,"validationRules":{"required":true}},"Prefix":{"value":null,"errorText":null}},"stepId":"ff4727c9498ef9c0a6c989d9","sortOrder":2,"hidePrefix":true},"hidden_376034740396857":{"type":"Hidden","hiddenFieldName":"gclid","width":12,"stepId":"acd45227cac332d443c4e1db","sortOrder":3},"hidden_354237326214401":{"type":"Hidden","hiddenFieldName":"fbclid","width":12,"stepId":"acd45227cac332d443c4e1db","sortOrder":4}},"ownedByUser":"626164f19f6e2a00226626af","formName":"Roofing Quote","personalisation":{"form_related_to":"Roofing"},"lastEdited":"2026-03-04T17:43:47.127Z","created":"2026-03-04T17:41:28.682Z","steps":[{"id":"acd45227cac332d443c4e1db","name":"Location info","sortOrder":1},{"id":"2d95de6cbf33867267a18be6","name":"Type of service","sortOrder":2,"copyOf":"60c2d61a66a74bcb70ce6e49"},{"id":"60c2d61a66a74bcb70ce6e49","name":"Date","sortOrder":3,"copyOf":"acd45227cac332d443c4e1db"},{"id":"ac0ce1d8634334328d03ff33","name":"Time","sortOrder":4,"copyOf":"8d53a2591d86a402dbecf0d3"},{"id":"ff4727c9498ef9c0a6c989d9","name":"Contact info","sortOrder":5}],"folderId":"69a86e67cbb496c5586242f4","screenshotUrl":"https://res.cloudinary.com/dqnjggegp/image/upload/v1772646126/growform-production/form-screenshots/69a86ec8cbb496c558624363.png","leadsCount":2,"isActive":true,"reportedSpam":null,"spamOcr":"Building address\nWhat's the building's address?\nNEXT Building address What's the building's address ? NEXT","__v":0},"accountIsActive":true,"accountIsFreeTrial":false}}; // ---- Utils ---- function safeJSONStringify(obj) { return JSON.stringify(obj) .replace(/<\/(script|style)/gi, '<\\/$1') .replace(//g, '--\\>') .replace(/\u2028/g, '\\u2028') .replace(/\u2029/g, '\\u2029'); } function preloadScript(href) { try { if (!href) return; if (document.querySelector('link[rel="preload"][href="' + href + '"]')) return; var l = document.createElement("link"); l.rel = "preload"; l.as = "script"; l.href = href; l.crossOrigin = ""; // allow cache reuse in iframe document.head.appendChild(l); } catch (_) {} } function parseQuery() { var out = {}; try { if (!window.location.search) return out; var usp = new URLSearchParams(window.location.search); usp.forEach(function (v, k) { out[k] = v; }); } catch (_) {} return out; } function buildIframeHTML(opts) { var html = '\n' + '\n' + '\n' + ' \n' + ' \n' + ' \n' + '\n' + '\n' + ' \n' + ' \n' + '