{"id":516,"date":"2022-07-29T15:20:41","date_gmt":"2022-07-29T15:20:41","guid":{"rendered":"https:\/\/startertemplatecloud.com\/g58\/?page_id=516"},"modified":"2026-10-22T15:48:42","modified_gmt":"2026-10-22T10:48:42","slug":"home","status":"publish","type":"page","link":"https:\/\/subhanelevator.com\/","title":{"rendered":"Elevator Company"},"content":{"rendered":"\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Roboto:wght@400;500;600;700&amp;family=Rubik:wght@400;500;600;700&amp;display=swap\">\n<style id=\"subhan-elevator-wordpress-host-css\" data-no-optimize=\"1\">\n\nbody:is(.page-id-516,.page-id-933) #primary.content-area{margin:0;padding:0}\nbody:is(.page-id-516,.page-id-933) #main.site-main{margin:0;padding:0}\nbody:is(.page-id-516,.page-id-933) .content-container.site-container{width:100%;max-width:none;padding:0;margin:0}\nbody:is(.page-id-516,.page-id-933) .entry-content-wrap{padding:0!important}\nbody:is(.page-id-516,.page-id-933) .entry-content{margin:0!important}\nbody:is(.page-id-516,.page-id-933) .entry-content>div{max-width:none;margin:0}\nbody:is(.page-id-516,.page-id-933) .entry-header,body:is(.page-id-516,.page-id-933) .entry-footer,body:is(.page-id-516,.page-id-933) .post-navigation{display:none}\nbody:is(.page-id-516,.page-id-933) .site-main>article{margin:0;padding:0;border:0}\n#subhan-elevator-journey[data-immersive=\"true\"]{position:fixed;inset:0;z-index:9990}\nbody.se-elevator-immersive{overflow:hidden}\nbody.se-elevator-immersive.se-mobile-scroll{overflow:visible;overscroll-behavior-y:none}\nbody.admin-bar #subhan-elevator-journey{--se-viewport-height:calc(100dvh - 32px)}\nbody.admin-bar #subhan-elevator-journey[data-immersive=\"true\"]{top:32px}\n@media(max-width:782px){body.admin-bar #subhan-elevator-journey{--se-viewport-height:calc(100dvh - 46px)}body.admin-bar #subhan-elevator-journey[data-immersive=\"true\"]{top:46px}}\n#subhan-native-form,#subhan-native-form *{all:revert;box-sizing:border-box;font-family:inherit}\n#subhan-native-form{display:block;color:#1a1a1a;line-height:normal;width:100%}\n#subhan-native-form .kb-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:17px;margin:0}\n#subhan-native-form .kadence-blocks-form-field{width:auto;padding:0;margin:0;min-width:0}\n#subhan-native-form .kb-form-field-6,#subhan-native-form .kb-submit-field{grid-column:1\/-1}\n#subhan-native-form .kb-form .required{color:#ff7011}\n#subhan-native-form .kb-form .kb-forms-submit{display:inline-flex;align-items:center;justify-content:space-between;gap:26px;padding:15px 21px;min-height:47px;border:0;font-size:11px;font-weight:500;transition:background .2s,transform .2s;background:#ff7011;color:white;box-shadow:0 6px 20px #ff70111f;cursor:pointer}\n#subhan-native-form .kb-form .kb-forms-submit:hover{background:#e66512;transform:translateY(-2px)}\n#subhan-native-form .kb-forms-submit svg{display:block;width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}\n#subhan-native-form .kb-form .verify{display:none}\n#subhan-native-form .kadence-blocks-form-message{margin-top:18px;font-size:13px;line-height:1.7}\n#subhan-native-form button:focus-visible,#subhan-native-form input:focus-visible,#subhan-native-form textarea:focus-visible{outline:2px solid #ff7011;outline-offset:4px}\n\n#subhan-native-form .kb-form label{display:block;font-size:9px;color:#444;margin-bottom:18px}\n#subhan-native-form .kb-form label>span{color:var(--orange)}\n#subhan-native-form .kb-form input,#subhan-native-form .kb-form textarea{display:block;width:100%;padding:10px 0;margin-top:5px;border:0;border-bottom:1px solid #0004;border-radius:0;background:none;color:#222;font-size:10px;line-height:1.7}\n#subhan-native-form .kb-form input::placeholder,#subhan-native-form .kb-form textarea::placeholder{font-size:9px;color:#aaa}\n#subhan-native-form .kb-form input[type=\"datetime-local\"]{height:38px;font-size:9px;min-width:0;max-width:100%}\n#subhan-native-form .kb-form textarea{resize:vertical;min-height:67px;max-height:120px}\n#subhan-native-form .kb-form .kb-forms-submit{width:100%;margin-top:5px}\n@media(max-height:800px) and (min-width:861px){#subhan-native-form .kb-form label{margin-bottom:13px}\n#subhan-native-form .kb-form input,#subhan-native-form .kb-form textarea{padding:8px 0;font-size:9px}}\n@media(max-height:650px) and (min-width:861px){#subhan-native-form .kb-form label{margin-bottom:10px}\n#subhan-native-form .kb-form input,#subhan-native-form .kb-form textarea{padding:6px 0;font-size:8px}\n#subhan-native-form .kb-form textarea{min-height:48px}}\n@media(max-width:600px){#subhan-native-form .kb-form label{font-size:9px;margin-bottom:20px}\n#subhan-native-form .kb-form input,#subhan-native-form .kb-form textarea{font-size:10px;padding:10px 0}\n#subhan-native-form .kb-form input::placeholder,#subhan-native-form .kb-form textarea::placeholder{font-size:8px}\n#subhan-native-form .kb-form input[type=\"datetime-local\"]{font-size:8px}\n#subhan-native-form .kb-form textarea{min-height:78px}\n#subhan-native-form .kb-form .kb-forms-submit{font-size:10px;padding:14px 17px}}\n@media(min-width:861px){#subhan-native-form .kb-form input,#subhan-native-form .kb-form textarea{font-size:12px}\n#subhan-native-form .kb-form label{font-size:10px}}\n@media(max-width:600px){#subhan-native-form .kb-form input,#subhan-native-form .kb-form textarea,#subhan-native-form .kb-form input[type=\"datetime-local\"]{font-size:16px;line-height:1.5}\n#subhan-native-form .kb-form input::placeholder,#subhan-native-form .kb-form textarea::placeholder{font-size:11px}\n#subhan-native-form .kb-form label{font-size:10px}}\n@media(max-width:600px){#subhan-native-form .kb-form label{font-size:12px}\n#subhan-native-form .kb-form input[type=\"datetime-local\"]{height:auto;min-height:44px}}\n#subhan-native-form .kb-form label{margin-bottom:0}\n#subhan-native-form .kb-form .kb-field{margin-bottom:18px}\n@media(max-height:780px) and (min-width:861px){#subhan-native-form .kb-form .kb-field{margin-bottom:13px}}\n@media(max-height:650px) and (min-width:861px){#subhan-native-form .kb-form .kb-field{margin-bottom:10px}}\n@media(max-width:600px){#subhan-native-form .kb-form{grid-template-columns:1fr}#subhan-native-form .kb-form .kb-field{margin-bottom:20px}#subhan-native-form .kb-form .kb-forms-submit{font-size:10px;padding:14px 17px}}\n@media(prefers-reduced-motion:reduce){#subhan-native-form *{animation:none!important;transition:none!important}}\n\n<\/style>\n<div id=\"subhan-elevator-journey\">\n<template shadowrootmode=\"open\" data-elevator-template>\n<style id=\"subhan-elevator-wordpress-css\" data-no-optimize=\"1\">\n:host{all:initial;display:block;width:100%;font-size:16px;line-height:normal;text-align:start;direction:ltr}\n\n:host{--global-palette1:#ff7011;--global-palette2:#ff8e3c;--global-palette3:#1a1a1a;--global-palette4:#494a4b;--global-palette5:#5b5b5c;--global-palette6:#777777;--global-palette7:#ebe3db;--global-palette8:#faf6f2;--global-palette9:#fff;--orange:#ff7011;--ink:#1a1a1a;--paper:#faf6f2;--ease:cubic-bezier(.65,0,.2,1);font-family:Roboto,Arial,sans-serif;color-scheme:light}\n*{box-sizing:border-box}:host{scroll-behavior:smooth}.se-journey-body{margin:0;background:var(--paper);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--orange);outline-offset:4px}svg{display:block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}[hidden]{display:none!important}.svg-definitions{position:absolute;width:0;height:0;overflow:hidden}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;z-index:100;top:10px;left:10px;transform:translateY(-200%);padding:12px;background:var(--orange);color:white}.skip-link:focus{transform:translateY(0)}\n.topbar{height:84px;background:white;border-bottom:1px solid #0001;display:flex;align-items:center;padding:0 3.5%;gap:28px;max-width:2000px;margin:auto;width:100%;z-index:25}.brand{display:flex;align-items:center;width:130px;height:84px;overflow:hidden;flex-shrink:0}.brand img{width:103px;height:103px;object-fit:contain}.header-links{display:flex;gap:32px;justify-content:center;align-items:center;flex:1;font:13px Rubik,Arial,sans-serif;color:#494a4b}.header-links a{position:relative;padding:10px 0}.header-links a:after{content:\"\";position:absolute;left:0;right:100%;bottom:1px;height:2px;background:var(--orange);transition:right .25s}.header-links a.active,.header-links a:hover{color:var(--orange)}.header-links a.active:after,.header-links a:hover:after{right:0}.header-actions{display:flex;align-items:center;gap:18px}.header-phone{display:flex;align-items:center;gap:10px;font-size:12px;white-space:nowrap}.header-phone svg{color:var(--orange);width:17px;height:17px}.view-toggle{display:flex;gap:7px;align-items:center;border:0;background:none;color:#777;font-size:9px;padding:8px}.view-symbol{font-size:20px;color:var(--orange)}\n.experience-shell{max-width:2000px;margin:auto;width:100%;padding:0 2.8%}.journey-topline{height:36px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:7px;letter-spacing:.13em;color:#999}.journey-topline>span:first-child{font-weight:600;color:#555}.journey-location{display:flex;gap:8px;align-items:center}.journey-location i{width:5px;height:5px;border-radius:50%;background:var(--orange)}.elevator-layout{display:grid;grid-template-columns:minmax(0,1fr) 185px;gap:18px}.shaft-frame{min-width:0;display:flex;flex-direction:column;padding:0 8px;background:linear-gradient(90deg,#939590,#d9d9d1 1%,#30322f 1.5%,#272927 2%,#292b29 98%,#bdc0b7 99%,#777a72);box-shadow:0 15px 35px #0002;position:relative}.shaft-frame:before,.shaft-frame:after{content:\"\";position:absolute;top:45px;bottom:35px;width:2px;background:linear-gradient(transparent,#ff701199,transparent);z-index:22;pointer-events:none}.shaft-frame:before{left:3px}.shaft-frame:after{right:3px}.frame-top{height:25px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 12px;background:linear-gradient(#72736e,#30332e 70%,#1b1e19);color:#bbbdb4}.frame-name{font-size:6px;letter-spacing:.13em}.frame-rivet,.panel-pin{width:4px;height:4px;border-radius:50%;background:#353833;box-shadow:inset 0 0 2px #111,0 1px #ddd6}.portal{position:relative;flex:1;min-width:0;overflow:hidden;background:var(--paper);border:2px solid #1a1d18}.frame-sill{height:17px;flex-shrink:0;display:flex;flex-direction:column;justify-content:space-around;background:linear-gradient(#555a4d,#c7cbba 25%,#767e6c 45%,#b7beaa 65%,#5a6650)}.frame-sill span{height:1px;background:#202b1980;width:100%}.floor{background:var(--paper);overflow:hidden}.floor-content{position:relative;padding:44px 5.2%;min-height:640px}.floor h1,.floor h2,.floor h3{font-family:Rubik,Arial,sans-serif;margin:0;font-weight:500}.floor h1{font-size:clamp(40px,4.6vw,76px);line-height:1.08;letter-spacing:-.045em;font-weight:600}.floor h2{font-size:clamp(32px,3.4vw,56px);line-height:1.16;letter-spacing:-.04em}.floor h2 span{color:var(--orange)}.floor h3{font-size:14px;line-height:1.4}.eyebrow{display:flex;gap:10px;align-items:center;font-size:8px;letter-spacing:.09em;line-height:1.8;margin:0 0 23px;text-transform:uppercase}.eyebrow-line{width:22px;height:2px;background:var(--orange);flex-shrink:0}.eyebrow-number{font:8px monospace;opacity:.5;margin-left:auto}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:26px;padding:15px 21px;min-height:47px;border:0;font-size:11px;font-weight:500;transition:background .2s,transform .2s}.button svg{width:17px;height:17px}.button-orange{background:var(--orange);color:white;box-shadow:0 6px 20px #ff70111f}.button-orange:hover{background:#e66512;transform:translateY(-2px)}.text-link{display:inline-flex;align-items:center;gap:22px;border-bottom:1px solid #5554;padding-bottom:7px;font-size:11px}.text-link svg{width:17px;height:17px;color:var(--orange)}\n.hero-floor{padding:0;color:white;background:#222;display:flex;align-items:center;isolation:isolate}.hero-photograph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:65% center;z-index:-3}.hero-shade{position:absolute;inset:0;background:linear-gradient(90deg,#111e,#111b 32%,#1114 58%,transparent 85%),linear-gradient(0deg,#111b,transparent 35%);z-index:-2}.hero-orange-line{position:absolute;top:0;bottom:0;left:0;width:4px;background:var(--orange)}.hero-copy{width:64%;padding:48px 0 97px 5.2%;position:relative;z-index:2}.hero-copy h1{max-width:680px}.hero-copy h1>span{display:block;color:var(--orange);font-weight:400;margin-top:9px}.hero-copy>.eyebrow{color:#ff8e3c;font-size:8px;margin-bottom:27px;max-width:90%}.hero-actions{display:flex;gap:28px;align-items:center;margin-top:29px}.hero-actions .button{min-width:150px}.hero-read-more{display:flex;gap:12px;align-items:center;font-size:11px}.hero-read-more svg{width:16px;height:16px;color:var(--orange)}.hero-caption{position:absolute;right:28px;top:29px;display:flex;align-items:center;gap:10px;font-size:6px;letter-spacing:.14em;color:#fff9}.caption-line{width:25px;height:1px;background:var(--orange)}.hero-bottom{position:absolute;bottom:25px;left:5.2%;right:5.2%;border-top:1px solid #fff3;padding-top:18px;display:flex;justify-content:space-between;gap:18px;font-size:6px;letter-spacing:.1em;color:#ddd}.hero-bottom a{display:flex;align-items:center;gap:10px;font-size:9px;letter-spacing:0}.hero-bottom svg{width:14px;height:14px;color:var(--orange)}\n.about-floor{padding:0;display:grid;grid-template-columns:.9fr 1.1fr}.about-photo{position:relative;overflow:hidden;background:#252525;min-height:640px}.about-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.about-photo-shade{position:absolute;inset:0;background:linear-gradient(0deg,#141414b0,transparent 65%)}.experience-badge{position:absolute;bottom:35px;left:30px;border-left:3px solid var(--orange);padding-left:20px;display:flex;align-items:center;gap:20px;color:white}.experience-badge strong{font:64px\/1 Roboto,Arial,sans-serif;letter-spacing:-.05em}.experience-badge strong span{color:var(--orange);font-size:38px;vertical-align:top}.experience-badge>span{font-size:9px;line-height:1.8;max-width:85px}.photo-corner{position:absolute;top:28px;left:28px;width:32px;height:32px;border-top:2px solid #fff8;border-left:2px solid #fff8}.about-copy{padding:37px 8%;align-self:center}.about-copy h2{font-size:clamp(27px,2.85vw,45px);margin-bottom:22px}.original-copy p{font-size:11px;line-height:1.95;color:#666;margin:0 0 15px}.benefits{list-style:none;padding:0;margin:22px 0 26px;display:flex;flex-direction:column;gap:12px}.benefits li{display:flex;gap:10px;align-items:center;font-size:10px}.benefits svg{width:16px;height:16px;color:var(--orange)}\n.information-floor{background:#1d1e1e;color:white;isolation:isolate;display:flex;flex-direction:column;justify-content:center;padding:45px 6%}.information-backdrop,.experience-background,.testimonials-backdrop{position:absolute;inset:0;overflow:hidden;z-index:-2}.information-backdrop img,.experience-background img,.testimonials-backdrop img{width:100%;height:100%;object-fit:cover;opacity:.23;filter:grayscale(.65)}.information-backdrop:after,.experience-background:after,.testimonials-backdrop:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,#131515c0,#17191966)}.information-heading>p:last-child{font:clamp(40px,4.7vw,76px)\/1.07 Rubik,Arial,sans-serif;letter-spacing:-.05em;margin:0 0 33px}.information-heading>p:last-child span{color:var(--orange)}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 45px;margin-top:15px}.contact-item{border-top:1px solid #fff3;position:relative;padding:23px 0 24px 37px;min-width:0}.contact-item>svg{position:absolute;left:0;top:23px;color:var(--orange);width:21px;height:21px}.contact-item-number{position:absolute;top:24px;right:0;font:7px monospace;color:#fff5}.contact-item h3{font-size:11px;color:#c9c9c3;font-weight:400;margin-bottom:11px}.contact-item p{font-size:14px;margin:0;word-break:break-word}.information-cta{align-self:flex-start;margin-top:18px}\n.gallery-floor{background:white;padding:31px 3.5%;display:flex;flex-direction:column}.section-topline{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:23px}.section-topline .eyebrow{margin:0;min-width:110px}.section-topline-note{font-size:6px;letter-spacing:.12em;color:#999}.gallery-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:12px;flex:1;min-height:480px;position:relative}.gallery-image{position:relative;overflow:hidden;display:block;background:#ddd;min-height:0}.gallery-image>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s}.gallery-image:hover>img{transform:scale(1.045)}.gallery-image-1{grid-column:1;grid-row:1}.gallery-image-2{grid-column:2;grid-row:1\/3}.gallery-image-3{grid-column:3;grid-row:1}.gallery-image-4{grid-column:1;grid-row:2}.gallery-image-5{grid-column:3;grid-row:2}.gallery-image-6{position:absolute;width:125px;height:145px;left:calc(33% - 25px);bottom:15px;border:5px solid white;box-shadow:0 10px 30px #0004;z-index:2}.gallery-overlay{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:25px 15px 13px;background:linear-gradient(transparent,#0009);color:white;font-size:5.5px;letter-spacing:.1em}.gallery-overlay i{font-size:19px;font-style:normal;color:var(--orange)}.gallery-image-6 .gallery-overlay>span{display:none}.gallery-lightbox{border:0;padding:0;background:transparent;max-width:95vw;max-height:95dvh;overflow:visible}.gallery-lightbox:not([open]){display:none}.gallery-lightbox::backdrop{background:#121414ee;backdrop-filter:blur(12px)}.gallery-lightbox>img{max-width:85vw;max-height:80dvh;object-fit:contain;display:block}.gallery-lightbox>#close-gallery{position:absolute;right:-12px;top:-18px;border:0;border-radius:50%;width:35px;height:35px;color:white;background:var(--orange)}.lightbox-toolbar{display:flex;align-items:center;justify-content:center;gap:28px;position:absolute;bottom:-43px;width:100%;color:white;font:10px monospace}.lightbox-toolbar button{display:grid;place-items:center;height:28px;width:28px;border-radius:50%;border:1px solid #fff6;background:none;color:white}\n.services-floor{display:flex;flex-direction:column;justify-content:center}.services-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:15px 25px;margin-bottom:31px}.services-heading>.eyebrow{width:100%;margin:0}.services-heading h2{font-size:clamp(32px,3.6vw,58px)}.services-heading .text-link{font-size:9px;margin-bottom:6px;gap:15px}.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.service-card{border-top:1px solid #0003;padding-top:18px;min-width:0;transition:border-color .3s}.service-card:hover{border-color:var(--orange)}.service-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.service-card-top svg{width:37px;height:37px;color:var(--orange);stroke-width:1.2}.service-card-top>span{font:8px monospace;color:#aaa}.service-card h3{font-size:14px;margin-bottom:10px}.service-card p{font-size:11px;line-height:1.85;color:#777;margin:0;max-width:245px}\n.experience-floor{display:flex;align-items:center;isolation:isolate;background:#181c1d;color:white;padding:55px 7%}.experience-content{width:100%}.experience-content h2{font-size:clamp(36px,4.2vw,67px);line-height:1.22;font-weight:400;max-width:680px}.experience-content h2 span{font-weight:600}.experience-content h2 small{display:inline-block;font-size:18px;letter-spacing:0;line-height:1.5;margin-top:19px;color:#ddd}.statistics{display:flex;gap:70px;max-width:600px;margin-top:47px;padding-top:33px;border-top:1px solid #fff3}.stat-number{font:clamp(75px,8.5vw,138px)\/.9 Roboto,Arial,sans-serif;letter-spacing:-.06em;color:var(--orange);margin:0 0 12px}.stat-number span{font-size:.55em;vertical-align:top;letter-spacing:0}.statistics h3{font-size:11px;color:#ddd;font-weight:400}.experience-stamp{position:absolute;right:37px;bottom:35px;display:flex;flex-direction:column;align-items:center;font-size:6px;letter-spacing:.2em;line-height:2;color:#aaa}.experience-stamp svg{margin-top:10px;color:var(--orange);width:23px;height:27px}\n.testimonials-floor{background:#242626;color:white;isolation:isolate;display:flex;flex-direction:column;justify-content:center;padding:37px 4.5%}.testimonials-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:29px}.testimonials-heading h2{font-size:clamp(33px,3.4vw,57px)}.testimonials-heading .eyebrow{margin-bottom:19px}.testimonials-heading>p{font-size:10px;line-height:1.9;color:#d3d2cc;max-width:335px;flex-basis:40%;margin:0 0 4px}.testimonial-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.testimonial-card{padding:23px 20px;background:white;color:var(--ink);border-bottom:3px solid var(--orange);box-shadow:0 15px 25px #0003;display:flex;flex-direction:column}.testimonial-stars{display:flex;align-items:center;justify-content:space-between;font-size:12px;letter-spacing:2px;height:20px;margin-bottom:18px;color:var(--orange)}.testimonial-stars>span{font:45px\/1 Georgia,serif;margin-top:17px;opacity:.45}.testimonial-card blockquote{font-size:10px;line-height:1.85;color:#666;margin:0 0 22px;flex:1}.testimonial-person{display:flex;align-items:center;gap:10px;border-top:1px solid #0001;padding-top:16px}.testimonial-person>img{width:39px;height:39px;object-fit:cover;border-radius:50%;flex-shrink:0}.testimonial-person h3{font-size:10px;line-height:1.5;margin-bottom:5px}.testimonial-person p{font-size:7px;line-height:1.6;color:#888;margin:0}\n.appointment-floor{display:grid;grid-template-columns:1fr 1fr;gap:6.5%;align-items:center}.appointment-copy h2{font-size:clamp(28px,2.85vw,47px);line-height:1.22;margin-bottom:23px}.appointment-copy>p:not(.eyebrow){font-size:11px;line-height:1.95;color:#777;margin:0 0 27px}.appointment-details{display:flex;flex-direction:column;gap:23px;border-top:1px solid #0002;padding-top:24px}.appointment-details span{display:block;font-size:8px;color:#777;margin-bottom:8px}.appointment-details h3{font:24px\/1.3 Roboto,Arial,sans-serif;letter-spacing:-.02em;color:var(--orange)}.appointment-form-panel{background:white;border:1px solid #e6ddd3;box-shadow:0 15px 35px #0001;padding:29px;min-width:0}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:17px}#enquiry-form label{display:block;font-size:9px;color:#444;margin-bottom:18px}#enquiry-form label>span{color:var(--orange)}#enquiry-form input,#enquiry-form textarea{display:block;width:100%;padding:10px 0;margin-top:5px;border:0;border-bottom:1px solid #0004;border-radius:0;background:none;color:#222;font-size:10px;line-height:1.7}#enquiry-form input::placeholder,#enquiry-form textarea::placeholder{font-size:9px;color:#aaa}#enquiry-form input[type=\"datetime-local\"]{height:38px;font-size:9px;min-width:0;max-width:100%}#enquiry-form textarea{resize:vertical;min-height:67px;max-height:120px}#enquiry-form>.button{width:100%;margin-top:5px}.form-note{font-size:7px;line-height:1.8;color:#929292;margin:13px 0 0}.enquiry-preview .eyebrow{font-size:7px;color:#888}.enquiry-preview h3{font-size:25px;line-height:1.25;letter-spacing:-.025em;margin-bottom:22px}.enquiry-preview pre{white-space:pre-wrap;font:10px\/1.8 Roboto,Arial,sans-serif;color:#777;max-height:220px;overflow:auto;margin:0 0 25px}.enquiry-preview .button{width:100%}.preview-actions{display:flex;justify-content:space-between;gap:15px;margin-top:19px}.preview-actions button{font-size:9px;background:none;border:0;border-bottom:1px solid #999;padding:0 0 4px;color:#666}\n.location-floor{display:grid;grid-template-columns:.7fr 1.3fr;gap:7%;align-items:center}.location-copy h2{font-size:clamp(34px,3.8vw,64px)}.location-copy>p:not(.eyebrow){font-size:13px;color:#777;margin:22px 0 30px}.location-copy .button{font-size:10px;gap:18px;padding:14px 17px}.location-details{display:flex;flex-direction:column;gap:14px;border-top:1px solid #0002;margin-top:35px;padding-top:25px;font-size:10px;color:#777}.location-details a{word-break:break-word}.map-panel{align-self:stretch;border:1px solid #ddd7ce;min-height:390px;position:relative;background:#e6e0d6}.map-panel iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.map-caption{position:absolute;bottom:0;left:0;right:0;background:#1a1a1ae0;color:white;padding:15px;font-size:6px;letter-spacing:.11em;pointer-events:none}\n.footer-floor{background:white;display:flex;align-items:center;justify-content:center}.full-footer{width:100%;display:flex;flex-direction:column}.footer-brand{display:grid;grid-template-columns:145px 1fr;gap:34px;align-items:center;border-bottom:1px solid #0001;padding-bottom:27px}.footer-brand>img{width:145px;height:120px;object-fit:contain}.footer-brand p{font-size:10px;line-height:1.95;color:#777;margin:0;max-width:650px}.footer-columns{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;padding:33px 0 30px}.footer-columns h2{font-size:13px;text-transform:uppercase;letter-spacing:.06em;line-height:1.4;margin-bottom:18px}.footer-columns h2:after{content:\"\";display:block;width:25px;height:2px;background:var(--orange);margin-top:11px}.footer-columns ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:13px}.footer-columns a{font-size:11px;color:#777}.footer-columns a:hover{color:var(--orange)}.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid #0001;padding-top:23px}.footer-bottom p{font-size:7px;color:#888;line-height:1.8;margin:0}.footer-bottom p>a{color:var(--orange)}.social-links{display:flex;gap:10px}.social-links a{display:grid;place-items:center;width:28px;height:28px;border:1px solid #8884;font-size:13px;color:#777}.social-links a:hover{background:var(--orange);border-color:var(--orange);color:white}\n.elevator-doors{display:none;position:absolute;inset:0;z-index:20;pointer-events:none}.door{position:absolute;top:0;bottom:0;width:50.1%;will-change:transform;transition:transform .88s var(--ease);background:repeating-linear-gradient(90deg,#fff1 0,#00000004 1px,#ffffff04 2px,transparent 3px),linear-gradient(98deg,#7d8077,#d1d3c7 14%,#a8af9d 35%,#cbd0be 57%,#989f8e 82%,#bfc9b1);box-shadow:inset 0 0 4px #142515,0 0 26px #0007}.door-left{left:0;border-right:2px solid #1b2a1a}.door-right{right:0;border-left:2px solid #132413;background:repeating-linear-gradient(90deg,#fff1 0,#00000004 1px,#ffffff04 2px,transparent 3px),linear-gradient(82deg,#bfc9b1,#989f8e 18%,#cbd0be 43%,#a8af9d 65%,#d1d3c7 86%,#7d8077)}.door:after{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,#ffaa551e,transparent 45%,#122b1533)}.door-panel{position:absolute;left:14%;right:14%;top:10%;bottom:9%;border:1px solid #566a483b;box-shadow:inset 0 0 1px #fff8}.door-etch{position:absolute;left:19%;top:41%;font:24px\/1.1 Rubik,Arial,sans-serif;letter-spacing:.15em;color:#606c54;text-shadow:0 1px #e6ebd8}.door-etch>span{display:block;font-size:7px;letter-spacing:.4em;margin-top:12px}.door-floor{position:absolute;left:29%;top:36%;font:82px\/1 \"Courier New\",monospace;color:#586c4d;opacity:.75;text-shadow:0 1px #e6ebd8}.door-orange-line{position:absolute;left:19%;top:63%;width:35px;height:2px;background:var(--orange);opacity:.7}.door-bottom{position:absolute;left:19%;bottom:13%;font-size:5px;letter-spacing:.09em;color:#5c694f;line-height:1.9}.door-seam{position:absolute;top:0;bottom:0;left:calc(50% - 1px);width:2px;background:#142b16;transition:opacity .3s}.doors-open .door-left{transform:translateX(-100.8%)}.doors-open .door-right{transform:translateX(100.8%)}.doors-open .door-seam{opacity:0}.is-closing .door{transition-duration:.55s}.is-travelling .door:after{background:linear-gradient(180deg,transparent,#ffaa5540,transparent);background-size:100% 200%;animation:shaft-travel .9s linear infinite}.travel-down.is-travelling .door:after{animation-direction:reverse}.is-travelling .shaft-frame{animation:ride-vibration .17s linear infinite}@keyframes shaft-travel{from{background-position:0 0}to{background-position:0 200%}}@keyframes ride-vibration{0%,100%{transform:translateY(0)}50%{transform:translateY(.45px)}}\n.control-panel{display:flex;flex-direction:column;position:relative;border:1px solid #565a52;border-radius:2px;padding:16px 17px 13px;background:repeating-linear-gradient(0deg,#ffffff02 0,#00000003 1px,transparent 2px),linear-gradient(90deg,#282a2a,#484b48 8%,#363a36 93%,#242824);box-shadow:0 12px 25px #0002,inset 0 1px #ccd6b633;color:#e1e5d6}.panel-top,.panel-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:5px;letter-spacing:.13em;color:#afb7a4}.floor-display{background:radial-gradient(ellipse at top,#1a1e19,#10140f);border:2px solid #242a20;box-shadow:inset 0 0 9px #0009,0 1px #b7c89555;border-radius:2px;margin-top:19px;height:120px;padding:13px 14px;display:flex;flex-direction:column;justify-content:space-between}.display-upper{display:flex;justify-content:space-between;align-items:center;font:6px monospace;letter-spacing:.15em;color:#a1aa8c}.display-upper>span:first-child{font-size:16px;color:var(--orange);line-height:1}.display-digit{font:47px\/.9 \"Courier New\",monospace;letter-spacing:.13em;color:#ff9b44;text-shadow:0 0 14px #ff70117a}#display-status{font:6px monospace;letter-spacing:.05em;color:#a8b696}.directory-heading{font-size:6px;letter-spacing:.12em;color:#b2baa5;text-align:center;margin:21px 0 17px}.floor-buttons{display:grid;grid-template-columns:1fr 1fr;gap:13px 8px}.floor-control{display:flex;flex-direction:column;align-items:center;gap:7px;background:none;border:0;padding:0;color:#c6cbbb}.floor-button-number{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1px solid #cbd0c278;background:linear-gradient(145deg,#c3c6b8,#9b9f90 60%,#b0b4a4);box-shadow:0 2px 4px #14200bc4,inset 0 1px 1px #e4ebd499;color:#353d2b;font:12px monospace;transition:box-shadow .25s,color .25s,background .25s}.floor-button-label{font-size:6px;line-height:1.7;white-space:nowrap}.floor-control.active .floor-button-number{color:#ff9a50;background:radial-gradient(#343d2a,#232d1b);border-color:#ff7011ab;box-shadow:0 0 0 2px #ff701122,0 0 18px #ff70113f,inset 0 0 7px #13220c}.floor-control.active .floor-button-label{color:#ffb785}.floor-control:hover .floor-button-number{box-shadow:0 0 0 3px #ff701133}.floor-control.requested .floor-button-number{box-shadow:0 0 0 2px var(--orange),0 0 10px #ff701166}.ride-controls{display:flex;justify-content:space-between;gap:10px;margin-top:21px;padding-top:18px;border-top:1px solid #bcd2a033}.ride-controls button{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1px solid #9fb58a8c;background:#343f2b;color:#d4dfbd}.ride-controls button:disabled{opacity:.3}.ride-controls svg{width:15px;height:15px;stroke-width:1.4}.sound-toggle{display:flex;align-items:center;gap:8px;background:none;border:0;padding:19px 0 14px;font-size:7px;color:#b6c2a7;margin-top:auto}.sound-toggle svg{width:13px;height:13px}.sound-indicator{width:5px;height:5px;border-radius:50%;background:#84966d;margin-left:auto}.sound-toggle[aria-pressed=\"true\"] .sound-indicator{background:var(--orange);box-shadow:0 0 7px #ff701166}.panel-bottom{border-top:1px solid #bcd2a022;padding-top:12px;font-size:4.5px}\n.ride-footer{display:flex;align-items:center;justify-content:space-between;gap:19px;height:48px;font-size:6px;letter-spacing:.1em;color:#90918b;flex-shrink:0}.current-stop{display:flex;align-items:center;gap:11px;min-width:0}.current-stop>span:first-child{font:10px monospace;color:var(--orange);min-width:13px}.footer-divider{width:1px;height:11px;background:#0003}.scroll-prompt{display:flex;align-items:center;gap:10px;background:none;border:0;color:#777;font-size:6px;letter-spacing:.1em;white-space:nowrap;padding:7px 0}.scroll-prompt svg{width:14px;height:14px;color:var(--orange)}.scroll-mouse{width:10px;height:16px;border:1px solid #999;border-radius:6px;position:relative}.scroll-mouse i{width:1px;height:4px;background:var(--orange);position:absolute;left:3.5px;top:3px;animation:mouse-scroll 1.8s infinite}@keyframes mouse-scroll{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(4px);opacity:1}}.footer-signature{font-size:5px;color:#aaa}\n.se-journey-body:not(.experience-on) .elevator-layout{display:block}.se-journey-body:not(.experience-on) .control-panel,.se-journey-body:not(.experience-on) .scroll-prompt{display:none}.se-journey-body:not(.experience-on) .topbar{position:sticky;top:0;z-index:30}.se-journey-body:not(.experience-on) .floor{scroll-margin-top:84px;border-bottom:1px solid #0001}.se-journey-body:not(.experience-on) .floor-content{min-height:690px}.se-journey-body:not(.experience-on) .gallery-floor{min-height:750px}.se-journey-body:not(.experience-on) .hero-copy{padding-top:90px;padding-bottom:135px}.se-journey-body:not(.experience-on) .floor-footer .floor-content{min-height:0}\n.se-journey-body.experience-on{height:100dvh;overflow:hidden;display:flex;flex-direction:column}.se-journey-body.experience-on .topbar{flex-shrink:0}.se-journey-body.experience-on .experience-shell{flex:1;min-height:0;display:flex;flex-direction:column}.se-journey-body.experience-on .elevator-layout{flex:1;min-height:0}.se-journey-body.experience-on .shaft-frame,.se-journey-body.experience-on .portal,.se-journey-body.experience-on .control-panel{min-height:0}.se-journey-body.experience-on #floor-contents,.se-journey-body.experience-on .floor{position:absolute;inset:0}.se-journey-body.experience-on .floor-content{height:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ff701166 transparent}.se-journey-body.experience-on .elevator-doors{display:block}.se-journey-body.experience-on .about-photo{min-height:100%}.se-journey-body.experience-on .gallery-grid{min-height:0}.se-journey-body.experience-on .floor.is-entering .floor-content{animation:arrive .85s ease-out both}@keyframes arrive{from{opacity:.6;filter:brightness(.86);transform:translateY(8px)}to{opacity:1;filter:brightness(1);transform:translateY(0)}}\n@media(max-height:800px) and (min-width:861px){.topbar{height:70px}.brand{height:70px}.journey-topline{height:29px}.ride-footer{height:39px}.floor-content{padding:29px 4.8%}.hero-copy{padding:31px 0 83px 5.2%}.hero-copy h1{font-size:clamp(38px,4.3vw,63px)}.hero-copy>.eyebrow{margin-bottom:20px}.hero-actions{margin-top:24px}.about-copy{padding:27px 7%}.about-copy h2{font-size:clamp(26px,2.55vw,39px);margin-bottom:18px}.original-copy p{font-size:10px;line-height:1.85}.benefits{gap:10px;margin:17px 0 20px}.benefits li{font-size:9px}.services-heading{margin-bottom:23px}.services-heading h2{font-size:clamp(31px,3.25vw,48px)}.services-grid{gap:20px}.service-card-top svg{width:29px;height:29px}.service-card h3{font-size:12px}.service-card p{font-size:10px}.testimonial-card{padding:18px 15px}.testimonial-card blockquote{font-size:9px;line-height:1.8}.testimonial-person>img{width:32px;height:32px}.testimonial-person h3{font-size:9px}.testimonial-person p{font-size:6px}.testimonials-heading h2{font-size:clamp(31px,3.25vw,47px)}.testimonials-heading>p{font-size:9px}.appointment-copy h2{font-size:clamp(26px,2.5vw,39px)}.appointment-copy>p:not(.eyebrow){font-size:10px}.appointment-details{gap:17px;padding-top:19px}.appointment-details h3{font-size:21px}.appointment-form-panel{padding:22px}#enquiry-form label{margin-bottom:13px}#enquiry-form input,#enquiry-form textarea{padding:8px 0;font-size:9px}.floor-display{height:95px;margin-top:14px;padding:10px}.display-digit{font-size:36px}.directory-heading{margin:16px 0 13px;font-size:5px}.floor-buttons{row-gap:9px}.floor-button-number{width:29px;height:29px}.floor-button-label{font-size:5.5px}.floor-control{gap:5px}.ride-controls{margin-top:15px;padding-top:13px}.sound-toggle{padding-top:13px;padding-bottom:11px}.panel-bottom{padding-top:9px}.information-heading>p:last-child{font-size:55px;margin-bottom:23px}.contact-item{padding-top:19px;padding-bottom:20px}.contact-item>svg,.contact-item-number{top:19px}.statistics{margin-top:35px;padding-top:28px}.stat-number{font-size:95px}.map-panel{min-height:0}.footer-brand>img{height:98px}.footer-columns{padding:25px 0}.footer-columns ul{gap:10px}}\n@media(max-height:650px) and (min-width:861px){.topbar{height:58px}.brand{height:58px}.brand img{width:88px;height:88px}.journey-topline{height:25px}.ride-footer{height:33px}.hero-copy h1{font-size:clamp(35px,3.8vw,55px)}.hero-copy{padding-top:24px;padding-bottom:74px}.floor-content{padding-top:24px;padding-bottom:24px}.hero-floor{padding:0}.about-floor{padding:0}.original-copy p{font-size:9px}.about-copy h2{font-size:29px}.services-heading h2{font-size:37px}.service-card{padding-top:12px}.service-card-top{margin-bottom:10px}.services-grid{row-gap:16px}.service-card p{font-size:9px}.service-card h3{font-size:11px}.testimonials-heading{margin-bottom:20px}.testimonials-heading h2{font-size:32px}.testimonial-card blockquote{font-size:8px}.testimonial-person{padding-top:12px}.testimonial-card{padding:16px 12px}.appointment-copy h2{font-size:27px}.appointment-copy>p:not(.eyebrow){font-size:9px}.appointment-form-panel{padding:18px}#enquiry-form label{margin-bottom:10px}#enquiry-form input,#enquiry-form textarea{padding:6px 0;font-size:8px}#enquiry-form textarea{min-height:48px}.button{min-height:39px;padding:11px 16px;font-size:10px}.floor-display{height:75px;margin-top:11px}.display-digit{font-size:26px}.floor-buttons{row-gap:6px}.floor-button-number{width:25px;height:25px}.floor-button-label{font-size:5px}.directory-heading{margin:12px 0}.ride-controls button{height:26px;width:26px}.ride-controls{margin-top:12px;padding-top:11px}.sound-toggle{padding-top:11px;padding-bottom:9px}.control-panel{padding:11px 14px}.information-heading>p:last-child{font-size:43px}.contact-item p{font-size:12px}.contact-item h3{font-size:9px}.experience-content h2{font-size:41px}.experience-content h2 small{font-size:14px}.statistics{margin-top:29px;padding-top:24px}.stat-number{font-size:80px}.footer-brand>img{height:80px}.footer-brand>p{font-size:9px}.footer-columns h2{font-size:11px}.footer-columns a{font-size:10px}.footer-columns{padding:22px 0}.location-copy h2{font-size:37px}}\n@media(max-width:1100px) and (min-width:861px){.elevator-layout{grid-template-columns:minmax(0,1fr) 164px;gap:15px}.header-links{gap:24px;font-size:12px}.header-actions{gap:12px}.header-phone{font-size:10px}.hero-copy{width:68%}.hero-copy h1{font-size:44px}.about-copy{padding:29px}.about-copy h2{font-size:30px}.services-heading h2{font-size:35px}.service-card h3{font-size:12px}.service-card p{font-size:10px}.services-grid{column-gap:18px}.testimonials-heading h2{font-size:35px}.testimonial-person{flex-direction:column;align-items:flex-start}.testimonial-card{padding:18px 13px}.appointment-copy h2{font-size:29px}.appointment-form-panel{padding:20px}.location-copy h2{font-size:39px}.contact-item p{font-size:12px}.contact-grid{column-gap:28px}}\n@media(max-width:860px){.topbar{height:73px;padding:0 4%;gap:15px}.brand{height:73px;width:90px}.brand img{width:93px;height:93px}.header-links{gap:19px;font-size:11px}.header-actions{gap:8px}.header-phone{font-size:10px}.view-label{display:none}.experience-shell{padding:0 3%}.journey-topline{height:31px;font-size:6px}.journey-center{display:none}.elevator-layout{grid-template-columns:minmax(0,1fr) 134px;gap:13px}.control-panel{padding:13px 11px}.panel-top{font-size:4px}.floor-display{height:91px;padding:10px}.display-digit{font-size:33px}#display-status{font-size:4.5px}.directory-heading{font-size:4.5px}.floor-buttons{gap:12px 5px}.floor-button-number{width:29px;height:29px;font-size:11px}.floor-button-label{font-size:4.6px}.ride-controls{gap:5px}.ride-controls button{height:27px;width:27px}.panel-bottom{font-size:3.5px}.sound-toggle{font-size:6px;gap:5px}.hero-copy{width:84%;padding:38px 0 100px 7%}.hero-copy h1{font-size:clamp(38px,5.7vw,53px)}.hero-photograph{object-position:61% center}.hero-shade{background:linear-gradient(90deg,#171717e8,#171717cc 35%,#17171766 80%),linear-gradient(0deg,#111b,transparent 35%)}.hero-copy>.eyebrow{font-size:7px;margin-bottom:23px}.hero-caption{display:none}.hero-bottom{left:7%;right:7%;font-size:5px}.hero-bottom>a{font-size:8px}.floor-content{padding:33px}.hero-floor,.about-floor{padding:0}.about-floor{grid-template-columns:1fr;align-content:start}.about-photo{height:300px;min-height:300px!important;max-height:300px}.about-copy{padding:32px}.about-copy h2{font-size:35px}.original-copy p{font-size:12px}.benefits li{font-size:11px}.information-floor{justify-content:flex-start}.information-heading>p:last-child{font-size:47px}.contact-item{padding-left:30px}.contact-item p{font-size:12px}.gallery-grid{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,230px);flex:unset;min-height:0}.gallery-image-1{grid-column:1;grid-row:1}.gallery-image-2{grid-column:2;grid-row:1\/3}.gallery-image-3{grid-column:1;grid-row:2}.gallery-image-4{grid-column:1;grid-row:3}.gallery-image-5{grid-column:2;grid-row:3}.gallery-image-6{left:calc(48% - 25px);bottom:125px;width:115px;height:135px}.services-floor{justify-content:flex-start}.services-heading h2{font-size:36px}.services-grid{grid-template-columns:1fr 1fr;gap:29px 25px}.services-heading{margin-bottom:33px}.service-card p{font-size:11px;max-width:100%}.experience-floor{align-items:flex-start}.experience-content h2{font-size:43px}.statistics{gap:40px}.stat-number{font-size:84px}.testimonials-floor{justify-content:flex-start}.testimonials-heading{display:block}.testimonials-heading h2{font-size:39px}.testimonials-heading>p{font-size:11px;max-width:100%;margin-top:24px}.testimonial-grid{grid-template-columns:1fr;gap:22px}.testimonial-card{padding:25px}.testimonial-card blockquote{font-size:12px;line-height:1.9}.testimonial-person{flex-direction:row;align-items:center}.testimonial-person h3{font-size:11px}.testimonial-person p{font-size:8px}.testimonial-person>img{width:44px;height:44px}.appointment-floor{grid-template-columns:1fr;align-content:start;gap:32px}.appointment-copy h2{font-size:35px}.appointment-copy>p:not(.eyebrow){font-size:12px}.appointment-details{display:grid;grid-template-columns:1fr 1fr;gap:20px}.appointment-details h3{font-size:21px}.appointment-form-panel{padding:27px}.location-floor{grid-template-columns:1fr;gap:32px;align-content:start}.location-copy h2{font-size:45px}.map-panel{min-height:390px}.footer-brand{display:block}.footer-brand>img{margin-left:-12px;margin-bottom:9px}.footer-brand>p{font-size:11px}.footer-columns h2{font-size:11px}.footer-columns a{font-size:10px}.footer-columns{gap:20px}.ride-footer{height:42px}.footer-signature{display:none}.current-stop{font-size:5px;letter-spacing:.04em}.scroll-prompt{font-size:5px;letter-spacing:.04em}.door-etch{font-size:19px;left:16%}.door-etch>span{font-size:6px}.door-floor{font-size:67px;left:25%}.door-bottom{font-size:4px;max-width:65%;left:16%}.se-journey-body:not(.experience-on) .floor{scroll-margin-top:73px}.se-journey-body:not(.experience-on) .about-floor{grid-template-columns:1fr 1fr}.se-journey-body:not(.experience-on) .about-photo{height:auto;min-height:100%!important;max-height:none}.se-journey-body:not(.experience-on) .services-grid{grid-template-columns:repeat(3,1fr)}.se-journey-body:not(.experience-on) .hero-copy{width:64%}.se-journey-body:not(.experience-on) .appointment-floor{grid-template-columns:1fr 1fr}}\n@media(max-width:600px){.topbar{height:65px;padding:0 4%;gap:10px}.brand{width:76px;height:64px}.brand img{width:80px;height:80px}.header-links{gap:17px;font-size:9px;justify-content:flex-end;white-space:nowrap}.header-links>a:first-child{display:none}.header-phone span{display:none}.header-phone{padding:8px 0}.header-actions{gap:5px}.view-toggle{padding:8px 4px}.view-symbol{font-size:19px}.journey-topline{height:29px;font-size:5.5px}.elevator-layout{display:flex;flex-direction:column;gap:10px}.shaft-frame{flex:1;padding:0 6px}.frame-top{height:20px}.frame-name{font-size:4.5px;letter-spacing:.08em}.frame-sill{height:12px}.hero-copy{width:91%;padding:35px 7% 100px}.hero-copy h1{font-size:clamp(34px,10.5vw,49px);line-height:1.08}.hero-copy>.eyebrow{font-size:6px;letter-spacing:.03em;max-width:100%;margin-bottom:23px;gap:7px}.hero-copy .eyebrow-line{width:16px}.hero-photograph{object-position:68% center}.hero-shade{background:linear-gradient(90deg,#151515ee,#151515cc 36%,#17171777 77%),linear-gradient(0deg,#111b,transparent 40%)}.hero-actions{gap:23px;margin-top:27px}.hero-actions .button{font-size:9px;padding:12px 17px;min-width:130px;min-height:40px}.hero-read-more{font-size:9px;gap:10px}.hero-bottom{display:block;bottom:23px;padding-top:17px}.hero-bottom>span{font-size:5px;display:block;margin-bottom:11px}.hero-bottom>a{font-size:8px}.eyebrow{font-size:7px;margin-bottom:20px}.floor-content{padding:30px 25px}.hero-floor,.about-floor{padding:0}.about-photo{height:250px;min-height:250px!important;max-height:250px}.about-copy{padding:30px 25px 36px}.about-copy h2{font-size:31px}.original-copy p{font-size:11px;line-height:1.95}.benefits{gap:14px;margin:24px 0 28px}.benefits li{font-size:10px}.experience-badge{left:23px;bottom:25px;gap:17px}.experience-badge strong{font-size:48px}.experience-badge strong span{font-size:28px}.information-heading>p:last-child{font-size:42px}.contact-grid{grid-template-columns:1fr;gap:0}.contact-item{padding:21px 0 24px 35px}.contact-item>svg{top:21px}.contact-item h3{font-size:10px}.contact-item p{font-size:14px}.gallery-floor{padding:26px 20px 35px}.gallery-grid{grid-template-rows:repeat(3,220px);gap:10px}.gallery-image-6{left:calc(48% - 25px);bottom:150px;width:100px;height:120px;border-width:4px}.gallery-overlay{font-size:4.5px;padding:24px 10px 12px}.section-topline-note{font-size:5px}.services-heading h2{font-size:31px}.services-heading h2 br{display:none}.services-grid{gap:27px 20px}.service-card h3{font-size:12px;line-height:1.55}.service-card p{font-size:10px;line-height:1.95}.service-card-top svg{width:32px;height:32px}.experience-content h2{font-size:35px;line-height:1.25}.experience-content h2 small{font-size:13px;margin-top:22px}.statistics{gap:38px;margin-top:43px}.stat-number{font-size:73px}.statistics h3{font-size:8px}.experience-stamp{right:28px;bottom:29px;font-size:5px}.testimonials-heading h2{font-size:36px}.testimonials-heading>p{font-size:11px;line-height:1.95}.testimonial-card{padding:24px}.testimonial-card blockquote{font-size:11px;line-height:1.95}.testimonial-person h3{font-size:10px}.testimonial-person>img{width:42px;height:42px}.appointment-copy h2{font-size:30px;line-height:1.23;letter-spacing:-.025em}.appointment-copy>p:not(.eyebrow){font-size:11px;line-height:1.95}.appointment-details{grid-template-columns:1fr;gap:22px}.appointment-details h3{font-size:24px}.appointment-form-panel{padding:25px 22px}.form-row{gap:16px}#enquiry-form label{font-size:9px;margin-bottom:20px}#enquiry-form input,#enquiry-form textarea{font-size:10px;padding:10px 0}#enquiry-form input::placeholder,#enquiry-form textarea::placeholder{font-size:8px}#enquiry-form input[type=\"datetime-local\"]{font-size:8px}#enquiry-form textarea{min-height:78px}#enquiry-form>.button{font-size:10px;padding:14px 17px}.location-copy h2{font-size:42px}.location-details{font-size:10px;gap:15px}.map-panel{min-height:340px}.map-caption{font-size:5px}.footer-brand>p{font-size:10px}.footer-brand>img{width:130px;height:107px}.footer-columns{grid-template-columns:1fr 1fr;gap:33px 25px;padding:32px 0 35px}.footer-columns h2{font-size:11px;margin-bottom:19px}.footer-columns ul{gap:14px}.footer-bottom{flex-direction:column;align-items:flex-start;gap:20px}.footer-bottom p{font-size:7px}.control-panel{height:111px;flex-shrink:0;display:grid;grid-template-columns:48px minmax(0,1fr) 26px;grid-template-rows:67px 13px;gap:7px 11px;padding:10px 12px 8px}.panel-top,.panel-bottom,.directory-heading{display:none}.floor-display{grid-column:1;grid-row:1;align-self:center;height:48px;width:48px;padding:6px;margin:0;border-width:1px}.display-upper{font-size:4px}.display-upper>span:first-child{font-size:8px}.display-digit{font-size:21px;text-align:center;line-height:1;margin-left:3px}#display-status{display:none}.floor-buttons{grid-column:2;grid-row:1;grid-template-columns:repeat(5,1fr);grid-template-rows:1fr 1fr;gap:4px 3px;align-items:center}.floor-control{display:block;justify-self:center;padding:2px;min-height:30px}.floor-button-number{width:27px;height:27px;font-size:10px}.floor-button-label{display:none}.ride-controls{grid-column:3;grid-row:1;align-self:center;display:flex;flex-direction:column;gap:5px;padding:0;margin:0;border:0}.ride-controls button{height:24px;width:24px}.ride-controls svg{height:12px;width:12px}#replay-doors{display:none}.sound-toggle{grid-column:1\/3;grid-row:2;align-self:center;justify-self:start;margin:0;padding:0;gap:5px;font-size:6px;height:13px}.sound-toggle svg{height:11px;width:11px}.sound-indicator{height:4px;width:4px;margin-left:4px}.control-panel:after{content:\"SELECT A FLOOR\";position:absolute;right:13px;bottom:11px;font-size:4px;letter-spacing:.12em;color:#b8cba7}.ride-footer{height:34px;gap:7px}.current-stop{font-size:4.5px;gap:8px;letter-spacing:.02em}.current-stop>span:first-child{font-size:8px;min-width:9px}.current-stop #footer-label{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.footer-divider{height:9px}.scroll-prompt{font-size:4.5px;gap:6px;letter-spacing:.03em}.scroll-prompt svg{height:11px;width:11px}.scroll-mouse{width:8px;height:12px}.scroll-mouse i{left:2.5px;top:2px;height:3px}.door-panel{left:12%;right:12%}.door-etch{font-size:16px;left:16%;top:42%;letter-spacing:.12em}.door-etch>span{font-size:5px;letter-spacing:.26em;margin-top:10px}.door-floor{font-size:58px;left:27%;top:38%}.door-orange-line{left:16%;width:27px}.door-bottom{font-size:3.5px;max-width:65%;left:16%;letter-spacing:.05em}.se-journey-body:not(.experience-on) .floor{scroll-margin-top:65px}.se-journey-body:not(.experience-on) .floor-content{min-height:0}.se-journey-body:not(.experience-on) .hero-floor{min-height:720px}.se-journey-body:not(.experience-on) .hero-copy{width:88%;padding-top:77px;padding-bottom:137px}.se-journey-body:not(.experience-on) .about-floor,.se-journey-body:not(.experience-on) .appointment-floor{grid-template-columns:1fr}.se-journey-body:not(.experience-on) .about-photo{height:270px;min-height:270px!important}.se-journey-body:not(.experience-on) .services-grid{grid-template-columns:1fr 1fr}.se-journey-body:not(.experience-on) .gallery-floor{min-height:0}}\n@media(max-width:600px) and (max-height:750px){.hero-copy{padding-top:23px;padding-bottom:90px}.hero-copy h1{font-size:clamp(31px,9.7vw,43px)}.hero-copy>.eyebrow{font-size:5.5px;margin-bottom:17px}.hero-actions{margin-top:20px}.hero-actions .button{min-height:37px;padding:11px 15px;font-size:8px;min-width:120px}.hero-bottom{bottom:17px;padding-top:13px}.hero-bottom>span{font-size:4.5px;margin-bottom:9px}}\n@media(max-width:370px){.topbar{gap:6px}.brand{width:68px}.brand img{width:73px;height:73px}.header-links{gap:12px;font-size:8px}.header-actions{gap:3px}.control-panel{column-gap:7px;padding:10px 10px 8px;grid-template-columns:44px minmax(0,1fr) 24px}.floor-display{width:44px;height:46px}.floor-button-number{width:24px;height:24px;font-size:9px}.floor-buttons{gap:4px 2px}.floor-control{padding:2px 0}.current-stop #footer-label{max-width:100px}.form-row{grid-template-columns:1fr}.stat-number{font-size:63px}.statistics{gap:32px}}\n@media(prefers-reduced-motion:reduce){:host{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}\n\/* Long floors can scroll internally; keep real business copy comfortable to read. *\/\n@media(min-width:861px){.original-copy p{font-size:13px;line-height:1.85}.benefits li{font-size:11px}.service-card h3{font-size:16px}.service-card p{font-size:12px;line-height:1.85}.testimonial-card blockquote{font-size:11px;line-height:1.85}.testimonial-person h3{font-size:11px}.testimonial-person p{font-size:8px}.appointment-copy>p:not(.eyebrow){font-size:12px;line-height:1.85}.footer-brand>p{font-size:12px}.footer-columns a{font-size:12px}#enquiry-form input,#enquiry-form textarea{font-size:12px}#enquiry-form label{font-size:10px}}\n@media(max-width:600px){.original-copy p,.appointment-copy>p:not(.eyebrow),.testimonials-heading>p{font-size:13px;line-height:1.85}.service-card p{font-size:12px;line-height:1.8}.testimonial-card blockquote{font-size:12px;line-height:1.85}.footer-brand>p{font-size:12px}.benefits li{font-size:11px}#enquiry-form input,#enquiry-form textarea,#enquiry-form input[type=\"datetime-local\"]{font-size:16px;line-height:1.5}#enquiry-form input::placeholder,#enquiry-form textarea::placeholder{font-size:11px}#enquiry-form label{font-size:10px}}\n\/* Auto margins center short content without clipping the beginning of long floors. *\/\n.se-journey-body.experience-on .hero-floor,.se-journey-body.experience-on .experience-floor,.se-journey-body.experience-on .footer-floor{align-items:flex-start}\n.se-journey-body.experience-on .hero-copy,.se-journey-body.experience-on .experience-content,.se-journey-body.experience-on .full-footer{margin-block:auto}\n.se-journey-body.experience-on .services-floor,.se-journey-body.experience-on .testimonials-floor,.se-journey-body.experience-on .information-floor{justify-content:flex-start}\n.se-journey-body.experience-on .services-heading,.se-journey-body.experience-on .testimonials-heading,.se-journey-body.experience-on .information-heading{margin-top:auto}\n.se-journey-body.experience-on .services-grid,.se-journey-body.experience-on .testimonial-grid,.se-journey-body.experience-on .information-cta{margin-bottom:auto}\n.form-note{font-size:11px;color:#666}.enquiry-preview pre{font-size:12px;line-height:1.8}.enquiry-preview pre:focus-visible{outline:2px solid var(--orange);outline-offset:4px}.preview-actions button{font-size:12px;min-height:40px;padding:8px 0}.gallery-lightbox>#close-gallery{width:44px;height:44px}.lightbox-toolbar{bottom:-53px}.lightbox-toolbar button{width:44px;height:44px;font-size:18px}\n@media(max-width:600px){\n  .header-links{font-size:11px;gap:14px}.eyebrow{font-size:9px}.hero-copy>.eyebrow{font-size:8px}.service-card h3{font-size:14px}.testimonial-person h3{font-size:12px}.testimonial-person p{font-size:10px}.footer-columns a{font-size:12px}\n  .form-row{grid-template-columns:1fr}#enquiry-form label{font-size:12px}#enquiry-form input[type=\"datetime-local\"]{height:auto;min-height:44px}\n  .control-panel{height:136px;grid-template-columns:48px minmax(0,1fr) 32px;grid-template-rows:84px 20px;gap:7px 8px}.floor-buttons{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px 3px}.floor-control{width:100%;height:40px;min-width:0;min-height:40px;padding:4px 0}.floor-button-number{width:32px;height:32px;font-size:12px;margin:auto}.ride-controls button{width:32px;height:32px}.ride-controls svg{width:16px;height:16px}.sound-toggle{height:20px;font-size:10px}.sound-toggle svg{width:15px;height:15px}.control-panel:after{font-size:7px;letter-spacing:.04em;bottom:12px}.current-stop,.scroll-prompt{font-size:7px}.current-stop #footer-label{max-width:120px}.scroll-prompt{gap:5px}\n}\n@media(max-width:370px){.header-links{font-size:10px;gap:10px}.control-panel{grid-template-columns:44px minmax(0,1fr) 32px;column-gap:6px}.floor-button-number{width:28px;height:28px;font-size:11px}.current-stop #footer-label{max-width:85px}.scroll-prompt{font-size:6px}}\n@media print{.topbar,.journey-topline,.control-panel,.elevator-doors,.ride-footer,.frame-top,.frame-sill{display:none!important}.se-journey-body.experience-on{height:auto;overflow:visible;display:block}.experience-shell{padding:0}.elevator-layout{display:block!important}.shaft-frame{padding:0;background:none;box-shadow:none}.portal{border:0;overflow:visible}.se-journey-body.experience-on #floor-contents,.se-journey-body.experience-on .floor{position:static}.se-journey-body.experience-on .floor[hidden]{display:block!important}.se-journey-body.experience-on .floor-content{height:auto;overflow:visible;min-height:0;padding:40px}section{break-inside:avoid}.hero-floor{min-height:550px!important}.gallery-grid{grid-template-rows:220px 220px!important}}\n\n\/* Phone journey: native page scrolling moves the COMPLETE car through the shaft. *\/\n.se-journey-body.se-mobile-scroll{height:auto;min-height:100svh;overflow-x:hidden;overflow-y:auto;display:block;overscroll-behavior-y:none}\n.se-journey-body.experience-on.mobile-scroll .topbar{position:fixed;inset:0 0 auto;height:65px}\n.se-journey-body.experience-on.mobile-scroll .experience-shell{position:fixed;inset:65px 0 0;max-width:none;padding:0 12px;background:#181c1b;overflow:hidden}\n.se-journey-body.experience-on.mobile-scroll .journey-topline{height:27px;flex-shrink:0;color:#adb5ab}\n.se-journey-body.experience-on.mobile-scroll .journey-topline>span:first-child{color:#e1e5dc}\n.se-journey-body.experience-on.mobile-scroll .elevator-layout{position:relative;isolation:isolate;overflow:hidden;gap:10px;padding-top:7px;background:repeating-linear-gradient(0deg,transparent 0 180px,#737d6d44 181px 183px,transparent 184px 360px),linear-gradient(90deg,#252c25 0 3%,#9aab8955 3% 3.5%,#101612 3.5% 96.5%,#9aab8955 96.5% 97%,#252c25 97%);background-position:0 var(--rail-y,0px),0 0}\n.se-journey-body.experience-on.mobile-scroll .shaft-frame{z-index:1;flex:1;will-change:transform;animation:none;transform:translate3d(0,var(--car-y,0%),0) scale(var(--car-scale,1));transform-origin:50% 50%;box-shadow:0 12px 30px #0008}\n.se-journey-body.experience-on.mobile-scroll .floor-content{overflow:hidden;overscroll-behavior:auto;scroll-behavior:auto;animation:none;touch-action:pan-y}\n.se-journey-body.experience-on.mobile-scroll .door{transition:none}\n.se-journey-body.experience-on.mobile-scroll .door-left{transform:translateX(calc(var(--door-open,0) * -100.8%))}\n.se-journey-body.experience-on.mobile-scroll .door-right{transform:translateX(calc(var(--door-open,0) * 100.8%))}\n.se-journey-body.experience-on.mobile-scroll .door-seam{transition:none;opacity:calc(1 - var(--door-open,0))}\n.se-journey-body.experience-on.mobile-scroll .door:after{animation:none;background:linear-gradient(180deg,#ffaa551e,transparent 45%,#122b1533)}\n.se-journey-body.experience-on.mobile-scroll .frame-top{height:28px}\n.se-journey-body.experience-on.mobile-scroll .frame-name{font-size:6px;letter-spacing:.08em}\n.se-journey-body.experience-on.mobile-scroll .frame-sill{height:19px}\n.se-journey-body.experience-on.mobile-scroll .door-etch{font-size:clamp(19px,5.5vw,25px);left:12%;letter-spacing:.09em}\n.se-journey-body.experience-on.mobile-scroll .door-etch>span{font-size:7px;letter-spacing:.24em}\n.se-journey-body.experience-on.mobile-scroll .door-floor{font-size:75px}\n.se-journey-body.experience-on.mobile-scroll .door-bottom{font-size:5px;left:12%;max-width:78%;letter-spacing:.03em}\n.se-journey-body.experience-on.mobile-scroll .control-panel{display:grid;flex:none;z-index:3;height:156px;padding:10px 10px 8px;grid-template-columns:44px minmax(0,1fr) 88px;grid-template-rows:92px 36px;gap:8px;border-color:#646e60;box-shadow:0 -8px 15px #0007}\n.se-journey-body.experience-on.mobile-scroll .floor-display{height:36px;width:44px;grid-row:2;grid-column:1;margin:0;padding:3px}\n.se-journey-body.experience-on.mobile-scroll .floor-display .display-digit{font-size:20px}\n.se-journey-body.experience-on.mobile-scroll .display-upper{font-size:4px}\n.se-journey-body.experience-on.mobile-scroll .display-upper>span:first-child{font-size:10px}\n.se-journey-body.experience-on.mobile-scroll .floor-display #display-status{display:none}\n.se-journey-body.experience-on.mobile-scroll .floor-buttons{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(2,44px);grid-row:1;grid-column:1\/-1;gap:4px;overflow:visible;min-width:0;touch-action:pan-y;align-self:start;height:92px}\n.se-journey-body.experience-on.mobile-scroll .floor-buttons::-webkit-scrollbar{display:none}\n.se-journey-body.experience-on.mobile-scroll .floor-control{width:100%;min-width:0;height:44px;padding:4px;min-height:44px}\n.se-journey-body.experience-on.mobile-scroll .floor-button-number{width:36px;height:36px;font-size:13px}\n.se-journey-body.experience-on.mobile-scroll .ride-controls{grid-row:2;grid-column:3;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;gap:4px;margin:0;padding:0;border:0}\n.se-journey-body.experience-on.mobile-scroll .ride-controls button{height:36px;min-height:36px;width:42px}\n.se-journey-body.experience-on.mobile-scroll #replay-doors{display:none}\n.se-journey-body.experience-on.mobile-scroll .sound-toggle{grid-row:2;grid-column:2;justify-content:flex-start;font-size:10px;height:36px;padding:0;margin:0;gap:6px}\n.se-journey-body.experience-on.mobile-scroll .control-panel:after{display:none}\n.se-journey-body.experience-on.mobile-scroll .ride-footer{height:44px;flex-shrink:0;color:#bdc7b5}\n.se-journey-body.experience-on.mobile-scroll .current-stop{display:none}\n.se-journey-body.experience-on.mobile-scroll .scroll-prompt{width:100%;justify-content:center;font-size:9px;letter-spacing:.04em;min-height:40px;color:#e6eddf}\n.se-journey-body.experience-on.mobile-scroll .scroll-prompt svg{color:var(--orange)}\n@media print{.se-journey-body.se-mobile-scroll{height:auto!important}.se-scroll-runway{display:none!important}.se-journey-body.experience-on.mobile-scroll .experience-shell{position:static;overflow:visible;background:none}.se-journey-body.experience-on.mobile-scroll .shaft-frame{transform:none!important}.se-journey-body.experience-on.mobile-scroll .elevator-layout{overflow:visible;background:none}}\n\n\/* Clear travel feedback stays in the shaft while the car is outside the view. *\/\n.transit-status{display:none}\n.se-journey-body.experience-on.mobile-scroll .transit-status{position:absolute;inset:0 0 166px;z-index:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;text-align:center;pointer-events:none;color:#edf1e8}\n.transit-symbol{display:flex;flex-direction:column;align-items:center;gap:5px;height:64px;margin-bottom:3px}\n.transit-symbol i{display:block;width:22px;height:22px;flex-shrink:0;border-top:3px solid var(--orange);border-left:3px solid var(--orange);transform:rotate(45deg);animation:transit-chevron 1.5s ease-in-out infinite}\n.transit-symbol i:nth-child(2){animation-delay:.16s}.transit-symbol i:nth-child(3){animation-delay:.32s}\n.transit-status[data-direction=\"down\"] .transit-symbol{transform:rotate(180deg)}\n.transit-title{font:500 clamp(16px,4.4vw,21px)\/1.5 Rubik,Arial,sans-serif;letter-spacing:-.02em;margin:0;max-width:270px}\n.transit-destination{display:flex;align-items:center;justify-content:center;gap:12px;margin:0;color:#aebda7;font:12px\/1.5 Roboto,Arial,sans-serif}\n#travel-status-floor{font:24px\/1.2 'Courier New',monospace;color:#ff963e}\n.transit-progress{height:3px;width:96px;margin-top:8px;background:#ffffff18;overflow:hidden;border-radius:3px}\n.transit-progress span{display:block;width:35%;height:100%;background:var(--orange);animation:transit-progress 1.6s ease-in-out infinite}\n@keyframes transit-chevron{0%,100%{opacity:.22}50%{opacity:1}}\n@keyframes transit-progress{0%{transform:translateX(-110%)}100%{transform:translateX(390%)}}\n.se-journey-body.experience-on:not(.mobile-scroll) .door{transition-duration:1.08s}\n.se-journey-body.experience-on.is-closing:not(.mobile-scroll) .door{transition-duration:.7s}\n@media print{.transit-status{display:none!important}}\n\n\/* Real service destinations support the floor experience and the site hierarchy. *\/\n.service-details{margin-top:28px;padding-top:23px;border-top:1px solid #0002}\n.floor .service-details h3{font-size:18px;margin:0 0 12px}\n.service-details>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 20px}\n.service-details a{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:9px 0;border-bottom:1px solid #0001;color:#494a4b;font-size:13px;line-height:1.5}\n.service-details a:hover{color:var(--orange)}.service-details svg{width:14px;height:14px;flex-shrink:0;color:var(--orange)}\n@media(max-width:600px){.service-details>div{gap:4px 14px}.service-details a{font-size:12px}}\n\n\/* SHARED SITE CHROME *\/\n\/* Shared, responsive navigation and footer for the homepage and service pages. *\/\n.se-site-header{--se-header-height:84px;position:relative;display:flex;align-items:center;gap:24px;height:var(--se-header-height);min-height:var(--se-header-height);width:100%;max-width:none;margin:0;padding:0 clamp(20px,3.5vw,64px);background:#fff;color:#192321;border-bottom:1px solid #1b302014;z-index:40;font-family:Arial,Helvetica,sans-serif;line-height:1.4;box-sizing:border-box}\n.se-site-header *,.se-site-footer *{box-sizing:border-box}\n.se-site-header a,.se-site-footer a{text-decoration:none}\n.se-site-header button{font:inherit;cursor:pointer}\n.se-site-header .se-brand{display:flex;align-items:center;gap:11px;flex:none;color:#192321;text-decoration:none}\n.se-brand img{display:block;width:52px;height:52px;object-fit:contain;border-radius:50%;background:#fff}\n.se-brand-name{display:block;font-size:18px;font-weight:800;line-height:1.1;letter-spacing:.07em;white-space:nowrap}\n.se-brand-name small{display:block;margin-top:6px;font-size:9px;font-weight:500;letter-spacing:.23em;color:#69736e}\n.se-site-nav{display:flex;align-items:center;justify-content:center;gap:clamp(16px,2.1vw,32px);flex:1;min-width:0}\n.se-site-nav>a,.se-services-menu>summary{display:flex;align-items:center;gap:8px;min-height:44px;padding:10px 0;font-size:13px;font-weight:600;color:#46514b;white-space:nowrap;cursor:pointer;list-style:none;text-decoration:none}\n.se-services-menu>summary::-webkit-details-marker{display:none}\n.se-services-menu>summary:after{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin:-4px 1px 0 3px;transition:transform .2s}\n.se-services-menu[open]>summary:after{transform:rotate(225deg);margin-top:4px}\n.se-site-nav>a:hover,.se-site-nav>a.active,.se-site-nav>a[aria-current],.se-services-menu>summary:hover,.se-services-menu[open]>summary{color:#ac4000}\n.se-services-menu{position:relative}\n.se-services-panel{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 18px;width:510px;padding:20px;background:#fff;border:1px solid #e4e7df;border-top:3px solid #ff7011;border-radius:0 0 12px 12px;box-shadow:0 18px 45px #142c2524}\n.se-services-panel a{display:flex;align-items:center;min-height:44px;padding:10px 8px;border-radius:6px;color:#46514b;font-size:13px;line-height:1.5;text-decoration:none}\n.se-services-panel a:hover,.se-services-panel a[aria-current]{background:#fff3e9;color:#923700}\n.se-services-panel .se-service-all{grid-column:1\/-1;justify-content:space-between;padding-bottom:13px;margin-bottom:4px;border-bottom:1px solid #e4e7df;border-radius:0;font-size:12px;font-weight:700;letter-spacing:.02em;color:#923700}\n.se-header-call{display:inline-flex;align-items:center;justify-content:center;gap:10px;flex:none;min-height:44px;padding:12px 17px;border-radius:6px;background:#ff7011;color:#192321;font-size:13px;font-weight:700;white-space:nowrap;text-decoration:none;transition:background .2s}\n.se-site-header .se-header-call:hover{color:#192321;background:#ff8d42}\n.se-header-call svg{width:17px;height:17px;display:block;fill:none;stroke:currentColor;stroke-width:1.7}\n.se-call-mobile{display:none}\n.se-menu-toggle{display:none;align-items:center;justify-content:center;flex:none;width:44px;height:44px;padding:12px;border:1px solid #dce1d9;border-radius:6px;background:#fff;color:#192321}\n.se-menu-toggle>span{position:relative;display:block;width:18px;height:2px;background:currentColor;transition:background .15s}\n.se-menu-toggle>span:before,.se-menu-toggle>span:after{content:'';position:absolute;left:0;width:18px;height:2px;background:currentColor;transition:transform .15s,top .15s}\n.se-menu-toggle>span:before{top:-6px}.se-menu-toggle>span:after{top:6px}\n.se-menu-open .se-menu-toggle>span{background:transparent}.se-menu-open .se-menu-toggle>span:before{top:0;transform:rotate(45deg)}.se-menu-open .se-menu-toggle>span:after{top:0;transform:rotate(-45deg)}\n.se-site-nav .view-toggle{display:flex;align-items:center;gap:7px;min-height:44px;padding:8px;border:0;background:#f4f5f0;border-radius:5px;font-size:11px;color:#46514b}\n.se-site-nav .view-symbol{font-size:19px;color:#a43d00}\n.se-site-header :is(a,button,summary):focus-visible,.se-site-footer :is(a,summary):focus-visible{outline:2px solid #ff7011;outline-offset:4px}\n.se-local .se-site-header{position:sticky;top:0}\n.se-site-footer{width:100%;background:#12231f;color:#eff2eb;font-family:Arial,Helvetica,sans-serif;line-height:1.7;text-align:left;position:relative;isolation:isolate}\n.se-footer-inner{width:min(1240px,100%);margin:auto;padding:40px clamp(24px,4vw,64px) 22px}\n.se-footer-invitation{display:flex;align-items:center;justify-content:space-between;gap:28px;padding-bottom:32px;border-bottom:1px solid #eff2eb26}\n.se-site-footer .se-footer-eyebrow{margin:0 0 9px;font-size:10px;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:#ffab74}\n.se-site-footer .se-footer-heading{margin:0;font-size:clamp(25px,3vw,39px);line-height:1.15;font-weight:600;letter-spacing:-.035em;color:#fff}\n.se-site-footer .se-footer-heading span{color:#ffab74}\n.se-site-footer .se-footer-cta{display:inline-flex;align-items:center;justify-content:space-between;gap:24px;min-height:48px;padding:12px 19px;background:#ff7011;border:1px solid #ff7011;border-radius:6px;color:#16211c;font-size:13px;font-weight:700;white-space:nowrap;text-decoration:none}\n.se-site-footer .se-footer-cta:hover{background:#ff9a58;color:#16211c}\n.se-footer-grid{display:grid;grid-template-columns:1.2fr 1.25fr .8fr;gap:32px;padding:32px 0 25px}\n.se-footer-brand{display:flex;align-items:center;gap:11px;width:fit-content;margin-bottom:16px;color:#fff}\n.se-footer-brand img{width:52px;height:52px;display:block;object-fit:contain;background:white;border-radius:50%}\n.se-footer-brand strong{font-size:14px;letter-spacing:.06em;line-height:1.3}.se-footer-brand small{display:block;margin-top:5px;font-size:9px;letter-spacing:.12em;font-weight:400;color:#c4d1c9}\n.se-site-footer .se-footer-title{font-size:12px;font-weight:700;letter-spacing:.06em;line-height:1.5;margin:0 0 13px;color:#fff}\n.se-site-footer .se-footer-address{margin:0 0 9px;font-size:12px;line-height:1.85;color:#c4d1c9;font-style:normal;max-width:285px}\n.se-site-footer .se-footer-contact a{display:flex;align-items:center;min-height:38px;width:fit-content;font-size:12px;color:#d5dfd7;overflow-wrap:anywhere}\n.se-site-footer .se-footer-contact .se-footer-phone{font-size:19px;font-weight:600;color:#fff;letter-spacing:.015em}\n.se-footer-hours{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:11px;color:#c4d1c9}\n.se-footer-hours i{width:6px;height:6px;background:#ff9c55;border-radius:50%;flex:none}\n.se-site-footer ul{list-style:none;padding:0;margin:0;display:grid;gap:0}\n.se-footer-services ul{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:17px}\n.se-site-footer li{margin:0;padding:0;min-width:0}\n.se-site-footer li a{display:flex;align-items:center;min-height:38px;padding:6px 0;font-size:12px;line-height:1.6;color:#c4d1c9;text-decoration:none}\n.se-site-footer a:hover{color:#ffab74}\n.se-footer-building-types{padding:15px 0 18px;border-top:1px solid #eff2eb26;display:flex;flex-wrap:wrap;gap:6px 19px}\n.se-footer-building-types a{display:inline-flex;align-items:center;min-height:32px;font-size:11px;color:#c4d1c9}\n.se-product-range{border-top:1px solid #eff2eb26;padding:13px 0;color:#c4d1c9}\n.se-product-range summary{font-size:11px;cursor:pointer;padding:7px 0;width:fit-content}\n.se-product-range p{margin:10px 0!important;font-size:11px;line-height:1.9;max-width:940px;color:#c4d1c9}\n.se-footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:17px;border-top:1px solid #eff2eb26;font-size:10px;color:#b5c7bb}\n.se-footer-bottom p{margin:0!important;font-size:10px;color:#b5c7bb}\n.se-footer-bottom a{display:flex;align-items:center;gap:10px;min-height:36px;white-space:nowrap;color:#dce6dc}\n.floor-footer .footer-floor{padding:0;background:#12231f}\n.floor-footer .full-footer{margin:0!important;display:block}\n@media(min-width:961px){.se-site-header .se-menu-toggle{display:none!important}}\n@media(max-width:1100px) and (min-width:961px){.se-site-header{gap:16px;padding-inline:24px}.se-brand-name{font-size:15px}.se-brand-name small{font-size:8px}.se-brand img{width:46px;height:46px}.se-site-nav{gap:15px}.se-header-call{font-size:12px;padding-inline:12px}.se-site-nav .view-label{display:none}}\n@media(max-width:960px){\n .se-site-header{--se-header-height:72px;gap:12px;padding-inline:24px;flex-wrap:wrap;height:auto;min-height:var(--se-header-height)}\n .se-site-header .se-brand{margin-right:auto}.se-brand img{width:46px;height:46px}.se-brand-name{font-size:16px}.se-brand-name small{font-size:8px}\n .se-site-nav{order:4;flex:0 0 100%;justify-content:flex-start;flex-wrap:wrap;gap:4px 22px;padding-bottom:12px}\n .se-site-header[data-navigation-ready]{height:var(--se-header-height);flex-wrap:nowrap}\n .se-site-header[data-navigation-ready] .se-menu-toggle{display:flex}\n .se-site-header[data-navigation-ready] .se-site-nav{display:none}\n .se-site-header.se-menu-open .se-site-nav{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:flex-start;gap:0;height:calc(100dvh - var(--se-header-height));max-height:calc(100dvh - var(--se-header-height));overflow-y:auto;overscroll-behavior:contain;padding:14px 24px 40px;background:#fff;border-top:1px solid #e4e7df;box-shadow:0 15px 25px #12231f1a;z-index:50;scrollbar-width:thin;touch-action:pan-y}\n .se-site-nav>a,.se-services-menu>summary{min-height:52px;padding:13px 2px;font-size:15px;border-bottom:1px solid #e4e7df}\n .se-services-menu>summary{justify-content:space-between}\n .se-services-panel{position:static;transform:none;width:100%;box-shadow:none;grid-template-columns:repeat(2,minmax(0,1fr));padding:9px 12px;background:#f5f6f1;border:0;border-radius:0}\n .se-services-panel a{padding:11px 4px;min-height:44px;font-size:13px}\n .se-site-nav .view-toggle{margin-top:18px;align-self:flex-start;min-height:44px;font-size:12px}.se-site-nav .view-label{display:block}\n .se-footer-grid{grid-template-columns:1fr 1.15fr;gap:30px}.se-footer-pages{grid-column:1\/-1}.se-footer-pages ul{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px 15px}\n}\n@media(max-width:600px){\n .se-site-header{--se-header-height:65px;padding-inline:14px;gap:9px}.se-brand img{width:39px;height:39px}.se-site-header .se-brand{gap:8px}.se-brand-name{font-size:14px}.se-brand-name small{font-size:7px;margin-top:5px;letter-spacing:.18em}\n .se-header-call{padding:10px;min-width:44px;min-height:44px;gap:6px}.se-call-desktop{display:none}.se-call-mobile{display:inline;font-size:12px}\n .se-menu-toggle{width:44px;height:44px}.se-site-header.se-menu-open .se-site-nav{padding-inline:20px}\n .se-services-panel{column-gap:14px;padding-inline:10px}.se-services-panel a{font-size:12px}\n .se-footer-inner{padding:30px 23px 20px}.se-footer-invitation{display:block;padding-bottom:25px}.se-site-footer .se-footer-heading{font-size:30px;max-width:280px}.se-footer-cta{margin-top:21px;min-height:48px}\n .se-footer-grid{grid-template-columns:1fr;gap:27px;padding:27px 0 20px}.se-footer-pages{grid-column:auto}.se-footer-pages ul{grid-template-columns:repeat(2,minmax(0,1fr))}.se-site-footer .se-footer-title{font-size:12px;margin-bottom:9px}\n .se-site-footer li a,.se-site-footer .se-footer-contact a{font-size:13px;min-height:44px}.se-site-footer .se-footer-contact .se-footer-phone{font-size:22px}.se-site-footer .se-footer-address{font-size:13px;max-width:none}.se-footer-hours{font-size:12px;margin-top:10px}\n .se-footer-building-types{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;padding:15px 0}.se-footer-building-types a{min-height:44px;font-size:12px}\n .se-product-range summary{min-height:44px;padding:11px 0;font-size:12px}.se-product-range p{font-size:12px;line-height:1.85}.se-footer-bottom{align-items:flex-start;gap:8px;flex-direction:column;padding-top:18px}.se-footer-bottom p{font-size:11px}.se-footer-bottom a{font-size:12px;min-height:44px}\n}\n@media(prefers-reduced-motion:reduce){.se-site-header *,.se-site-header *:before,.se-site-header *:after{transition:none!important}}\n@media print{.se-site-header,.se-site-footer{display:none!important}}\n\n.se-journey-body.experience-on{height:var(--se-viewport-height,100dvh)}\n\n<\/style>\n<div class=\"se-journey-body\"><a class=\"skip-link\" href=\"#main\">Skip to content<\/a><svg class=\"svg-definitions\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\"><defs>\n  <symbol id=\"icon-arrow-right\" viewBox=\"0 0 24 24\"><path d=\"M4 12h15m-6-6 6 6-6 6\"\/><\/symbol>\n  <symbol id=\"icon-arrow-down\" viewBox=\"0 0 24 24\"><path d=\"M12 4v15m-6-6 6 6 6-6\"\/><\/symbol>\n  <symbol id=\"icon-arrow-up\" viewBox=\"0 0 24 24\"><path d=\"M12 20V5m-6 6 6-6 6 6\"\/><\/symbol>\n  <symbol id=\"icon-lift\" viewBox=\"0 0 32 36\"><path d=\"M3 33V3h26v30M16 3v30m-5-16 5-5 5 5\"\/><\/symbol>\n  <symbol id=\"icon-phone\" viewBox=\"0 0 24 24\"><path d=\"m7 3 3 5-2 2c2 3 4 5 7 6l2-2 4 3-1 4C11 22 2 13 3 5Z\"\/><\/symbol>\n  <symbol id=\"icon-email\" viewBox=\"0 0 24 24\"><path d=\"M3 5h18v14H3Zm0 0 9 8 9-8\"\/><\/symbol>\n  <symbol id=\"icon-clock\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 6v6l4 2\"\/><\/symbol>\n  <symbol id=\"icon-pin\" viewBox=\"0 0 24 24\"><path d=\"M19 10c0 5-7 11-7 11S5 15 5 10a7 7 0 1 1 14 0Z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.5\"\/><\/symbol>\n  <symbol id=\"icon-check\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"m7 12 3 3 7-7\"\/><\/symbol>\n  <symbol id=\"icon-commercial\" viewBox=\"0 0 40 40\"><path d=\"M7 35V6h23v29M3 35h34M12 11h3m6 0h3m-12 7h3m6 0h3m-12 7h3m6 0h3m-7 10v-6h6v6\"\/><\/symbol>\n  <symbol id=\"icon-home\" viewBox=\"0 0 40 40\"><path d=\"m3 18 17-14 17 14M8 15v20h24V15M16 35V23h8v12M13 19h3m8 0h3\"\/><\/symbol>\n  <symbol id=\"icon-hospital\" viewBox=\"0 0 40 40\"><path d=\"M8 35V6h24v29M3 35h34M20 10v10m-5-5h10M16 35v-9h8v9\"\/><\/symbol>\n  <symbol id=\"icon-freight\" viewBox=\"0 0 40 40\"><path d=\"m6 12 14-7 14 7v17l-14 7-14-7Zm0 0 14 7 14-7M20 19v17M13 8l14 7v8\"\/><\/symbol>\n  <symbol id=\"icon-dumbwaiter\" viewBox=\"0 0 40 40\"><path d=\"M7 35V5h26v30M3 35h34M12 13h16v15H12Zm8 0v15M20 8V5m0 29v6\"\/><\/symbol>\n  <symbol id=\"icon-types\" viewBox=\"0 0 40 40\"><path d=\"M5 6h12v12H5Zm18 0h12v12H23ZM5 24h12v12H5Zm18 0h12v12H23Z\"\/><\/symbol>\n  <symbol id=\"icon-sound\" viewBox=\"0 0 24 24\"><path d=\"M11 5 6 9H3v6h3l5 4V5Zm4 3c3 2 3 6 0 8m3-11c5 4 5 10 0 14\"\/><\/symbol>\n<\/defs><\/svg>\n<header class=\"topbar se-site-header\"><a class=\"se-brand\" href=\"\/\" aria-label=\"Subhan Elevator home\"><img data-recalc-dims=\"1\" decoding=\"async\" data-no-lazy=\"1\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2026\/03\/Elevator-service.webp?resize=52%2C52&#038;ssl=1\" alt=\"Subhan Elevator\" width=\"52\" height=\"52\"><span class=\"se-brand-name\">SUBHAN<small>ELEVATOR \u00b7 ISLAMABAD<\/small><\/span><\/a><nav class=\"se-site-nav\" aria-label=\"Primary navigation\" id=\"site-navigation\"><a href=\"\/\" data-header-floor=\"0\">Home<\/a><a href=\"#Aboutus\" data-header-floor=\"1\">About Us<\/a><details class=\"se-services-menu\"><summary data-header-floor=\"4\">Services<\/summary><div class=\"se-services-panel\"><a class=\"se-service-all\" href=\"https:\/\/subhanelevator.com\/index.php\/services\/\">All elevator services <span aria-hidden=\"true\">\u2197<\/span><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-installation\/\">Installation<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-maintenance-amc\/\">Maintenance &amp; AMC<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-repair\/\">Elevator Repair<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-modernization\/\">Modernization<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/emergency-elevator-repair\/\">Emergency Repair<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-spare-parts\/\">Spare Parts<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-inspection\/\">Inspection<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/home-elevators\/\">Home Elevators<\/a><\/div><\/details><a href=\"https:\/\/subhanelevator.com\/index.php\/elevator-guides\/\">Guides<\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/contact\/\">Contact<\/a><button type=\"button\" id=\"view-toggle\" class=\"view-toggle\" hidden aria-pressed=\"false\"><span class=\"view-symbol\" aria-hidden=\"true\">\u2637<\/span><span class=\"view-label\">Standard view<\/span><\/button><\/nav><a class=\"se-header-call\" href=\"tel:+923367764717\" aria-label=\"Call Subhan Elevator on 0336 7764717\"><svg aria-hidden=\"true\" viewBox=\"0 0 24 24\"><path d=\"M8 3 4 5c-2 7 8 17 15 15l2-4-5-3-2 2c-2-1-4-3-5-5l2-2-3-5Z\"\/><\/svg><span class=\"se-call-desktop\">0336 7764717<\/span><span class=\"se-call-mobile\">Call<\/span><\/a><button type=\"button\" class=\"se-menu-toggle\" aria-label=\"Open navigation menu\" aria-controls=\"site-navigation\" aria-expanded=\"false\" hidden><span aria-hidden=\"true\"><\/span><\/button><\/header>\n<div class=\"experience-shell\"><div class=\"journey-topline\"><span>SUBHAN ELEVATOR<\/span><span class=\"journey-center\">THE NEXT LEVEL OF ELEVATOR SERVICES<\/span><span class=\"journey-location\"><i><\/i>ISLAMABAD<\/span><\/div><div class=\"elevator-layout\"><div class=\"shaft-frame\"><div class=\"frame-top\"><span class=\"frame-rivet\"><\/span><span class=\"frame-name\">SUBHAN ELEVATOR \u00b7 QUALITY AND RELIABILITY<\/span><span class=\"frame-rivet\"><\/span><\/div><div class=\"portal\"><div id=\"floor-contents\" role=\"region\" aria-label=\"Subhan Elevator homepage\"><section id=\"main\" class=\"floor floor-home\" data-floor=\"0\" data-label=\"Home\" data-caption=\"TOP ELEVATOR COMPANY IN ISLAMABAD\" aria-labelledby=\"home-title\">\n  <div class=\"floor-content hero-floor\">\n    <img data-recalc-dims=\"1\" data-no-lazy=\"1\" class=\"hero-photograph\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2026\/08\/elevator-service-in-islamabad.webp?resize=1290%2C726&#038;ssl=1\" data-original-src=\"https:\/\/subhanelevator.com\/wp-content\/uploads\/2026\/08\/elevator-service-in-islamabad.webp\" alt=\"elevator company\" width=\"1290\" height=\"726\" fetchpriority=\"high\" decoding=\"async\">\n    <div class=\"hero-shade\"><\/div><div class=\"hero-orange-line\"><\/div>\n    <div class=\"hero-copy\">\n      <p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Top Elevator company in Islamabad<span class=\"eyebrow-number\">G<\/span><\/p>\n      <h1 id=\"home-title\" tabindex=\"-1\">Best Elevator Service In Islamabad. <span>Experience Quality and Reliability<\/span><\/h1>\n      <div class=\"hero-actions\"><a class=\"button button-orange\" href=\"tel:03367764717\">Call Now <svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-phone\"\/><\/svg><\/a><a class=\"hero-read-more\" href=\"#Aboutus\">About Subhan Elevator<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><\/div>\n    <\/div>\n    <div class=\"hero-caption\"><span class=\"caption-line\"><\/span><span>SUBHAN ELEVATOR<\/span><\/div>\n    <div class=\"hero-bottom\"><span>INSTALLATIONS \u00b7 MAINTENANCE \u00b7 REPAIRS<\/span><a href=\"#Aboutus\">Step into the next level <svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-down\"\/><\/svg><\/a><\/div>\n  <\/div><\/section><section id=\"Aboutus\" class=\"floor floor-about\" data-floor=\"1\" data-label=\"Why Choose Us\" data-caption=\"RELIABLE, SAFE, AND STYLISH ELEVATORS\" aria-labelledby=\"about-title\">\n  <div class=\"floor-content about-floor\">\n    <div class=\"about-photo\"><img data-recalc-dims=\"1\" data-no-lazy=\"1\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.03-PM.webp?w=1290&#038;ssl=1\" data-original-src=\"https:\/\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.03-PM.webp\" alt=\"Subhan Elevator installation team\" loading=\"lazy\" decoding=\"async\"><div class=\"about-photo-shade\"><\/div><div class=\"experience-badge\"><strong>20<span>+<\/span><\/strong><span>years of experience<\/span><\/div><div class=\"photo-corner\"><\/div><\/div>\n    <div class=\"about-copy\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Why Choose Us<span class=\"eyebrow-number\">01<\/span><\/p>\n      <h2 id=\"about-title\" tabindex=\"-1\">Why We\u2019re the Top Choice for Reliable, Safe, and Stylish Elevators<\/h2>\n      <div class=\"original-copy\"><p>With 20 years of experience in elevator services, Subhan Elevator is the Top elevator company in Islamabad. We have highly skilled technicians, a customer-centric approach, advanced solutions, and responsive support to meet your specific needs. We\u2019re committed to excellence, using only high-grade materials and advanced engineering to ensure your elevator performs at it\u2019s best.<\/p><p>Subhan Elevator is your trusted elevator company for seamless, reliable, and top-tier elevator services. Specializing in installations, maintenance, and repairs, we bring safety, efficiency, and style to every project. Discover how we elevate spaces with innovative solutions and unmatched quality service.<\/p><\/div>\n      <ul class=\"benefits\"><li><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-check\"\/><\/svg>Unmatched Reliability<\/li><li><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-check\"\/><\/svg>Safety-Driven Excellence<\/li><li><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-check\"\/><\/svg>Customer-Focused Solutions<\/li><\/ul>\n      <a href=\"https:\/\/subhanelevator.com\/index.php\/services\/\" class=\"text-link\">View Elevator Services<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a>\n    <\/div>\n  <\/div><\/section><section id=\"Information\" class=\"floor floor-information\" data-floor=\"2\" data-label=\"Information\" data-caption=\"EMAIL \u00b7 PHONE \u00b7 HOURS \u00b7 LOCATION\" aria-label=\"Information\">\n  <div class=\"floor-content information-floor\">\n    <div class=\"information-backdrop\"><img data-recalc-dims=\"1\" data-no-lazy=\"1\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2026\/08\/elevator-service-in-islamabad.webp?w=1290&#038;ssl=1\" data-original-src=\"https:\/\/subhanelevator.com\/wp-content\/uploads\/2026\/08\/elevator-service-in-islamabad.webp\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/div>\n    <div class=\"information-heading\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Subhan Elevator<span class=\"eyebrow-number\">02<\/span><\/p><p>Quality and<br><span>Reliability<\/span><\/p><\/div>\n    <div class=\"contact-grid\">\n      <div class=\"contact-item\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-email\"\/><\/svg><span class=\"contact-item-number\">01<\/span><h3>Please Email Us<\/h3><p><a href=\"mailto:Subhanelevators@gmail.com\">Subhanelevators@gmail.com<\/a><\/p><\/div>\n      <div class=\"contact-item\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-phone\"\/><\/svg><span class=\"contact-item-number\">02<\/span><h3>Call Us<\/h3><p><a href=\"tel:+923367764717\">+(92) 3367764717<\/a><\/p><\/div>\n      <div class=\"contact-item\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-clock\"\/><\/svg><span class=\"contact-item-number\">03<\/span><h3>We are open<\/h3><p>9:00 AM \u2013 10:00 PM<\/p><\/div>\n      <div class=\"contact-item\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-pin\"\/><\/svg><span class=\"contact-item-number\">04<\/span><h3>location<\/h3><p>Ghauri Town Islamabad<\/p><\/div>\n    <\/div>\n    <a class=\"button button-orange information-cta\" href=\"#Contact\">Make An Appointment <svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a>\n  <\/div><\/section><section id=\"Gallery\" class=\"floor floor-gallery\" data-floor=\"3\" data-label=\"Gallery\" data-caption=\"THE ORIGINAL SUBHAN ELEVATOR GALLERY\" aria-label=\"Gallery\">\n  <div class=\"floor-content gallery-floor\"><div class=\"section-topline\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Gallery<span class=\"eyebrow-number\">03<\/span><\/p><span class=\"section-topline-note\">SUBHAN ELEVATOR<\/span><\/div><div class=\"gallery-grid\"><a class=\"gallery-image gallery-image-1\" href=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.04-PM-e1731670621314.webp?resize=960%2C637&amp;ssl=1\" data-gallery=\"0\" aria-label=\"Open Subhan Elevator project photograph 1\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.04-PM-e1731670621314.webp?resize=960%2C637&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.04-PM-e1731670621314.webp?resize=960%2C637&amp;ssl=1\" alt=\"Subhan Elevator project photograph 1\" loading=\"lazy\" decoding=\"async\" ><span class=\"gallery-overlay\"><span>01 \/ SUBHAN ELEVATOR<\/span><i>\u2197<\/i><\/span><\/a><a class=\"gallery-image gallery-image-2\" href=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.05-PM-1.webp?resize=576%2C1024&amp;ssl=1\" data-gallery=\"1\" aria-label=\"Open Subhan Elevator project photograph 2\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.05-PM-1.webp?resize=576%2C1024&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.05-PM-1.webp?resize=576%2C1024&amp;ssl=1\" alt=\"Subhan Elevator project photograph 2\" loading=\"lazy\" decoding=\"async\" ><span class=\"gallery-overlay\"><span>02 \/ SUBHAN ELEVATOR<\/span><i>\u2197<\/i><\/span><\/a><a class=\"gallery-image gallery-image-3\" href=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.55-PM.webp?resize=768%2C1024&amp;ssl=1\" data-gallery=\"2\" aria-label=\"Open Subhan Elevator project photograph 3\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.55-PM.webp?resize=768%2C1024&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.55-PM.webp?resize=768%2C1024&amp;ssl=1\" alt=\"Subhan Elevator project photograph 3\" loading=\"lazy\" decoding=\"async\" ><span class=\"gallery-overlay\"><span>03 \/ SUBHAN ELEVATOR<\/span><i>\u2197<\/i><\/span><\/a><a class=\"gallery-image gallery-image-4\" href=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.54-PM.webp?resize=720%2C960&amp;ssl=1\" data-gallery=\"3\" aria-label=\"Open Subhan Elevator project photograph 4\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.54-PM.webp?resize=720%2C960&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.54-PM.webp?resize=720%2C960&amp;ssl=1\" alt=\"Subhan Elevator project photograph 4\" loading=\"lazy\" decoding=\"async\" ><span class=\"gallery-overlay\"><span>04 \/ SUBHAN ELEVATOR<\/span><i>\u2197<\/i><\/span><\/a><a class=\"gallery-image gallery-image-5\" href=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.57-PM.webp?resize=768%2C1024&amp;ssl=1\" data-gallery=\"4\" aria-label=\"Open Subhan Elevator project photograph 5\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.57-PM.webp?resize=768%2C1024&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.57-PM.webp?resize=768%2C1024&amp;ssl=1\" alt=\"Subhan Elevator project photograph 5\" loading=\"lazy\" decoding=\"async\" ><span class=\"gallery-overlay\"><span>05 \/ SUBHAN ELEVATOR<\/span><i>\u2197<\/i><\/span><\/a><a class=\"gallery-image gallery-image-6\" href=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.02-PM-e1731671381232.webp?resize=720%2C813&amp;ssl=1\" data-gallery=\"5\" aria-label=\"Open Subhan Elevator project photograph 6\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.02-PM-e1731671381232.webp?resize=720%2C813&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.02-PM-e1731671381232.webp?resize=720%2C813&amp;ssl=1\" alt=\"Subhan Elevator project photograph 6\" loading=\"lazy\" decoding=\"async\" ><span class=\"gallery-overlay\"><span>06 \/ SUBHAN ELEVATOR<\/span><i>\u2197<\/i><\/span><\/a><\/div><\/div><\/section><section id=\"Services\" class=\"floor floor-services\" data-floor=\"4\" data-label=\"Our Services\" data-caption=\"EFFICIENT AND RELIABLE ELEVATOR SERVICES\" aria-labelledby=\"services-title\">\n  <div class=\"floor-content services-floor\"><div class=\"services-heading\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Our Services<span class=\"eyebrow-number\">04<\/span><\/p><h2 id=\"services-title\" tabindex=\"-1\">Efficient And Reliable<br><span>Elevator Services<\/span><\/h2><a href=\"#Contact\" class=\"text-link\">Make An Appointment <svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><\/div><div class=\"services-grid\"><article class=\"service-card\"><div class=\"service-card-top\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-commercial\"\/><\/svg><span>01<\/span><\/div><h3>Commercial Elevators<\/h3><p>Durable, high-capacity elevators tailored for office buildings, malls, and other commercial spaces.<\/p><\/article><article class=\"service-card\"><div class=\"service-card-top\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-home\"\/><\/svg><span>02<\/span><\/div><h3>Home Elevators<\/h3><p>Stylish, space-efficient solutions to enhance accessibility and comfort at home.<\/p><\/article><article class=\"service-card\"><div class=\"service-card-top\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-hospital\"\/><\/svg><span>03<\/span><\/div><h3>Hospital Elevators<\/h3><p>Designed for smooth, safe transport of patients and medical equipment.<\/p><\/article><article class=\"service-card\"><div class=\"service-card-top\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-freight\"\/><\/svg><span>04<\/span><\/div><h3>Freight Elevators<\/h3><p>Heavy-duty elevators for reliable transport of goods and materials.<\/p><\/article><article class=\"service-card\"><div class=\"service-card-top\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-dumbwaiter\"\/><\/svg><span>05<\/span><\/div><h3>Dumbwaiter<\/h3><p>Compact systems for effortless transfer of items across floors.<\/p><\/article><article class=\"service-card\"><div class=\"service-card-top\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-types\"\/><\/svg><span>06<\/span><\/div><h3>And Many Types<\/h3><p>Specialized solutions to meet unique requirements in any setting.<\/p><\/article><\/div><nav class=\"service-details\" aria-label=\"Detailed elevator services\"><h3>Explore our elevator services<\/h3><div><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-installation\/\">Elevator Installation<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-maintenance-amc\/\">Elevator Maintenance &amp; AMC<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-repair\/\">Elevator Repair<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-modernization\/\">Elevator Modernization<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/emergency-elevator-repair\/\">Emergency Elevator Repair<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-spare-parts\/\">Spare Parts &amp; Replacement<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-inspection\/\">Elevator Inspection<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/home-elevators\/\">Home Elevators<svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><\/div><\/nav><\/div><\/section><section id=\"Experience\" class=\"floor floor-experience\" data-floor=\"5\" data-label=\"Experience\" data-caption=\"NATIONWIDE SINCE 2010\" aria-labelledby=\"experience-title\">\n  <div class=\"floor-content experience-floor\"><div class=\"experience-background\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.55-PM.webp?resize=768%2C1024&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-12-at-9.30.55-PM.webp?resize=768%2C1024&amp;ssl=1\" alt=\"\" loading=\"lazy\" decoding=\"async\" ><\/div><div class=\"experience-content\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Subhan Elevator<span class=\"eyebrow-number\">05<\/span><\/p><h2 id=\"experience-title\" tabindex=\"-1\">Trusted By Over <span>200+<\/span> Clients<br><small>Nationwide Since 2010<\/small><\/h2><div class=\"statistics\"><div><p class=\"stat-number\">100<span>+<\/span><\/p><h3>Projects done<\/h3><\/div><div><p class=\"stat-number\">20<span>+<\/span><\/p><h3>years of experience<\/h3><\/div><\/div><\/div><div class=\"experience-stamp\"><span>SUBHAN<\/span><span>ELEVATOR<\/span><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-lift\"\/><\/svg><\/div><\/div><\/section><section id=\"Testimonials\" class=\"floor floor-testimonials\" data-floor=\"6\" data-label=\"Testimonials\" data-caption=\"WHAT OUR CLIENTS SAY ABOUT US\" aria-labelledby=\"testimonials-title\">\n  <div class=\"floor-content testimonials-floor\"><div class=\"testimonials-backdrop\"><img data-no-lazy=\"1\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.05-PM-1.webp?resize=576%2C1024&amp;ssl=1\" data-original-src=\"https:\/\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/a-chic-interior-featuring-an-elevator-framed-art-and-classic-wall-lighting.-1281346-scaled.jpg\" data-fallback-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-15-at-4.11.05-PM-1.webp?resize=576%2C1024&amp;ssl=1\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/div><div class=\"testimonials-heading\"><div><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>testimonials<span class=\"eyebrow-number\">06<\/span><\/p><h2 id=\"testimonials-title\" tabindex=\"-1\">What Our Clients<br><span>Say About Us.<\/span><\/h2><\/div><p>Our clients trust Subhan Elevator for reliable, high-quality elevator solutions. From seamless installations to efficient maintenance, they appreciate our professionalism, on-time completion, and attention to detail. We\u2019re proud to deliver safe, affordable services that enhance their spaces and operations.<\/p><\/div><div class=\"testimonial-grid\"><article class=\"testimonial-card\"><div class=\"testimonial-stars\" role=\"img\" aria-label=\"5 out of 5 stars\">\u2605\u2605\u2605\u2605\u2605<span>\u201c<\/span><\/div><blockquote>\u201cChoosing Subhan Elevator was the best decision for our building upgrade! The team was professional and attentive, and delivered exactly what they promised. Our new elevator is smooth and reliable, and has added so much value to our space. We couldn\u2019t be happier with the service and support we received. Highly recommend!<\/blockquote><div class=\"testimonial-person\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-13-at-11.36.39-AM.webp?resize=1012%2C1062&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-13-at-11.36.39-AM.webp?resize=1012%2C1062&amp;ssl=1\" alt=\"Aleem Shah Khilji\" loading=\"lazy\" decoding=\"async\" ><div><h3>Aleem Shah Khilji<\/h3><p>Founder\/Chairman USECS<\/p><\/div><\/div><\/article><article class=\"testimonial-card\"><div class=\"testimonial-stars\" role=\"img\" aria-label=\"5 out of 5 stars\">\u2605\u2605\u2605\u2605\u2605<span>\u201c<\/span><\/div><blockquote>\u201cSubhan Elevator made the entire process easy and stress-free. They were responsive, knowledgeable, and committed to quality from start to finish. The installation was completed on schedule, and their maintenance team has been fantastic. We\u2019re thrilled with our new elevator and the excellent service we received!<\/blockquote><div class=\"testimonial-person\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-13-at-11.36.40-AM-e1731669016695.webp?resize=942%2C942&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-13-at-11.36.40-AM-e1731669016695.webp?resize=942%2C942&amp;ssl=1\" alt=\"Khalil Javed\" loading=\"lazy\" decoding=\"async\" ><div><h3>Khalil Javed<\/h3><p>Founder Chairman Ittehad Steel Mill<\/p><\/div><\/div><\/article><article class=\"testimonial-card\"><div class=\"testimonial-stars\" role=\"img\" aria-label=\"5 out of 5 stars\">\u2605\u2605\u2605\u2605\u2605<span>\u201c<\/span><\/div><blockquote>\u201cI\u2019m very impressed with Subhan Elevator! They provided a custom solution for our hospital elevator, ensuring it was safe, smooth, and met all our needs. The installation was on time, and their team was professional and detail-oriented. Fantastic service from start to finish\u2014highly recommend!\u201d<\/blockquote><div class=\"testimonial-person\"><img data-no-lazy=\"1\" class=\"\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-13-at-11.36.42-AM-e1731669200922.webp?resize=672%2C672&amp;ssl=1\" data-original-src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2024\/11\/WhatsApp-Image-2024-11-13-at-11.36.42-AM-e1731669200922.webp?resize=672%2C672&amp;ssl=1\" alt=\"Prof. Dr. Jamal Zafar\" loading=\"lazy\" decoding=\"async\" ><div><h3>Prof. Dr. Jamal Zafar<\/h3><p>Chairman Hanif Medical Complex<\/p><\/div><\/div><\/article><\/div><\/div><\/section><section id=\"Contact\" class=\"floor floor-contact\" data-floor=\"7\" data-label=\"Appointment\" data-caption=\"MAKE AN APPOINTMENT\" aria-labelledby=\"appointment-title\">\n  <div class=\"floor-content appointment-floor\"><div class=\"appointment-copy\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>Make An Appointment<span class=\"eyebrow-number\">07<\/span><\/p><h2 id=\"appointment-title\" tabindex=\"-1\">Do You Need A Professional Elevator Service? Fill Out This Form To Get In Touch.<\/h2><p>Ready to elevate your space with Subhan Elevator? Whether you need a commercial, home, hospital, or custom elevator solution, our team is here to help. Please complete the form to get a personalized quote, schedule a consultation, or learn more about our expert services. Our specialists will reach out promptly to discuss your project and provide the best elevator solution tailored to your needs.<\/p><div class=\"appointment-details\"><div><span>Every day from<\/span><h3>9:00 AM \u2014 10:00 PM<\/h3><\/div><div><span>Call to ask any questions<\/span><h3><a href=\"tel:+923367764717\">+923367764717<\/a><\/h3><\/div><\/div><\/div><div class=\"appointment-form-panel\"><slot name=\"appointment-form\"><\/slot><\/div><\/div><\/section><section id=\"Location\" class=\"floor floor-location\" data-floor=\"8\" data-label=\"Location\" data-caption=\"GHAURI TOWN, ISLAMABAD\" aria-labelledby=\"location-title\">\n  <div class=\"floor-content location-floor\"><div class=\"location-copy\"><p class=\"eyebrow\"><span class=\"eyebrow-line\"><\/span>location<span class=\"eyebrow-number\">08<\/span><\/p><h2 id=\"location-title\" tabindex=\"-1\">Ghauri Town<br><span>Islamabad<\/span><\/h2><p>Subhan Elevator<\/p><p class=\"local-coverage\">Serving Islamabad and Rawalpindi.<br>33c Street Number 24 A, Ghauri Town Phase 4A, Islamabad 46000, Pakistan.<\/p><a class=\"button button-orange\" href=\"https:\/\/www.google.com\/maps\/search\/?api=1&amp;query=Subhan%20Elevator%20Ghauri%20Town%20Islamabad\" target=\"_blank\" rel=\"noopener noreferrer\">Open in Google Maps <svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-right\"\/><\/svg><\/a><div class=\"location-details\"><a href=\"tel:+923367764717\">+(92) 3367764717<\/a><a href=\"mailto:Subhanelevators@gmail.com\">Subhanelevators@gmail.com<\/a><span>9:00 AM \u2013 10:00 PM<\/span><\/div><\/div><div class=\"map-panel\"><iframe data-no-lazy=\"1\" src=\"https:\/\/maps.google.com\/maps?q=Subhan%20Elevator%20Ghauri%20Town%20Islamabad&amp;t=m&amp;z=14&amp;output=embed\" title=\"Google map of subhan elevator\" loading=\"lazy\" referrerpolicy=\"no-referrer-when-downgrade\" allowfullscreen><\/iframe><span class=\"map-caption\">SUBHAN ELEVATOR \u00b7 GHAURI TOWN ISLAMABAD<\/span><\/div><\/div><\/section><section id=\"colophon\" class=\"floor floor-footer\" data-floor=\"9\" data-label=\"More Information\" data-caption=\"SUBHAN ELEVATOR \u00b7 EVERY LEVEL\" aria-label=\"More Information\">\n  <div class=\"floor-content footer-floor\"><footer class=\"full-footer se-site-footer\"><div class=\"se-footer-inner\"><div class=\"se-footer-invitation\"><div><p class=\"se-footer-eyebrow\">SUBHAN ELEVATOR \u00b7 EVERY LEVEL<\/p><h2 class=\"se-footer-heading\">Your next level.<br><span>Our expertise.<\/span><\/h2><\/div><a class=\"se-footer-cta\" href=\"#Contact\">Discuss your project <span aria-hidden=\"true\">\u2197<\/span><\/a><\/div><div class=\"se-footer-grid\"><div class=\"se-footer-contact\"><a class=\"se-footer-brand\" href=\"\/\"><img data-recalc-dims=\"1\" decoding=\"async\" data-no-lazy=\"1\" src=\"https:\/\/i0.wp.com\/subhanelevator.com\/wp-content\/uploads\/2026\/03\/Elevator-service.webp?resize=52%2C52&#038;ssl=1\" alt=\"Subhan Elevator\" width=\"52\" height=\"52\"><strong>SUBHAN ELEVATOR<small>QUALITY &amp; RELIABILITY<\/small><\/strong><\/a><p class=\"se-footer-address\">33c Street Number 24 A<br>Ghauri Town Phase 4A, Islamabad<br>Serving Islamabad &amp; Rawalpindi.<\/p><a class=\"se-footer-phone\" href=\"tel:+923367764717\">0336 7764717<\/a><a href=\"mailto:Subhanelevators@gmail.com\">Subhanelevators@gmail.com<\/a><a href=\"https:\/\/maps.google.com\/maps?cid=93664525288610421\" target=\"_blank\" rel=\"noopener\">Get directions <span aria-hidden=\"true\">\u2197<\/span><\/a><div class=\"se-footer-hours\"><i aria-hidden=\"true\"><\/i><span>Daily \u00b7 9:00 AM \u2013 10:00 PM<\/span><\/div><\/div><div class=\"se-footer-services\"><h2 class=\"se-footer-title\">Our Services<\/h2><ul><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-installation\/\">Installation<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-maintenance-amc\/\">Maintenance &amp; AMC<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-repair\/\">Elevator Repair<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-modernization\/\">Modernization<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/emergency-elevator-repair\/\">Emergency Repair<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-spare-parts\/\">Spare Parts<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-inspection\/\">Inspection<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/home-elevators\/\">Home Elevators<\/a><\/li><\/ul><\/div><div class=\"se-footer-pages\"><h2 class=\"se-footer-title\">Useful links<\/h2><ul><li><a href=\"\/\">Home<\/a><\/li><li><a href=\"#Aboutus\">About Us<\/a><\/li><li><a href=\"#Gallery\">Project Gallery<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/\">All Services<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/elevator-guides\/\">Elevator Guides<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/contact\/\">Contact Us<\/a><\/li><li><a href=\"#Contact\">Make An Appointment<\/a><\/li><li><a href=\"https:\/\/subhanelevator.com\/index.php\/page-sitemap.xml\">Sitemap<\/a><\/li><\/ul><\/div><\/div><nav class=\"se-footer-building-types\" aria-label=\"Building types\"><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-installation\/\">Commercial Elevator <span aria-hidden=\"true\">\u2197<\/span><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/home-elevators\/\">Home Elevator <span aria-hidden=\"true\">\u2197<\/span><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-installation\/\">Hospital Elevator <span aria-hidden=\"true\">\u2197<\/span><\/a><a href=\"https:\/\/subhanelevator.com\/index.php\/services\/elevator-installation\/\">Freight Elevator <span aria-hidden=\"true\">\u2197<\/span><\/a><\/nav><div class=\"se-product-range\"><p>SUBHAN Elevators also provides a wide collection of customer comfort products, such as Traction Machine Lifts, Hydraulic Lifts, Home Lifts, Dumbwaiters ( Service Lifts ), Panoramic Lifts, Spare Parts, Hospital Lifts ( Bed Lifts ), Cargo Lifts, Car Parking Lifts, Escalators and Moving Walkways, Constriction Lifts, Building Maintenance Units ( BMU ), Tower Cranes, and Cable Way .tellus.\u00a0<\/p><\/div><div class=\"se-footer-bottom\"><p>\u00a9 2026 Subhan Elevator. All rights reserved.<\/p><a href=\"#main\">Back to the ground floor <span aria-hidden=\"true\">\u2191<\/span><\/a><\/div><\/div><\/footer><\/div><\/section><\/div><div class=\"elevator-doors\" aria-hidden=\"true\"><div class=\"door door-left\"><div class=\"door-panel\"><span class=\"door-etch\">SUBHAN<span>ELEVATOR<\/span><\/span><span class=\"door-orange-line\"><\/span><span class=\"door-bottom\">QUALITY IN EVERY JOURNEY.<\/span><\/div><\/div><div class=\"door door-right\"><div class=\"door-panel\"><span class=\"door-floor\" id=\"door-floor\">G<\/span><span class=\"door-orange-line\"><\/span><span class=\"door-bottom\">STEP INTO YOUR NEXT LEVEL.<\/span><\/div><\/div><div class=\"door-seam\"><\/div><\/div><\/div><div class=\"frame-sill\"><span><\/span><span><\/span><span><\/span><\/div><\/div>\n<div id=\"travel-status\" class=\"transit-status\" hidden role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><div class=\"transit-symbol\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/div><p id=\"travel-status-message\" class=\"transit-title\">Moving to next floor<\/p><p class=\"transit-destination\"><span id=\"travel-status-floor\">01<\/span><span id=\"travel-status-name\">Why Choose Us<\/span><\/p><div class=\"transit-progress\" aria-hidden=\"true\"><span><\/span><\/div><\/div>\n<aside class=\"control-panel\" aria-label=\"Elevator controls\"><div class=\"panel-top\"><span class=\"panel-pin\"><\/span><span>SUBHAN ELEVATOR<\/span><span class=\"panel-pin\"><\/span><\/div><div class=\"floor-display\" aria-hidden=\"true\"><div class=\"display-upper\"><span id=\"direction-indicator\">\u25cf<\/span><span>FLOOR<\/span><\/div><div class=\"display-digit\" id=\"floor-digit\">G<\/div><span id=\"display-status\">WELCOME ABOARD<\/span><\/div><p class=\"directory-heading\">SELECT YOUR FLOOR<\/p><nav class=\"floor-buttons\" aria-label=\"Choose a homepage section\"><button type=\"button\" class=\"floor-control active\" data-target=\"0\" title=\"Home\" aria-label=\"Home, ground floor\" aria-current=\"true\"><span class=\"floor-button-number\">G<\/span><span class=\"floor-button-label\">Home<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"1\" title=\"Why Choose Us\" aria-label=\"Why Choose Us, floor 1\" ><span class=\"floor-button-number\">1<\/span><span class=\"floor-button-label\">Why Choose Us<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"2\" title=\"Information\" aria-label=\"Information, floor 2\" ><span class=\"floor-button-number\">2<\/span><span class=\"floor-button-label\">Information<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"3\" title=\"Gallery\" aria-label=\"Gallery, floor 3\" ><span class=\"floor-button-number\">3<\/span><span class=\"floor-button-label\">Gallery<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"4\" title=\"Our Services\" aria-label=\"Our Services, floor 4\" ><span class=\"floor-button-number\">4<\/span><span class=\"floor-button-label\">Our Services<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"5\" title=\"Experience\" aria-label=\"Experience, floor 5\" ><span class=\"floor-button-number\">5<\/span><span class=\"floor-button-label\">Experience<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"6\" title=\"Testimonials\" aria-label=\"Testimonials, floor 6\" ><span class=\"floor-button-number\">6<\/span><span class=\"floor-button-label\">Testimonials<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"7\" title=\"Appointment\" aria-label=\"Appointment, floor 7\" ><span class=\"floor-button-number\">7<\/span><span class=\"floor-button-label\">Appointment<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"8\" title=\"Location\" aria-label=\"Location, floor 8\" ><span class=\"floor-button-number\">8<\/span><span class=\"floor-button-label\">Location<\/span><\/button><button type=\"button\" class=\"floor-control \" data-target=\"9\" title=\"More Information\" aria-label=\"More Information, floor 9\" ><span class=\"floor-button-number\">9<\/span><span class=\"floor-button-label\">More Information<\/span><\/button><\/nav><div class=\"ride-controls\"><button type=\"button\" id=\"previous-floor\" aria-label=\"Previous floor\" title=\"Previous floor\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-up\"\/><\/svg><\/button><button type=\"button\" id=\"replay-doors\" aria-label=\"Replay the elevator doors\" title=\"Replay doors\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M11 5v14M13 5v14M8 9l-3 3 3 3M16 9l3 3-3 3\"\/><\/svg><\/button><button type=\"button\" id=\"next-floor\" aria-label=\"Next floor\" title=\"Next floor\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-down\"\/><\/svg><\/button><\/div><button type=\"button\" class=\"sound-toggle\" id=\"sound-toggle\" aria-pressed=\"false\"><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-sound\"\/><\/svg><span id=\"sound-label\">Sound off<\/span><span class=\"sound-indicator\"><\/span><\/button><div class=\"panel-bottom\"><span class=\"panel-pin\"><\/span><span>QUALITY &#038; RELIABILITY<\/span><span class=\"panel-pin\"><\/span><\/div><\/aside><\/div>\n<div class=\"ride-footer\"><div class=\"current-stop\"><span id=\"footer-floor\">G<\/span><span class=\"footer-divider\"><\/span><span id=\"footer-label\">TOP ELEVATOR COMPANY IN ISLAMABAD<\/span><\/div><button type=\"button\" id=\"scroll-prompt\" class=\"scroll-prompt\"><span class=\"scroll-mouse\" aria-hidden=\"true\"><i><\/i><\/span><span id=\"scroll-label\">SCROLL TO THE NEXT FLOOR<\/span><svg class=\"\" aria-hidden=\"true\"><use href=\"#icon-arrow-down\"\/><\/svg><\/button><span class=\"footer-signature\">QUALITY AND RELIABILITY.<\/span><\/div><\/div>\n<dialog id=\"gallery-lightbox\" class=\"gallery-lightbox\" aria-label=\"Subhan Elevator project gallery\"><button id=\"close-gallery\" type=\"button\" aria-label=\"Close photograph\">\u2715<\/button><img data-no-lazy=\"1\" id=\"lightbox-image\" alt=\"\"><div class=\"lightbox-toolbar\"><button type=\"button\" id=\"previous-photo\" aria-label=\"Previous photograph\">\u2190<\/button><span id=\"photo-count\">01 \/ 06<\/span><button type=\"button\" id=\"next-photo\" aria-label=\"Next photograph\">\u2192<\/button><\/div><\/dialog><div id=\"journey-announcement\" class=\"visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/div><noscript><style>.gallery-image{pointer-events:auto}<\/style><\/noscript><\/div>\n<\/template>\n<div id=\"subhan-native-form\" slot=\"appointment-form\">\n\n\n<style>.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field{margin-bottom:22px;}.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field{padding-right:9px;padding-left:9px;}.kadence-form-516_3e56ac-fe .kb-form{margin-right:-9px;margin-left:-9px;}.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field .kb-text-style-field, .kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field .kb-select-style-field{color:var(--global-palette3, #1A202C);border-radius:0px;line-height:28px;background:#ffffff;border-color:rgba(0, 0, 0, 0);box-shadow:1px 1px 2px 0px rgba(0, 0, 0, 0.2);}.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field > label{padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field .kb-forms-submit{color:#ffffff;}.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field .kb-forms-submit:hover, .kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field .kb-forms-submit:focus {color:#ffffff;background:#ff8e3c;}.kadence-form-516_3e56ac-fe .kb-form .kadence-blocks-form-field .kb-forms-submit{text-transform:capitalize;font-weight:bold;}.kb-form input.kadence-blocks-field.verify{opacity:0.0;position:absolute;top:0.0;left:0.0;width:0.0;height:0.0;z-index:-1;}<\/style>\n<div class=\"wp-block-kadence-form kadence-form-516_3e56ac-fe kb-form-wrap\"><form class=\"kb-form\" action=\"\" method=\"post\"><div class=\"kadence-blocks-form-field kb-field-desk-width-50 kb-field-mobile-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_0\">Name<\/label><input name=\"kb_field_0\" id=\"kb_field_516_3e56ac-fe_0\" data-label=\"Name\" type=\"text\" placeholder=\"\" value=\"\" data-type=\"text\" class=\"kb-field kb-text-style-field kb-text-field kb-field-0\"\/><\/div><div class=\"kadence-blocks-form-field kb-form-field-1 kb-field-desk-width-50 kb-field-mobile-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_1\">Email<span class=\"required\">*<\/span><\/label><input name=\"kb_field_1\" id=\"kb_field_516_3e56ac-fe_1\" data-label=\"Email\" type=\"email\" placeholder=\"\" value=\"\" data-type=\"email\" class=\"kb-field kb-text-style-field kb-email-field kb-field-1\" data-required=\"yes\"\/><\/div><div class=\"kadence-blocks-form-field kb-form-field-2 kb-field-desk-width-50 kb-field-mobile-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_2\">Phone Number<\/label><input name=\"kb_field_2\" id=\"kb_field_516_3e56ac-fe_2\" data-label=\"Phone Number\" type=\"text\" placeholder=\"\" value=\"\" data-type=\"text\" class=\"kb-field kb-text-style-field kb-text-field kb-field-2\"\/><\/div><div class=\"kadence-blocks-form-field kb-form-field-3 kb-field-desk-width-50 kb-field-mobile-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_3\">Service<\/label><input name=\"kb_field_3\" id=\"kb_field_516_3e56ac-fe_3\" data-label=\"Service\" type=\"text\" placeholder=\"\" value=\"\" data-type=\"text\" class=\"kb-field kb-text-style-field kb-text-field kb-field-3\"\/><\/div><div class=\"kadence-blocks-form-field kb-form-field-4 kb-field-desk-width-50 kb-field-mobile-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_4\">Date &amp; Time<\/label><input name=\"kb_field_4\" id=\"kb_field_516_3e56ac-fe_4\" data-label=\"Date &amp; Time\" type=\"text\" placeholder=\"\" value=\"\" data-type=\"text\" class=\"kb-field kb-text-style-field kb-text-field kb-field-4\"\/><\/div><div class=\"kadence-blocks-form-field kb-form-field-5 kb-field-desk-width-50 kb-field-mobile-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_5\">Location<\/label><input name=\"kb_field_5\" id=\"kb_field_516_3e56ac-fe_5\" data-label=\"Location\" type=\"text\" placeholder=\"\" value=\"\" data-type=\"text\" class=\"kb-field kb-text-style-field kb-text-field kb-field-5\"\/><\/div><div class=\"kadence-blocks-form-field kb-form-field-6 kb-field-desk-width-100 kb-input-size-large\"><label for=\"kb_field_516_3e56ac-fe_6\">Message<span class=\"required\">*<\/span><\/label><textarea name=\"kb_field_6\" id=\"kb_field_516_3e56ac-fe_6\" data-label=\"Message\" type=\"textarea\" placeholder=\"\" data-type=\"textarea\" class=\"kb-field kb-text-style-field kb-textarea-field kb-field-6\" rows=\"1\" data-required=\"yes\"><\/textarea><\/div><input type=\"hidden\" name=\"_kb_form_id\" value=\"516_3e56ac-fe\"\/><input type=\"hidden\" name=\"_kb_form_post_id\" value=\"516\"\/><input type=\"hidden\" name=\"action\" value=\"kb_process_ajax_submit\"\/><label class=\"kadence-verify-label\">Email<input class=\"kadence-blocks-field verify\" type=\"text\" name=\"_kb_verify_email\" autocomplete=\"new-password\" aria-hidden=\"true\" placeholder=\"Email\" tabindex=\"-1\" data-1p-ignore=\"true\" data-lpignore=\"true\" \/><\/label><div class=\"kadence-blocks-form-field kb-submit-field kb-field-desk-width-100\"><button class=\"kb-forms-submit button kb-button-size-large kb-button-width-full\">confirm appointment<\/button><\/div><\/form><\/div>\n<noscript><div class=\"kadence-blocks-form-message kadence-blocks-form-warning\">Please enable JavaScript in your browser to submit the form<\/div><style>.kadence-form-516_3e56ac-fe .kadence-blocks-form-field.kb-submit-field { display: none; }<\/style><\/noscript>\n\n\n<\/div>\n<\/div>\n<script id=\"subhan-elevator-runtime\" type=\"application\/octet-stream\" data-no-optimize=\"1\">KCgpID0+IHsKJ3VzZSBzdHJpY3QnOwoKY29uc3QgaG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdWJoYW4tZWxldmF0b3Itam91cm5leScpOwppZiAoIWhvc3QgfHwgaG9zdC5kYXRhc2V0LmluaXRpYWxpemVkID09PSAndHJ1ZScpIHJldHVybjsKbGV0IHNjb3BlID0gaG9zdC5zaGFkb3dSb290OwppZiAoIXNjb3BlKSB7CiAgY29uc3QgdGVtcGxhdGUgPSBob3N0LnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlW2RhdGEtZWxldmF0b3ItdGVtcGxhdGVdJyk7CiAgaWYgKCF0ZW1wbGF0ZSkgcmV0dXJuOwogIHNjb3BlID0gaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7CiAgc2NvcGUuYXBwZW5kKHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTsKICB0ZW1wbGF0ZS5yZW1vdmUoKTsKfQpob3N0LmRhdGFzZXQuaW5pdGlhbGl6ZWQgPSAndHJ1ZSc7CmZ1bmN0aW9uIGV2ZW50T3JpZ2luKGV2ZW50KSB7IHJldHVybiBldmVudC5jb21wb3NlZFBhdGg\/LigpWzBdIHx8IGV2ZW50LnRhcmdldDsgfQpmdW5jdGlvbiBjbG9zZXN0Q29tcG9zZWQob3JpZ2luLCBzZWxlY3RvcikgewogIGxldCBub2RlID0gb3JpZ2luOwogIHdoaWxlIChub2RlKSB7CiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgbm9kZS5tYXRjaGVzKHNlbGVjdG9yKSkgcmV0dXJuIG5vZGU7CiAgICBub2RlID0gbm9kZS5hc3NpZ25lZFNsb3QgfHwgbm9kZS5wYXJlbnRFbGVtZW50IHx8IG5vZGUuZ2V0Um9vdE5vZGU\/LigpLmhvc3Q7CiAgfQogIHJldHVybiBudWxsOwp9Cgpjb25zdCBuYXRpdmVGaWVsZFByZXNlbnRhdGlvbiA9IFt7ImlkIjogImtiX2ZpZWxkXzUxNl8zZTU2YWMtZmVfMCIsICJhdXRvY29tcGxldGUiOiAibmFtZSIsICJtYXhsZW5ndGgiOiAiMTAwIiwgInBsYWNlaG9sZGVyIjogIllvdXIgbmFtZSJ9LCB7ImlkIjogImtiX2ZpZWxkXzUxNl8zZTU2YWMtZmVfMSIsICJ0eXBlIjogImVtYWlsIiwgImF1dG9jb21wbGV0ZSI6ICJlbWFpbCIsICJtYXhsZW5ndGgiOiAiMTUwIiwgInBsYWNlaG9sZGVyIjogIllvdXIgZW1haWwgYWRkcmVzcyJ9LCB7ImlkIjogImtiX2ZpZWxkXzUxNl8zZTU2YWMtZmVfMiIsICJ0eXBlIjogInRlbCIsICJhdXRvY29tcGxldGUiOiAidGVsIiwgIm1heGxlbmd0aCI6ICI1MCIsICJwbGFjZWhvbGRlciI6ICJZb3VyIHBob25lIG51bWJlciJ9LCB7ImlkIjogImtiX2ZpZWxkXzUxNl8zZTU2YWMtZmVfMyIsICJtYXhsZW5ndGgiOiAiMTUwIiwgInBsYWNlaG9sZGVyIjogIkluc3RhbGxhdGlvbiwgbWFpbnRlbmFuY2UsIHJlcGFpcnNcdTIwMjYifSwgeyJpZCI6ICJrYl9maWVsZF81MTZfM2U1NmFjLWZlXzQiLCAidHlwZSI6ICJkYXRldGltZS1sb2NhbCJ9LCB7ImlkIjogImtiX2ZpZWxkXzUxNl8zZTU2YWMtZmVfNSIsICJhdXRvY29tcGxldGUiOiAiYWRkcmVzcy1sZXZlbDIiLCAibWF4bGVuZ3RoIjogIjE1MCIsICJwbGFjZWhvbGRlciI6ICJZb3VyIHByb2plY3QgbG9jYXRpb24ifSwgeyJpZCI6ICJrYl9maWVsZF81MTZfM2U1NmFjLWZlXzYiLCAicm93cyI6ICIzIiwgIm1heGxlbmd0aCI6ICIxODAwIiwgInBsYWNlaG9sZGVyIjogIlRlbGwgdXMgYWJvdXQgeW91ciBlbGV2YXRvciBvciB5b3VyIGJ1aWxkaW5nXHUyMDI2In1dOwoKbmF0aXZlRmllbGRQcmVzZW50YXRpb24uZm9yRWFjaCgoeyBpZCwgLi4uYXR0cmlidXRlcyB9KSA9PiB7CiAgY29uc3QgZmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgaWYgKGZpZWxkICYmIGhvc3QuY29udGFpbnMoZmllbGQpKSBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChbbmFtZSwgdmFsdWVdKSA9PiBmaWVsZC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKTsKfSk7CmNvbnN0IG5hdGl2ZUJ1dHRvbiA9IGhvc3QucXVlcnlTZWxlY3RvcignLmtiLWZvcm1zLXN1Ym1pdCcpOwppZiAobmF0aXZlQnV0dG9uKSBuYXRpdmVCdXR0b24uaW5uZXJIVE1MID0gJ0NvbmZpcm0gQXBwb2ludG1lbnQgPHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNCAxMmgxNk0xNCA2bDYgNi02IDYiLz48L3N2Zz4nOwoKLyoqIENvb3JkaW5hdGUgdGhlIGRvb3JzIGluZGVwZW5kZW50bHkgb2YgaW5wdXQgZGV2aWNlcyBhbmQgdGhlIHJlbmRlcmVkIHBhZ2UuICovCmZ1bmN0aW9uIGNyZWF0ZVRyYXZlbENvbnRyb2xsZXIoewogIGNvdW50LAogIGluaXRpYWwgPSAwLAogIGRlbGF5ID0gbWlsbGlzZWNvbmRzID0+IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtaWxsaXNlY29uZHMpKSwKICB0aW1pbmdzID0ge30sCiAgb25QaGFzZSA9ICgpID0+IHt9LAogIG9uRmxvb3IgPSAoKSA9PiB7fSwKICBvbkluZGljYXRvciA9ICgpID0+IHt9Cn0pIHsKICBpZiAoIU51bWJlci5pc0ludGVnZXIoY291bnQpIHx8IGNvdW50IDwgMSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQXQgbGVhc3Qgb25lIGZsb29yIGlzIHJlcXVpcmVkLicpOwogIGNvbnN0IGR1cmF0aW9uID0geyBjbG9zZTogNTcwLCB0cmF2ZWw6IDQxMCwgYmV0d2VlbjogMTk1LCBzZXR0bGU6IDkwLCBvcGVuOiA5MDAsIC4uLnRpbWluZ3MgfTsKICBjb25zdCBjbGFtcCA9IHZhbHVlID0+IE1hdGgubWF4KDAsIE1hdGgubWluKGNvdW50IC0gMSwgTWF0aC5yb3VuZChOdW1iZXIodmFsdWUpIHx8IDApKSk7CiAgbGV0IGZsb29yID0gY2xhbXAoaW5pdGlhbCk7CiAgbGV0IGRlc3RpbmF0aW9uID0gZmxvb3I7CiAgbGV0IHBoYXNlID0gJ2lkbGUnOwogIGxldCBnZW5lcmF0aW9uID0gMDsKCiAgZnVuY3Rpb24gY2hhbmdlUGhhc2UobmV4dCwgY29udGV4dCkgewogICAgcGhhc2UgPSBuZXh0OwogICAgb25QaGFzZShuZXh0LCB7IC4uLmNvbnRleHQsIGN1cnJlbnQ6IGZsb29yLCBkZXN0aW5hdGlvbiB9KTsKICB9CgogIGFzeW5jIGZ1bmN0aW9uIG9wZW5Jbml0aWFsbHkoKSB7CiAgICBpZiAocGhhc2UgIT09ICdpZGxlJykgcmV0dXJuIGZhbHNlOwogICAgY29uc3QgY3ljbGUgPSArK2dlbmVyYXRpb247CiAgICBkZXN0aW5hdGlvbiA9IGZsb29yOwogICAgY29uc3QgY29udGV4dCA9IHsgZnJvbTogZmxvb3IsIHRvOiBmbG9vciwgZGlyZWN0aW9uOiAwLCBpbml0aWFsOiB0cnVlIH07CiAgICBjaGFuZ2VQaGFzZSgnb3BlbmluZycsIGNvbnRleHQpOwogICAgYXdhaXQgZGVsYXkoZHVyYXRpb24ub3Blbik7CiAgICBpZiAoY3ljbGUgIT09IGdlbmVyYXRpb24pIHJldHVybiBmYWxzZTsKICAgIGNoYW5nZVBoYXNlKCdpZGxlJywgY29udGV4dCk7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIGFzeW5jIGZ1bmN0aW9uIHRyYXZlbFRvKHJlcXVlc3RlZCwgeyByZXBsYXkgPSBmYWxzZSB9ID0ge30pIHsKICAgIGlmIChwaGFzZSAhPT0gJ2lkbGUnKSByZXR1cm4gZmFsc2U7CiAgICBjb25zdCB0byA9IGNsYW1wKHJlcXVlc3RlZCk7CiAgICBpZiAodG8gPT09IGZsb29yICYmICFyZXBsYXkpIHJldHVybiBmYWxzZTsKICAgIGNvbnN0IGN5Y2xlID0gKytnZW5lcmF0aW9uOwogICAgY29uc3QgZnJvbSA9IGZsb29yOwogICAgY29uc3QgZGlyZWN0aW9uID0gTWF0aC5zaWduKHRvIC0gZnJvbSk7CiAgICBjb25zdCBjb250ZXh0ID0geyBmcm9tLCB0bywgZGlyZWN0aW9uLCByZXBsYXkgfTsKICAgIGRlc3RpbmF0aW9uID0gdG87CiAgICBjaGFuZ2VQaGFzZSgnY2xvc2luZycsIGNvbnRleHQpOwogICAgYXdhaXQgZGVsYXkoZHVyYXRpb24uY2xvc2UpOwogICAgaWYgKGN5Y2xlICE9PSBnZW5lcmF0aW9uKSByZXR1cm4gZmFsc2U7CgogICAgaWYgKCFyZXBsYXkpIHsKICAgICAgY2hhbmdlUGhhc2UoJ3RyYXZlbGxpbmcnLCBjb250ZXh0KTsKICAgICAgY29uc3Qgc3RlcHMgPSBNYXRoLmFicyh0byAtIGZyb20pOwogICAgICBmb3IgKGxldCBzdGVwID0gMTsgc3RlcCA8PSBzdGVwczsgc3RlcCsrKSB7CiAgICAgICAgYXdhaXQgZGVsYXkoc3RlcHMgPiAxID8gZHVyYXRpb24uYmV0d2VlbiA6IGR1cmF0aW9uLnRyYXZlbCk7CiAgICAgICAgaWYgKGN5Y2xlICE9PSBnZW5lcmF0aW9uKSByZXR1cm4gZmFsc2U7CiAgICAgICAgb25JbmRpY2F0b3IoZnJvbSArIGRpcmVjdGlvbiAqIHN0ZXAsIGNvbnRleHQpOwogICAgICB9CiAgICB9CiAgICBmbG9vciA9IHRvOwogICAgb25GbG9vcihmbG9vciwgY29udGV4dCk7CiAgICBhd2FpdCBkZWxheShkdXJhdGlvbi5zZXR0bGUpOwogICAgaWYgKGN5Y2xlICE9PSBnZW5lcmF0aW9uKSByZXR1cm4gZmFsc2U7CiAgICBjaGFuZ2VQaGFzZSgnb3BlbmluZycsIGNvbnRleHQpOwogICAgYXdhaXQgZGVsYXkoZHVyYXRpb24ub3Blbik7CiAgICBpZiAoY3ljbGUgIT09IGdlbmVyYXRpb24pIHJldHVybiBmYWxzZTsKICAgIGNoYW5nZVBoYXNlKCdpZGxlJywgY29udGV4dCk7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIC8qKiBJbW1lZGlhdGVseSBmaW5pc2ggb3IgY2FuY2VsIGFuIGFuaW1hdGlvbiB3aGVuIHRoZSB2aXNpdG9yIGNoYW5nZXMgdmlldy4gKi8KICBmdW5jdGlvbiBqdW1wKHJlcXVlc3RlZCkgewogICAgZ2VuZXJhdGlvbisrOwogICAgY29uc3QgZnJvbSA9IGZsb29yOwogICAgZmxvb3IgPSBjbGFtcChyZXF1ZXN0ZWQpOwogICAgZGVzdGluYXRpb24gPSBmbG9vcjsKICAgIGNvbnN0IGNvbnRleHQgPSB7IGZyb20sIHRvOiBmbG9vciwgZGlyZWN0aW9uOiBNYXRoLnNpZ24oZmxvb3IgLSBmcm9tKSwgaW1tZWRpYXRlOiB0cnVlIH07CiAgICBvbkZsb29yKGZsb29yLCBjb250ZXh0KTsKICAgIG9uSW5kaWNhdG9yKGZsb29yLCBjb250ZXh0KTsKICAgIGNoYW5nZVBoYXNlKCdpZGxlJywgY29udGV4dCk7CiAgICByZXR1cm4gZmxvb3I7CiAgfQoKICByZXR1cm4gewogICAgZ2V0IGZsb29yKCkgeyByZXR1cm4gZmxvb3I7IH0sCiAgICBnZXQgZGVzdGluYXRpb24oKSB7IHJldHVybiBkZXN0aW5hdGlvbjsgfSwKICAgIGdldCBwaGFzZSgpIHsgcmV0dXJuIHBoYXNlOyB9LAogICAgb3BlbkluaXRpYWxseSwKICAgIHRyYXZlbFRvLAogICAganVtcAogIH07Cn0KCi8qKiBLZWVwIHJlYWRpbmcgZ2VzdHVyZXMgaW5zaWRlIGEgbG9uZyBzZWN0aW9uIHVudGlsIGl0cyBlZGdlIGlzIHJlYWNoZWQuICovCmZ1bmN0aW9uIGNhblNjcm9sbEluRGlyZWN0aW9uKHJlZ2lvbiwgZGlyZWN0aW9uKSB7CiAgaWYgKCFyZWdpb24gfHwgIWRpcmVjdGlvbiB8fCByZWdpb24uc2Nyb2xsSGVpZ2h0IDw9IHJlZ2lvbi5jbGllbnRIZWlnaHQgKyAyKSByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIGRpcmVjdGlvbiA+IDAKICAgID8gcmVnaW9uLnNjcm9sbFRvcCArIHJlZ2lvbi5jbGllbnRIZWlnaHQgPCByZWdpb24uc2Nyb2xsSGVpZ2h0IC0gMwogICAgOiByZWdpb24uc2Nyb2xsVG9wID4gMzsKfQoKZnVuY3Rpb24gcmVzb2x2ZUtleWJvYXJkVHJhdmVsKHsga2V5LCBzaGlmdEtleSA9IGZhbHNlLCBpbnRlcmFjdGl2ZSA9IGZhbHNlLCBmbG9vciwgY291bnQsIHNjcm9sbFJlZ2lvbnMgPSBbXSB9KSB7CiAgY29uc3QgZGlyZWN0aW9ucyA9IHsgQXJyb3dEb3duOiAxLCBQYWdlRG93bjogMSwgQXJyb3dVcDogLTEsIFBhZ2VVcDogLTEgfTsKICBsZXQgZGlyZWN0aW9uID0gZGlyZWN0aW9uc1trZXldOwogIGlmIChrZXkgPT09ICcgJykgewogICAgaWYgKGludGVyYWN0aXZlKSByZXR1cm4gbnVsbDsKICAgIGRpcmVjdGlvbiA9IHNoaWZ0S2V5ID8gLTEgOiAxOwogIH0KICBpZiAoZGlyZWN0aW9uICYmIHNjcm9sbFJlZ2lvbnMuc29tZShyZWdpb24gPT4gY2FuU2Nyb2xsSW5EaXJlY3Rpb24ocmVnaW9uLCBkaXJlY3Rpb24pKSkgcmV0dXJuIG51bGw7CiAgbGV0IGRlc3RpbmF0aW9uOwogIGlmIChkaXJlY3Rpb24pIGRlc3RpbmF0aW9uID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oY291bnQgLSAxLCBmbG9vciArIGRpcmVjdGlvbikpOwogIGVsc2UgaWYgKGtleSA9PT0gJ0hvbWUnKSBkZXN0aW5hdGlvbiA9IDA7CiAgZWxzZSBpZiAoa2V5ID09PSAnRW5kJykgZGVzdGluYXRpb24gPSBjb3VudCAtIDE7CiAgZWxzZSByZXR1cm4gbnVsbDsKICByZXR1cm4gZGVzdGluYXRpb24gPT09IGZsb29yID8gbnVsbCA6IGRlc3RpbmF0aW9uOwp9CgovKiogTmF0aXZlLXNjcm9sbCB0aW1lbGluZTogZG9vcnMsIHJlYWRpbmcgYW5kIHRoZSB3aG9sZSBjYXIgc2hhcmUgb25lIHBvc2l0aW9uLiAqLwpmdW5jdGlvbiBidWlsZFNjcm9sbFRpbWVsaW5lKG92ZXJmbG93cywgdmlld3BvcnRIZWlnaHQpIHsKICBsZXQgY3Vyc29yID0gMDsKICBjb25zdCBvcGVuaW5nID0gTWF0aC5tYXgoMTcwLCB2aWV3cG9ydEhlaWdodCAqIC4yNCk7CiAgY29uc3QgdHJhdmVsID0gTWF0aC5tYXgoNzAwLCB2aWV3cG9ydEhlaWdodCAqIDEuMzUpOwogIGNvbnN0IHN0b3BzID0gb3ZlcmZsb3dzLm1hcCgob3ZlcmZsb3csIGluZGV4KSA9PiB7CiAgICBjb25zdCBzdGFydCA9IGN1cnNvcjsKICAgIGNvbnN0IHJlYWRTdGFydCA9IHN0YXJ0ICsgb3BlbmluZzsKICAgIGNvbnN0IHJlYWRFbmQgPSByZWFkU3RhcnQgKyBNYXRoLm1heCgxNjAsIG92ZXJmbG93ICsgMTYwKTsKICAgIGNvbnN0IGRlcGFydHVyZUVuZCA9IHJlYWRFbmQgKyBvcGVuaW5nOwogICAgY29uc3QgZW5kID0gaW5kZXggPT09IG92ZXJmbG93cy5sZW5ndGggLSAxID8gcmVhZEVuZCA6IGRlcGFydHVyZUVuZCArIHRyYXZlbDsKICAgIGN1cnNvciA9IGVuZDsKICAgIHJldHVybiB7IGluZGV4LCBzdGFydCwgcmVhZFN0YXJ0LCByZWFkRW5kLCBkZXBhcnR1cmVFbmQsIGVuZCwgb3ZlcmZsb3c6IE1hdGgubWF4KDAsIG92ZXJmbG93KSB9OwogIH0pOwogIHJldHVybiB7IHN0b3BzLCBsZW5ndGg6IGN1cnNvciB9Owp9CgpmdW5jdGlvbiBzYW1wbGVTY3JvbGxKb3VybmV5KHRpbWVsaW5lLCBwb3NpdGlvbikgewogIGNvbnN0IHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0aW1lbGluZS5sZW5ndGgsIHBvc2l0aW9uKSk7CiAgY29uc3Qgc3RvcCA9IHRpbWVsaW5lLnN0b3BzLmZpbmQoaXRlbSA9PiB5IDw9IGl0ZW0uZW5kKSB8fCB0aW1lbGluZS5zdG9wcy5hdCgtMSk7CiAgY29uc3QgYmFzZSA9IHsgZmxvb3I6IHN0b3AuaW5kZXgsIGZyb206IHN0b3AuaW5kZXgsIHRvOiBzdG9wLmluZGV4LCBjYXJZOiAwLCBzY2FsZTogMSwgcmVhZGluZ1RvcDogMCwgZG9vck9wZW46IDEsIGtpbmQ6ICdyZWFkaW5nJyB9OwogIGlmICh5IDwgc3RvcC5yZWFkU3RhcnQpIHJldHVybiB7IC4uLmJhc2UsIGtpbmQ6ICdhcnJpdmFsJywgZG9vck9wZW46ICh5IC0gc3RvcC5zdGFydCkgLyAoc3RvcC5yZWFkU3RhcnQgLSBzdG9wLnN0YXJ0KSB9OwogIGlmICh5IDw9IHN0b3AucmVhZEVuZCkgcmV0dXJuIHsgLi4uYmFzZSwgcmVhZGluZ1RvcDogTWF0aC5tYXgoMCwgTWF0aC5taW4oc3RvcC5vdmVyZmxvdywgeSAtIHN0b3AucmVhZFN0YXJ0IC0gODApKSB9OwogIGJhc2UucmVhZGluZ1RvcCA9IHN0b3Aub3ZlcmZsb3c7CiAgaWYgKHkgPCBzdG9wLmRlcGFydHVyZUVuZCkgcmV0dXJuIHsgLi4uYmFzZSwga2luZDogJ2RlcGFydHVyZScsIGRvb3JPcGVuOiAxIC0gKHkgLSBzdG9wLnJlYWRFbmQpIC8gKHN0b3AuZGVwYXJ0dXJlRW5kIC0gc3RvcC5yZWFkRW5kKSB9OwogIGNvbnN0IHByb2dyZXNzID0gKHkgLSBzdG9wLmRlcGFydHVyZUVuZCkgLyAoc3RvcC5lbmQgLSBzdG9wLmRlcGFydHVyZUVuZCk7CiAgLy8gVGhlIGNhbWVyYSBjaGFuZ2VzIGxhbmRpbmcgb25seSB3aGlsZSB0aGUgZW50aXJlIGNhciBpcyBvdXRzaWRlIHRoZSB2aWV3LgogIHJldHVybiB7IC4uLmJhc2UsIGtpbmQ6ICd0cmF2ZWwnLCBkb29yT3BlbjogMCwgZnJvbTogc3RvcC5pbmRleCwgdG86IHN0b3AuaW5kZXggKyAxLAogICAgZmxvb3I6IHByb2dyZXNzIDwgLjUgPyBzdG9wLmluZGV4IDogc3RvcC5pbmRleCArIDEsCiAgICByZWFkaW5nVG9wOiBwcm9ncmVzcyA8IC41ID8gc3RvcC5vdmVyZmxvdyA6IDAsCiAgICBjYXJZOiBwcm9ncmVzcyA8IC41ID8gLTM4MCAqIHByb2dyZXNzIDogMzgwICogKDEgLSBwcm9ncmVzcyksCiAgICBzY2FsZTogMSAtIC4wOCAqIE1hdGguc2luKE1hdGguUEkgKiBwcm9ncmVzcykgfTsKfQoKLyoqIEJ1dHRvbnMgaGF2ZSBvbmUgZG9vciBjeWNsZSBhbmQgb25lIGxhbmRpbmcsIGluZGVwZW5kZW50IG9mIHRoZSByZWFkaW5nIHRpbWVsaW5lLiAqLwpmdW5jdGlvbiBjcmVhdGVCdXR0b25Kb3VybmV5KHsgcmVhZCwgb25GcmFtZSwgb25MYW5kaW5nID0gKCkgPT4ge30sIG9uRmluaXNoID0gKCkgPT4ge30sIHJlcXVlc3RGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSwgY2FuY2VsRnJhbWUgPSBjYW5jZWxBbmltYXRpb25GcmFtZSwgbm93ID0gKCkgPT4gcGVyZm9ybWFuY2Uubm93KCkgfSkgewogIGxldCBmcmFtZSA9IG51bGw7CiAgbGV0IGdlbmVyYXRpb24gPSAwOwogIGxldCBhY3RpdmUgPSBmYWxzZTsKICBsZXQgc3RhdGUgPSBudWxsOwogIGxldCBkZXN0aW5hdGlvbiA9IG51bGw7CiAgY29uc3QgZWFzZSA9IHZhbHVlID0+IHZhbHVlICogdmFsdWUgKiAoMyAtIDIgKiB2YWx1ZSk7CiAgZnVuY3Rpb24gY2FuY2VsKCkgewogICAgZ2VuZXJhdGlvbisrOwogICAgaWYgKGZyYW1lICE9PSBudWxsKSBjYW5jZWxGcmFtZShmcmFtZSk7CiAgICBmcmFtZSA9IG51bGw7IGFjdGl2ZSA9IGZhbHNlOyBzdGF0ZSA9IG51bGw7IGRlc3RpbmF0aW9uID0gbnVsbDsKICB9CiAgZnVuY3Rpb24gc3RhcnQodG8sIHsgcmVwbGF5ID0gZmFsc2UgfSA9IHt9KSB7CiAgICBjb25zdCBvcmlnaW4gPSBhY3RpdmUgPyBzdGF0ZSA6IHJlYWQoKTsKICAgIGNhbmNlbCgpOwogICAgZGVzdGluYXRpb24gPSB0bzsKICAgIGNvbnN0IGZyb20gPSBvcmlnaW4uZmxvb3I7CiAgICBjb25zdCBzYW1lRmxvb3IgPSBmcm9tID09PSB0bzsKICAgIGNvbnN0IGRpcmVjdGlvbiA9IE1hdGguc2lnbih0byAtIGZyb20pIHx8IG9yaWdpbi5kaXJlY3Rpb24gfHwgMTsKICAgIGNvbnN0IGNsb3NlID0gc2FtZUZsb29yICYmICFyZXBsYXkgPyAwIDogTWF0aC5tYXgoMTYwLCBvcmlnaW4uZG9vck9wZW4gKiA2NDApOwogICAgY29uc3QgdHJhdmVsID0gc2FtZUZsb29yID8gMCA6IDE0MDAgKyBNYXRoLm1pbig5MDAsIE1hdGgubWF4KDAsIE1hdGguYWJzKHRvIC0gZnJvbSkgLSAxKSAqIDExMCk7CiAgICBjb25zdCBvcGVuaW5nID0gc2FtZUZsb29yICYmICFyZXBsYXkgPyA4NTAgKiAoMSAtIG9yaWdpbi5kb29yT3BlbikgOiA4NTA7CiAgICBjb25zdCB0b3RhbCA9IGNsb3NlICsgdHJhdmVsICsgb3BlbmluZzsKICAgIGNvbnN0IHN0YXJ0ZWQgPSBub3coKTsKICAgIGNvbnN0IGN5Y2xlID0gKytnZW5lcmF0aW9uOwogICAgbGV0IGxhbmRlZCA9IGZhbHNlOwogICAgYWN0aXZlID0gdHJ1ZTsKICAgIGZ1bmN0aW9uIHRpY2sodGltZXN0YW1wKSB7CiAgICAgIGlmIChjeWNsZSAhPT0gZ2VuZXJhdGlvbikgcmV0dXJuOwogICAgICBjb25zdCBlbGFwc2VkID0gTWF0aC5tYXgoMCwgdGltZXN0YW1wIC0gc3RhcnRlZCk7CiAgICAgIGNvbnN0IGJhc2UgPSB7IGZyb20sIHRvLCBkaXJlY3Rpb24sIGZsb29yOiBmcm9tLCByZWFkaW5nVG9wOiBvcmlnaW4ucmVhZGluZ1RvcCwgY2FyWTogMCwgc2NhbGU6IDEsIGRvb3JPcGVuOiAwLCBraW5kOiAnZGVwYXJ0dXJlJywgcGhhc2U6ICdjbG9zaW5nJyB9OwogICAgICBpZiAoZWxhcHNlZCA8IGNsb3NlKSB7CiAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBlYXNlKGVsYXBzZWQgLyBjbG9zZSk7CiAgICAgICAgc3RhdGUgPSB7IC4uLmJhc2UsIGRvb3JPcGVuOiBvcmlnaW4uZG9vck9wZW4gKiAoMSAtIHByb2dyZXNzKSwgY2FyWTogb3JpZ2luLmNhclkgKiAoMSAtIHByb2dyZXNzKSwgc2NhbGU6IG9yaWdpbi5zY2FsZSArICgxIC0gb3JpZ2luLnNjYWxlKSAqIHByb2dyZXNzIH07CiAgICAgIH0gZWxzZSBpZiAoZWxhcHNlZCA8IGNsb3NlICsgdHJhdmVsKSB7CiAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSAoZWxhcHNlZCAtIGNsb3NlKSAvIHRyYXZlbDsKICAgICAgICBzdGF0ZSA9IHsgLi4uYmFzZSwga2luZDogJ3RyYXZlbCcsIHBoYXNlOiAndHJhdmVsbGluZycsIGZsb29yOiBwcm9ncmVzcyA8IC41ID8gZnJvbSA6IHRvLAogICAgICAgICAgcmVhZGluZ1RvcDogcHJvZ3Jlc3MgPCAuNSA\/IG9yaWdpbi5yZWFkaW5nVG9wIDogMCwKICAgICAgICAgIGNhclk6IGRpcmVjdGlvbiAqIChwcm9ncmVzcyA8IC41ID8gLTM4MCAqIHByb2dyZXNzIDogMzgwICogKDEgLSBwcm9ncmVzcykpLAogICAgICAgICAgc2NhbGU6IDEgLSAuMDggKiBNYXRoLnNpbihNYXRoLlBJICogcHJvZ3Jlc3MpIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBvcGVuaW5nID8gZWFzZShNYXRoLm1pbigxLCAoZWxhcHNlZCAtIGNsb3NlIC0gdHJhdmVsKSAvIG9wZW5pbmcpKSA6IDE7CiAgICAgICAgY29uc3QgaW5pdGlhbE9wZW4gPSBzYW1lRmxvb3IgJiYgIXJlcGxheSA\/IG9yaWdpbi5kb29yT3BlbiA6IDA7CiAgICAgICAgc3RhdGUgPSB7IC4uLmJhc2UsIGZsb29yOiB0bywgcmVhZGluZ1RvcDogc2FtZUZsb29yID8gb3JpZ2luLnJlYWRpbmdUb3AgOiAwLCBraW5kOiBwcm9ncmVzcyA8IDEgPyAnYXJyaXZhbCcgOiAncmVhZGluZycsIHBoYXNlOiBwcm9ncmVzcyA8IDEgPyAnb3BlbmluZycgOiAnaWRsZScsIGRvb3JPcGVuOiBpbml0aWFsT3BlbiArICgxIC0gaW5pdGlhbE9wZW4pICogcHJvZ3Jlc3MgfTsKICAgICAgfQogICAgICAvLyBSZXBvc2l0aW9uIHRoZSByZWFsIHNjcm9sbGJhciBvbmNlLCB3aGlsZSB0aGUgY29tcGxldGUgY2FyIGlzIG9mZiBzY3JlZW4uCiAgICAgIGlmICghbGFuZGVkICYmIHN0YXRlLmZsb29yID09PSB0byAmJiAoc2FtZUZsb29yIHx8IHN0YXRlLmtpbmQgIT09ICdkZXBhcnR1cmUnKSkgewogICAgICAgIGxhbmRlZCA9IHRydWU7CiAgICAgICAgb25MYW5kaW5nKHRvLCBzdGF0ZS5yZWFkaW5nVG9wLCBzdGF0ZSk7CiAgICAgIH0KICAgICAgb25GcmFtZShzdGF0ZSk7CiAgICAgIGlmIChlbGFwc2VkIDwgdG90YWwpIGZyYW1lID0gcmVxdWVzdEZyYW1lKHRpY2spOwogICAgICBlbHNlIHsgZnJhbWUgPSBudWxsOyBhY3RpdmUgPSBmYWxzZTsgb25GaW5pc2goc3RhdGUpOyB9CiAgICB9CiAgICB0aWNrKHN0YXJ0ZWQpOwogIH0KICByZXR1cm4geyBzdGFydCwgY2FuY2VsLCBnZXQgYWN0aXZlKCkgeyByZXR1cm4gYWN0aXZlOyB9LCBnZXQgc3RhdGUoKSB7IHJldHVybiBzdGF0ZTsgfSwgZ2V0IGRlc3RpbmF0aW9uKCkgeyByZXR1cm4gZGVzdGluYXRpb247IH0gfTsKfQoKZnVuY3Rpb24gdHJhdmVsRGVzdGluYXRpb24oc3RhdGUsIGRpcmVjdGlvbiwgcmVxdWVzdGVkRmxvb3IgPSBudWxsKSB7CiAgcmV0dXJuIHJlcXVlc3RlZEZsb29yID8\/IChkaXJlY3Rpb24gPCAwID8gc3RhdGUuZnJvbSA6IHN0YXRlLnRvKTsKfQoKZnVuY3Rpb24gaW5pdGlhbGl6ZVNpdGVDaHJvbWUocm9vdCkgewogIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnLnNlLXNpdGUtaGVhZGVyJykuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyKSB7CiAgICBpZiAoaGVhZGVyLmRhdGFzZXQubmF2aWdhdGlvblJlYWR5KSByZXR1cm47CiAgICB2YXIgdG9nZ2xlID0gaGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5zZS1tZW51LXRvZ2dsZScpOwogICAgdmFyIG1lbnUgPSBoZWFkZXIucXVlcnlTZWxlY3RvcignLnNlLXNpdGUtbmF2Jyk7CiAgICB2YXIgY29tcGFjdCA9IHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiA5NjBweCknKTsKICAgIGZ1bmN0aW9uIGNsb3NlRHJvcGRvd25zKCkgewogICAgICBoZWFkZXIucXVlcnlTZWxlY3RvckFsbCgnLnNlLXNlcnZpY2VzLW1lbnVbb3Blbl0nKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7IGl0ZW0ub3BlbiA9IGZhbHNlOyB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIHNldE1lbnUob3BlbiwgcmVzdG9yZUZvY3VzKSB7CiAgICAgIGhlYWRlci5jbGFzc0xpc3QudG9nZ2xlKCdzZS1tZW51LW9wZW4nLCBvcGVuKTsKICAgICAgdG9nZ2xlLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIFN0cmluZyhvcGVuKSk7CiAgICAgIHRvZ2dsZS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBvcGVuID8gJ0Nsb3NlIG5hdmlnYXRpb24gbWVudScgOiAnT3BlbiBuYXZpZ2F0aW9uIG1lbnUnKTsKICAgICAgaWYgKCFvcGVuKSBjbG9zZURyb3Bkb3ducygpOwogICAgICBpZiAocmVzdG9yZUZvY3VzKSB0b2dnbGUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pOwogICAgfQogICAgaGVhZGVyLmRhdGFzZXQubmF2aWdhdGlvblJlYWR5ID0gJ3RydWUnOwogICAgdG9nZ2xlLmhpZGRlbiA9IGZhbHNlOwogICAgdG9nZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICBzZXRNZW51KHRvZ2dsZS5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSAhPT0gJ3RydWUnLCBmYWxzZSk7CiAgICB9KTsKICAgIG1lbnUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgdmFyIG9yaWdpbiA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpWzBdOwogICAgICBpZiAoIW9yaWdpbi5jbG9zZXN0KCdhJykpIHJldHVybjsKICAgICAgc2V0TWVudShmYWxzZSwgZmFsc2UpOwogICAgfSk7CiAgICBoZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChldmVudCkgewogICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykgewogICAgICAgIHZhciBzdW1tYXJ5ID0gaGVhZGVyLnF1ZXJ5U2VsZWN0b3IoJy5zZS1zZXJ2aWNlcy1tZW51W29wZW5dIHN1bW1hcnknKTsKICAgICAgICBjbG9zZURyb3Bkb3ducygpOwogICAgICAgIGlmIChoZWFkZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZS1tZW51LW9wZW4nKSkgewogICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgc2V0TWVudShmYWxzZSwgdHJ1ZSk7CiAgICAgICAgfSBlbHNlIGlmIChzdW1tYXJ5KSB7CiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgc3VtbWFyeS5mb2N1cygpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIHJldHVybjsKICAgICAgaWYgKCFjb21wYWN0Lm1hdGNoZXMpIHJldHVybjsKICAgICAgaWYgKCFoZWFkZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdzZS1tZW51LW9wZW4nKSkgcmV0dXJuOwogICAgICB2YXIgc3RvcHMgPSBBcnJheS5mcm9tKGhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCdhLGJ1dHRvbixzdW1tYXJ5JykpLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiBCb29sZWFuKGl0ZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpOwogICAgICB9KTsKICAgICAgdmFyIGZpcnN0ID0gc3RvcHNbMF07CiAgICAgIHZhciBsYXN0ID0gc3RvcHNbc3RvcHMubGVuZ3RoIC0gMV07CiAgICAgIHZhciBjdXJyZW50ID0gcm9vdC5hY3RpdmVFbGVtZW50OwogICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHsKICAgICAgICBpZiAoY3VycmVudCAhPT0gZmlyc3QpIHJldHVybjsKICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGxhc3QuZm9jdXMoKTsKICAgICAgfSBlbHNlIGlmIChjdXJyZW50ID09PSBsYXN0KSB7CiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBmaXJzdC5mb2N1cygpOwogICAgICB9CiAgICB9KTsKICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgaWYgKGhlYWRlci5jb250YWlucyhldmVudC5jb21wb3NlZFBhdGgoKVswXSkpIHJldHVybjsKICAgICAgc2V0TWVudShmYWxzZSwgZmFsc2UpOwogICAgfSk7CiAgICBjb21wYWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsgc2V0TWVudShmYWxzZSwgZmFsc2UpOyB9KTsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdwYWdlc2hvdycsIGZ1bmN0aW9uICgpIHsgc2V0TWVudShmYWxzZSwgZmFsc2UpOyB9KTsKICB9KTsKfQoKCmluaXRpYWxpemVTaXRlQ2hyb21lKHNjb3BlKTsKCmNvbnN0IGJvZHkgPSBzY29wZS5xdWVyeVNlbGVjdG9yKCcuc2Utam91cm5leS1ib2R5Jyk7CmNvbnN0IGZsb29ycyA9IFsuLi5zY29wZS5xdWVyeVNlbGVjdG9yQWxsKCcuZmxvb3InKV07CmNvbnN0IGZsb29yQ29udHJvbHMgPSBbLi4uc2NvcGUucXVlcnlTZWxlY3RvckFsbCgnLmZsb29yLWNvbnRyb2wnKV07CmNvbnN0IGZsb29yTmFtZXMgPSBmbG9vcnMubWFwKGZsb29yID0+IGZsb29yLmRhdGFzZXQubGFiZWwpOwpjb25zdCBmbG9vckNhcHRpb25zID0gZmxvb3JzLm1hcChmbG9vciA9PiBmbG9vci5kYXRhc2V0LmNhcHRpb24pOwpjb25zdCAkID0gaWQgPT4gc2NvcGUuZ2V0RWxlbWVudEJ5SWQoaWQpOwpjb25zdCBtYWluID0gJCgnZmxvb3ItY29udGVudHMnKTsKY29uc3QgcHJlZmVyc1JlZHVjZWRNb3Rpb24gPSB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKTsKbGV0IGltbWVyc2l2ZSA9ICFwcmVmZXJzUmVkdWNlZE1vdGlvbi5tYXRjaGVzOwpsZXQgc291bmRFbmFibGVkID0gZmFsc2U7CmxldCBhdWRpb0NvbnRleHQ7CmxldCBodW07CmxldCBsYXN0QXJyaXZhbCA9IDA7CmxldCB3aGVlbEFtb3VudCA9IDA7CmxldCB3aGVlbFRpbWUgPSAwOwpsZXQgZm9jdXNPbkFycml2YWwgPSBmYWxzZTsKbGV0IGxhc3RUb3VjaFkgPSAwOwpsZXQgdG91Y2hTdGFydFkgPSAwOwpsZXQgdG91Y2hDb25zdW1lZCA9IGZhbHNlOwpsZXQgdG91Y2hBY3RpdmUgPSBmYWxzZTsKbGV0IHRvdWNoU3RhcnRYID0gMDsKbGV0IGVucXVpcnlUZXh0ID0gJyc7CmxldCBnYWxsZXJ5SW5kZXggPSAwOwpsZXQgbW9iaWxlSm91cm5leSA9IG51bGw7CmNvbnN0IG1vYmlsZVZpZXdwb3J0ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDYwMHB4KScpOwpsZXQgc3luY2hyb25pemluZ01vYmlsZUZsb29yID0gZmFsc2U7CgpmdW5jdGlvbiBsZXZlbExhYmVsKGluZGV4KSB7IHJldHVybiBpbmRleCA9PT0gMCA\/ICdHJyA6IFN0cmluZyhpbmRleCkucGFkU3RhcnQoMiwgJzAnKTsgfQpmdW5jdGlvbiBpbmRleEZyb21IYXNoKCkgewogIGNvbnN0IHJlcXVlc3RlZCA9IGZsb29ycy5maW5kSW5kZXgoZmxvb3IgPT4gYCMke2Zsb29yLmlkfWAgPT09IGxvY2F0aW9uLmhhc2gpOwogIGNvbnN0IHByZXZpb3VzU2FtcGxlSGFzaGVzID0geyAnI3dlbGNvbWUnOiAwLCAnI2luc3RhbGxhdGlvbic6IDQsICcjbWFpbnRlbmFuY2UnOiA0LCAnI21vZGVybmlzYXRpb24nOiA0LCAnI2FwcHJvYWNoJzogMSwgJyNjb250YWN0JzogNyB9OwogIHJldHVybiByZXF1ZXN0ZWQgPj0gMCA\/IHJlcXVlc3RlZCA6IChwcmV2aW91c1NhbXBsZUhhc2hlc1tsb2NhdGlvbi5oYXNoXSA\/PyAwKTsKfQoKZnVuY3Rpb24gZm9jdXNGbG9vcihpbmRleCkgewogIGNvbnN0IGRlc3RpbmF0aW9uID0gZmxvb3JzW2luZGV4XS5xdWVyeVNlbGVjdG9yKCdoMSxoMixoMycpIHx8IGZsb29yc1tpbmRleF0ucXVlcnlTZWxlY3RvcignLmZsb29yLWNvbnRlbnQnKTsKICBkZXN0aW5hdGlvbi50YWJJbmRleCA9IC0xOwogIGRlc3RpbmF0aW9uLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsKfQoKZnVuY3Rpb24gYWN0aXZhdGVGbG9vcihpbmRleCwgY29udGV4dCA9IHt9KSB7CiAgZmxvb3JzLmZvckVhY2goKGZsb29yLCBwb3NpdGlvbikgPT4gewogICAgY29uc3QgYWN0aXZlID0gcG9zaXRpb24gPT09IGluZGV4OwogICAgZmxvb3IuaGlkZGVuID0gaW1tZXJzaXZlICYmICFhY3RpdmU7CiAgICBmbG9vci5pbmVydCA9IGltbWVyc2l2ZSAmJiAhYWN0aXZlOwogICAgZmxvb3IuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgYWN0aXZlKTsKICAgIGZsb29yLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWVudGVyaW5nJyk7CiAgICBpZiAoYWN0aXZlICYmIGltbWVyc2l2ZSkgewogICAgICBpZiAoIWNvbnRleHQucmVwbGF5KSBmbG9vci5xdWVyeVNlbGVjdG9yKCcuZmxvb3ItY29udGVudCcpLnNjcm9sbFRvcCA9IDA7CiAgICAgIGlmICghY29udGV4dC5pbW1lZGlhdGUpIGZsb29yLmNsYXNzTGlzdC5hZGQoJ2lzLWVudGVyaW5nJyk7CiAgICB9CiAgfSk7CiAgZmxvb3JDb250cm9scy5mb3JFYWNoKChidXR0b24sIHBvc2l0aW9uKSA9PiB7CiAgICBidXR0b24uY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgcG9zaXRpb24gPT09IGluZGV4KTsKICAgIGlmIChwb3NpdGlvbiA9PT0gaW5kZXgpIGJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICd0cnVlJyk7CiAgICBlbHNlIGJ1dHRvbi5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcpOwogIH0pOwogICQoJ2Zsb29yLWRpZ2l0JykudGV4dENvbnRlbnQgPSBsZXZlbExhYmVsKGluZGV4KTsKICBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1oZWFkZXItZmxvb3JdJykuZm9yRWFjaChhbmNob3IgPT4gewogICAgY29uc3QgYWN0aXZlID0gTnVtYmVyKGFuY2hvci5kYXRhc2V0LmhlYWRlckZsb29yKSA9PT0gaW5kZXg7CiAgICBhbmNob3IuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJywgYWN0aXZlKTsKICAgIGlmIChhY3RpdmUpIGFuY2hvci5zZXRBdHRyaWJ1dGUoJ2FyaWEtY3VycmVudCcsICdsb2NhdGlvbicpOwogICAgZWxzZSBhbmNob3IucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKTsKICB9KTsKICAkKCdkb29yLWZsb29yJykudGV4dENvbnRlbnQgPSBsZXZlbExhYmVsKGluZGV4KTsKICAkKCdmb290ZXItZmxvb3InKS50ZXh0Q29udGVudCA9IGxldmVsTGFiZWwoaW5kZXgpOwogICQoJ2Zvb3Rlci1sYWJlbCcpLnRleHRDb250ZW50ID0gZmxvb3JDYXB0aW9uc1tpbmRleF07CiAgJCgncHJldmlvdXMtZmxvb3InKS5kaXNhYmxlZCA9IGluZGV4ID09PSAwOwogICQoJ25leHQtZmxvb3InKS5kaXNhYmxlZCA9IGluZGV4ID09PSBmbG9vcnMubGVuZ3RoIC0gMTsKICAkKCdzY3JvbGwtbGFiZWwnKS50ZXh0Q29udGVudCA9IGluZGV4ID09PSBmbG9vcnMubGVuZ3RoIC0gMSA\/ICdTQ1JPTEwgVVAgVE8gUkVUVVJOJyA6ICdTQ1JPTEwgVE8gVEhFIE5FWFQgRkxPT1InOwogICQoJ3Njcm9sbC1wcm9tcHQnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBpbmRleCA9PT0gZmxvb3JzLmxlbmd0aCAtIDEgPyAnUmV0dXJuIHRvIHRoZSBwcmV2aW91cyBmbG9vcicgOiAnVHJhdmVsIHRvIHRoZSBuZXh0IGZsb29yJyk7CiAgaWYgKGltbWVyc2l2ZSkgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAjJHtmbG9vcnNbaW5kZXhdLmlkfWApOwp9CgpmdW5jdGlvbiBzdG9wSHVtKCkgewogIGlmICghaHVtKSByZXR1cm47CiAgdHJ5IHsKICAgIGh1bS5nYWluLmdhaW4uc2V0VGFyZ2V0QXRUaW1lKDAsIGF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSwgMC4wNCk7CiAgICBodW0ub3NjaWxsYXRvci5zdG9wKGF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSArIDAuMik7CiAgfSBjYXRjaCB7IC8qIFRoZSBvc2NpbGxhdG9yIG1heSBhbHJlYWR5IGhhdmUgZW5kZWQuICovIH0KICBodW0gPSBudWxsOwp9CgpmdW5jdGlvbiBzdGFydEh1bSgpIHsKICBpZiAoIXNvdW5kRW5hYmxlZCB8fCAhYXVkaW9Db250ZXh0KSByZXR1cm47CiAgc3RvcEh1bSgpOwogIGNvbnN0IG9zY2lsbGF0b3IgPSBhdWRpb0NvbnRleHQuY3JlYXRlT3NjaWxsYXRvcigpOwogIGNvbnN0IGdhaW4gPSBhdWRpb0NvbnRleHQuY3JlYXRlR2FpbigpOwogIG9zY2lsbGF0b3IudHlwZSA9ICdzaW5lJzsKICBvc2NpbGxhdG9yLmZyZXF1ZW5jeS52YWx1ZSA9IDY1OwogIGdhaW4uZ2Fpbi52YWx1ZSA9IDAuMDE4OwogIG9zY2lsbGF0b3IuY29ubmVjdChnYWluKS5jb25uZWN0KGF1ZGlvQ29udGV4dC5kZXN0aW5hdGlvbik7CiAgb3NjaWxsYXRvci5zdGFydCgpOwogIGh1bSA9IHsgb3NjaWxsYXRvciwgZ2FpbiB9Owp9CgpmdW5jdGlvbiBhcnJpdmFsQ2hpbWUoKSB7CiAgaWYgKCFzb3VuZEVuYWJsZWQgfHwgIWF1ZGlvQ29udGV4dCkgcmV0dXJuOwogIFs3NDAsIDU1NF0uZm9yRWFjaCgoZnJlcXVlbmN5LCBpbmRleCkgPT4gewogICAgY29uc3Qgb3NjaWxsYXRvciA9IGF1ZGlvQ29udGV4dC5jcmVhdGVPc2NpbGxhdG9yKCk7CiAgICBjb25zdCBnYWluID0gYXVkaW9Db250ZXh0LmNyZWF0ZUdhaW4oKTsKICAgIGNvbnN0IHN0YXJ0ID0gYXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lICsgaW5kZXggKiAwLjE2OwogICAgb3NjaWxsYXRvci50eXBlID0gJ3NpbmUnOwogICAgb3NjaWxsYXRvci5mcmVxdWVuY3kudmFsdWUgPSBmcmVxdWVuY3k7CiAgICBnYWluLmdhaW4uc2V0VmFsdWVBdFRpbWUoMCwgc3RhcnQpOwogICAgZ2Fpbi5nYWluLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKDAuMDQ1LCBzdGFydCArIDAuMDEyKTsKICAgIGdhaW4uZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMDAxLCBzdGFydCArIDAuNCk7CiAgICBvc2NpbGxhdG9yLmNvbm5lY3QoZ2FpbikuY29ubmVjdChhdWRpb0NvbnRleHQuZGVzdGluYXRpb24pOwogICAgb3NjaWxsYXRvci5zdGFydChzdGFydCk7CiAgICBvc2NpbGxhdG9yLnN0b3Aoc3RhcnQgKyAwLjQ1KTsKICB9KTsKfQoKZnVuY3Rpb24gcGhhc2VDaGFuZ2VkKHBoYXNlLCBjb250ZXh0KSB7CiAgaWYgKHN5bmNocm9uaXppbmdNb2JpbGVGbG9vcikgcmV0dXJuOwogIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtY2xvc2luZycsIHBoYXNlID09PSAnY2xvc2luZycpOwogIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtdHJhdmVsbGluZycsIHBoYXNlID09PSAndHJhdmVsbGluZycpOwogIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgndHJhdmVsLWRvd24nLCBjb250ZXh0LmRpcmVjdGlvbiA8IDApOwogIGJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZG9vcnMtb3BlbicsIHBoYXNlID09PSAnb3BlbmluZycgfHwgcGhhc2UgPT09ICdpZGxlJyk7CiAgYm9keS5kYXRhc2V0LnBoYXNlID0gcGhhc2U7CiAgbWFpbi5pbmVydCA9IGltbWVyc2l2ZSAmJiBwaGFzZSAhPT0gJ2lkbGUnOwogIG1haW4uc2V0QXR0cmlidXRlKCdhcmlhLWJ1c3knLCBTdHJpbmcoaW1tZXJzaXZlICYmIHBoYXNlICE9PSAnaWRsZScpKTsKICBjb25zdCBkaXJlY3Rpb24gPSBjb250ZXh0LmRpcmVjdGlvbiA+IDAgPyAn4oaRJyA6IGNvbnRleHQuZGlyZWN0aW9uIDwgMCA\/ICfihpMnIDogJ+KXjyc7CiAgJCgnZGlyZWN0aW9uLWluZGljYXRvcicpLnRleHRDb250ZW50ID0gcGhhc2UgPT09ICd0cmF2ZWxsaW5nJyA\/IGRpcmVjdGlvbiA6ICfil48nOwogIGNvbnN0IHN0YXR1cyA9IHsKICAgIGNsb3Npbmc6ICdET09SUyBDTE9TSU5HJywKICAgIHRyYXZlbGxpbmc6IGNvbnRleHQuZGlyZWN0aW9uID4gMCA\/ICdHT0lORyBVUCcgOiAnR09JTkcgRE9XTicsCiAgICBvcGVuaW5nOiAnRE9PUlMgT1BFTklORycsCiAgICBpZGxlOiBjb250ZXh0LmN1cnJlbnQgPT09IDAgPyAnV0VMQ09NRSBBQk9BUkQnIDogJ1lPVSBIQVZFIEFSUklWRUQnCiAgfTsKICAkKCdkaXNwbGF5LXN0YXR1cycpLnRleHRDb250ZW50ID0gc3RhdHVzW3BoYXNlXTsKICBmbG9vckNvbnRyb2xzLmZvckVhY2goKGJ1dHRvbiwgcG9zaXRpb24pID0+IGJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKCdyZXF1ZXN0ZWQnLCBwaGFzZSAhPT0gJ2lkbGUnICYmIHBvc2l0aW9uID09PSBjb250ZXh0LnRvKSk7CiAgaWYgKHBoYXNlID09PSAndHJhdmVsbGluZycpIHN0YXJ0SHVtKCk7CiAgZWxzZSBzdG9wSHVtKCk7CiAgaWYgKHBoYXNlID09PSAnb3BlbmluZycgJiYgIWNvbnRleHQuaW5pdGlhbCkgYXJyaXZhbENoaW1lKCk7CiAgaWYgKHBoYXNlID09PSAnaWRsZScpIHsKICAgIGxhc3RBcnJpdmFsID0gcGVyZm9ybWFuY2Uubm93KCk7CiAgICB3aGVlbEFtb3VudCA9IDA7CiAgICAkKCdqb3VybmV5LWFubm91bmNlbWVudCcpLnRleHRDb250ZW50ID0gYCR7Y29udGV4dC5jdXJyZW50ID09PSAwID8gJ0dyb3VuZCBmbG9vcicgOiBgRmxvb3IgJHtjb250ZXh0LmN1cnJlbnR9YH0uICR7Zmxvb3JOYW1lc1tjb250ZXh0LmN1cnJlbnRdfS4gRG9vcnMgb3Blbi5gOwogICAgaWYgKGZvY3VzT25BcnJpdmFsICYmIGltbWVyc2l2ZSkgewogICAgICBmb2N1c0Zsb29yKGNvbnRleHQuY3VycmVudCk7CiAgICAgIGZvY3VzT25BcnJpdmFsID0gZmFsc2U7CiAgICB9CiAgfQp9Cgpjb25zdCBjb250cm9sbGVyID0gY3JlYXRlVHJhdmVsQ29udHJvbGxlcih7CiAgY291bnQ6IGZsb29ycy5sZW5ndGgsCiAgaW5pdGlhbDogaW5kZXhGcm9tSGFzaCgpLAogIHRpbWluZ3M6IHsgY2xvc2U6IDcwMCwgdHJhdmVsOiAxNTAwLCBiZXR3ZWVuOiA1MDAsIHNldHRsZTogMTMwLCBvcGVuOiAxMTAwIH0sCiAgb25GbG9vcjogYWN0aXZhdGVGbG9vciwKICBvblBoYXNlOiBwaGFzZUNoYW5nZWQsCiAgb25JbmRpY2F0b3IoaW5kZXgpIHsKICAgICQoJ2Zsb29yLWRpZ2l0JykudGV4dENvbnRlbnQgPSBsZXZlbExhYmVsKGluZGV4KTsKICAgICQoJ2Rvb3ItZmxvb3InKS50ZXh0Q29udGVudCA9IGxldmVsTGFiZWwoaW5kZXgpOwogIH0KfSk7CgpmdW5jdGlvbiBuYXZpZ2F0ZVRvKGluZGV4LCB7IGZvY3VzID0gZmFsc2UgfSA9IHt9KSB7CiAgaWYgKG1vYmlsZUpvdXJuZXkpIHsgbW9iaWxlSm91cm5leS5uYXZpZ2F0ZShpbmRleCwgZm9jdXMpOyByZXR1cm47IH0KICBpZiAoIWltbWVyc2l2ZSkgewogICAgZmxvb3JzW2luZGV4XS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBwcmVmZXJzUmVkdWNlZE1vdGlvbi5tYXRjaGVzID8gJ2luc3RhbnQnIDogJ3Ntb290aCcsIGJsb2NrOiAnc3RhcnQnIH0pOwogICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAjJHtmbG9vcnNbaW5kZXhdLmlkfWApOwogICAgaWYgKGZvY3VzKSBmb2N1c0Zsb29yKGluZGV4KTsKICAgIHJldHVybjsKICB9CiAgaWYgKGNvbnRyb2xsZXIucGhhc2UgIT09ICdpZGxlJykgcmV0dXJuOwogIGlmIChpbmRleCA9PT0gY29udHJvbGxlci5mbG9vcikgewogICAgaWYgKGZvY3VzKSBmb2N1c0Zsb29yKGluZGV4KTsKICAgIGZvY3VzT25BcnJpdmFsID0gZmFsc2U7CiAgICByZXR1cm47CiAgfQogIGZvY3VzT25BcnJpdmFsID0gZm9jdXM7CiAgdm9pZCBjb250cm9sbGVyLnRyYXZlbFRvKGluZGV4KTsKfQoKZnVuY3Rpb24gc2V0Vmlldyh1c2VJbW1lcnNpdmUsIHsgaW5pdGlhbCA9IGZhbHNlIH0gPSB7fSkgewogIGNvbnN0IGN1cnJlbnQgPSBjb250cm9sbGVyLmZsb29yOwogIG1vYmlsZUpvdXJuZXk\/LmRlc3Ryb3koKTsKICBtb2JpbGVKb3VybmV5ID0gbnVsbDsKICBpbW1lcnNpdmUgPSB1c2VJbW1lcnNpdmU7CiAgYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdleHBlcmllbmNlLW9uJywgaW1tZXJzaXZlKTsKICBob3N0LmRhdGFzZXQuaW1tZXJzaXZlID0gU3RyaW5nKGltbWVyc2l2ZSk7CiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdzZS1lbGV2YXRvci1pbW1lcnNpdmUnLCBpbW1lcnNpdmUpOwogICQoJ3ZpZXctdG9nZ2xlJykuaGlkZGVuID0gZmFsc2U7CiAgJCgndmlldy10b2dnbGUnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIFN0cmluZyghaW1tZXJzaXZlKSk7CiAgJCgndmlldy10b2dnbGUnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBpbW1lcnNpdmUgPyAnU3dpdGNoIHRvIHN0YW5kYXJkIHNjcm9sbGluZyB2aWV3JyA6ICdTd2l0Y2ggdG8gdGhlIGVsZXZhdG9yIGV4cGVyaWVuY2UnKTsKICBzY29wZS5xdWVyeVNlbGVjdG9yKCcudmlldy1sYWJlbCcpLnRleHRDb250ZW50ID0gaW1tZXJzaXZlID8gJ1N0YW5kYXJkIHZpZXcnIDogJ0VsZXZhdG9yIHZpZXcnOwogIHNjb3BlLnF1ZXJ5U2VsZWN0b3IoJy52aWV3LXN5bWJvbCcpLnRleHRDb250ZW50ID0gaW1tZXJzaXZlID8gJ+KYtycgOiAn4oaVJzsKICBpZiAoIWltbWVyc2l2ZSkgewogICAgY29udHJvbGxlci5qdW1wKGN1cnJlbnQpOwogICAgbWFpbi5pbmVydCA9IGZhbHNlOwogICAgbWFpbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtYnVzeScsICdmYWxzZScpOwogICAgZmxvb3JzLmZvckVhY2goZmxvb3IgPT4geyBmbG9vci5oaWRkZW4gPSBmYWxzZTsgZmxvb3IuaW5lcnQgPSBmYWxzZTsgfSk7CiAgICBzdG9wSHVtKCk7CiAgICBpZiAoIWluaXRpYWwpIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiBmbG9vcnNbY3VycmVudF0uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ3N0YXJ0JywgYmVoYXZpb3I6ICdpbnN0YW50JyB9KSk7CiAgfSBlbHNlIHsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdpbnN0YW50JyB9KTsKICAgIGNvbnRyb2xsZXIuanVtcChjdXJyZW50KTsKICAgIGlmIChtb2JpbGVWaWV3cG9ydC5tYXRjaGVzKSB7CiAgICAgIG1vYmlsZUpvdXJuZXkgPSBjcmVhdGVNb2JpbGVKb3VybmV5KGN1cnJlbnQsIGluaXRpYWwpOwogICAgICByZXR1cm47CiAgICB9CiAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2Rvb3JzLW9wZW4nKTsKICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdm9pZCBjb250cm9sbGVyLm9wZW5Jbml0aWFsbHkoKSkpOwogIH0KfQoKJCgndmlldy10b2dnbGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHNldFZpZXcoIWltbWVyc2l2ZSkpOwpwcmVmZXJzUmVkdWNlZE1vdGlvbi5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBldmVudCA9PiB7IGlmIChldmVudC5tYXRjaGVzKSBzZXRWaWV3KGZhbHNlKTsgfSk7Cm1vYmlsZVZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHsgaWYgKGltbWVyc2l2ZSkgc2V0Vmlldyh0cnVlKTsgfSk7CgpmbG9vckNvbnRyb2xzLmZvckVhY2goYnV0dG9uID0+IHsKICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBuYXZpZ2F0ZVRvKE51bWJlcihidXR0b24uZGF0YXNldC50YXJnZXQpLCB7IGZvY3VzOiB0cnVlIH0pKTsKfSk7CnNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl49IiMiXSxhW2hyZWY9Ii8iXSxhW2hyZWY9Ii8jIl0nKS5mb3JFYWNoKGFuY2hvciA9PiB7CiAgYW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4gewogICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHwgZXZlbnQuYnV0dG9uID4gMCB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuYWx0S2V5KSByZXR1cm47CiAgICBjb25zdCBocmVmID0gYW5jaG9yLmdldEF0dHJpYnV0ZSgnaHJlZicpOwogICAgY29uc3QgaW5kZXggPSBocmVmID09PSAnLycgfHwgaHJlZiA9PT0gJy8jJyA\/IDAgOiBmbG9vcnMuZmluZEluZGV4KGZsb29yID0+IGAjJHtmbG9vci5pZH1gID09PSBocmVmKTsKICAgIGlmIChpbmRleCA8IDApIHJldHVybjsKICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICBuYXZpZ2F0ZVRvKGluZGV4LCB7IGZvY3VzOiB0cnVlIH0pOwogIH0pOwp9KTsKJCgncHJldmlvdXMtZmxvb3InKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IG5hdmlnYXRlVG8oTWF0aC5tYXgoMCwgY29udHJvbGxlci5mbG9vciAtIDEpLCB7IGZvY3VzOiB0cnVlIH0pKTsKJCgnbmV4dC1mbG9vcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gbmF2aWdhdGVUbyhNYXRoLm1pbihmbG9vcnMubGVuZ3RoIC0gMSwgY29udHJvbGxlci5mbG9vciArIDEpLCB7IGZvY3VzOiB0cnVlIH0pKTsKJCgncmVwbGF5LWRvb3JzJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgaWYgKG1vYmlsZUpvdXJuZXkpIG1vYmlsZUpvdXJuZXkucmVwbGF5KCk7CiAgZWxzZSB2b2lkIGNvbnRyb2xsZXIudHJhdmVsVG8oY29udHJvbGxlci5mbG9vciwgeyByZXBsYXk6IHRydWUgfSk7Cn0pOwokKCdzY3JvbGwtcHJvbXB0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgaWYgKG1vYmlsZUpvdXJuZXkpIG1vYmlsZUpvdXJuZXkuYWR2YW5jZSgpOwogIGVsc2UgbmF2aWdhdGVUbyhjb250cm9sbGVyLmZsb29yID09PSBmbG9vcnMubGVuZ3RoIC0gMSA\/IGNvbnRyb2xsZXIuZmxvb3IgLSAxIDogY29udHJvbGxlci5mbG9vciArIDEpOwp9KTsKCmZ1bmN0aW9uIGlzRWRpdGluZyh0YXJnZXQpIHsKICByZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgRWxlbWVudCAmJiBCb29sZWFuKHRhcmdldC5jbG9zZXN0KCdpbnB1dCx0ZXh0YXJlYSxzZWxlY3QsW2NvbnRlbnRlZGl0YWJsZT0idHJ1ZSJdJykpOwp9CmZ1bmN0aW9uIHNjcm9sbFJlZ2lvbnMob3JpZ2luKSB7CiAgaWYgKCEob3JpZ2luIGluc3RhbmNlb2YgRWxlbWVudCkpIHJldHVybiBbXTsKICByZXR1cm4gW2Nsb3Nlc3RDb21wb3NlZChvcmlnaW4sICd0ZXh0YXJlYScpLCBjbG9zZXN0Q29tcG9zZWQob3JpZ2luLCAnLmZsb29yLWNvbnRlbnQnKV0uZmlsdGVyKEJvb2xlYW4pOwp9CmZ1bmN0aW9uIGNhbkNvbnRlbnRTY3JvbGwoZGlyZWN0aW9uLCBvcmlnaW4pIHsKICByZXR1cm4gc2Nyb2xsUmVnaW9ucyhvcmlnaW4pLnNvbWUocmVnaW9uID0+IGNhblNjcm9sbEluRGlyZWN0aW9uKHJlZ2lvbiwgZGlyZWN0aW9uKSk7Cn0KCndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIGV2ZW50ID0+IHsKICBpZiAoZXZlbnRPcmlnaW4oZXZlbnQpIGluc3RhbmNlb2YgRWxlbWVudCAmJiBldmVudE9yaWdpbihldmVudCkuY2xvc2VzdCgnLnNlLXNpdGUtaGVhZGVyJykpIHJldHVybjsKICBpZiAoIWltbWVyc2l2ZSB8fCBtb2JpbGVKb3VybmV5IHx8ICQoJ2dhbGxlcnktbGlnaHRib3gnKS5vcGVuIHx8IGV2ZW50LmN0cmxLZXkgfHwgTWF0aC5hYnMoZXZlbnQuZGVsdGFYKSA+IE1hdGguYWJzKGV2ZW50LmRlbHRhWSkgfHwgaXNFZGl0aW5nKGV2ZW50T3JpZ2luKGV2ZW50KSkpIHJldHVybjsKICBpZiAoY2FuQ29udGVudFNjcm9sbChNYXRoLnNpZ24oZXZlbnQuZGVsdGFZKSwgZXZlbnRPcmlnaW4oZXZlbnQpKSAmJiBjb250cm9sbGVyLnBoYXNlID09PSAnaWRsZScpIHJldHVybjsKICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogIGlmIChjb250cm9sbGVyLnBoYXNlICE9PSAnaWRsZScgfHwgcGVyZm9ybWFuY2Uubm93KCkgLSBsYXN0QXJyaXZhbCA8IDM0MCkgcmV0dXJuOwogIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpOwogIGlmIChub3cgLSB3aGVlbFRpbWUgPiAxNzAgfHwgTWF0aC5zaWduKHdoZWVsQW1vdW50KSAhPT0gTWF0aC5zaWduKGV2ZW50LmRlbHRhWSkpIHdoZWVsQW1vdW50ID0gMDsKICB3aGVlbFRpbWUgPSBub3c7CiAgd2hlZWxBbW91bnQgKz0gZXZlbnQuZGVsdGFZICogKGV2ZW50LmRlbHRhTW9kZSA9PT0gMSA\/IDE4IDogZXZlbnQuZGVsdGFNb2RlID09PSAyID8gMjAwIDogMSk7CiAgaWYgKE1hdGguYWJzKHdoZWVsQW1vdW50KSA+PSA0NikgewogICAgY29uc3QgZGVzdGluYXRpb24gPSBNYXRoLm1heCgwLCBNYXRoLm1pbihmbG9vcnMubGVuZ3RoIC0gMSwgY29udHJvbGxlci5mbG9vciArIE1hdGguc2lnbih3aGVlbEFtb3VudCkpKTsKICAgIHdoZWVsQW1vdW50ID0gMDsKICAgIG5hdmlnYXRlVG8oZGVzdGluYXRpb24pOwogIH0KfSwgeyBwYXNzaXZlOiBmYWxzZSB9KTsKCndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZXZlbnQgPT4gewogIGlmIChldmVudE9yaWdpbihldmVudCkgaW5zdGFuY2VvZiBFbGVtZW50ICYmIGV2ZW50T3JpZ2luKGV2ZW50KS5jbG9zZXN0KCcuc2Utc2l0ZS1oZWFkZXInKSkgeyB0b3VjaEFjdGl2ZSA9IGZhbHNlOyByZXR1cm47IH0KICB0b3VjaEFjdGl2ZSA9IGltbWVyc2l2ZSAmJiAhbW9iaWxlSm91cm5leSAmJiAhJCgnZ2FsbGVyeS1saWdodGJveCcpLm9wZW4gJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPT09IDE7CiAgaWYgKCF0b3VjaEFjdGl2ZSkgcmV0dXJuOwogIHRvdWNoU3RhcnRZID0gbGFzdFRvdWNoWSA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTsKICB0b3VjaFN0YXJ0WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsKICB0b3VjaENvbnN1bWVkID0gZmFsc2U7Cn0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGV2ZW50ID0+IHsKICBpZiAoZXZlbnQudG91Y2hlcy5sZW5ndGggIT09IDEpIHRvdWNoQWN0aXZlID0gZmFsc2U7CiAgaWYgKCF0b3VjaEFjdGl2ZSB8fCAhaW1tZXJzaXZlIHx8ICQoJ2dhbGxlcnktbGlnaHRib3gnKS5vcGVuIHx8IGlzRWRpdGluZyhldmVudE9yaWdpbihldmVudCkpKSByZXR1cm47CiAgY29uc3QgY3VycmVudFkgPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFk7CiAgY29uc3QgaG9yaXpvbnRhbERpc3RhbmNlID0gTWF0aC5hYnMoZXZlbnQudG91Y2hlc1swXS5jbGllbnRYIC0gdG91Y2hTdGFydFgpOwogIGlmIChob3Jpem9udGFsRGlzdGFuY2UgPiBNYXRoLmFicyh0b3VjaFN0YXJ0WSAtIGN1cnJlbnRZKSArIDEwKSB7CiAgICB0b3VjaEFjdGl2ZSA9IGZhbHNlOwogICAgcmV0dXJuOwogIH0KICBjb25zdCBpbmNyZW1lbnRhbERpcmVjdGlvbiA9IE1hdGguc2lnbihsYXN0VG91Y2hZIC0gY3VycmVudFkpOwogIGxhc3RUb3VjaFkgPSBjdXJyZW50WTsKICBpZiAoY2FuQ29udGVudFNjcm9sbChpbmNyZW1lbnRhbERpcmVjdGlvbiwgZXZlbnRPcmlnaW4oZXZlbnQpKSAmJiBjb250cm9sbGVyLnBoYXNlID09PSAnaWRsZScgJiYgIXRvdWNoQ29uc3VtZWQpIHsKICAgIC8vIFN0YXJ0IGEgZnJlc2ggZ2VzdHVyZSBhdCB0aGUgY29udGVudCBlZGdlLCByYXRoZXIgdGhhbiByZXVzaW5nIGEgbG9uZyBzd2lwZS4KICAgIHRvdWNoU3RhcnRZID0gY3VycmVudFk7CiAgICB0b3VjaFN0YXJ0WCA9IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDsKICAgIHJldHVybjsKICB9CiAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICBpZiAoY29udHJvbGxlci5waGFzZSAhPT0gJ2lkbGUnIHx8IHRvdWNoQ29uc3VtZWQgfHwgcGVyZm9ybWFuY2Uubm93KCkgLSBsYXN0QXJyaXZhbCA8IDI1MCkgcmV0dXJuOwogIGNvbnN0IGRpc3RhbmNlID0gdG91Y2hTdGFydFkgLSBjdXJyZW50WTsKICBpZiAoTWF0aC5hYnMoZGlzdGFuY2UpID49IDQ4KSB7CiAgICB0b3VjaENvbnN1bWVkID0gdHJ1ZTsKICAgIG5hdmlnYXRlVG8oTWF0aC5tYXgoMCwgTWF0aC5taW4oZmxvb3JzLmxlbmd0aCAtIDEsIGNvbnRyb2xsZXIuZmxvb3IgKyBNYXRoLnNpZ24oZGlzdGFuY2UpKSkpOwogIH0KfSwgeyBwYXNzaXZlOiBmYWxzZSB9KTsKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgKCkgPT4geyB0b3VjaEFjdGl2ZSA9IGZhbHNlOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsICgpID0+IHsgdG91Y2hBY3RpdmUgPSBmYWxzZTsgfSwgeyBwYXNzaXZlOiB0cnVlIH0pOwoKd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PiB7CiAgaWYgKGV2ZW50T3JpZ2luKGV2ZW50KSBpbnN0YW5jZW9mIEVsZW1lbnQgJiYgZXZlbnRPcmlnaW4oZXZlbnQpLmNsb3Nlc3QoJy5zZS1zaXRlLWhlYWRlcicpKSByZXR1cm47CiAgaWYgKG1vYmlsZUpvdXJuZXkpIHsKICAgIGlmIChpc0VkaXRpbmcoZXZlbnRPcmlnaW4oZXZlbnQpKSB8fCAkKCdnYWxsZXJ5LWxpZ2h0Ym94Jykub3BlbiB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSByZXR1cm47CiAgICBpZiAoZXZlbnQua2V5ID09PSAnSG9tZScgfHwgZXZlbnQua2V5ID09PSAnRW5kJykgewogICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBtb2JpbGVKb3VybmV5Lm5hdmlnYXRlKGV2ZW50LmtleSA9PT0gJ0hvbWUnID8gMCA6IGZsb29ycy5sZW5ndGggLSAxLCB0cnVlKTsKICAgIH0KICAgIHJldHVybjsKICB9CiAgaWYgKCFpbW1lcnNpdmUgfHwgbW9iaWxlSm91cm5leSB8fCAkKCdnYWxsZXJ5LWxpZ2h0Ym94Jykub3BlbiB8fCBpc0VkaXRpbmcoZXZlbnRPcmlnaW4oZXZlbnQpKSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSByZXR1cm47CiAgY29uc3QgaW5kZXggPSByZXNvbHZlS2V5Ym9hcmRUcmF2ZWwoewogICAga2V5OiBldmVudC5rZXksCiAgICBzaGlmdEtleTogZXZlbnQuc2hpZnRLZXksCiAgICBpbnRlcmFjdGl2ZTogZXZlbnRPcmlnaW4oZXZlbnQpIGluc3RhbmNlb2YgRWxlbWVudCAmJiBCb29sZWFuKGV2ZW50T3JpZ2luKGV2ZW50KS5jbG9zZXN0KCdidXR0b24sYSxzdW1tYXJ5JykpLAogICAgZmxvb3I6IGNvbnRyb2xsZXIuZmxvb3IsCiAgICBjb3VudDogZmxvb3JzLmxlbmd0aCwKICAgIHNjcm9sbFJlZ2lvbnM6IHNjcm9sbFJlZ2lvbnMoZXZlbnRPcmlnaW4oZXZlbnQpKQogIH0pOwogIGlmIChpbmRleCA9PT0gbnVsbCkgcmV0dXJuOwogIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgbmF2aWdhdGVUbyhpbmRleCwgeyBmb2N1czogdHJ1ZSB9KTsKfSk7CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdoYXNoY2hhbmdlJywgKCkgPT4gbmF2aWdhdGVUbyhpbmRleEZyb21IYXNoKCksIHsgZm9jdXM6IHRydWUgfSkpOwoKbGV0IHN0YW5kYXJkU2Nyb2xsRnJhbWU7CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiB7CiAgaWYgKGltbWVyc2l2ZSB8fCBzdGFuZGFyZFNjcm9sbEZyYW1lKSByZXR1cm47CiAgc3RhbmRhcmRTY3JvbGxGcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7CiAgICBzdGFuZGFyZFNjcm9sbEZyYW1lID0gdW5kZWZpbmVkOwogICAgY29uc3QgcmVhZGluZ0xpbmUgPSBzY29wZS5xdWVyeVNlbGVjdG9yKCcudG9wYmFyJykub2Zmc2V0SGVpZ2h0ICsgd2luZG93LmlubmVySGVpZ2h0ICogMC4yOwogICAgbGV0IGN1cnJlbnQgPSBjb250cm9sbGVyLmZsb29yOwogICAgZmxvb3JzLmZvckVhY2goKGZsb29yLCBpbmRleCkgPT4gewogICAgICBjb25zdCBib3VuZHMgPSBmbG9vci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgaWYgKGJvdW5kcy50b3AgPD0gcmVhZGluZ0xpbmUgJiYgYm91bmRzLmJvdHRvbSA+IHJlYWRpbmdMaW5lKSBjdXJyZW50ID0gaW5kZXg7CiAgICB9KTsKICAgIGlmIChjdXJyZW50ICE9PSBjb250cm9sbGVyLmZsb29yKSBjb250cm9sbGVyLmp1bXAoY3VycmVudCk7CiAgfSk7Cn0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiQoJ3NvdW5kLXRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4gewogIHRyeSB7CiAgICBpZiAoIWF1ZGlvQ29udGV4dCkgewogICAgICBjb25zdCBBdWRpb0NvbnRleHRDbGFzcyA9IHdpbmRvdy5BdWRpb0NvbnRleHQgfHwgd2luZG93LndlYmtpdEF1ZGlvQ29udGV4dDsKICAgICAgaWYgKCFBdWRpb0NvbnRleHRDbGFzcykgdGhyb3cgbmV3IEVycm9yKCdObyBhdWRpbyBzdXBwb3J0Jyk7CiAgICAgIGF1ZGlvQ29udGV4dCA9IG5ldyBBdWRpb0NvbnRleHRDbGFzcygpOwogICAgfQogICAgYXdhaXQgYXVkaW9Db250ZXh0LnJlc3VtZSgpOwogICAgc291bmRFbmFibGVkID0gIXNvdW5kRW5hYmxlZDsKICAgICQoJ3NvdW5kLXRvZ2dsZScpLnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJywgU3RyaW5nKHNvdW5kRW5hYmxlZCkpOwogICAgJCgnc291bmQtbGFiZWwnKS50ZXh0Q29udGVudCA9IHNvdW5kRW5hYmxlZCA\/ICdTb3VuZCBvbicgOiAnU291bmQgb2ZmJzsKICAgIGlmIChzb3VuZEVuYWJsZWQpIGFycml2YWxDaGltZSgpOwogICAgZWxzZSBzdG9wSHVtKCk7CiAgfSBjYXRjaCB7CiAgICAkKCdzb3VuZC1sYWJlbCcpLnRleHRDb250ZW50ID0gJ1NvdW5kIHVuYXZhaWxhYmxlJzsKICAgIHNvdW5kRW5hYmxlZCA9IGZhbHNlOwogICAgJCgnc291bmQtdG9nZ2xlJykuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCAnZmFsc2UnKTsKICB9Cn0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgKCkgPT4geyBpZiAoZG9jdW1lbnQuaGlkZGVuKSBzdG9wSHVtKCk7IH0pOwoKY29uc3QgZ2FsbGVyeUxpbmtzID0gWy4uLnNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWdhbGxlcnldJyldOwpmdW5jdGlvbiBzaG93UGhvdG8oaW5kZXgpIHsKICBnYWxsZXJ5SW5kZXggPSAoaW5kZXggKyBnYWxsZXJ5TGlua3MubGVuZ3RoKSAlIGdhbGxlcnlMaW5rcy5sZW5ndGg7CiAgY29uc3QgdGh1bWJuYWlsID0gZ2FsbGVyeUxpbmtzW2dhbGxlcnlJbmRleF0ucXVlcnlTZWxlY3RvcignaW1nJyk7CiAgJCgnbGlnaHRib3gtaW1hZ2UnKS5zcmMgPSB0aHVtYm5haWwuY3VycmVudFNyYyB8fCB0aHVtYm5haWwuc3JjOwogICQoJ2xpZ2h0Ym94LWltYWdlJykuYWx0ID0gYFN1YmhhbiBFbGV2YXRvciBwcm9qZWN0IHBob3RvZ3JhcGggJHtnYWxsZXJ5SW5kZXggKyAxfWA7CiAgJCgncGhvdG8tY291bnQnKS50ZXh0Q29udGVudCA9IGAke1N0cmluZyhnYWxsZXJ5SW5kZXggKyAxKS5wYWRTdGFydCgyLCAnMCcpfSAvICR7U3RyaW5nKGdhbGxlcnlMaW5rcy5sZW5ndGgpLnBhZFN0YXJ0KDIsICcwJyl9YDsKfQpnYWxsZXJ5TGlua3MuZm9yRWFjaCgoYW5jaG9yLCBpbmRleCkgPT4gewogIGFuY2hvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50ID0+IHsKICAgIGlmICh0eXBlb2YgJCgnZ2FsbGVyeS1saWdodGJveCcpLnNob3dNb2RhbCAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuOwogICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgIHNob3dQaG90byhpbmRleCk7CiAgICAkKCdnYWxsZXJ5LWxpZ2h0Ym94Jykuc2hvd01vZGFsKCk7CiAgfSk7Cn0pOwokKCdjbG9zZS1nYWxsZXJ5JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiAkKCdnYWxsZXJ5LWxpZ2h0Ym94JykuY2xvc2UoKSk7CiQoJ3ByZXZpb3VzLXBob3RvJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBzaG93UGhvdG8oZ2FsbGVyeUluZGV4IC0gMSkpOwokKCduZXh0LXBob3RvJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiBzaG93UGhvdG8oZ2FsbGVyeUluZGV4ICsgMSkpOwokKCdnYWxsZXJ5LWxpZ2h0Ym94JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudCA9PiB7CiAgaWYgKGV2ZW50T3JpZ2luKGV2ZW50KSA9PT0gJCgnZ2FsbGVyeS1saWdodGJveCcpKSAkKCdnYWxsZXJ5LWxpZ2h0Ym94JykuY2xvc2UoKTsKfSk7CiQoJ2dhbGxlcnktbGlnaHRib3gnKS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT4gewogIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0JykgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBzaG93UGhvdG8oZ2FsbGVyeUluZGV4ICsgMSk7IH0KICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JykgeyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBzaG93UGhvdG8oZ2FsbGVyeUluZGV4IC0gMSk7IH0KfSk7CgovKiogQSByZWFsIHBhZ2Ugc2Nyb2xsYmFyIGRyaXZlcyB0aGUgY29tcGxldGUgZWxldmF0b3IgZnJhbWUgb24gbW9iaWxlLiAqLwpmdW5jdGlvbiBjcmVhdGVNb2JpbGVKb3VybmV5KGluaXRpYWxGbG9vciwgZmlyc3RMb2FkKSB7CiAgYm9keS5jbGFzc0xpc3QuYWRkKCdtb2JpbGUtc2Nyb2xsJyk7CiAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdzZS1tb2JpbGUtc2Nyb2xsJyk7CiAgY29uc3QgcnVud2F5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgcnVud2F5LmNsYXNzTmFtZSA9ICdzZS1zY3JvbGwtcnVud2F5JzsKICBydW53YXkuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7CiAgcnVud2F5LnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2Rpc3BsYXk6YmxvY2s7d2lkdGg6MXB4O3BvaW50ZXItZXZlbnRzOm5vbmU7JzsKICBkb2N1bWVudC5ib2R5LmFwcGVuZChydW53YXkpOwogIGxldCB0aW1lbGluZTsKICBsZXQgZnJhbWU7CiAgbGV0IHBlbmRpbmdGb2N1cyA9IGZhbHNlOwogIGxldCBmb2N1c1RhcmdldCA9IG51bGw7CiAgbGV0IHN0YXR1c0tleSA9ICcnOwogIGxldCBwcmV2aW91c1kgPSB3aW5kb3cuc2Nyb2xsWTsKICBsZXQgZGlyZWN0aW9uID0gMTsKICBsZXQgbGFzdFBoYXNlID0gJyc7CiAgbGV0IGRlc3Ryb3llZCA9IGZhbHNlOwogIGxldCByZXNpemVUaW1lcjsKICBsZXQgbGFzdFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7CiAgbGV0IGxhc3RIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgY29uc3QgY2FyID0gYm9keS5xdWVyeVNlbGVjdG9yKCcuc2hhZnQtZnJhbWUnKTsKICBjb25zdCBsYXlvdXQgPSBib2R5LnF1ZXJ5U2VsZWN0b3IoJy5lbGV2YXRvci1sYXlvdXQnKTsKICBjb25zdCB0cmFuc2l0U3RhdHVzID0gJCgndHJhdmVsLXN0YXR1cycpOwogIGNvbnN0IGJ1dHRvbkpvdXJuZXkgPSBjcmVhdGVCdXR0b25Kb3VybmV5KHsKICAgIHJlYWQ6ICgpID0+IHsKICAgICAgY29uc3Qgc25hcHNob3QgPSBzYW1wbGVTY3JvbGxKb3VybmV5KHRpbWVsaW5lLCB3aW5kb3cuc2Nyb2xsWSk7CiAgICAgIHJldHVybiB7IC4uLnNuYXBzaG90LCByZWFkaW5nVG9wOiBmbG9vcnNbc25hcHNob3QuZmxvb3JdLnF1ZXJ5U2VsZWN0b3IoJy5mbG9vci1jb250ZW50Jykuc2Nyb2xsVG9wIH07CiAgICB9LAogICAgb25GcmFtZTogc2NoZWR1bGVSZW5kZXIsCiAgICBvbkxhbmRpbmc6IChpbmRleCwgcmVhZGluZ1RvcCkgPT4gewogICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHRpbWVsaW5lLnN0b3BzW2luZGV4XS5yZWFkU3RhcnQgKyA4MCArIHJlYWRpbmdUb3AsIGJlaGF2aW9yOiAnaW5zdGFudCcgfSk7CiAgICB9LAogICAgb25GaW5pc2g6IHNjaGVkdWxlUmVuZGVyCiAgfSk7CiAgZnVuY3Rpb24gY2FuY2VsUmlkZSgpIHsKICAgIGNvbnN0IHNuYXBzaG90ID0gYnV0dG9uSm91cm5leS5hY3RpdmUgPyBidXR0b25Kb3VybmV5LnN0YXRlIDogbnVsbDsKICAgIGJ1dHRvbkpvdXJuZXkuY2FuY2VsKCk7IHBlbmRpbmdGb2N1cyA9IGZhbHNlOyBmb2N1c1RhcmdldCA9IG51bGw7CiAgICBpZiAoc25hcHNob3QpIHsKICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aW1lbGluZS5zdG9wc1tzbmFwc2hvdC5mbG9vcl0ucmVhZFN0YXJ0ICsgODAgKyBzbmFwc2hvdC5yZWFkaW5nVG9wLCBiZWhhdmlvcjogJ2luc3RhbnQnIH0pOwogICAgICBzY2hlZHVsZVJlbmRlcigpOwogICAgfQogIH0KICBmdW5jdGlvbiBpbnRlcnJ1cHRLZXkoZXZlbnQpIHsKICAgIGlmIChbJ0Fycm93VXAnLCAnQXJyb3dEb3duJywgJ1BhZ2VVcCcsICdQYWdlRG93bicsICcgJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkgY2FuY2VsUmlkZSgpOwogIH0KCiAgZnVuY3Rpb24gbWVhc3VyZSgpIHsKICAgIGNvbnN0IG92ZXJmbG93cyA9IGZsb29ycy5tYXAoZmxvb3IgPT4gewogICAgICBjb25zdCBoaWRkZW4gPSBmbG9vci5oaWRkZW47CiAgICAgIGZsb29yLmhpZGRlbiA9IGZhbHNlOwogICAgICBmbG9vci5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICAgIGNvbnN0IGNvbnRlbnQgPSBmbG9vci5xdWVyeVNlbGVjdG9yKCcuZmxvb3ItY29udGVudCcpOwogICAgICBjb25zdCBvdmVyZmxvdyA9IE1hdGgubWF4KDAsIGNvbnRlbnQuc2Nyb2xsSGVpZ2h0IC0gY29udGVudC5jbGllbnRIZWlnaHQpOwogICAgICBmbG9vci5oaWRkZW4gPSBoaWRkZW47CiAgICAgIGZsb29yLnN0eWxlLnJlbW92ZVByb3BlcnR5KCd2aXNpYmlsaXR5Jyk7CiAgICAgIHJldHVybiBvdmVyZmxvdzsKICAgIH0pOwogICAgdGltZWxpbmUgPSBidWlsZFNjcm9sbFRpbWVsaW5lKG92ZXJmbG93cywgd2luZG93LmlubmVySGVpZ2h0KTsKICAgIHJ1bndheS5zdHlsZS5oZWlnaHQgPSBgJHtNYXRoLmNlaWwodGltZWxpbmUubGVuZ3RoICsgd2luZG93LmlubmVySGVpZ2h0KX1weGA7CiAgfQogIGZ1bmN0aW9uIHJlbmRlcigpIHsKICAgIGZyYW1lID0gbnVsbDsKICAgIGlmIChkZXN0cm95ZWQpIHJldHVybjsKICAgIGNvbnN0IHkgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGNvbnN0IGRpcmVjdFN0YXRlID0gYnV0dG9uSm91cm5leS5hY3RpdmUgPyBidXR0b25Kb3VybmV5LnN0YXRlIDogbnVsbDsKICAgIGlmIChkaXJlY3RTdGF0ZSkgZGlyZWN0aW9uID0gZGlyZWN0U3RhdGUuZGlyZWN0aW9uOwogICAgZWxzZSBpZiAoTWF0aC5hYnMoeSAtIHByZXZpb3VzWSkgPiAuNSkgZGlyZWN0aW9uID0gTWF0aC5zaWduKHkgLSBwcmV2aW91c1kpOwogICAgcHJldmlvdXNZID0geTsKICAgIGNvbnN0IHN0YXRlID0gZGlyZWN0U3RhdGUgfHwgc2FtcGxlU2Nyb2xsSm91cm5leSh0aW1lbGluZSwgeSk7CiAgICBpZiAoY29udHJvbGxlci5mbG9vciAhPT0gc3RhdGUuZmxvb3IpIHsKICAgICAgc3luY2hyb25pemluZ01vYmlsZUZsb29yID0gdHJ1ZTsKICAgICAgdHJ5IHsgY29udHJvbGxlci5qdW1wKHN0YXRlLmZsb29yKTsgfSBmaW5hbGx5IHsgc3luY2hyb25pemluZ01vYmlsZUZsb29yID0gZmFsc2U7IH0KICAgIH0KICAgIGNvbnN0IGNvbnRlbnQgPSBmbG9vcnNbc3RhdGUuZmxvb3JdLnF1ZXJ5U2VsZWN0b3IoJy5mbG9vci1jb250ZW50Jyk7CiAgICBjb250ZW50LnNjcm9sbFRvcCA9IHN0YXRlLnJlYWRpbmdUb3A7CiAgICBjb25zdCBwaGFzZSA9IHN0YXRlLnBoYXNlIHx8IChzdGF0ZS5raW5kID09PSAndHJhdmVsJyA\/ICd0cmF2ZWxsaW5nJyA6IHN0YXRlLmtpbmQgPT09ICdyZWFkaW5nJyA\/ICdpZGxlJwogICAgICA6IChzdGF0ZS5raW5kID09PSAnYXJyaXZhbCcpID09PSAoZGlyZWN0aW9uID4gMCkgPyAnb3BlbmluZycgOiAnY2xvc2luZycpOwogICAgY29uc3QgcGhhc2VLZXkgPSBgJHtzdGF0ZS5mbG9vcn06JHtwaGFzZX06JHtkaXJlY3Rpb259YDsKICAgIGlmIChsYXN0UGhhc2UgIT09IHBoYXNlS2V5KSB7CiAgICAgIHBoYXNlQ2hhbmdlZChwaGFzZSwgeyBjdXJyZW50OiBzdGF0ZS5mbG9vciwgZnJvbTogc3RhdGUuZnJvbSwgdG86IHN0YXRlLnRvLCBkaXJlY3Rpb24sIGluaXRpYWw6IGZpcnN0TG9hZCAmJiB5IDwgdGltZWxpbmUuc3RvcHNbMF0ucmVhZFN0YXJ0IH0pOwogICAgICBsYXN0UGhhc2UgPSBwaGFzZUtleTsKICAgIH0KICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tZG9vci1vcGVuJywgc3RhdGUuZG9vck9wZW4pOwogICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jYXIteScsIGAke3N0YXRlLmNhcll9JWApOwogICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1jYXItc2NhbGUnLCBzdGF0ZS5zY2FsZSk7CiAgICBsYXlvdXQuc3R5bGUuc2V0UHJvcGVydHkoJy0tcmFpbC15JywgYCR7eSAqIC4zfXB4YCk7CiAgICBib2R5LmRhdGFzZXQuc2Nyb2xsU3RhZ2UgPSBzdGF0ZS5raW5kOwogICAgdHJhbnNpdFN0YXR1cy5oaWRkZW4gPSBzdGF0ZS5raW5kICE9PSAndHJhdmVsJzsKICAgIGlmIChzdGF0ZS5raW5kID09PSAndHJhdmVsJykgewogICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IHRyYXZlbERlc3RpbmF0aW9uKHN0YXRlLCBkaXJlY3Rpb24sIGRpcmVjdFN0YXRlID8gYnV0dG9uSm91cm5leS5kZXN0aW5hdGlvbiA6IG51bGwpOwogICAgICBjb25zdCBuZXh0U3RhdHVzS2V5ID0gYCR7ZGVzdGluYXRpb259OiR7ZGlyZWN0aW9ufToke0Jvb2xlYW4oZGlyZWN0U3RhdGUpfWA7CiAgICAgIGlmIChzdGF0dXNLZXkgIT09IG5leHRTdGF0dXNLZXkpIHsKICAgICAgICB0cmFuc2l0U3RhdHVzLmRhdGFzZXQuZGlyZWN0aW9uID0gZGlyZWN0aW9uIDwgMCA\/ICdkb3duJyA6ICd1cCc7CiAgICAgICAgJCgndHJhdmVsLXN0YXR1cy1tZXNzYWdlJykudGV4dENvbnRlbnQgPSBkaXJlY3RTdGF0ZSA\/ICdNb3ZpbmcgdG8gc2VsZWN0ZWQgZmxvb3InIDogZGlyZWN0aW9uIDwgMCA\/ICdNb3ZpbmcgdG8gcHJldmlvdXMgZmxvb3InIDogJ01vdmluZyB0byBuZXh0IGZsb29yJzsKICAgICAgICAkKCd0cmF2ZWwtc3RhdHVzLWZsb29yJykudGV4dENvbnRlbnQgPSBsZXZlbExhYmVsKGRlc3RpbmF0aW9uKTsKICAgICAgICAkKCd0cmF2ZWwtc3RhdHVzLW5hbWUnKS50ZXh0Q29udGVudCA9IGZsb29yTmFtZXNbZGVzdGluYXRpb25dOwogICAgICAgIHN0YXR1c0tleSA9IG5leHRTdGF0dXNLZXk7CiAgICAgIH0KICAgIH0KICAgIG1haW4uaW5lcnQgPSBCb29sZWFuKGRpcmVjdFN0YXRlICYmIHBoYXNlICE9PSAnaWRsZScpIHx8IHN0YXRlLmRvb3JPcGVuIDwgLjk4IHx8IHN0YXRlLmtpbmQgPT09ICd0cmF2ZWwnOwogICAgbWFpbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtYnVzeScsIFN0cmluZyhtYWluLmluZXJ0KSk7CiAgICBjYXIuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgc3RhdGUua2luZCA9PT0gJ3RyYXZlbCcgPyBgRWxldmF0b3IgdHJhdmVsbGluZyAke2RpcmVjdGlvbiA+IDAgPyAndXAnIDogJ2Rvd24nfWAgOiBgRWxldmF0b3IgYXQgJHtmbG9vck5hbWVzW3N0YXRlLmZsb29yXX1gKTsKICAgICQoJ3Njcm9sbC1sYWJlbCcpLnRleHRDb250ZW50ID0gc3RhdGUua2luZCA9PT0gJ2Fycml2YWwnICYmIHN0YXRlLmRvb3JPcGVuIDwgLjk4ID8gJ1NDUk9MTCBUTyBPUEVOIFRIRSBET09SUycgOiBzdGF0ZS5raW5kID09PSAndHJhdmVsJyA\/ICdTQ1JPTEwgVE8gQ09OVElOVUUgWU9VUiBKT1VSTkVZJyA6IHN0YXRlLmZsb29yID09PSBmbG9vcnMubGVuZ3RoIC0gMSA\/ICdQUkVWSU9VUyBGTE9PUiDCtyBTQ1JPTEwgVE8gRVhQTE9SRScgOiAnTkVYVCBGTE9PUiDCtyBTQ1JPTEwgVE8gRVhQTE9SRSc7CiAgICBpZiAocGVuZGluZ0ZvY3VzICYmIHBoYXNlID09PSAnaWRsZScgJiYgc3RhdGUuZmxvb3IgPT09IGZvY3VzVGFyZ2V0KSB7IGZvY3VzRmxvb3Ioc3RhdGUuZmxvb3IpOyBwZW5kaW5nRm9jdXMgPSBmYWxzZTsgZm9jdXNUYXJnZXQgPSBudWxsOyB9CiAgfQogIGZ1bmN0aW9uIHNjaGVkdWxlUmVuZGVyKCkgeyBpZiAoIWZyYW1lKSBmcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpOyB9CiAgZnVuY3Rpb24gbmF2aWdhdGUoaW5kZXgsIGZvY3VzID0gZmFsc2UpIHsKICAgIGNvbnN0IHRhcmdldCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGZsb29ycy5sZW5ndGggLSAxLCBpbmRleCkpOwogICAgY29uc3Qgc25hcHNob3QgPSBidXR0b25Kb3VybmV5LmFjdGl2ZSA\/IGJ1dHRvbkpvdXJuZXkuc3RhdGUgOiBzYW1wbGVTY3JvbGxKb3VybmV5KHRpbWVsaW5lLCB3aW5kb3cuc2Nyb2xsWSk7CiAgICBpZiAoIWJ1dHRvbkpvdXJuZXkuYWN0aXZlICYmIHRhcmdldCA9PT0gc25hcHNob3QuZmxvb3IgJiYgc25hcHNob3Qua2luZCA9PT0gJ3JlYWRpbmcnKSB7CiAgICAgIGlmIChmb2N1cykgZm9jdXNGbG9vcih0YXJnZXQpOwogICAgICByZXR1cm47CiAgICB9CiAgICBwZW5kaW5nRm9jdXMgPSBmb2N1czsKICAgIGZvY3VzVGFyZ2V0ID0gdGFyZ2V0OwogICAgYnV0dG9uSm91cm5leS5zdGFydCh0YXJnZXQpOwogIH0KICBmdW5jdGlvbiByZW1lYXN1cmUoKSB7CiAgICBpZiAoZGVzdHJveWVkKSByZXR1cm47CiAgICBjYW5jZWxSaWRlKCk7CiAgICBjb25zdCBvbGQgPSB0aW1lbGluZTsKICAgIGNvbnN0IHkgPSB3aW5kb3cuc2Nyb2xsWTsKICAgIGNvbnN0IHN0b3AgPSBvbGQuc3RvcHMuZmluZChpdGVtID0+IHkgPD0gaXRlbS5lbmQpIHx8IG9sZC5zdG9wcy5hdCgtMSk7CiAgICBjb25zdCBwcm9ncmVzcyA9ICh5IC0gc3RvcC5zdGFydCkgLyAoc3RvcC5lbmQgLSBzdG9wLnN0YXJ0KTsKICAgIG1lYXN1cmUoKTsKICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gdGltZWxpbmUuc3RvcHNbc3RvcC5pbmRleF07CiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHJlcGxhY2VtZW50LnN0YXJ0ICsgcHJvZ3Jlc3MgKiAocmVwbGFjZW1lbnQuZW5kIC0gcmVwbGFjZW1lbnQuc3RhcnQpLCBiZWhhdmlvcjogJ2luc3RhbnQnIH0pOwogICAgc2NoZWR1bGVSZW5kZXIoKTsKICB9CiAgZnVuY3Rpb24gb25SZXNpemUoKSB7CiAgICAvLyBCcm93c2VyIGNocm9tZS9rZXlib2FyZCBjaGFuZ2VzIG11c3Qgbm90IG1vdmUgdGhlIHZpc2l0b3IgdG8gYW5vdGhlciBmbG9vci4KICAgIGlmIChNYXRoLmFicyh3aW5kb3cuaW5uZXJXaWR0aCAtIGxhc3RXaWR0aCkgPCAyICYmIE1hdGguYWJzKHdpbmRvdy5pbm5lckhlaWdodCAtIGxhc3RIZWlnaHQpIDwgMTAwKSByZXR1cm47CiAgICBpZiAoaXNFZGl0aW5nKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHx8IGlzRWRpdGluZyhib2R5LmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCkpIHJldHVybjsKICAgIGxhc3RXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoOyBsYXN0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogICAgY2xlYXJUaW1lb3V0KHJlc2l6ZVRpbWVyKTsKICAgIHJlc2l6ZVRpbWVyID0gc2V0VGltZW91dChyZW1lYXN1cmUsIDE1MCk7CiAgfQogIG1lYXN1cmUoKTsKICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IGluaXRpYWxGbG9vciB8fCAhZmlyc3RMb2FkID8gdGltZWxpbmUuc3RvcHNbaW5pdGlhbEZsb29yXS5yZWFkU3RhcnQgKyA0MCA6IDAsIGJlaGF2aW9yOiAnaW5zdGFudCcgfSk7CiAgcmVuZGVyKCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHNjaGVkdWxlUmVuZGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplLCB7IHBhc3NpdmU6IHRydWUgfSk7CiAgZm9yIChjb25zdCBldmVudCBvZiBbJ3RvdWNoc3RhcnQnLCAnd2hlZWwnLCAncG9pbnRlcmRvd24nXSkgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGNhbmNlbFJpZGUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGludGVycnVwdEtleSk7CiAgLy8gRm9udHMgYW5kIGxhdGUgbmF0aXZlLWZvcm0gcmVuZGVyaW5nIGNhbiBjaGFuZ2UgdGhlIGFtb3VudCBvZiByZWFkYWJsZSBjb3B5LgogIGRvY3VtZW50LmZvbnRzPy5yZWFkeS50aGVuKCgpID0+IHsgaWYgKCFkZXN0cm95ZWQpIHJlbWVhc3VyZSgpOyB9KTsKICByZXR1cm4gewogICAgbmF2aWdhdGUsCiAgICBhZHZhbmNlKCkgewogICAgICBjb25zdCBzdGF0ZSA9IGJ1dHRvbkpvdXJuZXkuYWN0aXZlID8gYnV0dG9uSm91cm5leS5zdGF0ZSA6IHNhbXBsZVNjcm9sbEpvdXJuZXkodGltZWxpbmUsIHdpbmRvdy5zY3JvbGxZKTsKICAgICAgY29uc3QgdGFyZ2V0ID0gc3RhdGUua2luZCA9PT0gJ2Fycml2YWwnICYmIHN0YXRlLmRvb3JPcGVuIDwgLjk4ID8gc3RhdGUuZmxvb3IKICAgICAgICA6IHN0YXRlLmZsb29yID09PSBmbG9vcnMubGVuZ3RoIC0gMSA\/IHN0YXRlLmZsb29yIC0gMSA6IHN0YXRlLmZsb29yICsgMTsKICAgICAgbmF2aWdhdGUodGFyZ2V0KTsKICAgIH0sCiAgICByZXBsYXkoKSB7IGJ1dHRvbkpvdXJuZXkuc3RhcnQoY29udHJvbGxlci5mbG9vciwgeyByZXBsYXk6IHRydWUgfSk7IH0sCiAgICBkZXN0cm95KCkgewogICAgICBkZXN0cm95ZWQgPSB0cnVlOwogICAgICBjYW5jZWxSaWRlKCk7IHRyYW5zaXRTdGF0dXMuaGlkZGVuID0gdHJ1ZTsKICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWUpOyBjbGVhclRpbWVvdXQocmVzaXplVGltZXIpOwogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2NoZWR1bGVSZW5kZXIpOwogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUpOwogICAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIFsndG91Y2hzdGFydCcsICd3aGVlbCcsICdwb2ludGVyZG93biddKSB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgY2FuY2VsUmlkZSk7CiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaW50ZXJydXB0S2V5KTsKICAgICAgcnVud2F5LnJlbW92ZSgpOwogICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ21vYmlsZS1zY3JvbGwnKTsKICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdzZS1tb2JpbGUtc2Nyb2xsJyk7CiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgWyctLWRvb3Itb3BlbicsICctLWNhci15JywgJy0tY2FyLXNjYWxlJ10pIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkocHJvcGVydHkpOwogICAgICBsYXlvdXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tcmFpbC15Jyk7CiAgICAgIGNhci5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKTsKICAgICAgZGVsZXRlIGJvZHkuZGF0YXNldC5zY3JvbGxTdGFnZTsKICAgICAgc3RvcEh1bSgpOwogICAgfQogIH07Cn0KCnNldFZpZXcoaW1tZXJzaXZlLCB7IGluaXRpYWw6IHRydWUgfSk7CmlmICghbW9iaWxlSm91cm5leSkgYWN0aXZhdGVGbG9vcihjb250cm9sbGVyLmZsb29yLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTsKCn0pKCk7Cg==<\/script>\n<script id=\"subhan-elevator-wordpress-js\" data-no-optimize=\"1\" data-no-defer=\"1\" data-cfasync=\"false\">\n\n(function () {\n  'use strict';\n  var payload = document.getElementById('subhan-elevator-runtime');\n  if (!payload) return;\n  var bytes = Uint8Array.from(atob(payload.textContent.trim()), function (character) {\n    return character.charCodeAt(0);\n  });\n  var executable = document.createElement('script');\n  executable.id = 'subhan-elevator-runtime-executable';\n  executable.setAttribute('data-no-optimize', '1');\n  executable.setAttribute('data-no-defer', '1');\n  executable.setAttribute('data-cfasync', 'false');\n  executable.textContent = new TextDecoder().decode(bytes);\n  payload.after(executable);\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Skip to content SUBHANELEVATOR \u00b7 ISLAMABAD HomeAbout Us Services All elevator services \u2197InstallationMaintenance &amp; AMCElevator RepairModernizationEmergency RepairSpare PartsInspectionHome Elevators GuidesContact\u2637Standard view 0336 7764717Call SUBHAN ELEVATORTHE NEXT LEVEL OF ELEVATOR SERVICESISLAMABAD SUBHAN ELEVATOR \u00b7 QUALITY AND RELIABILITY Top Elevator company in IslamabadG Best Elevator Service In Islamabad. Experience Quality and Reliability Call Now About Subhan Elevator&#8230;<\/p>\n","protected":false},"author":1,"featured_media":863,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kb_optimizer_status":2,"_kadence_starter_templates_imported_post":true,"_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":true,"_kad_post_footer":true,"_kad_post_classname":"","footnotes":""},"class_list":["post-516","page","type-page","status-publish","has-post-thumbnail","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/pages\/516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/comments?post=516"}],"version-history":[{"count":139,"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/pages\/516\/revisions"}],"predecessor-version":[{"id":1040,"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/pages\/516\/revisions\/1040"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/media\/863"}],"wp:attachment":[{"href":"https:\/\/subhanelevator.com\/index.php\/wp-json\/wp\/v2\/media?parent=516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}